From 65f30db72476e51ea6c84f8af627930e2948294a Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Thu, 16 May 2024 23:26:55 +0100 Subject: [PATCH] Switch to cased base model --- .github/workflows/publish-to-pypi.yml | 5 +++- MANIFEST.in | 2 ++ pyproject.toml | 10 ++++++- src/dom_tokenizers/train.py | 10 ++++--- tests/__init__.py | 0 tests/conftest.py | 9 ++++++ tests/resources/svg-in-base64.html | 2 ++ tests/resources/svg-in-base64.json | 1 + tests/test_train_tokenizer.py | 43 +++++++++++++++++++++++++++ tests/util.py | 18 +++++++++++ 10 files changed, 94 insertions(+), 6 deletions(-) create mode 100644 tests/__init__.py create mode 100644 tests/conftest.py create mode 100644 tests/resources/svg-in-base64.html create mode 100644 tests/resources/svg-in-base64.json create mode 100644 tests/test_train_tokenizer.py create mode 100644 tests/util.py diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml index 6813092..c084543 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi.yml @@ -1,4 +1,4 @@ -name: Publish Python distribution to PyPI +name: CI pipeline on: push @@ -24,6 +24,9 @@ jobs: - name: Lint run: flake8 + - name: Test + run: pytest + - name: Build a binary wheel and a source tarball run: python3 -m build diff --git a/MANIFEST.in b/MANIFEST.in index b91870e..0b499fd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1,3 @@ include .flake8 +graft tests +global-exclude *.py[cod] diff --git a/pyproject.toml b/pyproject.toml index 509da9a..3fa8dc7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dom-tokenizers" -version = "0.0.3" +version = "0.0.4" authors = [{ name = "Gary Benson" }] description = "DOM-aware tokenizers for 🤗 Hugging Face language models" readme = "README.md" @@ -36,7 +36,9 @@ Homepage = "https://github.com/gbenson/dom-tokenizers" [project.optional-dependencies] dev = [ "build", + "datasets", "flake8", + "pytest", ] train = [ "datasets", @@ -49,3 +51,9 @@ train-tokenizer = "dom_tokenizers.train:main" [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" + +[tool.pytest.ini_options] +filterwarnings = [ + "error", + "ignore:`resume_download` is deprecated:FutureWarning", +] diff --git a/src/dom_tokenizers/train.py b/src/dom_tokenizers/train.py index 92c7092..7d44bef 100644 --- a/src/dom_tokenizers/train.py +++ b/src/dom_tokenizers/train.py @@ -10,7 +10,7 @@ from .internal.transformers import AutoTokenizer from .pre_tokenizers import DOMSnapshotPreTokenizer -DEFAULT_BASE = "bert-base-uncased" +DEFAULT_BASE_TOKENIZER = "bert-base-cased" DEFAULT_SPLIT = "train" DEFAULT_SIZE = 1024 SEND_BUGS_TO = "https://github.com/gbenson/dom-tokenizers/issues" @@ -18,7 +18,7 @@ def train_tokenizer( training_dataset, - base_tokenizer=DEFAULT_BASE, + base_tokenizer=DEFAULT_BASE_TOKENIZER, vocab_size=DEFAULT_SIZE, corpus_size=None): @@ -115,8 +115,10 @@ def main(): "dataset", metavar="DATASET", help="dataset containing the training corpus") p.add_argument( - "--base-tokenizer", metavar="ID", default=DEFAULT_BASE, - help=f"tokenizer to train ours from [default: {DEFAULT_BASE}]") + "--base-tokenizer", metavar="ID", + default=DEFAULT_BASE_TOKENIZER, + help=(f"tokenizer to train ours from" + f" [default: {DEFAULT_BASE_TOKENIZER}]")) p.add_argument( "--split", default=DEFAULT_SPLIT, metavar="SPLIT", dest="split_name", help=(f"split of the training dataset to use" diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..cbd9eae --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,9 @@ +import pytest + +from dom_tokenizers.internal.transformers import AutoTokenizer +from dom_tokenizers.train import DEFAULT_BASE_TOKENIZER + + +@pytest.fixture +def base_tokenizer(): + yield AutoTokenizer.from_pretrained(DEFAULT_BASE_TOKENIZER) diff --git a/tests/resources/svg-in-base64.html b/tests/resources/svg-in-base64.html new file mode 100644 index 0000000..8b7e2bb --- /dev/null +++ b/tests/resources/svg-in-base64.html @@ -0,0 +1,2 @@ + +What's this?
http://ai/
diff --git a/tests/resources/svg-in-base64.json b/tests/resources/svg-in-base64.json new file mode 100644 index 0000000..6db2382 --- /dev/null +++ b/tests/resources/svg-in-base64.json @@ -0,0 +1 @@ +{"documents":[{"documentURL":0,"title":1,"baseURL":0,"contentLanguage":-1,"encodingName":2,"publicId":-1,"systemId":-1,"frameId":3,"nodes":{"parentIndex":[-1,0,0,2,3,3,5,3,7,2,9,10,11,9],"nodeType":[9,10,1,1,1,1,3,1,3,1,1,1,1,3],"shadowRootType":{"index":[],"value":[]},"nodeName":[4,5,6,10,11,13,14,15,14,17,18,18,22,14],"nodeValue":[-1,-1,-1,-1,-1,-1,1,-1,16,-1,-1,-1,-1,31],"backendNodeId":[2,7,6,8,9,10,11,12,13,14,15,5,3,16],"attributes":[[],[],[7,8],[],[12,2],[],[],[],[],[],[19,20],[19,21],[23,24,25,26,27,26,28,29],[]],"textValue":{"index":[],"value":[]},"inputValue":{"index":[],"value":[]},"inputChecked":{"index":[]},"optionSelected":{"index":[]},"contentDocumentIndex":{"index":[],"value":[]},"pseudoType":{"index":[],"value":[]},"pseudoIdentifier":{"index":[],"value":[]},"isClickable":{"index":[]},"currentSourceURL":{"index":[12],"value":[24]},"originURL":{"index":[],"value":[]}},"layout":{"nodeIndex":[0,2,9,10,11,12],"styles":[[],[9,9,9],[9,9,9],[9,9,9],[9,9,9],[30,30,9]],"bounds":[[0,0,1920,1080],[0,0,1920,8],[8,8,1904,0],[0,540,1920,0],[640,268,640,480],[832,268,256,256]],"text":[-1,-1,-1,-1,-1,-1],"stackingContexts":{"index":[0,1]},"paintOrders":[0,1,1,2,3,3]},"textBoxes":{"layoutIndex":[],"bounds":[],"start":[],"length":[]},"scrollOffsetX":0,"scrollOffsetY":0,"contentWidth":1920,"contentHeight":1080}],"strings":["https://gbenson.net/wot/dis/","What's this?","UTF-8","D87CD6EC54628FCF0FC60FBEB4CC5B8F","#document","html","HTML","lang","en","visible","HEAD","META","charset","TITLE","#text","STYLE","body{background-color:#fff;color:#000}#h{text-align:center;position:absolute;top:50%;left:0;width:100%;overflow:visible}#m{margin-left:-320px;position:absolute;top:-272px;left:50%;width:640px;height:480px}","BODY","DIV","id","h","m","IMG","src","data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgdmlld0JveD0iMCAwIDI1NiAyNTYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yMzAuNzIxIDE3Mi43QzIzMC4xODMgMTcwLjY3MyAyMjkuMzEzIDE2OC43NSAyMjguMTQ2IDE2Ny4wMDhDMjI4LjM5NiAxNjYuMDkxIDIyOC41ODcgMTY1LjE1OSAyMjguNzE0IDE2NC4yMTdDMjI5LjU0MyAxNTguMjQxIDIyNy40NzEgMTUyLjc3IDIyMy41NjcgMTQ4LjUzN0MyMjEuNDUyIDE0Ni4yMjUgMjE5LjE4NSAxNDQuNjk4IDIxNi43ODQgMTQzLjc2MUMyMTguMzYgMTM3LjAxOCAyMTkuMTU3IDEzMC4xMTcgMjE5LjE2MSAxMjMuMTkzQzIxOS4xNjEgMTIwLjAzIDIxOC45ODIgMTE2LjkzMiAyMTguNjgyIDExMy44OEMyMTguNTI2IDExMi4zNTYgMjE4LjMzNyAxMTAuODM2IDIxOC4xMTUgMTA5LjMyQzIxNy40MjggMTA0Ljg0NyAyMTYuNDA4IDEwMC40MzEgMjE1LjA2NCA5Ni4xMUMyMTQuMTgzIDkzLjI3MDcgMjEzLjE2NCA5MC40NzYgMjEyLjAxIDg3LjczNkMyMTAuMjgxIDgzLjY3ODIgMjA4LjI2MiA3OS43NSAyMDUuOTY5IDc1Ljk4MkMyMDQuNDY1IDczLjQ3NSAyMDIuODI3IDcxLjA1MDggMjAxLjA2MiA2OC43MkMyMDAuMTk3IDY3LjU0MyAxOTkuMjk2IDY2LjM5MzggMTk4LjM1OCA2NS4yNzRDMTk1LjU4IDYxLjg5OCAxOTIuNTYxIDU4LjcyNzcgMTg5LjMyNSA1NS43ODhDMTg4LjI1IDU0Ljc5OTcgMTg3LjE0NSA1My44NDUzIDE4Ni4wMSA1Mi45MjZDMTg0Ljg5MyA1MS45OTQzIDE4My43NTEgNTEuMDkyNyAxODIuNTg2IDUwLjIyMkMxODAuMjQxIDQ4LjQ3NjYgMTc3LjgxOCA0Ni44MzkyIDE3NS4zMjQgNDUuMzE1QzE2MS41NDMgMzYuOTQ1IDE0NS4zODIgMzIuMTQ1IDEyOC4xMDkgMzIuMTQ1Qzc3LjgxNyAzMi4xNDUgMzcuMDU3IDcyLjkwNyAzNy4wNTcgMTIzLjE5NkMzNy4wNTUgMTMwLjIwOCAzNy44NjcgMTM3LjE5NiAzOS40NzcgMTQ0LjAyQzM3LjMxNyAxNDQuOTU4IDM1LjI0NyAxNDYuNDIgMzMuMzI3IDE0OC41MzVDMjkuNDI0IDE1Mi43NjYgMjcuMzUxIDE1OC4yMTcgMjguMTggMTY0LjE5M0MyOC4zMDYgMTY1LjE0MiAyOC40OTUgMTY2LjA4MiAyOC43NDcgMTY3LjAwNkMyNy41ODExIDE2OC43NDkgMjYuNzExNyAxNzAuNjczIDI2LjE3NCAxNzIuN0MyNC45NzQgMTc3LjI2MSAyNS4zNjkgMTgxLjM3NCAyNi44OTQgMTg0Ljk3OEMyNS4yMzYgMTg5LjY4OCAyNS42NSAxOTQuNzA0IDI3LjgwOSAxOTkuMDY1QzI5LjM3OSAyMDIuMjUgMzEuNjI2IDIwNC43MTQgMzQuMzk2IDIwNi45MTZDMzcuNjg5IDIwOS41MzQgNDEuODExIDIxMS43NTggNDYuNzgzIDIxMy44OTJDNTIuNzE1IDIxNi40MjIgNTkuOTU2IDIxOC43OTkgNjMuMjQ5IDIxOS42NzFDNzEuNzU1IDIyMS44NzMgNzkuOTExIDIyMy4yNjkgODguMTc3IDIyMy4zMzdDOTkuOTU0IDIyMy40NDYgMTEwLjA5NiAyMjAuNjc3IDExNy4zNTcgMjEzLjU5QzEyMC45MjQgMjE0LjAyNyAxMjQuNTE1IDIxNC4yNDYgMTI4LjEwOSAyMTQuMjQ0QzEzMS45MDYgMjE0LjIzNiAxMzUuNjk5IDIxMy45OTcgMTM5LjQ2NyAyMTMuNTI5QzE0Ni43MTEgMjIwLjY2MSAxNTYuODkyIDIyMy40NTUgMTY4LjcxMiAyMjMuMzQzQzE3Ni45NzcgMjIzLjI3NyAxODUuMTMzIDIyMS44ODEgMTkzLjYxNyAyMTkuNjc2QzE5Ni45MzIgMjE4LjgwNCAyMDQuMTcgMjE2LjQyNyAyMTAuMTA1IDIxMy44OTdDMjE1LjA3NyAyMTEuNzYgMjE5LjE5OSAyMDkuNTM2IDIyMi41MTQgMjA2LjkyMkMyMjUuMjYzIDIwNC43MTkgMjI3LjUwOCAyMDIuMjU2IDIyOS4wNzkgMTk5LjA3MUMyMzEuMjYgMTk0LjcwOSAyMzEuNjUyIDE4OS42OTMgMjMwLjAxNyAxODQuOTgzQzIzMS41MjcgMTgxLjM3OSAyMzEuOTIgMTc3LjI1NyAyMzAuNzIxIDE3Mi43Wk0yMjIuMjgxIDE4NC42NzNDMjIzLjk1MiAxODcuODQ0IDIyNC4wNTkgMTkxLjQyNyAyMjIuNTg1IDE5NC43NjRDMjIwLjM0OSAxOTkuODIxIDIxNC43OTUgMjAzLjgwNSAyMDQuMDA4IDIwOC4wODJDMTk3LjMgMjEwLjc0MiAxOTEuMTU4IDIxMi40NDMgMTkxLjEwNCAyMTIuNDU4QzE4Mi4yMzIgMjE0Ljc1OSAxNzQuMjA4IDIxNS45MjggMTY3LjI2MiAyMTUuOTI4QzE1NS43NiAyMTUuOTI4IDE0Ny4yMDEgMjEyLjc1NCAxNDEuNzczIDIwNi40ODZDMTMyLjU5NCAyMDguMDUgMTIzLjIyMiAyMDguMTAzIDExNC4wMjYgMjA2LjY0NEMxMDguNTkxIDIxMi44MDggMTAwLjA4MSAyMTUuOTI4IDg4LjY3NiAyMTUuOTI4QzgxLjcyOSAyMTUuOTI4IDczLjcwNiAyMTQuNzU5IDY0LjgzMyAyMTIuNDU4QzY0Ljc3OSAyMTIuNDQzIDU4LjYzOSAyMTAuNzQyIDUxLjkyOSAyMDguMDgyQzQxLjE0MyAyMDMuODA1IDM1LjU4NyAxOTkuODI0IDMzLjM1MiAxOTQuNzY0QzMxLjg3OCAxOTEuNDI3IDMxLjk4NSAxODcuODQ0IDMzLjY1NiAxODQuNjczQzMzLjgxIDE4NC4zNzggMzMuOTc2IDE4NC4wOTEgMzQuMTUzIDE4My44MTNDMzMuMTUxNiAxODIuMzA5IDMyLjQ3OTkgMTgwLjYxIDMyLjE4MiAxNzguODI3QzMxLjg4NDIgMTc3LjA0NSAzMS45NjcgMTc1LjIyIDMyLjQyNSAxNzMuNDcyQzMzLjA4OSAxNzAuOTQ5IDM0LjQ2IDE2OC44NTEgMzYuMzIyIDE2Ny4zNDRDMzUuNDI1IDE2NS44NyAzNC44MzY1IDE2NC4yMyAzNC41OTIgMTYyLjUyMkMzNC4wNTYgMTU4LjgwOCAzNS4yODkgMTU1LjEgMzguMDYyIDE1Mi4wNzZDNDAuMjIyIDE0OS43MjMgNDMuMjc1IDE0OC40MjggNDYuNjU1IDE0OC40MjhINDYuNzQ1QzQ0LjE5NjUgMTQwLjI1OSA0Mi45MDQ0IDEzMS43NSA0Mi45MTMgMTIzLjE5M0M0Mi45MTMgNzYuNTIyIDgwLjc0OSAzOC42ODMgMTI3LjQyNyAzOC42ODNDMTc0LjEwNCAzOC42ODMgMjExLjk0IDc2LjUxOCAyMTEuOTQgMTIzLjE5M0MyMTEuOTQ3IDEzMS43NzMgMjEwLjY0NiAxNDAuMzA0IDIwOC4wODEgMTQ4LjQ5MkMyMDguNDg5IDE0OC40NTIgMjA4Ljg4OSAxNDguNDMyIDIwOS4yODIgMTQ4LjQzMUMyMTIuNjYyIDE0OC40MzEgMjE1LjcxNiAxNDkuNzI2IDIxNy44NzQgMTUyLjA3OUMyMjAuNjQ3IDE1NS4xIDIyMS44ODEgMTU4LjgxMSAyMjEuMzQ0IDE2Mi41MjVDMjIxLjEgMTY0LjIzMyAyMjAuNTExIDE2NS44NzMgMjE5LjYxNSAxNjcuMzQ3QzIyMS40NzcgMTY4Ljg1NCAyMjIuODQ5IDE3MC45NTIgMjIzLjUxMiAxNzMuNDc1QzIyMy45NyAxNzUuMjIzIDIyNC4wNTMgMTc3LjA0OCAyMjMuNzU1IDE3OC44MzFDMjIzLjQ1OCAxODAuNjEzIDIyMi43ODYgMTgyLjMxMiAyMjEuNzg0IDE4My44MTZDMjIxLjk2MSAxODQuMDkxIDIyMi4xMjkgMTg0LjM3OCAyMjIuMjgxIDE4NC42NzNaIiBmaWxsPSJ3aGl0ZSIvPgo8cGF0aCBkPSJNMjIxLjc4NCAxODMuODE2QzIyMi43ODYgMTgyLjMxMiAyMjMuNDU4IDE4MC42MTMgMjIzLjc1NiAxNzguODMxQzIyNC4wNTMgMTc3LjA0OCAyMjMuOTcgMTc1LjIyMyAyMjMuNTEyIDE3My40NzVDMjIyLjg0OCAxNzAuOTUyIDIyMS40NzYgMTY4Ljg1NCAyMTkuNjE1IDE2Ny4zNDdDMjIwLjUxMiAxNjUuODczIDIyMS4xIDE2NC4yMzMgMjIxLjM0NCAxNjIuNTI1QzIyMS44ODEgMTU4LjgxMSAyMjAuNjQ4IDE1NS4xMDMgMjE3Ljg3NCAxNTIuMDc5QzIxNS43MTYgMTQ5LjcyNiAyMTIuNjYyIDE0OC40MzEgMjA5LjI4MiAxNDguNDMxQzIwOC44ODkgMTQ4LjQzMSAyMDguNDg5IDE0OC40NTIgMjA4LjA4MSAxNDguNDkyQzIxMC42NDMgMTQwLjMwNCAyMTEuOTQyIDEzMS43NzQgMjExLjkzMyAxMjMuMTk1QzIxMS45MzMgNzYuNTIzMSAxNzQuMDk3IDM4LjY4NTEgMTI3LjQyNCAzOC42ODUxQzgwLjc1IDM4LjY4NTEgNDIuOTA5OSA3Ni41MTkxIDQyLjkwOTkgMTIzLjE5NUM0Mi45MDE1IDEzMS43NTIgNDQuMTkzNiAxNDAuMjYxIDQ2Ljc0MiAxNDguNDNINDYuNjUxOUM0My4yNzE5IDE0OC40MyA0MC4yMTkgMTQ5LjcyNCAzOC4wNiAxNTIuMDc3QzM1LjI4NyAxNTUuMDk4IDM0LjA1MjkgMTU4LjgxIDM0LjU4OTkgMTYyLjUyM0MzNC44MzQ2IDE2NC4yMzEgMzUuNDIzMSAxNjUuODcyIDM2LjMxOTkgMTY3LjM0NkMzNC40NTc5IDE2OC44NTIgMzMuMDg2IDE3MC45NSAzMi40MjIgMTczLjQ3M0MzMS45NjQyIDE3NS4yMjIgMzEuODgxNyAxNzcuMDQ3IDMyLjE3OTkgMTc4LjgzQzMyLjQ3ODEgMTgwLjYxMiAzMy4xNTAxIDE4Mi4zMTIgMzQuMTUxOSAxODMuODE2QzMzLjk3MzkgMTg0LjA5NCAzMy44MDk5IDE4NC4zODEgMzMuNjU0OSAxODQuNjc2QzMxLjk4NDkgMTg3Ljg0NyAzMS44NzcgMTkxLjQzIDMzLjM1MiAxOTQuNzY3QzM1LjU4OCAxOTkuODI0IDQxLjE0MTkgMjAzLjgwOCA1MS45Mjg5IDIwOC4wODVDNTguNjM1OSAyMTAuNzQ1IDY0Ljc3OSAyMTIuNDQ2IDY0LjgzMyAyMTIuNDYxQzczLjcwNSAyMTQuNzYyIDgxLjcyOSAyMTUuOTMxIDg4LjY3NSAyMTUuOTMxQzEwMC4wODEgMjE1LjkzMSAxMDguNTkxIDIxMi44MTEgMTE0LjAyNiAyMDYuNjQ3QzEyMy4yMjIgMjA4LjEwNiAxMzIuNTk0IDIwOC4wNTIgMTQxLjc3MyAyMDYuNDg5QzE0Ny4yMDEgMjEyLjc1NyAxNTUuNzYgMjE1LjkzMSAxNjcuMjYyIDIxNS45MzFDMTc0LjIwOCAyMTUuOTMxIDE4Mi4yMzIgMjE0Ljc2MiAxOTEuMTAzIDIxMi40NjFDMTkxLjE1OCAyMTIuNDQ2IDE5Ny4yOTggMjEwLjc0NSAyMDQuMDA4IDIwOC4wODVDMjE0Ljc5NSAyMDMuODA4IDIyMC4zNSAxOTkuODI0IDIyMi41ODUgMTk0Ljc2N0MyMjQuMDU5IDE5MS40MyAyMjMuOTUyIDE4Ny44NDcgMjIyLjI4MSAxODQuNjc2QzIyMi4xMjkgMTg0LjM3OSAyMjEuOTYxIDE4NC4wOTEgMjIxLjc4NCAxODMuODE2Wk0xMTAuMTM3IDE5Ni45OTdDMTA5LjY2OSAxOTcuODE1IDEwOS4xNjggMTk4LjYxNCAxMDguNjM1IDE5OS4zOTFDMTA3LjIzIDIwMS40NDggMTA1LjM4MiAyMDMuMDIgMTAzLjIzNyAyMDQuMTg4Qzk5LjEzNjkgMjA2LjQyNCA5My45NDcgMjA3LjIwNSA4OC42NzUgMjA3LjIwNUM4MC4zNDYgMjA3LjIwNSA3MS44MDggMjA1LjI1NiA2Ny4wMjMgMjA0LjAxNUM2Ni43ODcgMjAzLjk1NCAzNy42ODkgMTk1LjczNSA0MS4zNzMgMTg4LjczOUM0MS45OTMgMTg3LjU2MiA0My4wMTI5IDE4Ny4wOTIgNDQuMjk3OSAxODcuMDkyQzQ5LjQ4NDkgMTg3LjA5MiA1OC45Mjk5IDE5NC44MTYgNjIuOTg4OSAxOTQuODE2QzYzLjg5NTkgMTk0LjgxNiA2NC41MzU5IDE5NC40MyA2NC43OTY5IDE5My40ODhDNjYuNTI2OSAxODcuMjg0IDM4LjUwMzkgMTg0LjY3NiA0MC44NjM5IDE3NS42OTJDNDEuMjc5OSAxNzQuMTAyIDQyLjQxIDE3My40NTYgNDMuOTk4IDE3My40NTZDNTAuODU2IDE3My40NTUgNjYuMjQ4IDE4NS41MTYgNjkuNDY3IDE4NS41MTZDNjkuNzE0IDE4NS41MTYgNjkuODkwOSAxODUuNDQzIDY5Ljk4NjkgMTg1LjI5MUM3MC4wMDA5IDE4NS4yNjggNzAuMDE1IDE4NS4yNDYgNzAuMDI4IDE4NS4yMjJDNzEuNTM5IDE4Mi43MjcgNzAuNjcxOSAxODAuOTEzIDYwLjMyMDkgMTc0LjU3M0w1OS4zMjY5IDE3My45NjhDNDcuOTM1OSAxNjcuMDc0IDM5Ljk0MDkgMTYyLjkyNSA0NC40ODc5IDE1Ny45NzVDNDUuMDEwOSAxNTcuNDA0IDQ1Ljc1MjkgMTU3LjE1MSA0Ni42NTM5IDE1Ny4xNTFDNDcuNzIxOSAxNTcuMTUxIDQ5LjAxNDkgMTU3LjUwOCA1MC40Mzg5IDE1OC4xMDhDNTYuNDU0OSAxNjAuNjQ1IDY0Ljc5MyAxNjcuNTY0IDY4LjI3NiAxNzAuNTgxQzY4LjgyMzkgMTcxLjA1NyA2OS4zNjgzIDE3MS41MzggNjkuOTA4OSAxNzIuMDIyQzY5LjkwODkgMTcyLjAyMiA3NC4zMTkgMTc2LjYwOCA3Ni45ODUgMTc2LjYwOEM3Ny41OTkgMTc2LjYwOCA3OC4xMTk5IDE3Ni4zNjYgNzguNDcyOSAxNzUuNzY4QzgwLjM2NCAxNzIuNTggNjAuOTA5OSAxNTcuODM4IDU5LjgxMjkgMTUxLjc1NUM1OS4wNjg5IDE0Ny42MzQgNjAuMzM0OSAxNDUuNTQ2IDYyLjY3NDkgMTQ1LjU0NkM2My43ODc5IDE0NS41NDYgNjUuMTQ1OSAxNDYuMDIgNjYuNjQ0OSAxNDYuOTcxQzcxLjI5NDkgMTQ5LjkyMiA4MC4yNzI5IDE2NS4zNSA4My41NTk5IDE3MS4zNTJDODQuNjYxOSAxNzMuMzYzIDg2LjU0MjkgMTc0LjIxMyA4OC4yMzc5IDE3NC4yMTNDOTEuNjAwOSAxNzQuMjEzIDk0LjIyOTkgMTcwLjg3IDg4LjU0NTkgMTY2LjYyMkM4MC4wMDI5IDE2MC4yMyA4My4wMDEgMTQ5Ljc4MiA4Ny4wNzggMTQ5LjEzOUM4Ny4yNTIgMTQ5LjExMSA4Ny40Mjc5IDE0OS4wOTcgODcuNjAyOSAxNDkuMDk3QzkxLjMxMDkgMTQ5LjA5NyA5Mi45NDU5IDE1NS40ODYgOTIuOTQ1OSAxNTUuNDg2QzkyLjk0NTkgMTU1LjQ4NiA5Ny43Mzk5IDE2Ny41MjQgMTA1Ljk3NSAxNzUuNzUzQzExMy40NDcgMTgzLjIyMiAxMTQuNDkxIDE4OS4zNTEgMTEwLjEzNyAxOTYuOTk3Wk0xMzYuNzY2IDE5OC40MDdMMTM2LjMzOSAxOTguNDU4TDEzNS42MTEgMTk4LjU0MUMxMzUuMjI4IDE5OC41ODEgMTM0Ljg0NCAxOTguNjE5IDEzNC40NTkgMTk4LjY1NEwxMzQuMDg0IDE5OC42ODhMMTMzLjc0MSAxOTguNzE3TDEzMy4yNTUgMTk4Ljc1NkwxMzIuNzE4IDE5OC43OTVMMTMyLjE4MiAxOTguODNMMTMyLjA2MyAxOTguODM4QzEzMS45MjMgMTk4Ljg0NiAxMzEuNzgzIDE5OC44NTUgMTMxLjY0MSAxOTguODYyTDEzMS40NjIgMTk4Ljg3MkMxMzEuMjk2IDE5OC44ODEgMTMxLjEzIDE5OC44ODkgMTMwLjk2MiAxOTguODk2TDEzMC4zODEgMTk4LjkyMUwxMjkuODU0IDE5OC45MzlMMTI5LjUwMiAxOTguOTQ5SDEyOS4zMjNDMTI5LjIxMyAxOTguOTQ5IDEyOS4xMDQgMTk4Ljk1NSAxMjguOTk0IDE5OC45NTZIMTI4LjgyQzEyOC43MSAxOTguOTU2IDEyOC42MDEgMTk4Ljk1NiAxMjguNDkxIDE5OC45NjFMMTI4LjA0MyAxOTguOTY3SDEyNy40MThDMTI2LjkyNyAxOTguOTY3IDEyNi40MzcgMTk4Ljk2MiAxMjUuOTQ5IDE5OC45NTJMMTI1LjU1MyAxOTguOTQzQzEyNS40NCAxOTguOTQzIDEyNS4zMjcgMTk4LjkzOCAxMjUuMjE2IDE5OC45MzRMMTI0Ljc5NiAxOTguOTIyTDEyNC4yNzUgMTk4LjkwMkwxMjMuODA1IDE5OC44ODFMMTIzLjY4NCAxOTguODc2TDEyMy4yMzcgMTk4Ljg1M0MxMjMuMTEyIDE5OC44NDYgMTIyLjk4OSAxOTguODQgMTIyLjg2NSAxOTguODMxTDEyMi41NzYgMTk4LjgxNEMxMjIuMjEzIDE5OC43OTEgMTIxLjg1IDE5OC43NjYgMTIxLjQ4NyAxOTguNzM4TDEyMS4xMDcgMTk4LjcwN0MxMjAuOTQ3IDE5OC42OTUgMTIwLjc4NyAxOTguNjggMTIwLjYyOCAxOTguNjY2QzEyMC40NDEgMTk4LjY1IDEyMC4yNTQgMTk4LjYzMiAxMjAuMDY3IDE5OC42MTRDMTE5Ljc1NCAxOTguNTg1IDExOS40NDEgMTk4LjU1MyAxMTkuMTI4IDE5OC41MTlIMTE5LjExM0MxMjMuNjgzIDE4OC4zMjQgMTIxLjM3MiAxNzguODAyIDExMi4xMzcgMTY5LjU3NUMxMDYuMDggMTYzLjUyNiAxMDIuMDUxIDE1NC41OTQgMTAxLjIxNSAxNTIuNjMzQzk5LjUyMjkgMTQ2LjgyOCA5NS4wNDUgMTQwLjM3NSA4Ny42MDggMTQwLjM3NUM4Ni45NzkgMTQwLjM3NSA4Ni4zNTEgMTQwLjQyNSA4NS43MyAxNDAuNTIzQzgyLjQ3MiAxNDEuMDM2IDc5LjYyNCAxNDIuOTExIDc3LjU5MiAxNDUuNzMzQzc1LjM5NiAxNDMuMDAyIDczLjI2MiAxNDAuODMxIDcxLjMzMiAxMzkuNjA1QzY4LjQyMiAxMzcuNzYgNjUuNTE3OSAxMzYuODI0IDYyLjY4ODkgMTM2LjgyNEM1OS4xNTc5IDEzNi44MjQgNTYuMDAxOSAxMzguMjc0IDUzLjgwMTkgMTQwLjkwNEw1My43NDU5IDE0MC45NzFDNTMuNzAzOSAxNDAuNzk4IDUzLjY2MzkgMTQwLjYyNSA1My42MjI5IDE0MC40NTFMNTMuNjE3OSAxNDAuNDI4QzUzLjE5OTIgMTM4LjYzOCA1Mi44NDc3IDEzNi44MzMgNTIuNTYzOSAxMzUuMDE2QzUyLjU2MzkgMTM1LjAwNCA1Mi41NjM5IDEzNC45OTIgNTIuNTU3OSAxMzQuOThDNTIuNTM1OSAxMzQuODQzIDUyLjUxNTkgMTM0LjcwNSA1Mi40OTQ5IDEzNC41NjhDNTIuNDMzNCAxMzQuMTYyIDUyLjM3NTcgMTMzLjc1NSA1Mi4zMjE5IDEzMy4zNDhDNTIuMjk3OSAxMzMuMTYzIDUyLjI3MTkgMTMyLjk3OCA1Mi4yNDg5IDEzMi43OTNMNTIuMTgwOSAxMzIuMjM4QzUyLjE1ODkgMTMyLjA1MyA1Mi4xNDA5IDEzMS44ODUgNTIuMTIwOSAxMzEuNzA5TDUyLjExNSAxMzEuNjY1QzUyLjAzNTEgMTMwLjk0NSA1MS45NjUxIDEzMC4yMjUgNTEuOTA0OSAxMjkuNTAzTDUxLjg4MjkgMTI5LjIyNkw1MS44NDc5IDEyOC43NTRDNTEuODM3OSAxMjguNjI1IDUxLjgyNzkgMTI4LjQ5NSA1MS44MjA5IDEyOC4zNjVDNTEuODIwOSAxMjguMzM0IDUxLjgxNTkgMTI4LjMwNCA1MS44MTQ5IDEyOC4yNzVDNTEuNzg5NSAxMjcuOTEzIDUxLjc2NzggMTI3LjU1IDUxLjc0OTkgMTI3LjE4N0M1MS43Mzk5IDEyNi45OTggNTEuNzI5OSAxMjYuODEgNTEuNzIxOSAxMjYuNjJMNTEuNzAxOSAxMjYuMTI0TDUxLjY5NjkgMTI1Ljk3NEw1MS42ODA5IDEyNS41MTdMNTEuNjcwOSAxMjUuMTI4QzUxLjY3MDkgMTI0Ljk3MyA1MS42NjI5IDEyNC44MTggNTEuNjYwOSAxMjQuNjYzQzUxLjY1NzkgMTI0LjUwOCA1MS42NTM5IDEyNC4zMzggNTEuNjUyOSAxMjQuMTc0QzUxLjY1MDkgMTI0LjAxIDUxLjY1MjkgMTIzLjg0OCA1MS42NDc5IDEyMy42ODVDNTEuNjQzOSAxMjMuNTIxIDUxLjY0NzkgMTIzLjM1OCA1MS42NDc5IDEyMy4xOTVDNTEuNjQ3OSA4MS4zNDIxIDg1LjU3ODkgNDcuNDExMSAxMjcuNDM2IDQ3LjQxMTFDMTY5LjI5MiA0Ny40MTExIDIwMy4yMjIgODEuMzQxMSAyMDMuMjIyIDEyMy4xOTVWMTI0LjE3NEMyMDMuMjIyIDEyNC4zMzcgMjAzLjIxNyAxMjQuNTAxIDIwMy4yMTQgMTI0LjY2M0MyMDMuMjE0IDEyNC43OTggMjAzLjIwOCAxMjQuOTMxIDIwMy4yMDQgMTI1LjA2OEMyMDMuMjA0IDEyNS4xODggMjAzLjE5OSAxMjUuMzA5IDIwMy4xOTUgMTI1LjQyNUMyMDMuMTk1IDEyNS41NzggMjAzLjE4NiAxMjUuNzMxIDIwMy4xODEgMTI1Ljg4NFYxMjUuODk2TDIwMy4xNiAxMjYuNDI3QzIwMy4xNTMgMTI2LjU4MiAyMDMuMTQ3IDEyNi43MzggMjAzLjEzOSAxMjYuODkzTDIwMy4xMzQgMTI3LjAwM0wyMDMuMTA3IDEyNy40OTlDMjAzLjA0OCAxMjguNTYyIDIwMi45NjcgMTI5LjYyMyAyMDIuODY2IDEzMC42ODNWMTMwLjY5NkMyMDIuODQ5IDEzMC44NyAyMDIuODMyIDEzMS4wNDQgMjAyLjgxMyAxMzEuMjE4TDIwMi43NjggMTMxLjYyOUwyMDIuNjc5IDEzMi40MzNMMjAyLjYyOCAxMzIuODRMMjAyLjU2NSAxMzMuMzE5QzIwMi41NDIgMTMzLjQ5MyAyMDIuNTE5IDEzMy42NjggMjAyLjQ5MyAxMzMuODQxQzIwMi40NjcgMTM0LjAzNiAyMDIuNDM4IDEzNC4yMyAyMDIuNDA5IDEzNC40MjRMMjAyLjM0IDEzNC44ODNMMjAyLjI1OCAxMzUuNDAzQzIwMi4yMyAxMzUuNTc2IDIwMi4yIDEzNS43NDggMjAyLjE2OCAxMzUuOTJDMjAyLjEzNSAxMzYuMDkzIDIwMi4xMDkgMTM2LjI2NSAyMDIuMDc5IDEzNi40MzdDMjAyLjAxOSAxMzYuNzgxIDIwMS45NTYgMTM3LjEyNSAyMDEuODkgMTM3LjQ2OEMyMDEuNzg5IDEzNy45ODEgMjAxLjY4NiAxMzguNDkzIDIwMS41OCAxMzkuMDA1TDIwMS40NyAxMzkuNTEyQzIwMS40MzQgMTM5LjY4MSAyMDEuMzk1IDEzOS44NTEgMjAxLjM1NyAxNDAuMDJDMTk5LjIyNCAxMzcuOTQ3IDE5Ni4zOTkgMTM2LjgxOCAxOTMuMjg0IDEzNi44MThDMTkwLjQ1NyAxMzYuODE4IDE4Ny41NSAxMzcuNzUzIDE4NC42NDEgMTM5LjU5OEMxODIuNzExIDE0MC44MjQgMTgwLjU3OCAxNDIuOTk2IDE3OC4zODEgMTQ1LjcyNkMxNzYuMzQ2IDE0Mi45MDQgMTczLjQ5OCAxNDEuMDI5IDE3MC4yNDIgMTQwLjUxNkMxNjkuNjIxIDE0MC40MTggMTY4Ljk5MyAxNDAuMzY4IDE2OC4zNjQgMTQwLjM2OEMxNjAuOTI1IDE0MC4zNjggMTU2LjQ1IDE0Ni44MjEgMTU0Ljc1NyAxNTIuNjI2QzE1My45MTcgMTU0LjU4NyAxNDkuODg3IDE2My41MTkgMTQzLjgyNSAxNjkuNTc3QzEzNC41OTYgMTc4Ljc3NSAxMzIuMjY4IDE4OC4yNTQgMTM2Ljc2NiAxOTguNDA3Wk0yMTUuMDA3IDE3Ny45OThMMjE0Ljk3NyAxNzguMDg3QzIxNC45MDEgMTc4LjI4OCAyMTQuODEzIDE3OC40ODQgMjE0LjcxNCAxNzguNjc0QzIxNC42MzkgMTc4LjgxNCAyMTQuNTU4IDE3OC45NSAyMTQuNDcgMTc5LjA4MkMyMTQuMzAzIDE3OS4zMzEgMjE0LjEyIDE3OS41NjkgMjEzLjkyMSAxNzkuNzkzQzIxMy44NzUgMTc5Ljg0NSAyMTMuODMxIDE3OS44OTcgMjEzLjc3OSAxNzkuOTQ4QzIxMy43MDcgMTgwLjAyNSAyMTMuNjM0IDE4MC4xMDEgMjEzLjU1OSAxODAuMTc1QzIxMi4yMTMgMTgxLjUwOSAyMTAuMTYxIDE4Mi42NzkgMjA3Ljg0MSAxODMuNzUyQzIwNy41NzggMTgzLjg3MSAyMDcuMzExIDE4My45OSAyMDcuMDQyIDE4NC4xMUwyMDYuNzc0IDE4NC4yMjlDMjA2LjU5NSAxODQuMzA4IDIwNi40MTYgMTg0LjM4NiAyMDYuMjI4IDE4NC40NjNDMjA2LjA0OSAxODQuNTQxIDIwNS44NjMgMTg0LjYxOSAyMDUuNjc3IDE4NC42OTVMMjA1LjExOSAxODQuOTI1QzIwMy44MTQgMTg1LjQ2MiAyMDIuNDc3IDE4NS45NzQgMjAxLjE3MyAxODYuNDc5TDIwMC42MTUgMTg2LjY5NkwyMDAuMDY0IDE4Ni45MTJDMTk5LjY5NyAxODcuMDU1IDE5OS4zMzUgMTg3LjE5OCAxOTguOTc5IDE4Ny4zNDFMMTk4LjQ0OCAxODcuNTU1TDE5Ny45MjYgMTg3Ljc2OEwxOTcuNjcgMTg3Ljg3NkMxOTcuNDk5IDE4Ny45NDcgMTk3LjMzMiAxODguMDE4IDE5Ny4xNjUgMTg4LjA4OUMxOTMuMzI4IDE4OS43MzYgMTkwLjU2NyAxOTEuNDExIDE5MS4xNDcgMTkzLjQ4OUMxOTEuMTYzIDE5My41NDggMTkxLjE4MSAxOTMuNjA0IDE5MS4yMDEgMTkzLjY1OUMxOTEuMjUzIDE5My44MTMgMTkxLjMyNCAxOTMuOTU4IDE5MS40MTMgMTk0LjA5NUMxOTEuNDY1IDE5NC4xNzYgMTkxLjUyNSAxOTQuMjUzIDE5MS41OTIgMTk0LjMyM0MxOTIuMjc0IDE5NS4wMzIgMTkzLjUxNSAxOTQuOTIgMTk1LjA4IDE5NC4zNTdDMTk1LjMgMTk0LjI3NiAxOTUuNTE5IDE5NC4xOTIgMTk1LjczNiAxOTQuMTA0TDE5NS44NzIgMTk0LjA0OEMxOTYuMjMgMTkzLjg5NiAxOTYuNjA5IDE5My43MjYgMTk2Ljk5NiAxOTMuNTQyQzE5Ny4wOTMgMTkzLjQ5NiAxOTcuMTkxIDE5My40NTIgMTk3LjI4OSAxOTMuNDAxQzE5OS4yMDMgMTkyLjQ2NSAyMDEuMzcyIDE5MS4yMDUgMjAzLjUyNCAxOTAuMDU4QzIwNC4zODUgMTg5LjU5MyAyMDUuMjU4IDE4OS4xNTIgMjA2LjE0MiAxODguNzMzQzIwOC4xOCAxODcuNzc0IDIxMC4wOTYgMTg3LjA5NCAyMTEuNjM2IDE4Ny4wOTRDMjEyLjM1OSAxODcuMDk0IDIxMi45OTcgMTg3LjI0MiAyMTMuNTI5IDE4Ny41ODJMMjEzLjYxOCAxODcuNjQxQzIxMy45NTIgMTg3Ljg3NiAyMTQuMjMyIDE4OC4xNzggMjE0LjQ0MSAxODguNTI4QzIxNC40ODIgMTg4LjU5NSAyMTQuNTIyIDE4OC42NjYgMjE0LjU2MSAxODguNzM5QzIxNS4zMjIgMTkwLjE4NCAyMTQuNjg1IDE5MS42OCAyMTMuMTk0IDE5My4xNDdDMjExLjc2MyAxOTQuNTU2IDIwOS41MzcgMTk1LjkzNyAyMDcuMDA3IDE5Ny4yMTVDMjA2LjgxOSAxOTcuMzEgMjA2LjYzMSAxOTcuNDA1IDIwNi40NCAxOTcuNDk4QzE5OC45MSAyMDEuMTk2IDE4OS4wNDkgMjAzLjk4MSAxODguOTEyIDIwNC4wMTZDMTg2LjI4NCAyMDQuNjk3IDE4Mi41MjYgMjA1LjU5MSAxNzguMjkyIDIwNi4yNkwxNzcuNjY2IDIwNi4zNThMMTc3LjU2MyAyMDYuMzczQzE3Ny4wODkgMjA2LjQ0NSAxNzYuNjE0IDIwNi41MTIgMTc2LjEzOCAyMDYuNTc0QzE3NS42NTUgMjA2LjYzOSAxNzUuMTY3IDIwNi42OTggMTc0LjY3NiAyMDYuNzUzTDE3NC41ODYgMjA2Ljc2M0MxNzIuODA2IDIwNi45NjggMTcxLjAxOSAyMDcuMTA0IDE2OS4yMjggMjA3LjE2OUgxNjkuMjAyQzE2OC41NTQgMjA3LjE5MiAxNjcuOTA3IDIwNy4yMDQgMTY3LjI1OSAyMDcuMjA0SDE2Ni41MTJDMTY1LjUyNCAyMDcuMTkxIDE2NC41MzggMjA3LjE0NiAxNjMuNTUzIDIwNy4wN0MxNjMuNTMgMjA3LjA3IDE2My41MDUgMjA3LjA3IDE2My40ODIgMjA3LjA2NEMxNjMuMTI5IDIwNy4wMzcgMTYyLjc3NyAyMDcuMDA0IDE2Mi40MjUgMjA2Ljk2NUMxNjIuMDYgMjA2LjkyNiAxNjEuNjk2IDIwNi44ODIgMTYxLjMzMyAyMDYuODMzQzE2MS4wOTQgMjA2LjgwMSAxNjAuODU2IDIwNi43NjUgMTYwLjYxOCAyMDYuNzI2QzE2MC4zNzYgMjA2LjY4NyAxNjAuMTM0IDIwNi42NDcgMTU5Ljg5MyAyMDYuNjA1TDE1OS41NjQgMjA2LjU0M0wxNTkuNTM5IDIwNi41MzhDMTU5LjE5MiAyMDYuNDcyIDE1OC44NDcgMjA2LjM5OSAxNTguNTAzIDIwNi4zMTlDMTU4LjMwMyAyMDYuMjc0IDE1OC4xMDQgMjA2LjIzIDE1Ny45MDcgMjA2LjE3NkwxNTcuNzg4IDIwNi4xNDZDMTU3LjY5IDIwNi4xMjIgMTU3LjU5NSAyMDYuMDk2IDE1Ny40OTggMjA2LjA3TDE1Ny40NDUgMjA2LjA1NkwxNTcuMTM3IDIwNS45NjZDMTU3LjAyNSAyMDUuOTM1IDE1Ni45MTMgMjA1LjkwMSAxNTYuODAxIDIwNS44NjhMMTU2Ljc2MiAyMDUuODU3TDE1Ni40NzEgMjA1Ljc2OEMxNTYuMzYxIDIwNS43MzQgMTU2LjI1MSAyMDUuNjk4IDE1Ni4xNDIgMjA1LjY2MkwxNTUuODc0IDIwNS41NzNMMTU1LjY3NyAyMDUuNTA0QzE1NS40ODcgMjA1LjQzNyAxNTUuMjk4IDIwNS4zNjggMTU1LjExMSAyMDUuMjk2TDE1NC45MzMgMjA1LjIyNkwxNTQuNzg2IDIwNS4xNjhDMTU0LjUwMiAyMDUuMDU0IDE1NC4yMiAyMDQuOTM1IDE1My45NDEgMjA0LjgxTDE1My43NTYgMjA0LjcyTDE1My43MjUgMjA0LjcwNkMxNTMuNjU5IDIwNC42NzUgMTUzLjU5NCAyMDQuNjQ0IDE1My41MjggMjA0LjYxN0MxNTMuMzk5IDIwNC41NTUgMTUzLjI3MSAyMDQuNDkxIDE1My4xNDQgMjA0LjQyNkwxNTMuMTA1IDIwNC40MDdMMTUyLjkyMSAyMDQuMzFDMTUyLjU5NCAyMDQuMTM5IDE1Mi4yNzQgMjAzLjk1NyAxNTEuOTYgMjAzLjc2NEwxNTEuNzg4IDIwMy42NThDMTUxLjcwMiAyMDMuNjA1IDE1MS42MTYgMjAzLjU1IDE1MS41MzIgMjAzLjQ5NEwxNTEuMzA4IDIwMy4zNDZMMTUxLjA2NyAyMDMuMThMMTUwLjkyMyAyMDMuMDc3QzE1MC43NzEgMjAyLjk2OSAxNTAuNjIyIDIwMi44NTcgMTUwLjQ3NiAyMDIuNzQyTDE1MC4yNDMgMjAyLjU2M0MxNTAuMTUgMjAyLjQ4OCAxNTAuMDU4IDIwMi40MTIgMTQ5Ljk2NyAyMDIuMzM1QzE0OS44OSAyMDIuMjcyIDE0OS44MTUgMjAyLjIwNiAxNDkuNzQgMjAyLjE0TDE0OS43MzQgMjAyLjEzNUMxNDkuNjUzIDIwMi4wNjQgMTQ5LjU3NCAyMDEuOTkzIDE0OS40OTUgMjAxLjkyQzE0OS40MTcgMjAxLjg0OSAxNDkuMzM5IDIwMS43NzcgMTQ5LjI2MyAyMDEuNzA0TDE0OS4yNTQgMjAxLjY5NUMxNDkuMTc0IDIwMS42MTkgMTQ5LjA5NiAyMDEuNTQyIDE0OS4wMTkgMjAxLjQ2M0MxNDguOTQyIDIwMS4zODUgMTQ4Ljg2MyAyMDEuMzA3IDE0OC43ODggMjAxLjIyN0MxNDguNzEzIDIwMS4xNDggMTQ4LjYzNiAyMDEuMDY3IDE0OC41NjIgMjAwLjk4NEMxNDguNDg4IDIwMC45MDIgMTQ4LjQyIDIwMC44MjcgMTQ4LjM1IDIwMC43NDZMMTQ4LjMyNyAyMDAuNzE5QzE0OC4yNTkgMjAwLjY0MSAxNDguMTkyIDIwMC41NjIgMTQ4LjEyNiAyMDAuNDgxQzE0Ny45ODMgMjAwLjMxIDE0Ny44NDQgMjAwLjEzNSAxNDcuNzEgMTk5Ljk1NkMxNDcuNTc1IDE5OS43NzYgMTQ3LjQ0MyAxOTkuNTkyIDE0Ny4zMTQgMTk5LjQwNUwxNDcuMTkxIDE5OS4yMjFDMTQ3LjAyNyAxOTguOTgxIDE0Ni44NjcgMTk4LjczOSAxNDYuNzEyIDE5OC40OTNDMTQ2LjU5NiAxOTguMzE2IDE0Ni40ODMgMTk4LjEzOCAxNDYuMzczIDE5Ny45NTdDMTQ2LjMwMiAxOTcuODQ0IDE0Ni4yMzQgMTk3LjczIDE0Ni4xNjYgMTk3LjYxOEwxNDYuMTM4IDE5Ny41NzJDMTQ2LjA3MyAxOTcuNDYyIDE0Ni4wMDkgMTk3LjM1NCAxNDUuOTQ3IDE5Ny4yNDVDMTQ1LjkxMSAxOTcuMTg2IDE0NS44NzcgMTk3LjEyNyAxNDUuODQ1IDE5Ny4wNjZDMTQ1LjgxMiAxOTcuMDA0IDE0NS43NzQgMTk2Ljk0MSAxNDUuNzM5IDE5Ni44NzhMMTQ1LjY4MiAxOTYuNzc5TDE0NS42NDcgMTk2LjcxNUMxNDUuNTggMTk2LjU5NSAxNDUuNTE0IDE5Ni40NzQgMTQ1LjQ1IDE5Ni4zNTJDMTQ1LjQyIDE5Ni4yOTggMTQ1LjM5MSAxOTYuMjQ0IDE0NS4zNiAxOTYuMTkyTDE0NS4yNzEgMTk2LjAxOUwxNDUuMTgxIDE5NS44NDhDMTQ0Ljk1NiAxOTUuMzk4IDE0NC43NDMgMTk0Ljk0MiAxNDQuNTQzIDE5NC40OEwxNDQuNDcyIDE5NC4zMTFDMTQ0LjQyNiAxOTQuMTk4IDE0NC4zODMgMTk0LjA4NiAxNDQuMzM3IDE5My45NzVDMTQ0LjMxNSAxOTMuOTIxIDE0NC4yOTMgMTkzLjg2OCAxNDQuMjc0IDE5My44MTRDMTQ0LjE2NyAxOTMuNTM3IDE0NC4wNjcgMTkzLjI1NyAxNDMuOTc1IDE5Mi45NzVDMTQzLjk0MiAxOTIuODc0IDE0My45MSAxOTIuNzc1IDE0My44OCAxOTIuNjc1QzE0My44MDggMTkyLjQ0OCAxNDMuNzQzIDE5Mi4yMTkgMTQzLjY4NSAxOTEuOTg4QzE0My42MTQgMTkxLjcxOSAxNDMuNTUxIDE5MS40NDggMTQzLjQ5OCAxOTEuMTc1QzE0My40ODcgMTkxLjEyIDE0My40NzYgMTkxLjA2NSAxNDMuNDY3IDE5MS4wMTJDMTQzLjQxNSAxOTAuNzQ1IDE0My4zNzMgMTkwLjQ3NiAxNDMuMzQgMTkwLjIwNkMxNDMuMzMyIDE5MC4xNTMgMTQzLjMyNiAxOTAuMSAxNDMuMzIgMTkwLjA0N0wxNDMuMzAzIDE4OS44ODVDMTQzLjI4MSAxODkuNjczIDE0My4yNjQgMTg5LjQ2IDE0My4yNTQgMTg5LjI0N0MxNDMuMjU0IDE4OS4xOTMgMTQzLjI0OSAxODkuMTM5IDE0My4yNDcgMTg5LjA4N0MxNDMuMjQyIDE4OC45ODEgMTQzLjI0IDE4OC44NzUgMTQzLjIzOSAxODguNzY5QzE0My4xODMgMTg0LjQ5NiAxNDUuMzQ1IDE4MC4zODggMTQ5Ljk2OCAxNzUuNzY3QzE1OC4yMDMgMTY3LjU0IDE2Mi45OTcgMTU1LjUwMSAxNjIuOTk3IDE1NS41MDFDMTYyLjk5NyAxNTUuNTAxIDE2My4xMjYgMTU0Ljk5NiAxNjMuMzk0IDE1NC4yNjlDMTYzLjQzMSAxNTQuMTY4IDE2My40NyAxNTQuMDY0IDE2My41MTQgMTUzLjk1NUMxNjMuNjcgMTUzLjU0OCAxNjMuODQ2IDE1My4xNDggMTY0LjA0MSAxNTIuNzU4TDE2NC4wOCAxNTIuNjgzQzE2NC4yNDYgMTUyLjM1MSAxNjQuNDI4IDE1Mi4wMjcgMTY0LjYyNCAxNTEuNzEyQzE2NC42NyAxNTEuNjM5IDE2NC43MTQgMTUxLjU2NyAxNjQuNzY1IDE1MS40OTRDMTY0LjkxMiAxNTEuMjc3IDE2NS4wNjcgMTUxLjA2NSAxNjUuMjMgMTUwLjg2QzE2NS4zMTkgMTUwLjc0OSAxNjUuNDE2IDE1MC42MzkgMTY1LjUxMyAxNTAuNTMyQzE2NS41NTIgMTUwLjQ5IDE2NS41OSAxNTAuNDQ4IDE2NS42MzEgMTUwLjQwOEMxNjYuMTA4IDE0OS45MTUgMTY2LjY1MyAxNDkuNTEzIDE2Ny4yNyAxNDkuMjk5TDE2Ny4zNDggMTQ5LjI3M0MxNjcuNCAxNDkuMjU2IDE2Ny40NTIgMTQ5LjI0IDE2Ny41MDUgMTQ5LjIyNUMxNjcuNTY2IDE0OS4yMDkgMTY3LjYyNyAxNDkuMTk1IDE2Ny42OSAxNDkuMTgyTDE2Ny43MTkgMTQ5LjE3NkMxNjcuODQ5IDE0OS4xNSAxNjcuOTgxIDE0OS4xMzMgMTY4LjExNCAxNDkuMTI0SDE2OC4xMjVDMTY4LjE5NCAxNDkuMTI0IDE2OC4yNjQgMTQ5LjExNyAxNjguMzM1IDE0OS4xMTdDMTY4LjQyNCAxNDkuMTE3IDE2OC41MDcgMTQ5LjExNyAxNjguNTk0IDE0OS4xMjZDMTY4LjY4NCAxNDkuMTM0IDE2OC43NzMgMTQ5LjE0NCAxNjguODYzIDE0OS4xNThDMTY5LjYwNSAxNDkuMjc2IDE3MC4zMTEgMTQ5LjcxOCAxNzAuOTE5IDE1MC40QzE3MS4xNSAxNTAuNjYgMTcxLjM1OCAxNTAuOTQgMTcxLjU0IDE1MS4yMzZDMTcxLjY2IDE1MS40MjggMTcxLjc3MyAxNTEuNjMxIDE3MS44OCAxNTEuODQ1QzE3MS45MjMgMTUxLjkzNCAxNzEuOTY0IDE1Mi4wMTYgMTcyLjAwNCAxNTIuMTA0QzE3Mi4xMDggMTUyLjMzIDE3Mi4yMDIgMTUyLjU2IDE3Mi4yODQgMTUyLjc5NUMxNzIuNDc5IDE1My4zNDUgMTcyLjYyNiAxNTMuOTExIDE3Mi43MjMgMTU0LjQ4N0MxNzIuODA3IDE1NC45OTIgMTcyLjg1NyAxNTUuNTAyIDE3Mi44NzMgMTU2LjAxM0MxNzIuODgxIDE1Ni4yODYgMTcyLjg4MSAxNTYuNTYzIDE3Mi44NzMgMTU2Ljg0MkMxNzIuODE5IDE1OC4xNCAxNzIuNTUzIDE1OS40MjEgMTcyLjA4NiAxNjAuNjM0QzE3Mi4wNDQgMTYwLjc0NSAxNzEuOTk3IDE2MC44NTcgMTcxLjk1MiAxNjAuOTY5QzE3MS44NiAxNjEuMTk1IDE3MS43NTkgMTYxLjQxNyAxNzEuNjUgMTYxLjYzNEMxNzEuNTY5IDE2MS43OTkgMTcxLjQ4NCAxNjEuOTY1IDE3MS4zOTIgMTYyLjEzQzE3MS4zMzIgMTYyLjI0IDE3MS4yNjkgMTYyLjM1IDE3MS4yMDYgMTYyLjQ2QzE3MS4wNDUgMTYyLjczNCAxNzAuODcxIDE2My4wMDYgMTcwLjY4NCAxNjMuMjc3TDE3MC41NzEgMTYzLjQzOUMxNzAuMTI5IDE2NC4wNTUgMTY5LjYzNyAxNjQuNjMzIDE2OS4wOTkgMTY1LjE2N0MxNjguNTY5IDE2NS42OTggMTY4LjAwMSAxNjYuMTg5IDE2Ny40IDE2Ni42MzdDMTY2Ljc5OCAxNjcuMDgzIDE2Ni4yMzMgMTY3LjU3NyAxNjUuNzExIDE2OC4xMTRDMTY0LjIwOCAxNjkuNjkxIDE2My44NTggMTcxLjA4MyAxNjQuMTk2IDE3Mi4xMzhDMTY0LjI1IDE3Mi4zMDQgMTY0LjMyMSAxNzIuNDY1IDE2NC40MDcgMTcyLjYxN0MxNjQuNTA4IDE3Mi43OTEgMTY0LjYyOCAxNzIuOTUxIDE2NC43NjQgMTczLjA5N0wxNjQuODE3IDE3My4xNTJMMTY0Ljg3MSAxNzMuMjA2QzE2NC45MjUgMTczLjI1OCAxNjQuOTgyIDE3My4zMDkgMTY1LjA0MyAxNzMuMzU5TDE2NS4xMDMgMTczLjQwN0MxNjUuMjQ4IDE3My41MTkgMTY1LjQwMiAxNzMuNjE5IDE2NS41NjMgMTczLjcwN0MxNjUuNjEgMTczLjczMiAxNjUuNjUyIDE3My43NTcgMTY1LjcwNSAxNzMuNzgxQzE2NS44NzkgMTczLjg2NiAxNjYuMDU4IDE3My45MzkgMTY2LjI0MiAxNzMuOTk4QzE2Ni4yOTMgMTc0LjAxNSAxNjYuMzQ0IDE3NC4wMyAxNjYuMzk2IDE3NC4wNDZMMTY2LjQ2MSAxNzQuMDYzTDE2Ni41NTEgMTc0LjA4N0wxNjYuNjI4IDE3NC4xMDZMMTY2LjcxMiAxNzQuMTI0TDE2Ni43OTUgMTc0LjE0MUwxNjYuODc0IDE3NC4xNTRDMTY2LjkzMiAxNzQuMTY0IDE2Ni45OTIgMTc0LjE3NCAxNjcuMDUyIDE3NC4xODFMMTY3LjEwOSAxNzQuMTlMMTY3LjIxMyAxNzQuMkwxNjcuMjc3IDE3NC4yMDdMMTY3LjM4MiAxNzQuMjE0SDE2Ny40NDRMMTY3LjU1NCAxNzQuMjJIMTY3LjlMMTY3Ljk5OSAxNzQuMjE0TDE2OC4xMTMgMTc0LjIwN0wxNjguMjUyIDE3NC4xOTRMMTY4LjM4MiAxNzQuMTc5QzE2OC40MTIgMTc0LjE3OSAxNjguNDQyIDE3NC4xNzEgMTY4LjQ3MiAxNzQuMTY1QzE2OC44NzIgMTc0LjEwNyAxNjkuMjY0IDE3NC4wMDEgMTY5LjYzOSAxNzMuODQ5TDE2OS43OTggMTczLjc4MkMxNjkuODg3IDE3My43NDMgMTY5Ljk3NyAxNzMuNzAyIDE3MC4wNTkgMTczLjY1OEMxNzAuMjM1IDE3My41NyAxNzAuNDA2IDE3My40NyAxNzAuNTcgMTczLjM2MUMxNzAuNzk5IDE3My4yMTEgMTcxLjAxNSAxNzMuMDQzIDE3MS4yMTcgMTcyLjg1OEMxNzEuMjY1IDE3Mi44MTUgMTcxLjMxMiAxNzIuNzY5IDE3MS4zNTggMTcyLjcyNUMxNzEuMzgxIDE3Mi43MDMgMTcxLjQwMyAxNzIuNjgyIDE3MS40MjUgMTcyLjY1OEMxNzEuNDY5IDE3Mi42MTMgMTcxLjUxNCAxNzIuNTY5IDE3MS41NTggMTcyLjUyQzE3MS44NzggMTcyLjE2OCAxNzIuMTU1IDE3MS43OCAxNzIuMzgzIDE3MS4zNjNDMTc0LjM0IDE2Ny44MDQgMTc2LjM5MSAxNjQuMjk4IDE3OC41MzQgMTYwLjg0OUwxNzguODI4IDE2MC4zNzhMMTc5LjEyNSAxNTkuOTA3QzE3OS4yNzMgMTU5LjY2OCAxNzkuNDIzIDE1OS40MzMgMTc5LjU3MiAxNTkuMTk5TDE3OS43MjIgMTU4Ljk2NUMxODAuMjIgMTU4LjE4NSAxODAuNzI2IDE1Ny40MSAxODEuMjQxIDE1Ni42NDFMMTgxLjU0NiAxNTYuMTg1QzE4Mi4xNTggMTU1LjI3OCAxODIuNzY4IDE1NC4zOTYgMTgzLjM3MyAxNTMuNTU4TDE4My42NzQgMTUzLjE0M0MxODQuMzMyIDE1Mi4yMzYgMTg1LjAxNyAxNTEuMzQ4IDE4NS43MjggMTUwLjQ4MkwxODYuMDEgMTUwLjE0NEMxODYuMDU3IDE1MC4wODggMTg2LjEgMTUwLjAzMiAxODYuMTUxIDE0OS45NzhDMTg2LjI0NCAxNDkuODY4IDE4Ni4zMzcgMTQ5Ljc2MSAxODYuNDI4IDE0OS42NTdDMTg2LjQ3NCAxNDkuNjA0IDE4Ni41MTcgMTQ5LjU1MiAxODYuNTY2IDE0OS41TDE4Ni44MzQgMTQ5LjE5OEwxODYuOTY4IDE0OS4wNTFDMTg3LjEwMyAxNDguOTA2IDE4Ny4yMzUgMTQ4Ljc2NyAxODcuMzY1IDE0OC42MzRDMTg3LjQ1NSAxNDguNTQ0IDE4Ny41MzggMTQ4LjQ1NSAxODcuNjI0IDE0OC4zNzFDMTg4LjEzMSAxNDcuODUzIDE4OC42OSAxNDcuMzg4IDE4OS4yOTMgMTQ2Ljk4NUwxODkuNDMzIDE0Ni44OTVDMTg5LjU2NyAxNDYuODA1IDE4OS43MDYgMTQ2LjcyMSAxODkuODQ4IDE0Ni42NDVDMTkyLjIxMiAxNDUuMzAzIDE5NC4xNjkgMTQ1LjIwNCAxOTUuMjk2IDE0Ni4zMzFDMTk1Ljk3OCAxNDcuMDEzIDE5Ni4zNTYgMTQ4LjE0NCAxOTYuMzM1IDE0OS43MThDMTk2LjMzNSAxNDkuNzg3IDE5Ni4zMzUgMTQ5Ljg1NyAxOTYuMzMgMTQ5LjkyOVYxNTAuMDA2QzE5Ni4zMyAxNTAuMDc4IDE5Ni4zMjQgMTUwLjE1IDE5Ni4zMTggMTUwLjIyM0MxOTYuMzE4IDE1MC4zMTMgMTk2LjMwOCAxNTAuNDAyIDE5Ni4yOTkgMTUwLjQ5MkMxOTYuMjkgMTUwLjU4MSAxOTYuMjg1IDE1MC42NDkgMTk2LjI3NiAxNTAuNzI5QzE5Ni4yNzYgMTUwLjc1MSAxOTYuMjcyIDE1MC43NzQgMTk2LjI2OCAxNTAuNzk4QzE5Ni4yNjIgMTUwLjg2NyAxOTYuMjUzIDE1MC45MzggMTk2LjI0MyAxNTEuMDA5QzE5Ni4yNDMgMTUxLjAzIDE5Ni4yNDMgMTUxLjA1MiAxOTYuMjM1IDE1MS4wNzRDMTk2LjIyNCAxNTEuMTY5IDE5Ni4yMSAxNTEuMjYzIDE5Ni4xOTQgMTUxLjM1N0MxOTYuMTgzIDE1MS40NDcgMTk2LjE2OCAxNTEuNTMxIDE5Ni4xNTIgMTUxLjYxOUwxOTYuMTI2IDE1MS43NjhDMTk2LjEgMTUxLjkxIDE5Ni4wNjcgMTUyLjA1IDE5Ni4wMjYgMTUyLjE4OEMxOTUuOTQ4IDE1Mi40NDcgMTk1Ljg1NCAxNTIuNyAxOTUuNzQzIDE1Mi45NDZDMTk1LjU4OCAxNTMuMjg0IDE5NS40MTcgMTUzLjYxMyAxOTUuMjI5IDE1My45MzNDMTk1LjEyNSAxNTQuMTExIDE5NS4wMTggMTU0LjI4NiAxOTQuOTA3IDE1NC40NTlDMTk0Ljc5MyAxNTQuNjM4IDE5NC42NzMgMTU0LjgxOSAxOTQuNTQ5IDE1NS4wMDJDMTk0LjIzMyAxNTUuNDU0IDE5My45MDUgMTU1Ljg5NyAxOTMuNTY0IDE1Ni4zM0wxOTMuNDA4IDE1Ni41MjdDMTkyLjg1MiAxNTcuMjIgMTkyLjI3OCAxNTcuODk5IDE5MS42ODYgMTU4LjU2MkwxOTEuNDk5IDE1OC43NzJDMTkxLjI0NyAxNTkuMDUzIDE5MC45OTEgMTU5LjMzNiAxOTAuNzI5IDE1OS42MkwxOTAuNTMyIDE1OS44MzRDMTkwLjQwMSAxNTkuOTc3IDE5MC4yNjQgMTYwLjEyIDE5MC4xMzIgMTYwLjI2NEMxOTAuMDAxIDE2MC40MDcgMTg5Ljg2NCAxNjAuNTUyIDE4OS43MjYgMTYwLjY5N0wxODkuMzE1IDE2MS4xM0wxODguODk4IDE2MS41NjZMMTg4LjQ3OCAxNjIuMDAyQzE4OC4xOTYgMTYyLjI5NCAxODcuOTEzIDE2Mi41ODYgMTg3LjYyOCAxNjIuODc4QzE4My41NzMgMTY3LjAzNyAxNzkuMzAxIDE3MS4xODIgMTc3Ljg1NSAxNzMuNzY2QzE3Ny43NTggMTczLjkzNCAxNzcuNjcxIDE3NC4xMDggMTc3LjU5MyAxNzQuMjg1QzE3Ny4zODcgMTc0Ljc1NSAxNzcuMzAxIDE3NS4xNTcgMTc3LjM2IDE3NS40ODJDMTc3LjM3OSAxNzUuNTg5IDE3Ny40MTYgMTc1LjY5MSAxNzcuNDcxIDE3NS43ODVDMTc3LjU1MiAxNzUuOTI2IDE3Ny42NTEgMTc2LjA1NiAxNzcuNzY2IDE3Ni4xNzJDMTc3LjgxOSAxNzYuMjI0IDE3Ny44NzUgMTc2LjI3MiAxNzcuOTM0IDE3Ni4zMTZDMTc4LjIzMiAxNzYuNTI4IDE3OC41OTEgMTc2LjYzNyAxNzguOTU3IDE3Ni42MjdIMTc5LjA3MUwxNzkuMTg4IDE3Ni42MThMMTc5LjMwNSAxNzYuNjA1TDE3OS40MDIgMTc2LjU5MUMxNzkuNDE1IDE3Ni41ODkgMTc5LjQyOSAxNzYuNTg3IDE3OS40NDIgMTc2LjU4M0wxNzkuNTMxIDE3Ni41NjZMMTc5LjU1NCAxNzYuNTYxTDE3OS42NTMgMTc2LjU0TDE3OS42ODggMTc2LjUzMUMxNzkuNzIzIDE3Ni41MjIgMTc5Ljc1NyAxNzYuNTEzIDE3OS43OTIgMTc2LjUwM0MxNzkuODI3IDE3Ni40OTMgMTc5Ljg3NSAxNzYuNDggMTc5LjkxNyAxNzYuNDY2QzE4MC4wOTMgMTc2LjQxMyAxODAuMjY1IDE3Ni4zNSAxODAuNDM0IDE3Ni4yNzhDMTgwLjUyMyAxNzYuMjQyIDE4MC42MSAxNzYuMjAzIDE4MC42OTYgMTc2LjE2MUMxODAuNzQxIDE3Ni4xNDEgMTgwLjc4NiAxNzYuMTIgMTgwLjgyOCAxNzYuMDk4TDE4MC45NjIgMTc2LjAzMkMxODEuMjgyIDE3NS44NjYgMTgxLjU5NCAxNzUuNjg1IDE4MS44OTggMTc1LjQ5MUwxODIuMDMxIDE3NS40MDFDMTgyLjA3NiAxNzUuMzczIDE4Mi4xMjEgMTc1LjM0NCAxODIuMTY0IDE3NS4zMTJMMTgyLjI5NyAxNzUuMjIzTDE4Mi4zNjggMTc1LjE3NEwxODIuNTYgMTc1LjAzOUMxODIuNzM5IDE3NC45MTYgMTgyLjkwNiAxNzQuNzg5IDE4My4wNzUgMTc0LjY2TDE4My4wOSAxNzQuNjQ4TDE4My4zNTkgMTc0LjQ0QzE4My43MjYgMTc0LjE1IDE4NC4wNzQgMTczLjg1OCAxODQuMzkgMTczLjU4M0wxODQuNiAxNzMuMzk5TDE4NC42MTkgMTczLjM4MUwxODQuNzI5IDE3My4yODRDMTg0Ljk4NyAxNzMuMDUyIDE4NS4yMTcgMTcyLjgzNiAxODUuNDA4IDE3Mi42NThMMTg1LjQ4NyAxNzIuNTgxQzE4NS41NTYgMTcyLjUxNiAxODUuNjE5IDE3Mi40NTUgMTg1LjY3NiAxNzIuNDAzTDE4NS43ODggMTcyLjI5MkwxODUuODI4IDE3Mi4yNTNMMTg1LjgzOSAxNzIuMjQyTDE4NS45NTYgMTcyLjEyNUwxODYuMDMgMTcyLjA0OEwxODYuMDM5IDE3Mi4wNDFMMTg2LjA3NCAxNzIuMDA5TDE4Ni4xMTggMTcxLjk2OUwxODYuMTMyIDE3MS45NTZMMTg2LjE2OSAxNzEuOTIyTDE4Ni4zNzMgMTcxLjc0M0wxODYuNDg3IDE3MS42NDFDMTg2LjU0OCAxNzEuNTg4IDE4Ni42MDcgMTcxLjUzNCAxODYuNjY2IDE3MS40NzlMMTg2LjgwMiAxNzEuMzU4QzE4Ni44MjcgMTcxLjMzOCAxODYuODUxIDE3MS4zMTYgMTg2Ljg3NiAxNzEuMjk0TDE4Ny4wMTkgMTcxLjE2OUwxODcuMjI5IDE3MC45ODRMMTg3LjM0MSAxNzAuODg3QzE4Ny43NzYgMTcwLjUwOSAxODguMzA1IDE3MC4wNTIgMTg4LjkxMyAxNjkuNTM3TDE4OS4xNjIgMTY5LjMyNkwxODkuNTczIDE2OC45ODFMMTg5Ljk5NCAxNjguNjNDMTkwLjU0NCAxNjguMTczIDE5MS4xMzYgMTY3LjY4OCAxOTEuNzYyIDE2Ny4xODVMMTkyLjE3MyAxNjYuODU1QzE5Mi41MjMgMTY2LjU3NiAxOTIuODgyIDE2Ni4yOTIgMTkzLjI0NiAxNjYuMDA2QzE5My4zOTMgMTY1Ljg5MSAxOTMuNTQyIDE2NS43NzYgMTkzLjY5NCAxNjUuNjYyQzE5NC4wNjYgMTY1LjM3MyAxOTQuNDQgMTY1LjA4NiAxOTQuODE3IDE2NC44MDNDMTk1LjY3NSAxNjQuMTU1IDE5Ni41NiAxNjMuNTA2IDE5Ny40NTYgMTYyLjg3NEwxOTcuODQgMTYyLjYwNkMxOTguMTA5IDE2Mi40MjEgMTk4LjM3NyAxNjIuMjM1IDE5OC42NDUgMTYyLjA1NEwxOTguODg4IDE2MS44OUMxOTkuMzY3IDE2MS41NjUgMTk5Ljg1MyAxNjEuMjQ4IDIwMC4zNDMgMTYwLjkzOUwyMDAuNTg2IDE2MC43ODZMMjAwLjgyNyAxNjAuNjM2QzIwMS4wNjkgMTYwLjQ4NiAyMDEuMzA5IDE2MC4zMzkgMjAxLjU0OCAxNjAuMTk2TDIwMS43ODcgMTYwLjA1M0wyMDIuMjY1IDE1OS43NzVMMjAyLjczNCAxNTkuNTA2TDIwMi44MjkgMTU5LjQ1NEwyMDMuMiAxNTkuMjVDMjAzLjM1NSAxNTkuMTY2IDIwMy41MDkgMTU5LjA4NSAyMDMuNjYzIDE1OS4wMDZMMjAzLjg5MiAxNTguODg4TDIwNC4xMTUgMTU4Ljc3NkMyMDQuMTkzIDE1OC43MzkgMjA0LjI3IDE1OC43IDIwNC4zNDYgMTU4LjY2M0MyMDQuODQ4IDE1OC40MTUgMjA1LjM2IDE1OC4xODcgMjA1Ljg4IDE1Ny45NzlDMjA2LjAyMSAxNTcuOTE5IDIwNi4xNjEgMTU3Ljg2NSAyMDYuMyAxNTcuODE4TDIwNi43MSAxNTcuNjc0QzIwNi44MzMgMTU3LjYzMyAyMDYuOTUzIDE1Ny41OTQgMjA3LjA2OCAxNTcuNTU5TDIwNy4xMDggMTU3LjU0N0MyMDcuMTcgMTU3LjUyNyAyMDcuMjMyIDE1Ny41MDkgMjA3LjI5MyAxNTcuNDkzTDIwNy4zMTEgMTU3LjQ4OEMyMDcuNDM5IDE1Ny40NTEgMjA3LjU2NiAxNTcuNDE5IDIwNy42OTEgMTU3LjM4OUgyMDcuN0MyMDguMDU0IDE1Ny4zMDQgMjA4LjQxNCAxNTcuMjQzIDIwOC43NzcgMTU3LjIwNkMyMDguOTQ0IDE1Ny4xODkgMjA5LjExMSAxNTcuMTggMjA5LjI3OSAxNTcuMTgxSDIwOS4zNjNDMjA5LjQ3NSAxNTcuMTgxIDIwOS41ODMgMTU3LjE4OCAyMDkuNjkgMTU3LjE5OUMyMDkuNzM5IDE1Ny4xOTkgMjA5Ljc4OCAxNTcuMjA5IDIwOS44MzYgMTU3LjIxNUgyMDkuODU2QzIwOS45MDQgMTU3LjIyMSAyMDkuOTUyIDE1Ny4yMjggMjEwIDE1Ny4yMzlDMjEwLjA0NyAxNTcuMjQ4IDIxMC4wOTUgMTU3LjI1NiAyMTAuMTQxIDE1Ny4yNjdIMjEwLjE1NkMyMTAuMjAzIDE1Ny4yNzcgMjEwLjI0NSAxNTcuMjg5IDIxMC4yOTQgMTU3LjMwM0MyMTAuNTQ4IDE1Ny4zNzQgMjEwLjc5IDE1Ny40ODQgMjExLjAxMiAxNTcuNjI4QzIxMS4xMjEgMTU3LjY5OSAyMTEuMjIzIDE1Ny43NzkgMjExLjMxNyAxNTcuODY4TDIxMS4zNDQgMTU3Ljg5NEMyMTEuMzYyIDE1Ny45MSAyMTEuMzc5IDE1Ny45MjcgMjExLjM5NSAxNTcuOTQ0TDIxMS40NDQgMTU3Ljk5N0MyMTEuODQ2IDE1OC40MTggMjEyLjE3OCAxNTguOTAxIDIxMi40MjggMTU5LjQyN0wyMTIuNDY2IDE1OS41MTdDMjEyLjU1MSAxNTkuNzE3IDIxMi42MTggMTU5LjkyNCAyMTIuNjY2IDE2MC4xMzVDMjEyLjgwOCAxNjAuNzgxIDIxMi43NTMgMTYxLjQ1NSAyMTIuNTA4IDE2Mi4wN0MyMTIuNDE1IDE2Mi4zMTggMjEyLjMwMiAxNjIuNTU3IDIxMi4xNjkgMTYyLjc4NUMyMTEuODU4IDE2My4zMDkgMjExLjQ4OSAxNjMuNzk2IDIxMS4wNyAxNjQuMjM3TDIxMC45ODEgMTY0LjMzMkMyMTAuODQ4IDE2NC40NzIgMjEwLjcxIDE2NC42MTIgMjEwLjU2NSAxNjQuNzUyQzIxMC41MDEgMTY0LjgxNSAyMTAuNDM0IDE2NC44NzcgMjEwLjM2NyAxNjQuOTRMMjEwLjE2MiAxNjUuMTI5TDIxMC4wNTUgMTY1LjIyNEMyMDkuNzk3IDE2NS40NTQgMjA5LjUzMiAxNjUuNjc3IDIwOS4yNjMgMTY1Ljg5M0MyMDkuMSAxNjYuMDI1IDIwOC45MzYgMTY2LjE1NCAyMDguNzcgMTY2LjI4MUMyMDguMTg0IDE2Ni43MjkgMjA3LjU4NyAxNjcuMTYxIDIwNi45NzkgMTY3LjU3OEMyMDYuNjEyIDE2Ny44MyAyMDYuMjQyIDE2OC4wNzcgMjA1Ljg2OSAxNjguMzIxQzIwNC45NSAxNjguOTI0IDIwNC4wMjEgMTY5LjUxMiAyMDMuMDgzIDE3MC4wODRDMjAxLjExNSAxNzEuMjk0IDE5OC45MzQgMTcyLjU4OCAxOTYuNjA5IDE3My45OTVMMTk2LjAwNyAxNzQuMzZDMTk1LjM0OCAxNzQuNzYyIDE5NC43MjYgMTc1LjE0NiAxOTQuMTQgMTc1LjUxMkwxOTMuODQ1IDE3NS42OTdMMTkzLjI4NyAxNzYuMDU1QzE5Mi45MTcgMTc2LjI5MiAxOTIuNTQ4IDE3Ni41MzEgMTkyLjE3OSAxNzYuNzdMMTkxLjg4MiAxNzYuOTY2QzE5MS43MzcgMTc3LjA2IDE5MS41OTMgMTc3LjE1NiAxOTEuNDQ5IDE3Ny4yNTJMMTkxLjMwOCAxNzcuMzQyTDE5MC44NzYgMTc3LjYzM0wxOTAuNjQ3IDE3Ny43OUwxOTAuMzc5IDE3Ny45NzZMMTkwLjEzIDE3OC4xNDlDMTg5LjcxMyAxNzguNDQ0IDE4OS4zMjUgMTc4LjcyNSAxODguOTY4IDE3OC45OTJMMTg4LjgzNCAxNzkuMDk0QzE4OC42MjQgMTc5LjI1MyAxODguNDE2IDE3OS40MTUgMTg4LjIxMSAxNzkuNThDMTg3LjkwMiAxNzkuODI5IDE4Ny42MiAxODAuMDY3IDE4Ny4zNjcgMTgwLjI5NkwxODcuMjQzIDE4MC40MDlDMTg3LjE3MiAxODAuNDc0IDE4Ny4xMDIgMTgwLjUzOSAxODcuMDM1IDE4MC42MDNDMTg2Ljk4OSAxODAuNjQ4IDE4Ni45NDYgMTgwLjY5MyAxODYuODk4IDE4MC43MzZMMTg2LjgzNCAxODAuOEMxODYuNjkxIDE4MC45NDQgMTg2LjU1MSAxODEuMDkxIDE4Ni40MTYgMTgxLjI0MkwxODYuMzUgMTgxLjMxOEMxODYuMjAzIDE4MS40ODggMTg2LjA3NSAxODEuNjUxIDE4NS45NjMgMTgxLjgxTDE4NS45MTMgMTgxLjg4MUMxODUuODI1IDE4Mi4wMDkgMTg1Ljc0NCAxODIuMTQxIDE4NS42NzEgMTgyLjI3N0MxODUuNjUyIDE4Mi4zMTEgMTg1LjYzNSAxODIuMzQ1IDE4NS42MTggMTgyLjM3OUwxODUuNTY5IDE4Mi40ODFMMTg1LjUzNiAxODIuNTU1TDE4NS41MTUgMTgyLjYwNUwxODUuNDk4IDE4Mi42NUwxODUuNDc1IDE4Mi43MTFDMTg1LjQxMyAxODIuODggMTg1LjM3IDE4My4wNTYgMTg1LjM0NSAxODMuMjM0TDE4NS4zMzcgMTgzLjI5NkwxODUuMzMxIDE4My4zNTRWMTgzLjY2OUMxODUuMzMxIDE4My42OTUgMTg1LjMzMSAxODMuNzIxIDE4NS4zMzggMTgzLjc0OUwxODUuMzQzIDE4My43OTdDMTg1LjM0MyAxODMuODIzIDE4NS4zNDkgMTgzLjg0OCAxODUuMzUzIDE4My44NzZDMTg1LjM1NyAxODMuOTAyIDE4NS4zNjQgMTgzLjk0OSAxODUuMzcyIDE4My45ODZWMTgzLjk5MUMxODUuMzc5IDE4NC4wMjYgMTg1LjM4NiAxODQuMDYgMTg1LjM5NSAxODQuMDk1QzE4NS40MDQgMTg0LjEzIDE4NS40MTMgMTg0LjE3IDE4NS40MjQgMTg0LjIwNkMxODUuNDQzIDE4NC4yNzcgMTg1LjQ2NyAxODQuMzQ3IDE4NS40OTIgMTg0LjQxN0MxODUuNTA4IDE4NC40NTkgMTg1LjUyMyAxODQuNSAxODUuNTQgMTg0LjU0MUMxODUuNTQgMTg0LjU0OSAxODUuNTQ2IDE4NC41NTggMTg1LjU1IDE4NC41NjZMMTg1LjU4NiAxODQuNjQ3TDE4NS42MzYgMTg0Ljc1OEMxODUuNjkgMTg0Ljg3MyAxODUuNzQ5IDE4NC45ODUgMTg1LjgxMyAxODUuMDk0TDE4NS44NzkgMTg1LjIwOEwxODUuOTQ3IDE4NS4zMjJDMTg1Ljk1OSAxODUuMzQxIDE4NS45NzMgMTg1LjM1OSAxODUuOTg4IDE4NS4zNzZMMTg2LjAxIDE4NS4zOTlMMTg2LjAzNSAxODUuNDIyTDE4Ni4wNjEgMTg1LjQ0MkMxODYuMDk5IDE4NS40NjkgMTg2LjE0IDE4NS40OSAxODYuMTgzIDE4NS41MDVDMTg2LjIwNiAxODUuNTEzIDE4Ni4yMyAxODUuNTE5IDE4Ni4yNTQgMTg1LjUyNUMxODYuODMxIDE4NS42NTUgMTg4LjAxNyAxODUuMTc4IDE4OS41OTMgMTg0LjM0NkMxODkuNjgyIDE4NC4yOTggMTg5Ljc4IDE4NC4yNDggMTg5Ljg3NSAxODQuMTk2TDE5MC4zNTUgMTgzLjkzNEwxOTAuNTg5IDE4My44MDRDMTkwLjc1NiAxODMuNzE1IDE5MC45MjYgMTgzLjYxNCAxOTEuMSAxODMuNTE1TDE5MS40MTcgMTgzLjMzNkMxOTMuNSAxODIuMTM3IDE5NS45ODggMTgwLjU5NyAxOTguNTYgMTc5LjA5M0MxOTguODAxIDE3OC45NTIgMTk5LjA0MyAxNzguODExIDE5OS4yODUgMTc4LjY3MkwxOTkuNzcxIDE3OC4zNjFDMjAwLjMzNSAxNzguMDM4IDIwMC45MDIgMTc3LjcxOSAyMDEuNDcxIDE3Ny40MDRDMjAyLjE4OCAxNzcuMDEgMjAyLjkxIDE3Ni42MjYgMjAzLjYzOSAxNzYuMjU0TDIwNC4xMTUgMTc2LjAxM0MyMDQuNDMxIDE3NS44NTcgMjA0Ljc0NCAxNzUuNzA1IDIwNS4wNTMgMTc1LjU1N0MyMDUuNjUxIDE3NS4yNzMgMjA2LjI1NiAxNzUuMDAzIDIwNi44NjggMTc0Ljc0OEwyMDcuMjAzIDE3NC42MTJMMjA3LjI0MyAxNzQuNTk2QzIwOS4wMTggMTczLjg5MyAyMTAuNjI3IDE3My40NTkgMjExLjkyOSAxNzMuNDU5QzIxMi4yMSAxNzMuNDU2IDIxMi40OTIgMTczLjQ4IDIxMi43NjkgMTczLjUyOEgyMTIuNzc4QzIxMi44NjcgMTczLjU0NCAyMTIuOTQ4IDE3My41NjIgMjEzLjAzMSAxNzMuNTgySDIxMy4wNDZDMjEzLjI1OSAxNzMuNjM2IDIxMy40NjYgMTczLjcxMyAyMTMuNjYyIDE3My44MTJDMjEzLjkzNyAxNzMuOTU0IDIxNC4xODQgMTc0LjE0MyAyMTQuMzkzIDE3NC4zNzFDMjE0LjQ4OSAxNzQuNDc3IDIxNC41NzQgMTc0LjU5MiAyMTQuNjQ5IDE3NC43MTRDMjE0Ljc4OSAxNzQuOTI5IDIxNC44OTkgMTc1LjE2MiAyMTQuOTc4IDE3NS40MDZDMjE1LjAxIDE3NS41MDEgMjE1LjAzOCAxNzUuNTk0IDIxNS4wNjcgMTc1LjY5M0MyMTUuMjc4IDE3Ni40NSAyMTUuMjU3IDE3Ny4yNTMgMjE1LjAwNyAxNzcuOTk4WiIgZmlsbD0iI0ZGOUQwMCIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwMy4yMSAxMjMuNjg1VjEyMy4xOTRDMjAzLjIxIDgxLjM0IDE2OS4yOTIgNDcuNDExIDEyNy40MzUgNDcuNDExQzg1LjU3OTEgNDcuNDExIDUxLjY0OCA4MS4zNDIgNTEuNjQ4IDEyMy4xOTRWMTIzLjM1OEM1MS42NDYgMTIzLjQ2NyA1MS42NDUgMTIzLjU3NiA1MS42NDggMTIzLjY4NUM1MS42NTI5IDEyMy44NDggNTEuNjU0NiAxMjQuMDExIDUxLjY1MyAxMjQuMTc0TDUxLjY1ODEgMTI0LjUzNEw1MS42NjEgMTI0LjY2M0M1MS42NjEgMTI0LjcyMyA1MS42NjMxIDEyNC43ODIgNTEuNjY1MSAxMjQuODQyQzUxLjY2ODEgMTI0LjkzNyA1MS42NyAxMjUuMDMzIDUxLjY3IDEyNS4xMjhMNTEuNjgxIDEyNS41MTdMNTEuNjk3IDEyNS45NzRMNTEuNzAyIDEyNi4xMjRMNTEuNzIyIDEyNi41OTdWMTI2LjYyQzUxLjczIDEyNi44MDUgNTEuNzQwMSAxMjYuOTg5IDUxLjc0OTEgMTI3LjE3M0w1MS43NSAxMjcuMTg3QzUxLjc2IDEyNy4zNzUgNTEuNzcwMSAxMjcuNTY0IDUxLjc4MjEgMTI3Ljc1M0M1MS43OTIxIDEyNy45MjcgNTEuODAyIDEyOC4xMDEgNTEuODE1IDEyOC4yNzVMNTEuODE3MSAxMjguMzA2QzUxLjgyNTggMTI4LjQ1NSA1MS44MzU4IDEyOC42MDUgNTEuODQ3IDEyOC43NTRMNTEuODUgMTI4Ljc5NEw1MS44ODMgMTI5LjIyNkw1MS44ODYxIDEyOS4yNTRDNTEuODkyMSAxMjkuMzM4IDUxLjg5OCAxMjkuNDIyIDUxLjkwNiAxMjkuNTAzQzUxLjk2NTggMTMwLjIyNCA1Mi4wMzU1IDEzMC45NDUgNTIuMTE1MSAxMzEuNjY0TDUyLjEyIDEzMS43MDlMNTIuMTgxIDEzMi4yMzhMNTIuMjQ5MSAxMzIuNzkzTDUyLjI5OSAxMzMuMTdMNTIuMzIyIDEzMy4zNDdDNTIuMzc1MyAxMzMuNzU1IDUyLjQzMyAxMzQuMTYyIDUyLjQ5NSAxMzQuNTY4TDUyLjQ5OTEgMTM0LjU5NUw1Mi41NTggMTM0Ljk3OUM1Mi44NDM1IDEzNi44MDggNTMuMTk3MSAxMzguNjI2IDUzLjYxOCAxNDAuNDI5TDUzLjYyMzEgMTQwLjQ1MUw1My42NTUgMTQwLjU4Nkw1My43NDYgMTQwLjk3MUw1My44MDIgMTQwLjkwNEM1Ni4wMDIgMTM4LjI3NCA1OS4xNTggMTM2LjgyNCA2Mi42ODkgMTM2LjgyNEM2NS41MTkgMTM2LjgyNCA2OC40MjIxIDEzNy43NiA3MS4zMzIxIDEzOS42MDVDNzMuMjYyMSAxNDAuODMxIDc1LjM5NjEgMTQzLjAwMiA3Ny41OTIxIDE0NS43MzNDNzkuNjI0MSAxNDIuOTExIDgyLjQ3MjEgMTQxLjAzNSA4NS43MzAxIDE0MC41MjNDODYuMzUxMyAxNDAuNDI1IDg2Ljk3OTIgMTQwLjM3NiA4Ny42MDgxIDE0MC4zNzVDOTUuMDQ0MSAxNDAuMzc1IDk5LjUyMyAxNDYuODI4IDEwMS4yMTUgMTUyLjYzM0MxMDIuMDUxIDE1NC41OTQgMTA2LjA4IDE2My41MjYgMTEyLjE1NiAxNjkuNTY4QzEyMS4zOTIgMTc4Ljc5NSAxMjMuNzAzIDE4OC4zMTYgMTE5LjEzMiAxOTguNTExSDExOS4xNDhDMTE5LjQ1OSAxOTguNTQ2IDExOS43NzIgMTk4LjU3OCAxMjAuMDg3IDE5OC42MDdDMTIwLjI3NCAxOTguNjI1IDEyMC40NiAxOTguNjQzIDEyMC42NDggMTk4LjY1OUwxMjAuNzE0IDE5OC42NjVMMTIxLjEyNyAxOTguN0wxMjEuNTA3IDE5OC43M0MxMjEuODY5IDE5OC43NTggMTIyLjIzMiAxOTguNzg0IDEyMi41OTYgMTk4LjgwN0wxMjIuODg1IDE5OC44MjRMMTIzLjExNCAxOTguODM4TDEyMy4yNTYgMTk4Ljg0NkwxMjMuNzAzIDE5OC44NjlMMTIzLjgyNSAxOTguODc0TDEyNC4yOTQgMTk4Ljg5NUwxMjQuODE2IDE5OC45MTVMMTI1LjIzNSAxOTguOTI3TDEyNS4zMDUgMTk4LjkyOUMxMjUuMzk0IDE5OC45MzMgMTI1LjQ4MyAxOTguOTM2IDEyNS41NzIgMTk4LjkzNkwxMjUuNjY4IDE5OC45MzlDMTI2LjI1OCAxOTguOTUzIDEyNi44NDcgMTk4Ljk2IDEyNy40MzcgMTk4Ljk1OUgxMjguMDYzTDEyOC41MSAxOTguOTU0QzEyOC42MiAxOTguOTQ5IDEyOC43MjkgMTk4Ljk0OSAxMjguODQgMTk4Ljk0OUgxMjkuMDE0TDEyOS4xNjUgMTk4Ljk0NUMxMjkuMjI0IDE5OC45NDMgMTI5LjI4MyAxOTguOTQxIDEyOS4zNDMgMTk4Ljk0MUgxMjkuNTIyTDEyOS44NzMgMTk4LjkzMkwxMzAuNDAxIDE5OC45MTRMMTMwLjk4MiAxOTguODg4QzEzMS4xNSAxOTguODgyIDEzMS4zMTYgMTk4Ljg3MyAxMzEuNDgyIDE5OC44NjVMMTMxLjY2MSAxOTguODU0TDEzMS45MjcgMTk4Ljg0TDEzMi4wODMgMTk4LjgzMUwxMzIuMjAxIDE5OC44MjNMMTMyLjczOCAxOTguNzg4TDEzMy4yNzQgMTk4Ljc0OUwxMzMuNzYxIDE5OC43MUwxMzQuMTAzIDE5OC42ODFMMTM0LjQ3OSAxOTguNjQ3QzEzNS4xMDcgMTk4LjU5MSAxMzUuNzMzIDE5OC41MjUgMTM2LjM1OSAxOTguNDVMMTM2Ljc4NiAxOTguMzk5QzEzMi4yODcgMTg4LjI0NyAxMzQuNjE2IDE3OC43NjcgMTQzLjgxMyAxNjkuNTc3QzE0OS44NzYgMTYzLjUxOSAxNTMuOTA1IDE1NC41ODcgMTU0Ljc0NSAxNTIuNjI1QzE1Ni40MzggMTQ2LjgyMSAxNjAuOTE0IDE0MC4zNjggMTY4LjM1MiAxNDAuMzY4QzE2OC45ODEgMTQwLjM2OCAxNjkuNjEgMTQwLjQxOCAxNzAuMjMxIDE0MC41MTZDMTczLjQ4NiAxNDEuMDI4IDE3Ni4zMzQgMTQyLjkwNCAxNzguMzY5IDE0NS43MjZDMTgwLjU2NiAxNDIuOTk2IDE4Mi42OTkgMTQwLjgyMyAxODQuNjMgMTM5LjU5N0MxODcuNTM5IDEzNy43NTMgMTkwLjQ0NSAxMzYuODE3IDE5My4yNzIgMTM2LjgxN0MxOTYuMzg4IDEzNi44MTcgMTk5LjIxMiAxMzcuOTQ3IDIwMS4zNDUgMTQwLjAyQzIwMS4zODQgMTM5Ljg1MSAyMDEuNDIyIDEzOS42ODIgMjAxLjQ1OSAxMzkuNTEyTDIwMS41NjggMTM5LjAwNkMyMDEuNjA3IDEzOC44MjEgMjAxLjY0NiAxMzguNjM2IDIwMS42ODMgMTM4LjQ1MUMyMDEuNzQ5IDEzOC4xMjQgMjAxLjgxNSAxMzcuNzk3IDIwMS44NzggMTM3LjQ2N0MyMDEuOTQ0IDEzNy4xMjUgMjAyLjAwNyAxMzYuNzgxIDIwMi4wNjcgMTM2LjQzN0wyMDIuMDk4IDEzNi4yNTFDMjAyLjExNyAxMzYuMTQxIDIwMi4xMzUgMTM2LjAzMSAyMDIuMTU2IDEzNS45MkMyMDIuMTkgMTM1Ljc0OCAyMDIuMjE4IDEzNS41NzYgMjAyLjI0NiAxMzUuNDAyTDIwMi4yNTcgMTM1LjMzNkwyMDIuMzI4IDEzNC44ODNMMjAyLjM5OCAxMzQuNDI0VjEzNC40MkMyMDIuNDQ5IDEzNC4wODEgMjAyLjQ5NyAxMzMuNzQyIDIwMi41NDIgMTMzLjQwM0wyMDIuNTUzIDEzMy4zMTlMMjAyLjYxNiAxMzIuODQxTDIwMi42NjcgMTMyLjQzM0wyMDIuNzU3IDEzMS42MjlMMjAyLjc5MiAxMzEuMzA2TDIwMi44MDEgMTMxLjIxOEMyMDIuODIgMTMxLjA0NCAyMDIuODM4IDEzMC44NyAyMDIuODU0IDEzMC42OTZWMTMwLjY4MkMyMDIuODY3IDEzMC41NDQgMjAyLjg4MSAxMzAuNDA1IDIwMi44OTMgMTMwLjI2NkMyMDIuOTY0IDEyOS40NzggMjAzLjAyNCAxMjguNjg2IDIwMy4wNzIgMTI3Ljg5MUMyMDMuMDgxIDEyNy43NjEgMjAzLjA4OCAxMjcuNjMgMjAzLjA5NiAxMjcuNDk5VjEyNy40OTNMMjAzLjEyMiAxMjcuMDAyTDIwMy4xMjggMTI2Ljg5MkMyMDMuMTQ0IDEyNi41NiAyMDMuMTU4IDEyNi4yMjggMjAzLjE2OSAxMjUuODk2VjEyNS44ODRMMjAzLjE3NCAxMjUuNzU0QzIwMy4xNzkgMTI1LjY0NSAyMDMuMTgzIDEyNS41MzUgMjAzLjE4MyAxMjUuNDI1TDIwMy4xODUgMTI1LjM4MUMyMDMuMTg5IDEyNS4yNzggMjAzLjE5MyAxMjUuMTcyIDIwMy4xOTMgMTI1LjA2N0wyMDMuMTk2IDEyNC45NzdDMjAzLjE5OSAxMjQuODcyIDIwMy4yMDIgMTI0Ljc2OCAyMDMuMjAyIDEyNC42NjNMMjAzLjIwNCAxMjQuNTc0QzIwMy4yMDcgMTI0LjQ0MSAyMDMuMjEgMTI0LjMwNyAyMDMuMjEgMTI0LjE3NFYxMjMuNjg1Wk0xMDguNjM4IDE5OS4zOTFDMTE0LjY0IDE5MC41OSAxMTQuMjE0IDE4My45ODQgMTA1Ljk4IDE3NS43NTRDOTcuNzQ0MSAxNjcuNTIzIDkyLjk1MSAxNTUuNDg3IDkyLjk1MSAxNTUuNDg3QzkyLjk1MSAxNTUuNDg3IDkxLjE2MjEgMTQ4LjQ5NiA4Ny4wODIxIDE0OS4xMzhDODMuMDAyMSAxNDkuNzggODAuMDA5MSAxNjAuMjI3IDg4LjU1MjEgMTY2LjYyMkM5Ny4wOTQxIDE3My4wMTcgODYuODUyMSAxNzcuMzUzIDgzLjU2NDEgMTcxLjM1MkM4MC4yNzYxIDE2NS4zNSA3MS4yOTkgMTQ5LjkyMyA2Ni42NDUgMTQ2Ljk3MkM2MS45OTEgMTQ0LjAyMSA1OC43MTggMTQ1LjY3NSA1OS44MTUgMTUxLjc1N0M2MC4zNiAxNTQuNzc2IDY1LjQyODEgMTU5LjkyOSA3MC4xNjMxIDE2NC43NDNDNzQuOTY3MSAxNjkuNjI3IDc5LjQyOCAxNzQuMTYzIDc4LjQ3NCAxNzUuNzY4Qzc2LjU4MSAxNzguOTU1IDY5LjkxNDEgMTcyLjAyMyA2OS45MTQxIDE3Mi4wMjNDNjkuOTE0MSAxNzIuMDIzIDQ5LjAzOCAxNTMuMDI1IDQ0LjQ5NCAxNTcuOTc2QzQwLjMwNCAxNjIuNTM5IDQ2Ljc2NSAxNjYuNDE4IDU2LjcyMTEgMTcyLjM5N0M1Ny41NjcxIDE3Mi45MDUgNTguNDM5MSAxNzMuNDI5IDU5LjMzMjEgMTczLjk2OUM3MC43MjMxIDE4MC44NjUgNzEuNjA5IDE4Mi42ODQgNjkuOTkyIDE4NS4yOTNDNjkuMzk1IDE4Ni4yNTcgNjUuNTgyIDE4My45NjggNjAuODkyIDE4MS4xNTNDNTIuODk3IDE3Ni4zNTIgNDIuMzU1MSAxNzAuMDIzIDQwLjg2NjEgMTc1LjY4OEMzOS41NzgxIDE4MC41OTEgNDcuMzM0IDE4My41OTUgNTQuMzY4IDE4Ni4zMkM2MC4yMjggMTg4LjU5IDY1LjU4ODEgMTkwLjY2NiA2NC43OTkxIDE5My40ODRDNjMuOTgyMSAxOTYuNDA2IDU5LjU1MzEgMTkzLjk2OSA1NC43MTIxIDE5MS4zMDVDNDkuMjc3MSAxODguMzE0IDQzLjMyMjEgMTg1LjAzOCA0MS4zNzMxIDE4OC43MzVDMzcuNjkwMSAxOTUuNzI1IDY2Ljc4MzEgMjAzLjk1NCA2Ny4wMjMxIDIwNC4wMTVDNzYuNDIzMSAyMDYuNDUzIDEwMC4yOTUgMjExLjYxOSAxMDguNjM4IDE5OS4zOTFaTTE0Ny4zMDMgMTk5LjM5MUMxNDEuMzAxIDE5MC41OSAxNDEuNzI3IDE4My45ODQgMTQ5Ljk2MiAxNzUuNzU0QzE1OC4xOTcgMTY3LjUyMyAxNjIuOTkgMTU1LjQ4NyAxNjIuOTkgMTU1LjQ4N0MxNjIuOTkgMTU1LjQ4NyAxNjQuNzc5IDE0OC40OTYgMTY4Ljg1OSAxNDkuMTM4QzE3Mi45MzkgMTQ5Ljc4IDE3NS45MzIgMTYwLjIyNyAxNjcuMzkgMTY2LjYyMkMxNTguODQ3IDE3My4wMTcgMTY5LjA4OSAxNzcuMzUzIDE3Mi4zNzcgMTcxLjM1MkMxNzUuNjY2IDE2NS4zNSAxODQuNjM3IDE0OS45MjMgMTg5LjI5MSAxNDYuOTcyQzE5My45NDUgMTQ0LjAyMSAxOTcuMjIgMTQ1LjY3NSAxOTYuMTIyIDE1MS43NTdDMTk1LjU3OCAxNTQuNzc2IDE5MC41MDkgMTU5LjkyOSAxODUuNzc0IDE2NC43NDRDMTgwLjk3IDE2OS42MjggMTc2LjUwOSAxNzQuMTYzIDE3Ny40NjIgMTc1Ljc2OEMxNzkuMzU1IDE3OC45NTUgMTg2LjAyNyAxNzIuMDE5IDE4Ni4wMjcgMTcyLjAxOUMxODYuMDI3IDE3Mi4wMTkgMjA2LjkwMiAxNTMuMDIyIDIxMS40NDggMTU3Ljk3M0MyMTUuNjM3IDE2Mi41MzUgMjA5LjE3NiAxNjYuNDE1IDE5OS4yMTkgMTcyLjM5NEMxOTguMzQ4IDE3Mi45MTcgMTk3LjQ3OCAxNzMuNDQxIDE5Ni42MDkgMTczLjk2NkMxODUuMjE4IDE4MC44NjIgMTg0LjMzMiAxODIuNjgxIDE4NS45NDggMTg1LjI4OUMxODYuNTQ2IDE4Ni4yNTQgMTkwLjM1OSAxODMuOTY0IDE5NS4wNDggMTgxLjE0OUMyMDMuMDQ0IDE3Ni4zNDkgMjEzLjU4NiAxNzAuMDE5IDIxNS4wNzUgMTc1LjY4NUMyMTYuMzY0IDE4MC41ODggMjA4LjYwNyAxODMuNTkyIDIwMS41NzMgMTg2LjMxN0MxOTUuNzEzIDE4OC41ODcgMTkwLjM1MyAxOTAuNjYzIDE5MS4xNDEgMTkzLjQ4MUMxOTEuOTU3IDE5Ni40MDIgMTk2LjM4NSAxOTMuOTY1IDIwMS4yMjUgMTkxLjMwMUMyMDYuNjYgMTg4LjMxIDIxMi42MTYgMTg1LjAzMiAyMTQuNTY0IDE4OC43MzJDMjE4LjI0OCAxOTUuNzI2IDE4OS4xNSAyMDMuOTQ3IDE4OC45MTUgMjA0LjAwN0MxNzkuNTE1IDIwNi40NTMgMTU1LjY0MyAyMTEuNjE5IDE0Ny4zMDMgMTk5LjM5MVoiIGZpbGw9IiNGRkQyMUUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNTIuMDQ3IDEwMi41NjdDMTUzLjIyOSAxMDIuOTg1IDE1NC4xMDggMTA0LjI1NyAxNTQuOTQ0IDEwNS40NjhDMTU2LjA3NCAxMDcuMTA0IDE1Ny4xMjYgMTA4LjYyNyAxNTguNzQgMTA3Ljc2OUMxNjAuNjQ0IDEwNi43NTYgMTYyLjIwNSAxMDUuMjAyIDE2My4yMjUgMTAzLjMwMkMxNjQuMjQ2IDEwMS40MDIgMTY0LjY4MSA5OS4yNDI3IDE2NC40NzUgOTcuMDk2QzE2NC4zMjEgOTUuNDkwOCAxNjMuODEzIDkzLjkzOTggMTYyLjk4NyA5Mi41NTQ4QzE2Mi4xNjEgOTEuMTY5NyAxNjEuMDM4IDg5Ljk4NSAxNTkuNyA4OS4wODYyQzE1OC4zNjEgODguMTg3NCAxNTYuODM5IDg3LjU5NjggMTU1LjI0NSA4Ny4zNTY5QzE1My42NSA4Ny4xMTcgMTUyLjAyMiA4Ny4yMzM5IDE1MC40NzggODcuNjk5QzE0OC45MzQgODguMTYzOSAxNDcuNTEzIDg4Ljk2NTMgMTQ2LjMxNiA5MC4wNDU1QzE0NS4xMTkgOTEuMTI1NyAxNDQuMTc2IDkyLjQ1NzggMTQzLjU1NiA5My45NDZDMTQyLjkzNiA5NS40MzQyIDE0Mi42NTMgOTcuMDQxNSAxNDIuNzI4IDk4LjY1MkMxNDIuODA0IDEwMC4yNjMgMTQzLjIzNSAxMDEuODM2IDE0My45OTIgMTAzLjI2QzE0NC43NCAxMDQuNjY3IDE0Ni40IDEwNC4wMDMgMTQ4LjE1MiAxMDMuMzAyQzE0OS41MjUgMTAyLjc1MyAxNTAuOTU2IDEwMi4xODEgMTUyLjA0NyAxMDIuNTY3Wk0xMDAuNjcyIDEwMi41NjdDOTkuNDkgMTAyLjk4NSA5OC42MTEgMTA0LjI1OCA5Ny43NzUgMTA1LjQ2OEM5Ni42NDUgMTA3LjEwNSA5NS41OTIgMTA4LjYyNyA5My45NzkgMTA3Ljc2OUM5MS41ODQ1IDEwNi41MDEgODkuNzQ4MiAxMDQuMzg2IDg4LjgyNzggMTAxLjgzOEM4Ny45MDc1IDk5LjI4OTUgODcuOTY5MiA5Ni40ODk2IDg5LjAwMDggOTMuOTg0MUM5MC4wMzI0IDkxLjQ3ODYgOTEuOTYwMSA4OS40NDcxIDk0LjQwOCA4OC4yODU1Qzk2Ljg1NiA4Ny4xMjM5IDk5LjY0ODggODYuOTE1NiAxMDIuMjQyIDg3LjcwMUMxMDQuMzA3IDg4LjMyMjggMTA2LjE0MSA4OS41NDI3IDEwNy41MTMgOTEuMjA2NUMxMDguODg1IDkyLjg3MDQgMTA5LjczMiA5NC45MDM1IDEwOS45NDkgOTcuMDQ5QzExMC4xNjUgOTkuMTk0NSAxMDkuNzQgMTAxLjM1NiAxMDguNzI4IDEwMy4yNkMxMDcuOTc5IDEwNC42NjcgMTA2LjMxOSAxMDQuMDAzIDEwNC41NjcgMTAzLjMwM0MxMDMuMTkzIDEwMi43NTMgMTAxLjc2NCAxMDIuMTgxIDEwMC42NzIgMTAyLjU2N1pNMTQ0LjA5OSAxNDkuMzE4QzE1Mi4yNDIgMTQyLjkwMyAxNTUuMjMzIDEzMi40MjkgMTU1LjIzMyAxMjUuOTc3QzE1NS4yMzMgMTIwLjg3NyAxNTEuODAyIDEyMi40ODIgMTQ2LjMwOSAxMjUuMjAyTDE0NS45OTkgMTI1LjM1NUMxNDAuOTU3IDEyNy44NTIgMTM0LjI0NSAxMzEuMTc3IDEyNi44NzcgMTMxLjE3N0MxMTkuNTA4IDEzMS4xNzcgMTEyLjc5NiAxMjcuODUyIDEwNy43NTUgMTI1LjM1NEMxMDIuMDg0IDEyMi41NDUgOTguNTI3IDEyMC43ODMgOTguNTI3IDEyNS45NzhDOTguNTI3IDEzMi42MzQgMTAxLjcwOSAxNDMuNTYzIDExMC40NDMgMTQ5LjkxMkMxMTEuNTk2IDE0Ny41NzMgMTEzLjIxOSAxNDUuNDk3IDExNS4yMTEgMTQzLjgxM0MxMTcuMjAyIDE0Mi4xMjkgMTE5LjUyIDE0MC44NzQgMTIyLjAxOCAxNDAuMTI2QzEyMi44OSAxMzkuODY2IDEyMy43ODggMTQxLjM2NyAxMjQuNzA3IDE0Mi45MDRDMTI1LjU5NCAxNDQuMzg2IDEyNi41MDEgMTQ1LjkwMiAxMjcuNDIzIDE0NS45MDJDMTI4LjQwNiAxNDUuOTAyIDEyOS4zNzEgMTQ0LjQwOCAxMzAuMzE0IDE0Mi45NUMxMzEuMjk5IDE0MS40MjUgMTMyLjI2IDEzOS45NCAxMzMuMTg5IDE0MC4yMzdDMTM3Ljg2NCAxNDEuNzM4IDE0MS43NzUgMTQ0Ljk5MyAxNDQuMDk5IDE0OS4zMThaIiBmaWxsPSIjMzIzNDNEIi8+CjxwYXRoIGQ9Ik0xNDQuMDk3IDE0OS4zMTdDMTM5Ljg1NiAxNTIuNjU5IDEzNC4yMTkgMTU0LjkgMTI2Ljg3OCAxNTQuOUMxMTkuOTgxIDE1NC45IDExNC41ODcgMTUyLjkyMiAxMTAuNDQzIDE0OS45MTFDMTExLjU5NiAxNDcuNTcyIDExMy4yMTkgMTQ1LjQ5NSAxMTUuMjExIDE0My44MTJDMTE3LjIwMiAxNDIuMTI4IDExOS41MiAxNDAuODczIDEyMi4wMTggMTQwLjEyNUMxMjMuNzMgMTM5LjYxNCAxMjUuNTQ1IDE0NS45MDEgMTI3LjQyMyAxNDUuOTAxQzEyOS40MzMgMTQ1LjkwMSAxMzEuMzcgMTM5LjY1NSAxMzMuMTg5IDE0MC4yMzZDMTM3Ljg2MyAxNDEuNzM4IDE0MS43NzMgMTQ0Ljk5MyAxNDQuMDk3IDE0OS4zMTdaIiBmaWxsPSIjRkYzMjNEIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNODEuMiAxMTEuNjRDODAuMjMxMiAxMTIuMjg4IDc5LjExNzMgMTEyLjY4NyA3Ny45NTcyIDExMi44MDFDNzYuNzk3MSAxMTIuOTE2IDc1LjYyNjcgMTEyLjc0MiA3NC41NSAxMTIuMjk1QzczLjY4OTMgMTExLjk0IDcyLjkwNzIgMTExLjQxOCA3Mi4yNDg4IDExMC43NTlDNzEuNTkwMyAxMTAuMTAxIDcxLjA2ODQgMTA5LjMxOSA3MC43MTMgMTA4LjQ1OEM3MC4yNjcgMTA3LjM4MSA3MC4wOTM1IDEwNi4yMTEgNzAuMjA4MiAxMDUuMDUxQzcwLjMyMjggMTAzLjg5MSA3MC43MjE5IDEwMi43NzcgNzEuMzcgMTAxLjgwOEM3Mi4xNDg4IDEwMC42NDIgNzMuMjU1OCA5OS43MzMzIDc0LjU1MTIgOTkuMTk2N0M3NS44NDY2IDk4LjY2MDEgNzcuMjcyIDk4LjUxOTcgNzguNjQ3MSA5OC43OTM1QzgwLjAyMjMgOTkuMDY3MiA4MS4yODUzIDk5Ljc0MjcgODIuMjc2NCAxMDAuNzM0QzgzLjI2NzUgMTAxLjcyNiA4My45NDIyIDEwMi45OSA4NC4yMTUgMTA0LjM2NUM4NC40ODgzIDEwNS43NCA4NC4zNDc3IDEwNy4xNjUgODMuODExMyAxMDguNDZDODMuMjc0OCAxMDkuNzU1IDgyLjM2NTQgMTEwLjg2MSA4MS4yIDExMS42NFpNMTgyLjYxMyAxMTEuNjRDMTgxLjY0NCAxMTIuMjg4IDE4MC41MyAxMTIuNjg3IDE3OS4zNyAxMTIuODAxQzE3OC4yMDkgMTEyLjkxNiAxNzcuMDM5IDExMi43NDIgMTc1Ljk2MiAxMTIuMjk1QzE3NS4xMDEgMTExLjkzOSAxNzQuMzE5IDExMS40MTggMTczLjY2MSAxMTAuNzU5QzE3My4wMDMgMTEwLjEwMSAxNzIuNDgxIDEwOS4zMTkgMTcyLjEyNSAxMDguNDU4QzE3MS42OCAxMDcuMzgxIDE3MS41MDcgMTA2LjIxMSAxNzEuNjIxIDEwNS4wNTFDMTcxLjczNiAxMDMuODkxIDE3Mi4xMzUgMTAyLjc3NyAxNzIuNzgyIDEwMS44MDhDMTczLjM2NCAxMDAuOTM2IDE3NC4xMzMgMTAwLjIwNSAxNzUuMDMyIDk5LjY2NThDMTc1LjkzMSA5OS4xMjY5IDE3Ni45MzggOTguNzk0MiAxNzcuOTgxIDk4LjY5MTdDMTc5LjAyNSA5OC41ODkxIDE4MC4wNzggOTguNzE5MyAxODEuMDY0IDk5LjA3MjhDMTgyLjA1MSA5OS40MjY0IDE4Mi45NDcgOTkuOTk0NCAxODMuNjg4IDEwMC43MzZDMTg0LjY4IDEwMS43MjcgMTg1LjM1NSAxMDIuOTkgMTg1LjYyOCAxMDQuMzY1QzE4NS45MDIgMTA1Ljc0IDE4NS43NjEgMTA3LjE2NSAxODUuMjI0IDEwOC40NkMxODQuNjg3IDEwOS43NTUgMTgzLjc3OSAxMTAuODYxIDE4Mi42MTMgMTExLjY0WiIgZmlsbD0iI0ZGQUQwMyIvPgo8L3N2Zz4=","width","256","height","alt","http://ai/","clip","\n"]} \ No newline at end of file diff --git a/tests/test_train_tokenizer.py b/tests/test_train_tokenizer.py new file mode 100644 index 0000000..c1091b6 --- /dev/null +++ b/tests/test_train_tokenizer.py @@ -0,0 +1,43 @@ +import json + +from datasets import Dataset +from tokenizers.pre_tokenizers import PreTokenizer + +from dom_tokenizers.train import train_tokenizer +from dom_tokenizers.pre_tokenizers import DOMSnapshotPreTokenizer + +from .util import load_resource + + +def test_base64(base_tokenizer): + """Test that base64 is entered successfully. Incorrectly-sequenced + lowercasing (i.e. applied prior to pre-tokenization) will cause this + test to fail. + """ + snapshot = load_resource("svg-in-base64.json") + tokenizer = train_tokenizer( + training_dataset=Dataset.from_dict({ + "dom_snapshot": ( + json.loads(snapshot), + ), + }), + ) + tokenizer.backend_tokenizer.pre_tokenizer = \ + PreTokenizer.custom(DOMSnapshotPreTokenizer()) + + tokens = tokenizer.tokenize(snapshot) + print(tokens) + + # 0 + limit = start + len(expect) + assert tokens[start:limit] == expect diff --git a/tests/util.py b/tests/util.py new file mode 100644 index 0000000..dd1291f --- /dev/null +++ b/tests/util.py @@ -0,0 +1,18 @@ +import os + + +def get_resource_filename(filename, *, ext=None): + if ext and not filename.endswith(ext): + filename += ext + testdir = os.path.dirname(__file__) + return os.path.join(testdir, "resources", filename) + + +def open_resource(filename, *, mode="r", encoding="utf-8", **kwargs): + filename = get_resource_filename(filename, **kwargs) + return open(filename, mode=mode, encoding=encoding) + + +def load_resource(filename, **kwargs): + with open_resource(filename, **kwargs) as fp: + return fp.read()