From 3cc1b623cac45c986fac899fb69a7b4dcfcbd961 Mon Sep 17 00:00:00 2001 From: cywhale Date: Wed, 29 Nov 2023 12:09:48 +0800 Subject: [PATCH] ver 0.3.0 Breaking upgrade to GEBCO(2023) now. Change to use pipenv for package version management --- Pipfile | 21 + Pipfile.lock | 675 ++++ __init__.py | 0 change_log.md | 3 + conf/ecosystem.config.js | 2 +- data_src/GEBCO_2023_Grid_documentation.pdf | Bin 0 -> 199494 bytes data_src/GEBCO_Grid_terms_of_use.pdf | Bin 0 -> 139067 bytes dev/read_gebco_raw01.ipynb | 2977 +++++++++++++++++ simu_gebco01.py => dev/simu_gebco01.py | 6 +- wireframe01.ipynb => dev/wireframe01.ipynb | 0 zprofile01.ipynb => dev/zprofile01.ipynb | 1632 +++++---- .../zprofile02_crosszero.ipynb | 0 gebco_app.py | 38 +- read_gebco_raw01.ipynb | 1917 ----------- requirements.txt | 17 +- setup.py | 4 + src.egg-info/PKG-INFO | 3 + src.egg-info/SOURCES.txt | 19 + src.egg-info/dependency_links.txt | 1 + src.egg-info/top_level.txt | 1 + src/__init__.py | 0 xmeridian.py => src/xmeridian.py | 0 22 files changed, 4532 insertions(+), 2784 deletions(-) create mode 100644 Pipfile create mode 100644 Pipfile.lock create mode 100644 __init__.py create mode 100755 data_src/GEBCO_2023_Grid_documentation.pdf create mode 100755 data_src/GEBCO_Grid_terms_of_use.pdf create mode 100644 dev/read_gebco_raw01.ipynb rename simu_gebco01.py => dev/simu_gebco01.py (99%) rename wireframe01.ipynb => dev/wireframe01.ipynb (100%) rename zprofile01.ipynb => dev/zprofile01.ipynb (63%) rename zprofile02_crosszero.ipynb => dev/zprofile02_crosszero.ipynb (100%) delete mode 100644 read_gebco_raw01.ipynb create mode 100644 setup.py create mode 100644 src.egg-info/PKG-INFO create mode 100644 src.egg-info/SOURCES.txt create mode 100644 src.egg-info/dependency_links.txt create mode 100644 src.egg-info/top_level.txt create mode 100644 src/__init__.py rename xmeridian.py => src/xmeridian.py (100%) diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..a73c1f6 --- /dev/null +++ b/Pipfile @@ -0,0 +1,21 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[packages] +dask = "==2023.11.0" +fastapi = "==0.104.1" +geopy = "==2.4.1" +gunicorn = "==21.2.0" +numpy = "==1.26.2" +polars = "==0.19.17" +requests = "==2.31.0" +uvicorn = "==0.24.0.post1" +xarray = "==2023.11.0" +zarr = "==2.16.1" + +[dev-packages] + +[requires] +python_version = "3.11" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..2142e57 --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,675 @@ +{ + "_meta": { + "hash": { + "sha256": "13e9ff18b162ea783b2abd159e100ab72769e901cadbb6c79a4a7215c0290828" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.11" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "annotated-types": { + "hashes": [ + "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43", + "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d" + ], + "markers": "python_version >= '3.8'", + "version": "==0.6.0" + }, + "anyio": { + "hashes": [ + "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", + "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5" + ], + "markers": "python_version >= '3.7'", + "version": "==3.7.1" + }, + "asciitree": { + "hashes": [ + "sha256:4aa4b9b649f85e3fcb343363d97564aa1fb62e249677f2e18a96765145cc0f6e" + ], + "version": "==0.3.3" + }, + "certifi": { + "hashes": [ + "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1", + "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474" + ], + "markers": "python_version >= '3.6'", + "version": "==2023.11.17" + }, + "charset-normalizer": { + "hashes": [ + "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027", + "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087", + "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786", + "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8", + "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09", + "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185", + "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574", + "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e", + "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519", + "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898", + "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269", + "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3", + "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f", + "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6", + "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8", + "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a", + "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73", + "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc", + "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714", + "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2", + "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc", + "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce", + "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d", + "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e", + "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6", + "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269", + "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96", + "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d", + "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a", + "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4", + "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77", + "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d", + "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0", + "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed", + "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068", + "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac", + "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25", + "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8", + "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab", + "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26", + "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2", + "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db", + "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f", + "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5", + "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99", + "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c", + "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d", + "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811", + "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa", + "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a", + "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03", + "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b", + "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04", + "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c", + "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001", + "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458", + "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389", + "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99", + "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985", + "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537", + "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238", + "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f", + "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d", + "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796", + "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a", + "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143", + "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8", + "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c", + "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5", + "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5", + "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711", + "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4", + "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6", + "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c", + "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7", + "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4", + "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b", + "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae", + "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12", + "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c", + "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae", + "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8", + "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887", + "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b", + "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4", + "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f", + "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5", + "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33", + "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519", + "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561" + ], + "markers": "python_full_version >= '3.7.0'", + "version": "==3.3.2" + }, + "click": { + "hashes": [ + "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", + "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de" + ], + "markers": "python_version >= '3.7'", + "version": "==8.1.7" + }, + "cloudpickle": { + "hashes": [ + "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7", + "sha256:996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882" + ], + "markers": "python_version >= '3.8'", + "version": "==3.0.0" + }, + "dask": { + "hashes": [ + "sha256:06b8f39755d37ff6ef4db422774db1f1d5d6788d33f0628c80861dc6452f878c", + "sha256:b950951ee3f8c86f003b577b6928ecf20089eee6677719578deaba8fd9a78203" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==2023.11.0" + }, + "fastapi": { + "hashes": [ + "sha256:752dc31160cdbd0436bb93bad51560b57e525cbb1d4bbf6f4904ceee75548241", + "sha256:e5e4540a7c5e1dcfbbcf5b903c234feddcdcd881f191977a1c5dfd917487e7ae" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==0.104.1" + }, + "fasteners": { + "hashes": [ + "sha256:758819cb5d94cdedf4e836988b74de396ceacb8e2794d21f82d131fd9ee77237", + "sha256:b4f37c3ac52d8a445af3a66bce57b33b5e90b97c696b7b984f530cf8f0ded09c" + ], + "markers": "python_version >= '3.6'", + "version": "==0.19" + }, + "fsspec": { + "hashes": [ + "sha256:330c66757591df346ad3091a53bd907e15348c2ba17d63fd54f5c39c4457d2a5", + "sha256:346a8f024efeb749d2a5fca7ba8854474b1ff9af7c3faaf636a4548781136529" + ], + "markers": "python_version >= '3.8'", + "version": "==2023.10.0" + }, + "geographiclib": { + "hashes": [ + "sha256:6b7225248e45ff7edcee32becc4e0a1504c606ac5ee163a5656d482e0cd38734", + "sha256:f7f41c85dc3e1c2d3d935ec86660dc3b2c848c83e17f9a9e51ba9d5146a15859" + ], + "markers": "python_version >= '3.7'", + "version": "==2.0" + }, + "geopy": { + "hashes": [ + "sha256:50283d8e7ad07d89be5cb027338c6365a32044df3ae2556ad3f52f4840b3d0d1", + "sha256:ae8b4bc5c1131820f4d75fce9d4aaaca0c85189b3aa5d64c3dcaf5e3b7b882a7" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==2.4.1" + }, + "gunicorn": { + "hashes": [ + "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0", + "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033" + ], + "index": "pypi", + "markers": "python_version >= '3.5'", + "version": "==21.2.0" + }, + "h11": { + "hashes": [ + "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", + "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761" + ], + "markers": "python_version >= '3.7'", + "version": "==0.14.0" + }, + "idna": { + "hashes": [ + "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca", + "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f" + ], + "markers": "python_version >= '3.5'", + "version": "==3.6" + }, + "importlib-metadata": { + "hashes": [ + "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb", + "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743" + ], + "markers": "python_version >= '3.8'", + "version": "==6.8.0" + }, + "locket": { + "hashes": [ + "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", + "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.0.0" + }, + "numcodecs": { + "hashes": [ + "sha256:05d91a433733e7eef268d7e80ec226a0232da244289614a8f3826901aec1098e", + "sha256:0e79bf9d1d37199ac00a60ff3adb64757523291d19d03116832e600cac391c51", + "sha256:135b2d47563f7b9dc5ee6ce3d1b81b0f1397f69309e909f1a35bb0f7c553d45e", + "sha256:21d8267bd4313f4d16f5b6287731d4c8ebdab236038f29ad1b0e93c9b2ca64ee", + "sha256:29dfb195f835a55c4d490fb097aac8c1bcb96c54cf1b037d9218492c95e9d8c5", + "sha256:2f1ba2f4af3fd3ba65b1bcffb717fe65efe101a50a91c368f79f3101dbb1e243", + "sha256:2f84df6b8693206365a5b37c005bfa9d1be486122bde683a7b6446af4b75d862", + "sha256:2fbb12a6a1abe95926f25c65e283762d63a9bf9e43c0de2c6a1a798347dfcb40", + "sha256:760627780a8b6afdb7f942f2a0ddaf4e31d3d7eea1d8498cf0fd3204a33c4618", + "sha256:82d7107f80f9307235cb7e74719292d101c7ea1e393fe628817f0d635b7384f5", + "sha256:941b7446b68cf79f089bcfe92edaa3b154533dcbcd82474f994b28f2eedb1c60", + "sha256:a191a8e347ecd016e5c357f2bf41fbcb026f6ffe78fff50c77ab12e96701d155", + "sha256:abff3554a6892a89aacf7b642a044e4535499edf07aeae2f2e6e8fc08c9ba07f", + "sha256:c17687b1fd1fef68af616bc83f896035d24e40e04e91e7e6dae56379eb59fe33", + "sha256:c258bd1d3dfa75a9b708540d23b2da43d63607f9df76dfa0309a7597d1de3b73", + "sha256:caf1a1e6678aab9c1e29d2109b299f7a467bd4d4c34235b1f0e082167846b88f", + "sha256:d37f628fe92b3699e65831d5733feca74d2e33b50ef29118ffd41c13c677210e", + "sha256:e04649ea504aff858dbe294631f098fbfd671baf58bfc04fc48d746554c05d67", + "sha256:eeaf42768910f1c6eebf6c1bb00160728e62c9343df9e2e315dc9fe12e3f6071", + "sha256:ef964d4860d3e6b38df0633caf3e51dc850a6293fd8e93240473642681d95136", + "sha256:f2207871868b2464dc11c513965fd99b958a9d7cde2629be7b2dc84fdaab013b" + ], + "markers": "python_version >= '3.8'", + "version": "==0.12.1" + }, + "numpy": { + "hashes": [ + "sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a", + "sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6", + "sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2", + "sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79", + "sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9", + "sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919", + "sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d", + "sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060", + "sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75", + "sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f", + "sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe", + "sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167", + "sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef", + "sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75", + "sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3", + "sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7", + "sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7", + "sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d", + "sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b", + "sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186", + "sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0", + "sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1", + "sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6", + "sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e", + "sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523", + "sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36", + "sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841", + "sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818", + "sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00", + "sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80", + "sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440", + "sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210", + "sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8", + "sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea", + "sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec", + "sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==1.26.2" + }, + "packaging": { + "hashes": [ + "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5", + "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7" + ], + "markers": "python_version >= '3.7'", + "version": "==23.2" + }, + "pandas": { + "hashes": [ + "sha256:0296a66200dee556850d99b24c54c7dfa53a3264b1ca6f440e42bad424caea03", + "sha256:04d4c58e1f112a74689da707be31cf689db086949c71828ef5da86727cfe3f82", + "sha256:08637041279b8981a062899da0ef47828df52a1838204d2b3761fbd3e9fcb549", + "sha256:11a771450f36cebf2a4c9dbd3a19dfa8c46c4b905a3ea09dc8e556626060fe71", + "sha256:1329dbe93a880a3d7893149979caa82d6ba64a25e471682637f846d9dbc10dd2", + "sha256:1f539e113739a3e0cc15176bf1231a553db0239bfa47a2c870283fd93ba4f683", + "sha256:22929f84bca106921917eb73c1521317ddd0a4c71b395bcf767a106e3494209f", + "sha256:321ecdb117bf0f16c339cc6d5c9a06063854f12d4d9bc422a84bb2ed3207380a", + "sha256:35172bff95f598cc5866c047f43c7f4df2c893acd8e10e6653a4b792ed7f19bb", + "sha256:3cc4469ff0cf9aa3a005870cb49ab8969942b7156e0a46cc3f5abd6b11051dfb", + "sha256:4441ac94a2a2613e3982e502ccec3bdedefe871e8cea54b8775992485c5660ef", + "sha256:465571472267a2d6e00657900afadbe6097c8e1dc43746917db4dfc862e8863e", + "sha256:59dfe0e65a2f3988e940224e2a70932edc964df79f3356e5f2997c7d63e758b4", + "sha256:72c84ec1b1d8e5efcbff5312abe92bfb9d5b558f11e0cf077f5496c4f4a3c99e", + "sha256:7cf4cf26042476e39394f1f86868d25b265ff787c9b2f0d367280f11afbdee6d", + "sha256:7fa2ad4ff196768ae63a33f8062e6838efed3a319cf938fdf8b95e956c813042", + "sha256:a5d53c725832e5f1645e7674989f4c106e4b7249c1d57549023ed5462d73b140", + "sha256:acf08a73b5022b479c1be155d4988b72f3020f308f7a87c527702c5f8966d34f", + "sha256:b99c4e51ef2ed98f69099c72c75ec904dd610eb41a32847c4fcbc1a975f2d2b8", + "sha256:d5ded6ff28abbf0ea7689f251754d3789e1edb0c4d0d91028f0b980598418a58", + "sha256:de21e12bf1511190fc1e9ebc067f14ca09fccfb189a813b38d63211d54832f5f", + "sha256:f7ea8ae8004de0381a2376662c0505bb0a4f679f4c61fbfd122aa3d1b0e5f09d", + "sha256:fc77309da3b55732059e484a1efc0897f6149183c522390772d3561f9bf96c00", + "sha256:fca5680368a5139d4920ae3dc993eb5106d49f814ff24018b64d8850a52c6ed2", + "sha256:fcd76d67ca2d48f56e2db45833cf9d58f548f97f61eecd3fdc74268417632b8a" + ], + "markers": "python_version >= '3.9'", + "version": "==2.1.3" + }, + "partd": { + "hashes": [ + "sha256:27e766663d36c161e2827aa3e28541c992f0b9527d3cca047e13fb3acdb989e6", + "sha256:56c25dd49e6fea5727e731203c466c6e092f308d8f0024e199d02f6aa2167f67" + ], + "markers": "python_version >= '3.7'", + "version": "==1.4.1" + }, + "polars": { + "hashes": [ + "sha256:325d70b77d680562fa8aac4da69cb58c610b82f0f545383b3c6012cc20c45296", + "sha256:40b9cc201ca6ee22b2c28e1b1597ea38062e648c855d2d9991dcb85e4ab0e322", + "sha256:ac6c74a90b631cbdb0b2b3baf99a05dcc170341754062512b2e95c188506b6f6", + "sha256:d7acd6622f1f9cdda73e4c42d5d9179796a2e0832c91ce48081f3d4765faaaae", + "sha256:f837e27fd55d91c38bc2b0ebd825fd3334c87373e567f40cc51133db89275fef", + "sha256:fd7db41079fd8875157515e4083379a8d9bf060f7766a0f95343d9667d4f9f1c" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==0.19.17" + }, + "pydantic": { + "hashes": [ + "sha256:80c50fb8e3dcecfddae1adbcc00ec5822918490c99ab31f6cf6140ca1c1429f0", + "sha256:ff177ba64c6faf73d7afa2e8cad38fd456c0dbe01c9954e71038001cd15a6edd" + ], + "markers": "python_version >= '3.7'", + "version": "==2.5.2" + }, + "pydantic-core": { + "hashes": [ + "sha256:038c9f763e650712b899f983076ce783175397c848da04985658e7628cbe873b", + "sha256:074f3d86f081ce61414d2dc44901f4f83617329c6f3ab49d2bc6c96948b2c26b", + "sha256:079206491c435b60778cf2b0ee5fd645e61ffd6e70c47806c9ed51fc75af078d", + "sha256:09b0e985fbaf13e6b06a56d21694d12ebca6ce5414b9211edf6f17738d82b0f8", + "sha256:0f6116a558fd06d1b7c2902d1c4cf64a5bd49d67c3540e61eccca93f41418124", + "sha256:103ef8d5b58596a731b690112819501ba1db7a36f4ee99f7892c40da02c3e189", + "sha256:16e29bad40bcf97aac682a58861249ca9dcc57c3f6be22f506501833ddb8939c", + "sha256:206ed23aecd67c71daf5c02c3cd19c0501b01ef3cbf7782db9e4e051426b3d0d", + "sha256:2248485b0322c75aee7565d95ad0e16f1c67403a470d02f94da7344184be770f", + "sha256:27548e16c79702f1e03f5628589c6057c9ae17c95b4c449de3c66b589ead0520", + "sha256:2d0ae0d8670164e10accbeb31d5ad45adb71292032d0fdb9079912907f0085f4", + "sha256:3128e0bbc8c091ec4375a1828d6118bc20404883169ac95ffa8d983b293611e6", + "sha256:3387277f1bf659caf1724e1afe8ee7dbc9952a82d90f858ebb931880216ea955", + "sha256:34708cc82c330e303f4ce87758828ef6e457681b58ce0e921b6e97937dd1e2a3", + "sha256:35613015f0ba7e14c29ac6c2483a657ec740e5ac5758d993fdd5870b07a61d8b", + "sha256:3ad873900297bb36e4b6b3f7029d88ff9829ecdc15d5cf20161775ce12306f8a", + "sha256:40180930807ce806aa71eda5a5a5447abb6b6a3c0b4b3b1b1962651906484d68", + "sha256:439c9afe34638ace43a49bf72d201e0ffc1a800295bed8420c2a9ca8d5e3dbb3", + "sha256:45e95333b8418ded64745f14574aa9bfc212cb4fbeed7a687b0c6e53b5e188cd", + "sha256:4641e8ad4efb697f38a9b64ca0523b557c7931c5f84e0fd377a9a3b05121f0de", + "sha256:49b08aae5013640a3bfa25a8eebbd95638ec3f4b2eaf6ed82cf0c7047133f03b", + "sha256:4bc536201426451f06f044dfbf341c09f540b4ebdb9fd8d2c6164d733de5e634", + "sha256:4ce601907e99ea5b4adb807ded3570ea62186b17f88e271569144e8cca4409c7", + "sha256:4e40f2bd0d57dac3feb3a3aed50f17d83436c9e6b09b16af271b6230a2915459", + "sha256:4e47a76848f92529879ecfc417ff88a2806438f57be4a6a8bf2961e8f9ca9ec7", + "sha256:513b07e99c0a267b1d954243845d8a833758a6726a3b5d8948306e3fe14675e3", + "sha256:531f4b4252fac6ca476fbe0e6f60f16f5b65d3e6b583bc4d87645e4e5ddde331", + "sha256:57d52fa717ff445cb0a5ab5237db502e6be50809b43a596fb569630c665abddf", + "sha256:59986de5710ad9613ff61dd9b02bdd2f615f1a7052304b79cc8fa2eb4e336d2d", + "sha256:5baab5455c7a538ac7e8bf1feec4278a66436197592a9bed538160a2e7d11e36", + "sha256:5c7d5b5005f177764e96bd584d7bf28d6e26e96f2a541fdddb934c486e36fd59", + "sha256:60b7607753ba62cf0739177913b858140f11b8af72f22860c28eabb2f0a61937", + "sha256:615a0a4bff11c45eb3c1996ceed5bdaa2f7b432425253a7c2eed33bb86d80abc", + "sha256:61ea96a78378e3bd5a0be99b0e5ed00057b71f66115f5404d0dae4819f495093", + "sha256:652c1988019752138b974c28f43751528116bcceadad85f33a258869e641d753", + "sha256:6637560562134b0e17de333d18e69e312e0458ee4455bdad12c37100b7cad706", + "sha256:678265f7b14e138d9a541ddabbe033012a2953315739f8cfa6d754cc8063e8ca", + "sha256:699156034181e2ce106c89ddb4b6504c30db8caa86e0c30de47b3e0654543260", + "sha256:6b9ff467ffbab9110e80e8c8de3bcfce8e8b0fd5661ac44a09ae5901668ba997", + "sha256:6c327e9cd849b564b234da821236e6bcbe4f359a42ee05050dc79d8ed2a91588", + "sha256:6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71", + "sha256:6e227c40c02fd873c2a73a98c1280c10315cbebe26734c196ef4514776120aeb", + "sha256:6e4d090e73e0725b2904fdbdd8d73b8802ddd691ef9254577b708d413bf3006e", + "sha256:70f4b4851dbb500129681d04cc955be2a90b2248d69273a787dda120d5cf1f69", + "sha256:70f947628e074bb2526ba1b151cee10e4c3b9670af4dbb4d73bc8a89445916b5", + "sha256:774de879d212db5ce02dfbf5b0da9a0ea386aeba12b0b95674a4ce0593df3d07", + "sha256:77fa384d8e118b3077cccfcaf91bf83c31fe4dc850b5e6ee3dc14dc3d61bdba1", + "sha256:79e0a2cdbdc7af3f4aee3210b1172ab53d7ddb6a2d8c24119b5706e622b346d0", + "sha256:7e88f5696153dc516ba6e79f82cc4747e87027205f0e02390c21f7cb3bd8abfd", + "sha256:7f8210297b04e53bc3da35db08b7302a6a1f4889c79173af69b72ec9754796b8", + "sha256:81982d78a45d1e5396819bbb4ece1fadfe5f079335dd28c4ab3427cd95389944", + "sha256:823fcc638f67035137a5cd3f1584a4542d35a951c3cc68c6ead1df7dac825c26", + "sha256:853a2295c00f1d4429db4c0fb9475958543ee80cfd310814b5c0ef502de24dda", + "sha256:88e74ab0cdd84ad0614e2750f903bb0d610cc8af2cc17f72c28163acfcf372a4", + "sha256:8aa1768c151cf562a9992462239dfc356b3d1037cc5a3ac829bb7f3bda7cc1f9", + "sha256:8c8a8812fe6f43a3a5b054af6ac2d7b8605c7bcab2804a8a7d68b53f3cd86e00", + "sha256:95b15e855ae44f0c6341ceb74df61b606e11f1087e87dcb7482377374aac6abe", + "sha256:96581cfefa9123accc465a5fd0cc833ac4d75d55cc30b633b402e00e7ced00a6", + "sha256:9bd18fee0923ca10f9a3ff67d4851c9d3e22b7bc63d1eddc12f439f436f2aada", + "sha256:a33324437018bf6ba1bb0f921788788641439e0ed654b233285b9c69704c27b4", + "sha256:a6a16f4a527aae4f49c875da3cdc9508ac7eef26e7977952608610104244e1b7", + "sha256:a717aef6971208f0851a2420b075338e33083111d92041157bbe0e2713b37325", + "sha256:a71891847f0a73b1b9eb86d089baee301477abef45f7eaf303495cd1473613e4", + "sha256:aae7ea3a1c5bb40c93cad361b3e869b180ac174656120c42b9fadebf685d121b", + "sha256:ab1cdb0f14dc161ebc268c09db04d2c9e6f70027f3b42446fa11c153521c0e88", + "sha256:ab4ea451082e684198636565224bbb179575efc1658c48281b2c866bfd4ddf04", + "sha256:abf058be9517dc877227ec3223f0300034bd0e9f53aebd63cf4456c8cb1e0863", + "sha256:af36f36538418f3806048f3b242a1777e2540ff9efaa667c27da63d2749dbce0", + "sha256:b53e9ad053cd064f7e473a5f29b37fc4cc9dc6d35f341e6afc0155ea257fc911", + "sha256:b7851992faf25eac90bfcb7bfd19e1f5ffa00afd57daec8a0042e63c74a4551b", + "sha256:b9b759b77f5337b4ea024f03abc6464c9f35d9718de01cfe6bae9f2e139c397e", + "sha256:ba39688799094c75ea8a16a6b544eb57b5b0f3328697084f3f2790892510d144", + "sha256:ba6b6b3846cfc10fdb4c971980a954e49d447cd215ed5a77ec8190bc93dd7bc5", + "sha256:bb4c2eda937a5e74c38a41b33d8c77220380a388d689bcdb9b187cf6224c9720", + "sha256:c0b97ec434041827935044bbbe52b03d6018c2897349670ff8fe11ed24d1d4ab", + "sha256:c1452a1acdf914d194159439eb21e56b89aa903f2e1c65c60b9d874f9b950e5d", + "sha256:c2027d05c8aebe61d898d4cffd774840a9cb82ed356ba47a90d99ad768f39789", + "sha256:c2adbe22ab4babbca99c75c5d07aaf74f43c3195384ec07ccbd2f9e3bddaecec", + "sha256:c2d97e906b4ff36eb464d52a3bc7d720bd6261f64bc4bcdbcd2c557c02081ed2", + "sha256:c339dabd8ee15f8259ee0f202679b6324926e5bc9e9a40bf981ce77c038553db", + "sha256:c6eae413494a1c3f89055da7a5515f32e05ebc1a234c27674a6956755fb2236f", + "sha256:c949f04ecad823f81b1ba94e7d189d9dfb81edbb94ed3f8acfce41e682e48cef", + "sha256:c97bee68898f3f4344eb02fec316db93d9700fb1e6a5b760ffa20d71d9a46ce3", + "sha256:ca61d858e4107ce5e1330a74724fe757fc7135190eb5ce5c9d0191729f033209", + "sha256:cb4679d4c2b089e5ef89756bc73e1926745e995d76e11925e3e96a76d5fa51fc", + "sha256:cb774298da62aea5c80a89bd58c40205ab4c2abf4834453b5de207d59d2e1651", + "sha256:ccd4d5702bb90b84df13bd491be8d900b92016c5a455b7e14630ad7449eb03f8", + "sha256:cf9d3fe53b1ee360e2421be95e62ca9b3296bf3f2fb2d3b83ca49ad3f925835e", + "sha256:d2ae91f50ccc5810b2f1b6b858257c9ad2e08da70bf890dee02de1775a387c66", + "sha256:d37f8ec982ead9ba0a22a996129594938138a1503237b87318392a48882d50b7", + "sha256:d81e6987b27bc7d101c8597e1cd2bcaa2fee5e8e0f356735c7ed34368c471550", + "sha256:dcf4e6d85614f7a4956c2de5a56531f44efb973d2fe4a444d7251df5d5c4dcfd", + "sha256:de790a3b5aa2124b8b78ae5faa033937a72da8efe74b9231698b5a1dd9be3405", + "sha256:e47e9a08bcc04d20975b6434cc50bf82665fbc751bcce739d04a3120428f3e27", + "sha256:e60f112ac88db9261ad3a52032ea46388378034f3279c643499edb982536a093", + "sha256:e87fc540c6cac7f29ede02e0f989d4233f88ad439c5cdee56f693cc9c1c78077", + "sha256:eac5c82fc632c599f4639a5886f96867ffced74458c7db61bc9a66ccb8ee3113", + "sha256:ebb4e035e28f49b6f1a7032920bb9a0c064aedbbabe52c543343d39341a5b2a3", + "sha256:ec1e72d6412f7126eb7b2e3bfca42b15e6e389e1bc88ea0069d0cc1742f477c6", + "sha256:ef98ca7d5995a82f43ec0ab39c4caf6a9b994cb0b53648ff61716370eadc43cf", + "sha256:f0cbc7fff06a90bbd875cc201f94ef0ee3929dfbd5c55a06674b60857b8b85ed", + "sha256:f4791cf0f8c3104ac668797d8c514afb3431bc3305f5638add0ba1a5a37e0d88", + "sha256:f5e412d717366e0677ef767eac93566582518fe8be923361a5c204c1a62eaafe", + "sha256:fb2ed8b3fe4bf4506d6dab3b93b83bbc22237e230cba03866d561c3577517d18", + "sha256:fe0a5a1025eb797752136ac8b4fa21aa891e3d74fd340f864ff982d649691867" + ], + "markers": "python_version >= '3.7'", + "version": "==2.14.5" + }, + "python-dateutil": { + "hashes": [ + "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86", + "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.8.2" + }, + "pytz": { + "hashes": [ + "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b", + "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7" + ], + "version": "==2023.3.post1" + }, + "pyyaml": { + "hashes": [ + "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5", + "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc", + "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df", + "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741", + "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206", + "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27", + "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595", + "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62", + "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98", + "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696", + "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290", + "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9", + "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d", + "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6", + "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867", + "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47", + "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486", + "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6", + "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3", + "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007", + "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938", + "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0", + "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c", + "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735", + "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d", + "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28", + "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4", + "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba", + "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8", + "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5", + "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd", + "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3", + "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0", + "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515", + "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c", + "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c", + "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924", + "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34", + "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43", + "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859", + "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673", + "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54", + "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a", + "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b", + "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab", + "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa", + "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c", + "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585", + "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d", + "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f" + ], + "markers": "python_version >= '3.6'", + "version": "==6.0.1" + }, + "requests": { + "hashes": [ + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" + ], + "index": "pypi", + "markers": "python_version >= '3.7'", + "version": "==2.31.0" + }, + "six": { + "hashes": [ + "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", + "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==1.16.0" + }, + "sniffio": { + "hashes": [ + "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101", + "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.0" + }, + "starlette": { + "hashes": [ + "sha256:6a6b0d042acb8d469a01eba54e9cda6cbd24ac602c4cd016723117d6a7e73b75", + "sha256:918416370e846586541235ccd38a474c08b80443ed31c578a418e2209b3eef91" + ], + "markers": "python_version >= '3.7'", + "version": "==0.27.0" + }, + "toolz": { + "hashes": [ + "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f", + "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194" + ], + "markers": "python_version >= '3.5'", + "version": "==0.12.0" + }, + "typing-extensions": { + "hashes": [ + "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0", + "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef" + ], + "markers": "python_version >= '3.8'", + "version": "==4.8.0" + }, + "tzdata": { + "hashes": [ + "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a", + "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda" + ], + "markers": "python_version >= '2'", + "version": "==2023.3" + }, + "urllib3": { + "hashes": [ + "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3", + "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54" + ], + "markers": "python_version >= '3.8'", + "version": "==2.1.0" + }, + "uvicorn": { + "hashes": [ + "sha256:09c8e5a79dc466bdf28dead50093957db184de356fcdc48697bad3bde4c2588e", + "sha256:7c84fea70c619d4a710153482c0d230929af7bcf76c7bfa6de151f0a3a80121e" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==0.24.0.post1" + }, + "xarray": { + "hashes": [ + "sha256:933b5101e965120ed58e29525667ab34aafcea1886c236ade72a34d7bb465d9c", + "sha256:9a45e10741844b5f948d8e1e768b460df7e90696d18e2eff2c1d47f5d9d50252" + ], + "index": "pypi", + "markers": "python_version >= '3.9'", + "version": "==2023.11.0" + }, + "zarr": { + "hashes": [ + "sha256:4276cf4b4a653431042cd53ff2282bc4d292a6842411e88529964504fb073286", + "sha256:de4882433ccb5b42cc1ec9872b95e64ca3a13581424666b28ed265ad76c7056f" + ], + "index": "pypi", + "markers": "python_version >= '3.8'", + "version": "==2.16.1" + }, + "zipp": { + "hashes": [ + "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31", + "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0" + ], + "markers": "python_version >= '3.8'", + "version": "==3.17.0" + } + }, + "develop": {} +} diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/change_log.md b/change_log.md index 75425e7..6dfaf96 100644 --- a/change_log.md +++ b/change_log.md @@ -43,3 +43,6 @@ ###### ver 0.2.4 Add jsonsrc can feed JSON url/string, and fix openapi.json in /swagger ###### ver 0.2.5 Package upgrade/improve pm2 restart by pre_stop + + +#### ver 0.3.0 Breaking upgrade to GEBCO(2023) now. Change to use pipenv for package version management diff --git a/conf/ecosystem.config.js b/conf/ecosystem.config.js index 28116ac..9f99de8 100644 --- a/conf/ecosystem.config.js +++ b/conf/ecosystem.config.js @@ -1,7 +1,7 @@ module.exports = { apps : [{ name: 'gebco', - script: 'gunicorn gebco_app:app -w 4 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:8013 --keyfile conf/privkey.pem --certfile conf/fullchain.pem --reload', + script: 'gunicorn gebco_app:app -w 2 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:8013 --keyfile conf/privkey.pem --certfile conf/fullchain.pem --reload', args: '', merge_logs: true, autorestart: true, diff --git a/data_src/GEBCO_2023_Grid_documentation.pdf b/data_src/GEBCO_2023_Grid_documentation.pdf new file mode 100755 index 0000000000000000000000000000000000000000..d1e2e57d34ab8e4ea5e813aaa81f3e88a09a61e4 GIT binary patch literal 199494 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� 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

#__apS-Vc-0&3W+IZsLgA))kqot>|*X z&ED^nQB(BBbr#jO*eI~LEujq^FC+ij_Ih}D2dx!pqs6(K>+g0&$-PNi1S0rgA|D4K z)FBfg?9cE^Nw$c?V~nM)GSDOcG|?TA5E`1EJBycW9u|m9A}Ca8OhhywUNU(p1%^tR zQL^^$*tj8UbVQ9T@eth|yMjTwXHOHWM-)M~Ns*%{6d;{{X=2%CHQHCyU&J451qrX$S0gA|)>5 z>VbY?beS9W5|7}KTyYGXhSl9f3p9lCWc? z!x7J0-2&gzwI9aJmCL5Jfw93N*|fwlA6)o7ae`+OcQXVv(vBXm&>7`QQ^yX*DatnC zlS!L@`B>ZEN7^=8?p*0e6&fLLcJ^k6DMwKTu+=rvOt(=RKx~nih>?}%+gKBy%~0y6PMk2ZDU^#=w*|n2nzuIs;`L-y$j`ORY6DhFrJEtvTGwC74ZJJUwDfHJ zt*_)LnxM_d0#STO-YC61n&f0s!fGAZ$iMwEO|rhp;kEuGL09hW$eJn54a4i10{7LI zGY{`3*t+-rz{$x?H2<5mD^W{b#iy7Dcm?C0y31pB?wFJFA^jM7W(MtiFHUB?VPfwZ zAN`ru?HndTXYwf1Y0h52JZHToUYQ^2rq#`dKdXb>=ckMT z^8g~WY0YoAu2AoR*iG}#cG6#nh=Lg~sY0lh-cy)ioS^@$a`I9NCmj4zlXLi$$R6h^ zRK8nN(sBb@nAL|^9$*P1w4v2wr@2vd^(_ihtxLXdSHF&VUVR(O7@ z9(bKZ=u#H-&E-jh;z%jutEgujQ6d8siIGi=HCWA@mY8naa92vb>JKs5y{41Z-UeX< z+PJaMrA(_S)j{bKO_D;@fTRY2i{@WPr){-9&#Yg-Be}2g$*6_$FL))}3VD1VQATBt>~B(}2LZPV;|BdK{47=|v+S z^PCiftq~$2HCU1A`KZ!F??ZT20^a^qjcA>G*wgV`rR<8xN?czXaagEKovybm)U4!#S@S)$S|0Y%S%gk5(Sc z!qlajJe6J@;6KPMH*-mjIxLkA^TP-qMxnUQ!%3&EO-j;2(s!#|z7Ayf9Et_wKxTbC zbLOKWN>hXKWzBk}-N}R=GUVyJJVgzQMJ@ldISjkyh{-(dtF;PXH(Qd?E}Xd|eE6wM zjWAW8(mh!1oP8yr=aJrBkr8qCjK$u!;@th=m1PN(?|>lr5TQLTO3&%SZFba^ds zbzg5k^Uhe!XB${jM*s*T;WYBNw0_)jTJ!;bZV--`a!2RWcW_n&000gEFg-Tg`hkDwT>d<#b79M4By< zQDtNqOhp$_iva9nvxF;s{nI_`Iops_>pRA^T4~0MLU58MNbfhRLSJv;tq%ETuWfR6 z&RUJ7#KabHVpeUvYpJ;8>qS(HLqMRQ3=QHh07z)Lk+`i+*Gd~<6`(;JVyqcY-TgM5 zPQV@dHd-vENF=#b>T{MkRgmcR$_X=T3?r~&Tf@i|+^se_tjgWpaOopamqo@$sIu`K z<0YcPnFvQyZFy;<0|4RtgWsCOT_s97h&O3DP7DBpd54yr3gFt@m9|>}kTqHO+{X|8 zRU-X6m;)%6Kw}v7L-fzTF!T5R!9pSxsoX6;KW8oO~A}PC%RsqWl;~~ylZDIt$ zIY^6@n37aF#Hjmz@nv}fx2(3|BAR=k&%Hs$>U599VSQ5}#xXBYM#0h{wBqw@C+-OY z{rYtiUT)D{tV+iUogvEO(Ek9MJ0B#PXiePBGko@E#FNDvW|{tU{wO_nk#s)T@2n8I zR<8aiwPUUn16@k?bWP>eit8dHnVS2WRAJcfZZRTaFE)$pOE?#py!makYo36{7e!^N zrD31NK;0PwQz{s-5$7U_oz+G`vp5@zH}b^w{KHP~*8YVEZe&nIj@SPF^Nr|9t*V_o z6Z$iSZM%9rfSeL;7LG^6%h605v6ak)OXMc!r-FE~t=&VG?L}AoH_M|t8aZz9!|&XVjf`w{x&Hi7Oswe8jJ`o7mK*@; z1=fD=cJ}H0-p0?^1uMp{t=!ajCmEh!UIfQsO{)R!Z6jo@Rnm9#Yfu(@IOxn|*x0vQ zPPqjrW)$m*z897|;9wkfwi-Sti!$aE;b`aV{x?#ve0#!eN9BFZYO%y&X<*ij)A@kT zR>)o1ywlw^szVhv%^Q^bty1C^B`BM3r?-rG&(eVgVZOu2|(xZsKx9StLwTW@+h#ucjb{n_+pXX`Tg<1>rOVaUzCMR4wN4&jG zxdUhk?uIFj8NFby!^A<-?mj+{28O7%sh(Gpiw$XAEp#)5ake8nP5DS=6FemGr+;&kA2LYgzwTjnK zy$}Ha)syaR_z;csNj{5RHqp6a(?TLM&htq3oM>=y^~gQ+bAo(7ea^L5?v9L^sZW7# z^IfcK^*AQ7Ys35FN7jI4&#!u)&sqJAtO7;~Ko{Hx(6N*;xnbYC?h7gEG2w!q*_V5; zBmpJU1(}wFtL<346kXXp*`v!5ZRE4^S1^d6kQa<;X&G&OAXGAf#6^-j7 zpV?+?#k8v)j`@86L}^`o)k~hKvvLv|?9N7r#EN^Vh29Bd`85L9n|zI_uJW-^(jWEM zs^Kh<>t?+Sv$!;>1=(B{8O6ETr*=Zo0c*$8#CiZwro?4*M=3#I%Zmiop4ckB+%4{& z+f8-PI{TA{-R7$tOgK5CALqB7r{>cU_>f4aaE6=9t+u1k96Zsn5l@kRD@WinP%{>U zN%IPpNc})({(=p!S__fJs{#dxO6MI(R;)ni=T>O-Fn=_62R!0?2-gTN4ZGJv{=t*r zq^44O$3^s@;V2MlXfhIuNk>(6%VlIyFTdD(6>11pb@n9RUdd>tx>Z@M<*`g!u+}b- zm#Hu^!@FUkMSUd(*Q0wQp<=d9Cx*x$bBAO2e5q+PlGA$XOHrRmDw5z8v|mI+@G_1c z`mDa0bLxzP*OPBpL9EgcyG9`;i9E0rftT8aFW>_b9y^%<^Wa_bRs+~L(|;Gu=yS+Y z*aon@SL4lCxidPYM8 zRwd(f7PY?rfY%k2mv?t3u9?n5Zkv7s8I>+qQ%PR5K3eZMl;$^G-B5}3^&nW};OryE zff!-}?WsA4nfSKrQ7vz(N=i5;+EDpfvSQT<9oxA}aLP-yE44L3C+m^eBQA1ap_~8S zZnNTK3%Eah9gfWO{jA#@)*{Y=-^(M1I@PNgJ007Pgxewgw;&eI$n6{!e}o`45_fBd zGboRE)7zKD`rCq^1H146Xrs3RTqx<}SWQs3XTxM}E=s(i05|YmXC^+^3A?VHUsmrT|W!i5rjD^5d>3@fREn zQtNL@E?-y+L!dk=0R6&nwZ3d=MEY!6Lc*lYuJbJVU4WBog=R^eLl}A(GeLCP3Z^^( zAc`LFKL_ByT}J+g7W}W{aSk7?9uPqn>7jzAa!D({EAROM{miW%UPZM%>h)YRO>(Gb zfasc&4{4g_)`ZQyVN^&@U9bC#vK0 zQgOW+{nWBnz<)T5%0wQ^vxHy#li5@YGtob!l^{dgp-0P^@TtD^l5V40H^p0XtcSp0 zg8M4v?`5C8@Th9WQGwJXA3kp7E1naenkzb)0}UYT|sbml724ekwU2 z{wQLMl4gjMLSuF}h@;m`H2L+FX-xKZ!s6tE%&WO%bq9?^69x1UVImc4-Lo3m`gjJ-o1JTVe`2_4Hu$M;n4+rMYj?z;`X1w&OiJ{AuM+I)vsciI#~Q z2Kp8rsqDzGX~aki%71GI38XQ|Sd13?T+?#gETj6@o1(M1rip%ezh=YdgXo@7*!8YQ z!@J8!$W%&?`TG;saQ_3KyR}H5+w)c955ul6036eiJVO--wenyby~uPC>ap>QDt&dt zOcZK=rXl^+%sq7L_W#)&$X4(mQE zr%K#$Z~dJUSg4w=WgY-9NWsTQ7^P{G>fObC&NX-Cn&0~tNUn`}gE`JuRtkN zQ%*0ol3fJ`afXsdwqoPAJ0M?R`Vaj!@j|U=U10~Vw`xOe4VzeeU*MlOUd9j521)m_ z-RSGcFf<=;!ODf7?Y@AUaA4S2)HUPXIOJploo(w`9Ku^bDVtjujF?CX!7JE3@w`uo zK)!nzt-RpG87p|HTRy?}K*^uH0$MdWc-UtA-wI+?pH*6vCWEyqR?=~z@8tHnYJvLd zjOzx(1W6^wdeYLBlYO`c$=0BDLN0KlI7}|wZKaH|NcOO{{!gZ2kKv49hdfHx=tXKSYfsjST>vLc;rnyk_s1tP}lO;}2Z*=h20uGcqB z))*&Cqv8eNT-|0rTlJ-~((Fhh3g5&O52>kFFX%OxOkCayNbs{aia&&oZu4=(!F!EopEKZb7Wlhd` z5*LPs{3x?9QPRkoIAL`7bc}{qkAOhz31NTiNm&=-3bJwm zoGmy?N(&Y`C4Qi~K6(ktK*BrLXoSd5!BxgUrNN+0!KIesLADgcRR4b5NP)}HdU#FX z&T~HiB}mOoH5X#5Dv_~OumV4IiUlx<$ml^r*qJ6tU%Rmx*?Pbm?nX6_w4|s^WxNAT zTtmdR1hm}*t8;|S1QeS=YvBmMvLsU7vA(>U+5C{)WIUx~`{+OBaHN)KWb8Hx@%J-H zc3AZFM{gt(%LQODJw$)GI9H&IMxaC3?}%IbI(Na*-z4Qj7i+XujfCsfN_$FgfE|+I zDWm=lbsW;aXZb#^Ni92=@}yn|@&sY1^q7GEd;A~wf&Z=+{}(L$R|zSw1*OGpyF96% zN{u-DEZX=d{)$ZBao2KQD8FTlynf?ip4Ijv|Me173=1VHc}%4ZUdm*Q!@mtZHaKG?!aTo!pt>{mEyTUyc|4v>Ds5&mJSQeLsly{#7c!Q_%*hjEO{63fNU zJ9^BxJ0n>lnTt_J4#UEV`LqQaOY#^@S}==m+FQ$ZSGjBuIAUgL)3cQ>T%gj%a%5BI zV{#S!o!X!lZRi23r-;h;u|F-1&oa?l4QJ8D?cP*QY>07LcWvKwCIWQ(xzFnWI4}^Q z&ChE3zzI*laCaf6o=Mw%=nfM`!v)+QML2Hri!%)sVOP$I2S?Ew<<~<)Lf9lc98=h) zl}~!zEJjTcW7y?)JfJ1-4#i+Ijqlr|aox^FR00j7l%Xa;^r6ejMho|M@pK`i=9 zSE(z>aic(p^!gt;IjpI&@x!ovpL6`C-Q+zGlX~Y9*8KeDUG0~$A)JnXHuPtUofL&m zbE#ODOUvP4b3%}oi*w|lASwmBu1f|W&EDTEKj3ffYkd9DHBEUoRdi;Z1PZnWhQz0A zls3kg<}y!`WJUons|ldCfHC76^{*C#N)L}7Ep?|p$myQSEe;FS@-@+TWREs>^{G*F z!6{RGQ(Ttagmk~scL|4@tOES8=<4X3yUi3=XHL^k9vPmieCswlk}Q8`61J7$9twL$ zSh>ioWB3)PXl+bxo%89D1$e&>OS|%HJQWA*2JisVVaQ=C+!(*n$9 z+6mWFD1BbDJW*EuS{c=86wGXnZQKe(d|N0NNd5*%r$F$% z?@Z^VEz~rBvA*S2DQ?)y>8Y90dlD@2kRQ2B-w;oxgEXxZ({w% zd&ONy=Xy_HaAtU^XPUdk=$-j0YpsZ^mKPq9zgA+Atn=qCijvy2^{KAllZ3SKmPxyE z9#IIolt61$mI5LCzCud=0#Eg(>xP2SJI zKijM5&@1M#82D~6=3>>{&?pwLaQ1;u^--_x!teumH90bJz2W7A=&TwQ*JBcO=WdT) z)HI*5BB%1=Mbj{Tq4@kA>k@LxuVmf%i0zlL%rZS9V~wQpqgzDnIoZIVbWpz?<`2Mrd9-J09l~t! zua@R9gpNj^`t)F$-z?uatHGp|5}PbS5Y$&5j~}lP11A++p!fT)40xq(ITeviyD|7k z9GfbZD|la7*5a4uWtgR^nhUN)_TF_l>Y6faT&%*N)7!K+8?XUeh;0NV#l&R(0Oki* zCO3XE5dFrjw=B=?K6??bW!FAZ5`(rooN!4$AgVR!!T2isG+tTEa`$s1&!()T+*6GO zZCOkg{f}lmra$p>7Rmah!zP#hC@(8T8K^f(dJSy*hA)K?xqPxaaX)y#a>@K?AWoP4 z#1rr~-gETe#eNp?$sTWUYLM;%`Wj?dZ*n&W?jK27Qy9=v4DL~oP! zp!pn@f4{K!)k%k+u1TG;_LumPwz=z9?vg}Q#sNv&(WFFD%oDC#xX&O+Ep612S~lX4 zxcmY7Yv4W8@?;_;uz)X3^rgYV(zi1;n3+;?7U)0h|b& zO5~$67#mZ|Kcz+Lm-s4Q4>wsd>GgNzDO0O`NHH^;jNB+Bu4+Ak+yCM)>(ASbJmvTv zF}S$-V~hg_$6-hGJ8PhNiFK8cA&nUKh=hR+&?<3n2vfec@&9%`{}+z^&l36nFTVZv zO>|0q>%*5C)yfSY(*vB5fq;|BZJV;(SY+-HHko~ksNbjO7W;RA6+K&vZ!G2ug%F9F3JE!m<+P3K-pJ`pC}chW~}Th8Gx z+MY2mW_7Fyyd%^1%X%`r|CB+V=l4rq4|3|FNp{nqPo2$5Kg>0*>SiNW0{My8R=0b4 zjYYc<{Jy8G3!sKg)O4n!n-$b2BDW0Lly%|N2?K;FI7b(@)ZIj8(jY!6M$!)kvQYJRbLwDPD^ z3BOyr%~2{{`O6%z^PcR(G-HsMN#h~NugM^)xKuW`Biy)}nzq<7CIa`I>$ff3*~Q7# zHB!R?TY9+eQm21e0d87T`JyIGC1PX$qPc{4oP`@jo#rOIiDbe7z{_Fje44Jh9ggN- zN<7oXmdVNG%42U#-c)eRL#|&SGwuw|FS`-NLK#z&E|0XkWlVQ`ZeZ`2*+AJuO+{k% zT*&~hzCR9@vFFytdlfF0MFf_gZoJ#DTo)jShmrR4wqnDcZU(``HlrIc_|MX%p9C5J1W%%UM^NVe|Q^L353RJlYwB~3~ z*3D`!tv@iatT$hmQcehYqjO_ty|Lz@cQj;p$tquS%=!;N)LYMf+6mznuWx)XyIXCn z(JY+3Bypj&8%;HQVAYY~x?>Ei8cRM5#_~JdISxh}8tL)zE57UAW9cQ+elTNb=X(aJ z9`}q7X&nY}TNPj>?`>DA)zU++T_xJ!D`PXsT;kI`9`hk1c4F`dDEaNXx9|;vsxKni zj=xAE`A8fg3M!n~9L(^#gwsUj8sVf&u@?K!XZW5oc)L9(>K`qwK}`G$p|I)2?MNGY zmcK=#qL_p3%u1K;wz^^$5Yv?blX=IR&q862-NE>6Y$Dv2L9K-iOORG8rO2aH(1j50 zkay|n4%@k$bQ>+dvLsQT5dec6`ayN=qVG#KplCJJnF5jgx`edC<74njmlBEj@}pr* zkiN+iKn{Du{K>k}n`4$0%~ATONg<%*p{`ZnC*&shwbzSUlah1=f}9sCri$ ze1nOy)CZSqjU^uQyCw8FX132p1o;_y{Iq2K0%h&gOuKbX3qX3RGGLd0IPDg~`4`#8 zjmM5N0xDW^8fpAO&ru87ZP5g zn@gf4ImOi4D1#(G9BV2XlS4;fq1bUhVAn31QhB?*dj`!UKY{KXLBg!tRbC`Je#k9F zpd*PEE7qm5{m5!WXqN0zLmL`f&S?{Lyzh$F!J2P1#;7&7w|%4ujLTr^v@>C*ki_$R z+a-|y@-;!V_a2L*WS&eytLX`VFm{rHm~&w*fW2cja+7SDm#yM^;$!~Qs1>*d!)%i5 z{vYbzIx4QE=@%Z{C&8WI?rtHtI}8rNVSvG165JuULvVNZ;O_2jA-E<)&K+{jbI$X; z?|bk1*1CUu>-J*Udw1`tuCDH`U)7%4-Bsq9KH<#mWnJ;JcG7cU3*R<{2&pP%C~iK= z*Pl(rnAE;}{6PQHJPO!*u7Mhvp*7-C7eo32qVlf#l(*;Xlvp60zLqay%SYZhn7OL? z;@WZ`36xMT8cgAM^4~@Br-1(L)!zRRKmN+ZXEU=wc7%5^q<~3(@!{mB;EfLa)f)=X zgmRx75?=S5<(^O>)7oAUEr`%)Mh2F~5cMXEh!ZrECu}y?-7D%o>NFFW;67TWveO9M zsZMStrAs$qIV@FrTVJmB26bZ~#CcBZm#d{Wjpy|Z&!&9Ds@wDc4fPp@^cTgiOkO>$ zzWCy|6C`d_jj~K#Sgo zhuCXtn0;IE#-}NwNoX_Y_O72UI%L!l`2ZRqs14w4L)A-_Lb7ub8PR~gw3tUVdXTfw z#iwo`dtG0yC%N9cir+60)9(8gyCKeRdW5i;9TJ+&ou7NLV>exTAZhc6p1s z1FtSAQIe0xN6gq)7F_6Zwwq4HhuagUlABfE!mELH{(OWS(*7q8Vgjqmsb4zBAW&yX1A2#X=z=Bs~qoT3}nZ(kV*!XDcqD5Xr=XD zGw5CG*!MS5l%5$#lg_P8F8k2PtK$+;>~_s1i|;3*^IUBVZr|z4__pQUSM;)b?yuXc zIl7nCLHuXxcXHL6D%Iigt<1t#2dFBOWtoW3fS#;1O{%NaZDwDf(jME#GhI3WDq6BR zl&a31L`umT=c+}TG?vQGT^%&(B#@-qxt9FEdOkcgv++~1S_~Sxw3f-Fv|f|Wv~y>e zRT&wH+jM6%WhOS->_dqsuP74>>KWL_M?EMZCn^~;y#Uc2<}eK>B5z_p{iDHX$90CJ zi|;vbD)k=$MC8b53ykXyT;>cz8I2&Q!rUeQ=V{1)J{$S#>fc@^`#))jf6CzBhMGOf zn2LRsX;FBZUm!=WpPNS<-{^{z^>;HecYxXPr>cVf2&`xcL5ltn@dqH$VeSLMXo1RS zae#C-ANzGi zaJfh|eYuWOPdZPo<|VwX&Rb&|)(PSdeH@<|HpK4%v=c%MCqiRt{|)l~ZFK(Evj6hF z!2iKH_%~1DpAPSyzR+MN=jMS{@yvk+2lV`zL3I%k zHYrb684Xtx*XO%re&6+*F=&Z2l+)+0a=wMK^(VKQn$Kjof0NPFd?v&D*EuKjod2(L zE^_YQH9=|UsF>PVm_3t`gRqnTmVgK}v8g*eS4qy!rs3-BX6E{5GhE2|*fdQ{UD!0( zG`$=x*i=odEJQ^9CDCUN{*tIP*v{3$nN8XbN<-4Z%)#7(P0_;M%GH{ji=Bg4MC7lo zK$VT?)LwO7AHnrI*1n_K31@LNt8s1{OR=(}Gm9~s+b^Hd&@eELAdHxi%}*L#K4$HL zF@V?35>5;CUmxF`5_nv6b$!x`I-XY9{@CTif_1$&Sg~wn>gvraH*fDjZlS-qu-7A#a7TubnB_cc(?E+nH@KKZ{ zjjM2VQEUP?rWJ-r>g-W>TUXTk>|bu0qk74m{*O<)ueUCPIvSika+I683cDx_*$z9- z4Xe&ixl`K+m~;=qKFC)&1*V`fzkO9ZfvA5J#1hq;Qq+_sB4n)Q_BaN-1icUe(WsDB zEL?5gInLjG4ho}_#F!2z%E1Bw`Km%Qfzz?dp_%Q>F&dMGdCnIrul6bRhRsL~2N)xo zuL<5c>~q`fF=NT2dS7c)YA(#}V{J|EZojV13pqamc1z~}L>-6k`b4dk46{!&6UIaJ#=oe)}}|s^Oqv^vy4$xO>EUmM^6g zOe^YivmLF7+rx~)&M|N98V44VsIysRY|OGXV}eYMGlg47IflQ~7Tg zno$IzVr^JD7P$N<8yL&TE8Ca@@X?|$1<;;s=^vn2$aqWVbgg4bg zjX$TyR8;e-*f|h*NSm1buwTtMDhI4-5Yc?KZ84}eZ2k;J8AKOi&iqzKq&(lxbH;@o zEO}g38CdFwj8(=$o>m_k6Qn7Q(Xz#aNQ9)>=aI+%VK_O2{g55~twB5k=)6NmqT%W1 zNMug4{re!#j}WSk7b_>lkSpSW?0&A&6@N9TxyV@AxY=_)su_+{tERWCuJ*%nLvTTH zfuwud;VR<$H(uE4&v%p@KeJQ}Z?xWb<2h17@VAVdKK_QGgOyS@Q zj`j6NfJEc$bXcwQ;YDDB^=@R6!fillpjSBR*OcOLg`#Q+cp!yar| zP@sPtXbp<3NRO3;kbEg&{zFTPQC$;8L~}bRg;x5|e;66zlLm!>bFXSwFvz)4^kuRJ zYn)2=FIt@8;gu{!=k?vWtDI4;LagLO;FE(F!@RoHhHze%FxAwm=jyO}{LR_ZYg4W# zAA1Wb0Kf%hF}`oYg&|KcpnWIM|I>E=vTz3W=h+vFFKlO`2$nC)4aP?3&>x1XJgK7ixowHF&o^LB zL$SZ9mnl^-mdp{3!9)eEdeF}D)$LBZV41 z8?!<>0kP&ymFPn%FzGr{-5gIRAOmUYXjS^3#n?(#G7N6S*~olj;^Cr8RDE1F895P% z5fkvvR>UKhlg*oR$JkDoK|g^51f0d3vY%hQ+iwcIXNjlL-%nefQ(d0Bu3Vd3u=<)L zQW^XTQ41ElJROtjyC|{4OZyR{v0(e12-?~tH=zc+t}5KzdKJ^Tkrk@9Ij{QHv<6`; zmy3WROhV4+jf_zkEN1#7ZNzh?4;VHMCAYOi<$L6PJNb*%qpZtF{=j=& zedZf{Db*MDbmr?|CI(+mM^48{INWj2@Yj^@ucTP9`S7wu)gtZ@-`5a3-gi^rjr1By zR@mE_AW!6&R|yETD=3YV>GV~oF1H%{JnaG4h|5EnQsGv^CM7MO=zDPRj30PVi^Bzr z*n67>BT~C_8yZ~?=RR#NeMl}={q}~|`dZ31gb7c}B+%Gyr|3cC4{?;UvQN3|+`lfq zqIa5BkZ6X6wd*cWcCu4)D0?f-V}pzE!NVhN4k>i}LVl8_nfcPOTl_iHXQSB=82{K_sI(l*vut~;Ukzvx4p7qk$z)h9dFor< z$B>TECN0>xJ4RLta;=J+aD}CgmM8dwpHlll@I_W>xjbGdHmSnbhmsPOcpx@$s#K2e ztW+O7cu$JUsDr1_)HNqBD{$g`+(i^+kEJ;o<{LdRfh>4p$RqNon z_1QfFd`TPf_m#IEbC}E=Ti3;&4tQ9V2xm6A?>4oHEAxKUq z_8W_z-;G}^YBj=tbl|7$wB8ji@vVf17ZOc=OCHOBpYU+Sb>xE(aOQnuEb-zr?Y6EU zw)A}&y+B_Y`{Vr>U+v}brdBAax#~fOjUaj06SBaa9;=45iicc&P>4_NOu!rC9h01b z7pYq~sd<&+uB++TkxyWp9G0V&unjBD1zr8K%Usr5NfE1~(@~ewe%UEm;@i+G_cFmleJchG?w(i9-^65pMf4 zO5s-B4$Bui^P&;in_9G!Krq{AB-XogEb+G+l)`<0Eu%e-nu%H~osg*3gIh>C#k<~* zq-hfbGz@3+Rw+`=+OhU0K(ukdUDL2XU9am&g()QaYQcOAX}F?LhxRfW0&O)rP<2OpZRUl%~8>G2%p!Rb+) zljeGi@uv9T71YBmE<7JAY#g7&hFi=r$!mJXYaT?O!NS2IBF4wTAtocEBgUbogC=TD9v&V}p}!Lh1{xX=4T$;T1r`A&CMFg>F#!$^ zJ{dj%IRQQy4cYHRLq-3bsF>NIiJ1@j-RI9=3HJY%z#p5?KuESfdH|TnFyCR%;Q*8X z7)%&gOxQmLVDbR~SU4CM7yum1bCaP777l=b2oHmVjDm^=^Skgl>t6{D79Ifx@ps`% z04xj~03Hzq4IUBB33>wz^geh@1T1U{4o)#O^?DpiE^ZTNm-sqFDsc@{r+~n`**RRz z#C$wz9*KlrN!Q(HGWZ09L^QN?^bCx=eEb4}QqnTAa`GT8Z5>@bGjj_|D{HWgo4bdn zmv>NbNN8AiL}XHON@`kqMnPdwaY<=ec|&7Ub4zPmdtd*+;Lz~M=-B+i;?nZU>e}A^ z!Qs*I$>-Cn>zmuV`-jJ`-<~j`EW^MdARrvjsx#p8Ib+|HJYhYXEep_+c<%F#&G?wN0~Y!fQQBmGEh1)M@*4k*_DYPTgal=3dmv z+<{ZFKO@COl`|yU1cemG%yuxmFcs_2xGeqlL+|avIq7}jE7K1r%cdR-@92tCr2xlI z*#+H=L1$_|iOk#iq+=BI#5R^MOMi$QWyC?MHeZRjps8aH z2=}<)JG?PpTCnenal)+%eEatuW%oideqf}Pf+wC?^+-~@H9qOHg4Yp<3U9X6zJGL4 z_@}xv`~6qZe*o6NuGEg=C!3^|BBx?~B2OPqW)%ut9g}++gJQS+WTyNk1w8w=anv7m zh28Hm=#l9DZp1vc^vPycSRMHWK3UT%S)U9G4xyxO#`_QqnBjl85Gk>~tRnx8^Ip20 zX^q}h6WYkY*2bW=l5Mry7yrReW{7Wwn-ptsELxcK$viDaAyU)(?t+v5WICwbSNk-> z5C`t#KO%?Tz8RP^5F{l1{Zz!_k$cSK0_~7^rt#k;SEDU`a&Gdd4#a$1crX1?veV=; zlHOIaolgeE08N(v94gS`jTt}X*=;?s2l`(zZsVJ8haKed^8FcH?PFGDeX!62KmHa6 z+us%2)(J&-KY1&$Mv@5p`n#FwtTD3%8hCLYJg>*z6et!e_2tOX=aRhFX!KZ$^NV~_ zAeq4@W9v~!f&?8DAKFUPWQM-J$ek4xc=tDnlD}oVEG19xs&BnXTqm&-XJz>7>BGkN zjDH(PW*+d@+cS;r^p2vl?Lt%+g(M=2&|#7(eKN}x00s~}x9b-RzvG8@vG(V5v0Km% zeDyc+S?Ks|Pw-m^a{ka=@cD&{QZXHt3XWR{4qV7tqo#$#`Z|M4d0s&{o^U^vSB+F` z6ssBD!{7q!7}WG!8(vY}7?0KNiJko#b{I_YbXtz=f#zV603ycd{5r8u@6MvHW|JBb-0)JG1sSywSgHyQ zT4~H8LPZ6L1GX5{*G@cfxUbd*fIEhiqAGm|>L*bZM_AjMn3NTr8~~65POoN zj@N3moog(-w!99qt0RsvYor6aExx!D6%|S_`sE(O7WqZ0*ZS*%If$AOVOem>g3wuo z^FU3w#``nLcl^R8LrA|08+T);sKRKYueR5ow>B_a&<-?HR?j7I-^IqluA%JtP3#O z4iEx*1?Yk@6QZlc)SsYQBRCeJki;E2KU^-Xl|RhpVnK`n=m}=gFb_?=ChtAG7`Gs{JYi(Qj$tRI^6!MiyZVz5*QU_#(GLh%Mi*2~b2q%u7O z5Sosit7ffm{JOquA!`M*6Z^iI6JX}&-xEngcRTx4USn5Pxts${LPXV^+oBUmH1deR zjsVVQ`^JPxu<2t2_J$bC_(r2O;tp~+TnC)cG>|D$K~%FrP)ItKSO@81`=InXWPg>D-rhB_IPqU!N|@h!I=D-#-FqfWRXA>=z@{?KC7OKK$IkwrRvo~7@` zcCG&?*pGkDc+e~ut*nMNzIv}YlK9sk-W)wm>PKOS<-tMGDp-le$uohsG~kk^#hTbW zqdc8ZUEiQ}NOq7=K@@~f_m^%He4feU7vO)?2*~lX!clwU{drZ>{-#X@wRNs^o0cMn zul+EjUqi;|GlNL6fq^o$!g+b87_R7|mW8qOj|XUYhq?+oZ4__qEI7u;)@{kSB5j|L z&L6lO8gu5Vm>?tpvHM)zgA+?@I1F!3P-sw^sA&ClJu=FPp6pzl{0+bbl=38gA!ciZ z6TjvTn!IT2eF>m+2?lMn4`hFEmACT#9umckJ$ zX-@;4bMBwzf%oZIsI|{(RO25#9JJ6rzLI!uxpws66bK*>?I-j5A%c3d_H?SNex%>J zFUNWqRJ$qN{IWg--hJ(7wZ}z%dE}XRQQZ=2oEc)AmeSGMF%e+KNv>q7YFn$WbGhYr`h{;zOM7;y zj8lqc+PtzJAy!pVXVDmjoWwEuY8fYSGMBLt&(krSE3JSM~{4THGFSw4ru1w=tgn2;VHxRIH^X>HZG60H;O*HS!TC@HcNJiB$ zvupj(&Y`+2{S_n9WyJnC=pH6H{-+h-5BTrcIJsGPy*_7co!2W@;A%hhwmr@sG+ZS! zM|PC@5Ad(Pa!DODs?E*!clifaIiadZ^aEa;L$u%hDyzMQa{~Wa6x)#h|=>>^6n#*WB%YS#+Xgvy*4S3BO1YNVfV%*>-1OPyRI0 zxYe$^5$}iqM9GZWqGlchKdgSuD-`oNeHeOw&fUHTx48epS50Bl{8_Nt(XX$i*xVAK z21qWTn9liGjz#m(iuP)BRC^44jI^6(fcCgI;6^PuX1}FyW(KCjDRo;#4q8p?_+?4q+zG$D z`3A#5LaJhBh;V|ct09iBgZ~o-#-9fOhI}$pE=R|ovi;Z5@r4ZX}>ZZ5L#A z$nCcj`{OGrQ|HisK{e#yPw*_Lq=!q{uYHJfS1z8neSG_tXkF3g6_Al}l{h^Rd9t4p z(gSBuHe%?2#N!BF(kY%zqe9j1|i78-=Z&*PL8gBuK2>hi8X~FS3q9f9;ghw zlAV+q`w$ivWw8J?1cp|70tr~QUd}({sYW}n?Bx6S=qHDd63NyjCt!(E$dXpD^=h_D z`&7uZ`x}fhW+SFj*+?WO@>AOrkfEk7>&b8FR8<|A-79ZxvaGKa66LG&xdLs|6-2ew zd>qUysv~NZG?R-#iv(E4*-pFDEMC+vCuTcKt7myTEkfm65M?;ZnK~wENbd(6Rq8yc zLs%XXDy_#f&6DT{@9V{=0^7Mfs6NYmXW2UglkscD*C`H_P$N+9WN$2P6y-AN8lmwv zzneye456Jnm9l$af5cGknaz$~>O*!j_XAU*wvr>D4)_wsSbdb;a7T=bSrcQ{x|Rhl z36&!1pjQNB<(R1?5U$IA1~p~xx7pH@VOH|Rp&6q)0HS?)CJJvomP6d|49pxH7nKSh0J>tQ{LAm(RRg9H%9 z$!4x|_r1hjaBo0!#Ts^xoKeiKBZ6)?Jc@)nwi!6UqGpaH}MrwoIRtXw}=!m%ZfpG=7ef?^Kf46vj zYr{%r9Cv-gU_*Y~%|@270A0r>AZd{tT0b+W zU;sbb?3Mb;>JajR=g^E$j>j||c>#l=JB5Z6ocLA2dNKztB4^sd;=zyrgFDnS(KpB} zh2+N?>Y~JJB5sw?2`5Vx(6l!h62vRsR1HOENT9vc(Bnbik>+#U%QW*~$QZWpepGRB zaCD$Ft;AkRZ}5jvV8&^fI$Q%sh5ZFzk zUq0F`XCbgmn3h>Dypedd&~`{kiIbuYqwMI(C6mv3X|ylRz0Ahm)sQ2ncJJmE=U)gw zq*vEAz+EuNB*k^8Pc%VyQE;Lyu<<`T6yrbKnWWwFL%)@=f>2|y)IpMDHS6sunnbU# zGc+frOZH<8()MO=<%nVv*|n+q%K_z?*cc5f56ss_`k5g*=Y=uq4_K=R^&Q_0E+=sd zdQEXl6g%2@=TEmKT;q9yMu-fjqLLTgoZ@?1uV&V*H_2G^rAJ16>)MjX%d^tu;&}OX zNG{63bfFl8CCo>TsaS@}X5km{0~zfhGAPr5m7x&V$y)mvQXC&DA^%m}MY^p~9Icub z)GZxiTW;uT!$d{Zdd&WKuUDvD?2B~9^X#!rOt0ithOHwAHA)BKbb!hn+q-3jdRvD0 zLh`!j2LVw8K34SoAzqIT>m_2V0exQ9=EzrO=M3oL)Sq#s;Ts!qhQ+7?`lP2NL;B zE+s_noo?4h%Gt5Z;U$0~sZLtE)w1m0(u3mWjtFrJ9At-*3@4cJS>be~l-w?C{A6Re;-s&MWg%4A4$A(Ck z`Dv{C+)=W;A_)&Lm1zvGM+cZnk5Ie7MV8F*Y0nH7u~D?A@HVtXm`G7s!Xe)W5Nv0g z8G$7;d=$PnAtcurNAw*WA)|&7kYo%bN~=$FeCcbC{mwnBJ#?vVUDH7eO0YQB0kmRP zb9$gV-Y&Lm!;SIf*~FgSN=MM9N=YXg4O=h`GoupXif&YDyL*K=_xky*;A5d>JGKiP z38Y)bTlDn%m$ql+22Dz<8}?|0Ms|r4lxf7tlE>^dj6GT^4<(%H;vGwHpC@oqZ+1EI zIqu_5v0j*l$*lJ}j>F6ziP0`nBB}+H8&m+73;GSm7YL=Rf4kF(29Nme%{FAGnjt!; zWzP6?X&_DY?M*O~ti8RiT1xwPHwLU zpwYDk;_(T*CZJkAGwL7Q44@fop=yW9$|fIH&zDchQi z502n$>NRaOi9x)<;-Ru|h9%I{1=&lcRaO%)H>8tOu7KM$MO`-QC5Q1DYzo8<-8>-s z&cc0H{UVa}&7gx=};$pdd`aJekV0jH*rDC1wYvJH<8TyROd0gRu&y-T3*EN?jsNJk|(}d?2R+HATAjf*CK+>NlESo}$Tx@FYse@YrpXCbA4=uda3JHxn547VNueAy$z+uf*#m@)8O@f}h$fz66(he2CN5&RQ z3G~wC2T1fqv0jMh_qq^_g#xKwAp>d^4?p4riFzKdJw(t^j=8!9Bg!iI z4hg|dwXIL4PgQYmQ!`ehN^6X^5oV{Stq{pFlFVw=L83c}xA-2z2L3W;9wqsJ`&wJY z3k^6e;wceeTvA!w%Y&D#bV9e0IOTKjQ$zFKv}-3(5u(;8+K#bb2+1#)aRU0M4Z-DO zr0fy^=Z@ZK)(fI(ovq${yNgE1ojT9BoJ)8z;ly{E*pk?0>wMSpy$-11o}36gGOgnFz`L|l4NFxmTU<7mf`Pph z9E`}DRuv#ZBc^ZkE7$8ys7TOlY2YGhz@Ad_adQKky|OfV89y+d%2cUMjj;m1NR}L{ zftS>&Yl*dPAPMOc3Nc!ubj;m3<}oYY$38iX7?MoIEAJ0;k@bJFZEBk}4s3ZXqxd8b z4N?ac!qn)bv7@j8uRAd|gc~1XULh>-^7Huf-!5q_p#^ynZ7}?3U?Z=M2^Z=cIeR;S zmySE%oz|Sf#cjVPEn6Z-CL@?eA%Tv(s4S!^d_VY_9w$aUztNeCp2kg<8ZPEX)pD5s??~>M-^SM3bsMU|$HL8LFOhg5UZ)yrS=Mnv8T~(}|j5_JK+%M0Wk4+H` zjVT}E&uDL(4vp>-O9E3Q5RP|Bcy~x2l&Q;K#q3}SbAMCwv$lzuMYktz$U&VPZplK< zkrVIE&fulU*0(DES?v=`fI^sY9(GL$Q|NMK>TRUwM8GLMy_HcM>+{J>piYWEdWUz?ZHF_JZDaWIfvS}?cHRK1C@ zFkHX{XJb>3!fUWLaK!R1nh>+^f*`6TJKUk4f)ojNW={+!v&vc1<>9S1>JI${glXIE z+~Zo#Y%#D{$n;y+__q+nc@;aNgOizd33dyZ^ww~N*cxNQ6~dz%I5%`ULmsSe5ae*h zv?*la+&w)^+sVGm^gF@ZozQfW)%RE#c=mXDeF1$i0+tzK$eHY0mAZWYgE%g|9oB6Wdu)7*0G=)IPgJt(1V#q!oW>> zXi**K$w3XHAJo=vmIlPajDxg2Fi*BM(fr&ASq|$~QN$Zc-TWXL1dmSF7cR~E$Q zCi+zjT(#=6Z4m>}T+uIqOl{gTjBm%O+0&N9f|vueQT3aJZXAL9{7UTkDd?JbMzEsP zK8so58xqX!BR6S#^O-#8Q^Qte+3LzSZNiP;ojhn04RI6$iBSq$!Ez1;+S};n$DRnW zey2E12nye3b>r#--DNpN=?Hdm7vMt~QAm)8hr4t$QK+q=BM#51LPk4dnlBS@Yl(H> z6``9tbjD&Rp;&mZ3{=qcN(iKvcxJ-%RoJkbzeWCP8|h(8D4lH{Diod{=RThbA}R`? zK-u;e{c3HJz@TA-MaYxx+)1bo>Q=RhlAh*nux?aib|U^#I?5?W*>0B!&xHU{%wDbb zal;ejYk=rUu*P=9Uzk|>a$BU!?_BKd{Nj!7_zFiqU(Se58G`g~2Pyx9Wgx~FVq;7e zfUC{Z>-3Z4pc7uKc6!u?N{x_hf+$$X!te(G9kq0JnmJ*Wanx~5>^KR`f4~W^6D}Oq zWcWk9<4d(>(MpITTUGUWb&i<5TQsYgh0A5T}u$jcYyj6Kb-A>xfx?_o@OrHyjO7Qh9d#pHYG=KL5t3_Dw(5fK2e z18~0BG-wCPw9ejajaFi;bN3SD%qsXta`mp2R<~z#o(fxN57lA>#m50(^veiV6q@vy zG!Tc6?DM_G`0FtrKo?|(2-rC=hx_0i$sH401|ml!e~FBQ{aK9n4b zA7z*9-V+lEwsdy~;CQv%L=O|@ii~)%`4df{m~1CU=m{@Xlq^!1LE&ovd& zE^fd-cHUfDqt=-$AK5NG#Yv=nh080BB0V`eQ?YeE$Ec(`DLycrT<1~M3k=+5^$U^y zxZ4?<7LHpYQ`zqfLS|+!P@S8#| zoCPG>=L6xl7j3z}YZ!`u;CPrEdZ%##_K_1*I_9PdE3c~LBf}iAT?IAQ+Y7rN2p@Io zQZJDQ$=#g9_KLDjQxtmxe+vhn_o6)A8P?%psw%-2<&Ar`3O|ABGjr!t3WD| z7vX|48WY7g^_!Qr%*ctpM=%b*UA?jQDr*| z3^^GN_;Y%|^nqELTsrluU2=pL<2W$oc}VikT{<1Fu%#2v@pY-*VX=#H*nT=`_OL|%0POSzm8UhG3sCrM#xP*Cc-;MVvV^9CMysgN3L-(PnH+# zQs1KPhuU^g;#s>H2N_(N)G)v~ZT2vBGhwj!5^M^|WUCTM1OlkD=&MV)fm2c*ZSJUI zj6w$cK}ic`1jnC>-6O0zPs5~id->Z$*Hz_~sIwCLI|4fxHA|bfsBP7uTOzl@m#G&4 z^(>2#4!RQ@tv760)Ez50)();?B5oz65GqW zG{kt$k7C8B=R!Ir8l+_{&XJi3tl)$Ksu7#o>RRWj&|NkwR(r5*Zn$Kf-BNX44ioMm zrsF1Nw0}h@l8~b}D;1?%nlX1c$n7VS=>IUJWmb3b;4RKSr$#bvIvWyk9$&j}P=1iz zAAFTV^eB7s4eqlU1l^x;ou|6Eo9EHC-YnJqhEdl(&0{%XY{4cMoyKr@^+gkRC3{cr z=nii7r^Sq8dFd+^7a=L+7VG}*%FNd*+2+gMirgEO7T9-%Ni;aCU7S&d2t&X8v0qH?t{x>O@;=6 z5X;LN)cWrj6P}I?56vFhY+pE1P{%7h0i#!o4&|gcDeY?efw1j@hD212tNL=@9qJbb zGG&xD^3KR+dQ~qx%j2zeAATl-3(kvDz)7^VCKa7u_#nxG{fDI;+PSet`7ue8MXYyr z6l;5v@C|{mxj;15veBtaK>2Rbo~^BZsYz>QLvV}(j#_GR3RU^JzcPU8-P6UV&h8nq zGVYXwggN~RLn<&J(i*c+$$BwWHF@gACrudh58@};uik?>qs+4&l*-}^#pgKupvwot zlm5C#b@qmlOUa;B;J-5*NXeJojW_^nsY(=tv5*^kA`2%Ug`R=$tUG4Me#S7*HNO>D zW>yI5A0GuNa#ud#-q~4#g?R6V>J5-|@m3uN56SIE363d0=2OiHzL7J~H(;#flc$q# zsHv49tzi8HD>^C12lBwAzG8iFw)tYyT*i-tMBK*UEk4SIg_COC9vK@$%xzz2>xe1S zm{_>wqL?E0+M(J0sIw$%Ve?q>5+enZF$W5p31@Po*{8X_}+i zdn=j)Mf5t*;s_uMi{J0G{7+>qL7nl#eXoV#BqJ(n;>4+-{51(HE6G}7tu!GghD2w~ zihwXlakU+!iVDdDcpLYYasMOW;9`4HH<3Bod1~M`L9T{3!F7GgI*E7+$a2h96xdUl zV8mMhF(|HjskV~>0c&6sYj1@b`HivG!QlZPUKf^|z zbb2p~u?mv8_?0XHbGcfRGcl4=??JwgY~IJEg2h$VF=4n6QO|>=*Zy|k1W3`C%-h`a{PuIA)U*C*^3mij4L_Xiicr;=NuxlZx!JolG`#_h?zR)2Y;iCW%w4OB4aHcRYJ%rHo5Fc#O0?#O^Z$Q5--4;Yc$Hu6fEhu|zXBi)10oBB zy`XWFKH}3wMA3qW<>d2ZoOL~4m+VvJ1IQW8hO=g$GWpmaL_l zkE{X^QAQ3%Cne`NbUSD^D^+;+tMICkXa&GeZ)8ud+!MMd{TE}1b;6g^IHu%wX*-IW z8s<2#X0Kc8ZBASKkDa)iKf5M+k7&zD6l(1q-^_BHiudA5pRb2rC`RAR704F*Gt=)K z3D?o1F|i5sj!@Q2WQY)(n79e@BjbD_!9qfUDL-zlZSGtlWcE}ZKro}0PHeXHe=x)<>Y-_;2&0CjoU6NK0yjPy|N^UONZHg-0}+v^s@57<{a z7w!`dId!*R+ATfs7*)i9Ukly)`38BPSsg>?j}h zGs{hpRhNl~WM>F0K?+`0S)8Qt=MADt)wDV)l^<udj*!4?m z3d5?FR1%i5>Pr}5Dx@Gk+R92K@}pf9>YPYafmV%Cy8KjeLEK8UqH+01xbbdj5|;8p z^dC4>f$2zYWVhZJtU+OoeX;?v4?}k>jA=fB-=yzYkQ7*66z(<~hK!Qi9uflra!7J8 zmFMy63Omp&RBw?d=BnX1W5x<&F@rRdPo0*B$TDKZt7H$#7n+*p(QIODnJp!k5(Vt8 z68&LzaCI4$%@~L4rRhM@ZqfpXwxd23U(Y{t^DN@j=uQ=h&bKLC(&+`pK;tfN+{)bM zOB$VjJ|3jbS<@eWzZ_*NoPqrucm0d$UWqmR#jCwfnlrGcniZtP`P82b%bZ9=rxn{l`Gqyym-L4jV~L7Wihi71{@Q>$tZf- zXyI*|h3zv(n}k&~@t{YXDYu9X#0xT_9q9foc22dvVbn3JLxAHdkVJ=9o*qvn&T53K z=SpEDC=8hjvGX~^M)&hK$YHxu1VS?V89(qxWaV?FfM9vFaw$W{vtO%(fwTGS*V2Zz z$A0auHSi7XYZfg%G8ST%eh6P&MQOr5{CBDek1N!=jA=>Okt6ac z_VNit=&xoDBfF&nvvbi=$%N^}V#Li2&o&)LO!dFkrTVGC5H8*Zz%j+5cG3m$ zbYNNrC9N7u*M>TVHj;kh!LUG?1*3I!K@;Pt8P69C@zFTP4JuFm&DLA(eXkrHEy@_zJaR&T|FL{7MPB0Zr&6+AS3@w+`>WdB`wy zf;qho>!vTdsE39EaWf5(eJx1V2U8iJo)cIl3J8_L-Y(oB)otnG;98w?!U(l0J831X z>rX&8pWY`p_uttqHzX{+9?l93) zc~Wg{STDwZE#wnH<{9K|I_EE3YGBRag|7UR=f)91fnabghn9nx@h)lBy%}%hb5G{*CI;g`gJfMx2*<@SsMqm6!dN+yn_LI{$rt;b52C8z9b+n6B_@D%S;4f4twc4U~cTR!<`;gc=v_SD=uh%VzPdl^A9!rS?sXB!w8M0~i z0F2`-P;iFwYx-ds{TS%ZRU_Y99OD3o!=Z&Y^%ZGfs%+EFAcO^g{(-D-rp{hdE}#ep zytvlY6>JB1<$+daxs3vf5jL1CtjW!iWt!N?p32!02;7Z;M7&pie%fDfAk9`C$`%x}?LV;SBb zeP8o9jD*`jC`N|mGgZ=<+#NcQwCZ@GV;vNEdMPk;zE`>`U#CStz7x5Q0NV5C>W^6* zeV@PcY0-*?)Gs3-K_Et+H)$AF-dnNVgV68!M=`xkXf%gKya}SKaqvqa$iRUakCqsG zAiG#EQfNkoC$@57v8;TfT?xE&@GImZ4O%FiB+nN&k2$%3ar)isqi-&WV?@fhY2!45 zYM1!DU@QqptARg%6ijNcEXo`^>Zpl2)pZJT?uz+?Vzx%cg+%9*;``o{YJdjrbn26FS*iOH}Y* zaD{Vz{x8zrI;yR;`x*`IQrrv0U5XYd6b3QGZH@@$Vd+!+c57>L`ovnGY)_T^Ob1tDtPQ-}f>%bx1j!(|J^1oqSL7YCv z`bjlOfLL)&oQ+{lgMO5r4dsr_2(>b~Kg$9fb?Kfr#X%IA|1Lu*l}UwEN`YA7!v~U3 z43d957~tOWf53i1^Sh{8hPCqJe*isUT**U(w2-?>j$b~6$`E!Qs zo$8*}TRaT}k(D{cP+2bfjrB?>fl}J@JkeDp-u}2&I~FGU*O9&W*K^JO>&O5;PGgi^ zxqNV2b!tM@i-SqR$Bxd9mKo7gd@eL%Kd%IoZIQ8pi!hsRg!JOdx4eAWu~>8- z+|^#3j<%s#IPeYDVuxl)w~J31He^t}z6j);KPqyj2G7r~8jrk}W7Ej&tyVPoN@>#% zobC;3W|z%jwqP49&QgSCAZr*U_Yq{x%yoAuy~#JzR7hZW6F;JFt9*G`q#H@`_8K2h z63esy((}#Nr=Z*&ZAARcf@`2S5kxm&$3YY;0Z|n2&c$DOFAH zi~OBtLa*T}vzEO~4%Mu<*_u_XPGve9!hh_Cm%S<%=vnvLMhgBRw7L0wo^6cQPe|r6 z>a~HrJ_6`E7N*21yW>o8sF!UGj5%&{;}De=dMT6soW;WJ3|~JHE;82((L11f0k>&? zifp{B9HzzGlxF}?xvxJZVl|tGBY>`w8RJa{2|3EKXi38-B6RMP)ZWP><|1WthAot$ zTe9tsh*5}R~f*B z+K!K_33%lWNA^3X@-zh-rMZNLh=`WOTTZN5w;P2H7e^_%$N+h z)~@j>{tyHSQLSs8_MZV(lANbOCtDfbzHB!{$7|ap%iU4oDk+9ui04$F|Rzw;+GC=dU)~+v+0F2i3Yh#3Wq(&SWZ`n z$f;?-|Ku&F-9+VbI1VG!ek$Uv;tSDu={~YWa31SjrKG|=!%&|x2xDSbXswTyoLT}v z=&q-Zm|3F0VN3!s&G*OWSuzlzl&sKhbDYtKyw&b_O2nRD9_L0f;T2LW>}boBav(ll z?e7A4Pq+D(@e)CPl4F|5CR4&5pQeEJ^+k`kIDE^yt7^2VL$AhzRSO9c?F%nyYR)<^ zPM(tFU`xGYS9VEX<|F$2Q3eDr^{a8jt%ti|k+N0ukU`S%3!vY&2Z>nOmgEo=XWelq zy^(-D?}Y``3-iXjQTvdt_YLuHVD-(KI4H^yzCQQl@RGWid7gDo%$>mFJMILHL)`j~ zBQsk%opdcT7KBTvF@qKc`XkA+YF=MGV}LxocHMhR#8DTKb{nO~&Es0uXauY&N_}fE z9rh8E%E*p@LS)ZZ^Ql0 zuXZE03qix%vP-hvgksHiBYVTc6M{@}Jg)PMXjHUO5?!iyyFf}qMf|o&DpWBYudz79 zj~I7s0jg!!ja5tfZlRNlO|S-iMq+aU2i(?fwUD($=e;`}L=5xfh=yI6n}RshOk#8S zOY8MqKX&aIC6kB<79SP{a6~t*q{^2V!CeiNbsDn84CL-Ssz8vrn>E=;T3VvK+eg(x-p)78)qXuj|4KxC*~5E_cmcB2vG zqgk}S3Up&!8fP$9Cd-zFi#Rv{2u2I&byB=i^GUn8CaHDpNR;HTaw7b8Crpgp ze=yu?JUcgJ57B4$9Fd|E|6(!o`t>n)-Ezz`Z6lMqnkqww1X6^Zh)F#`$B=3%!#i;kQ5||}%pT=O_Pov4P$5`hf7SzzyA2ELe(9|<5*`4wx zLZGI{1Q@7F4-}UT3m9=?l>UO-LJ_)5~pAw^BXxPvKT%P#_-X!~m6 zyktpegl&-`N`O*Z0{!r90JorR)k+d5yw9Z#El~2*R=cSvz~+^|C(@Xv6(Mu>Q9u$F zA(b8jC7|Sc06E@pGGw?%S&~>A%v1epe z=lj2Mp;3b}m7alhu?-!mQC|VH-_Vu85KJW`2pEaJUHZeTbfo`@+0`8%0ua)OBq**9 zj>?CknA05^yO(iPqyicJx^`Z6&;NO7Mf%e5(J3BrI z`7)#v!!!Re86`+acj}Bt z1;jhT1-NTf+Cz&rPSCqt$Yb;NE$WUe{QyWBU{H6etOonaQVaWX=?bdsjstx4B8kH?HS(B~maEWU%y|bNg6_$M9Gw8H{@f~=m>EY&}N{#9hW;}7XC@FL8 zGo7Th>yYiPoZ?#rinvc)Rg*$$myGm3skhcaaF@T@!p2AvXt_svtleYc+6PK36o-g- zgXv3eTZy~j31R}e#6Q`|VU;>xEF(Sy#SPa;vM=&)D>+4>*KMJ+1?z1We3TtDx~Ma7 zcP1l#vs~qpPS=u^peN2_ajx!1I#4kHG@)#U4sSoSc+WMafz|AJyx3-9sPx9dap2jz zpHucz>s;qdfpQpYV6H0?Et$XO4dI3H)EK>uIL`)0D5fN@1hCjp*xFIhQ3>U!F;hYA z&5I-MI9BoDnm=#mLIGCpXrV^bgUHg85#YaZ=KsqIx`m0^rpx)fXqm6~Nd8kr<`dDx zAu#o~w?P+`7F8yb3%M_K&R%^qF_ii+{PP8Wr6JK8(7k;qI`HN~WJMQJUi#iL6>=0p z3!Ub;`FV>bZ$i{HH~u#0vQkNJ_R-p?ul+h~P8LU85F8j!gh=lX%aVE-Tgi zw5bYzWJ7%|^rIoK+mJp=iu8>^ki5cJqnPNVyId+ECSE0-#1Mgze6TNS`v8;n3EA}p z-OAQC&N(etgmB#|llbcJxKeX~63T#v;=npkvD|Zmo&eIKckgY*>1H6AwwIgxjcZA{ zEBgHk&mPJbK={Px9O`X29=D#zz(R?bX@O|1owj#w)b^LLh|eLE>+ae$v6;pm^5Iw= zft`w z(R!@IuP&PTVRM>QiUB6vAv*;8xTE{P?yn_CBW!rA!S3z-V5+cu;-36Gw^o8Km%L95 zH;|>MJ#E7CT98N0vsolT%wtdy|2H!wH=Tqk9e^H=EzY?2q|fx6*2jZq_d^UnL`Gup za&Yk#;#Tp-)B?jcrbIl60i`brZmP@)Qf7fcHB>{xg~TGdomi6;Nk;>osCjIyKQ|a4 z&jtatTy$w|$P?7Wa2N=7`}8v@GsTS0V)4Sd3AYbutJbPw`9kw8pAYZd5R8R#=T|Fn z^4i)|B>vyBUP@GsW|kZl^}_pJqjA6{{jcm>xwYf*1U~@ydVCY>H@XRIju&s#aEGT6 zObZq#UT5!Ld5(TY6@qH`ED@VQo%f7;j)}Q>OUhdEzwR|@*Im#?p-9!l9ry=QbwErK zacom9jjZu=PM$!~{+-IL0C=g`0fQf;#5ejZwP^aD_t(IQcg?7#%1V5a{BEymjFR<_4`eaU~g%}2XoE|uDj2v(`ROYXw9UYC_qu{CuyIhzHDwx4_1+)?h7n3*G z;h!=ANIOumh(fP~C2uy)p&XXG@@w6SShWB3X(SgZXvQ&x9PTXQ<4793%;!M;4m~ z`z>y5l0O6=A`5GW8bzx7vVSkNH?H`x(B`x%j=o^-(NcPE{G7=X$sLL~=z)VYZzF~k z7sy5%#e=e%!AVqvbAEFB4;AO-O)bwXfcV4Rg^MWuU}Au9MYq7jXLJ|(Z?p}^rAC~l zVWstRz+iC3=@Z@2{yN63u)GDwqyPdNojfza6xuv6(TI_#D3~+h@$0y@Qp}d%uINvP zOiAG;7bcDpOHvq4kN6(#gr{;DFGNFlNT+@^*^y6nOMGv_JCB=uqQ6dE-LE2gy&+#` z>Jr63%%9WO&mJo3L}@_jxlR_=V-C&p!k}mUaHmp&T1)JI)qI&`^bu@H)c)&lfZMmx zl24pD>pmpIrUV-B4~?yOa6g{@(5Iov36_MWm(^x}7<5Laq`(aNSnzl2^$)FDFAita z((}l5sFgB{PD>=82>?4{1;yFd&Qw~#lOp&tELnV{<9P?6edXIEKJIc`32 z_*8`M6=gbEhPE+kKZM|?6j_;WNfj#gy4<=8KUMHfmU`#3(_g7lF(rx_7+C~|Qh;3% zUwzS2|KiJ8nPrwalCh*=g9Nf&FD#J|m3)y|F5}!)C5rq>eW-74*_L4S8#Ix;#wNA3 zfmo!zW1qR_d$ec?2Hb_ExR{c3Z9ESf0Q!%+;VD*OTzw@+m7~3e+_0L4H))b}m!4o< z)&%Ct!3)sDjbZ-%3SZ4C8?rPWdC>=^86U;wBEnY0taQ%_4(7Cw@!bX=TfIWg=J_2d z+rP`W+%dc-ogaf;(@BARz!inU#7yY4)^W}i@( z9*{y(Amwy}5k7oN{p~~kBhFG!29gK2uinh-DL+a7w(fUu_)yi;r_AsB4vFsa_B$$f zoGSE9xJ;S-_byoyc!A>UIunypjMx$Z!E1NZ?LQ{L) z0WSm^0N;H>tFC2(VxrVpHOSsKmUHBg16{|AqSFxFX!DwOQL*iZU#=dRjQEceZV zeFz=#X4cl^z8iQ*!Ujjgz(|a~&A09*t+s7oKYGD3HI%DK}Y(9p7 zBPu5AYB?tFj@_twzs!flZ{e%zSXQXHPg1;6mhzyuQ^i&K@O+D=A;Z=L3WVG!?HG*d1xe`<_DL!kBL}?6*fWZ zc3tz}97@v8o_=G{Inq!~->3a)CxmW&H?LTAOdD z)Yb6Wc&|Ch<#Kbt%;+7f7R*`XQ>6x%oAu0M?J;fS!Ykbsp!njZqyY=**qCWRr`pj3 zKYokRw4!kJMcwlXoA#2cT*oN*uhNx?;#8&09S36lmXHdw_v`1uS(X^6`P8DJaf~Jh6ft$Q#Nqfvn3s;SgxkyGyKYr+_Do7RXINJGFeG)E z;W=k@Ku+#6 zw$CIvASz0gt|$nR70^k!qUB}{v}?^$UZ{_`@0lF;D;&=ReKZJ7Mavy$*{HG8=~|U- z@fkn#NRT@|WqVU0k-e##zpu~o=u&spou1RNL^yq3jMtgB$2opoxW2mb85*pAFl&)E z&9+aLq8&}c+}T4f`S`=G!iU|wQ8wS_v@a4!wCZ5S(nik9x6;ut?$cnUnTM1ix+ z#~76ZfsHzQR|cB)X&Q=Mg~yykd97zsBXma=&nrJrFMEcDr0bdlCC*J1yEYQ0BbpvF z9iK_EwyQX1I;<(a8ka?r5+_3m*o6709-|b;<`}QzSu_t?4y`@yy3cNJU+62AHaFQc z+caPA5$1Laaw}4db7s)6t)fEHOHh$O7W5RlN*gx@)78duDjX6BI5LwEojpkkHOT<= zvrM$mP+&!fMo?im_bEuSf`S&xwe%J0yq!GzN!jl{8C6N=G@<- z$t{pvI>N6%IUg5L+i|B;)EF|{(BTLSS9+j{xgG+ff5dlBrzUobul2KHJ?GX9v*1;H=zC;LO|SPkYrwkDOA_J za`L3r>QDk6_rJ|e*o`mr31$U$u|p3Cv5f5B*&V4!?Yf8=X-^Y786+PaK2T zlc1iRO@gteii)-f9x+|{LB@%t_Y0&(BCV3+&ABjGYG%!z6 z!zb~#^`+*TyeHG?IGGmAZ1ij&qfR>%|I+H|4v(LB#^am8Au=n_K1l_jy5g4*S&vCB zNDv^`w?b(}F$v)(4*yy#7js3eRQKl8v-#RTRVPj_wUQk8ys1-H(0!JU2+!lzNHk?O z#X|CxZwjmUysm)PsJ{nnTlu9QQYAn`@D=BJ>|RM=R$I=bj0>xvZCJGeWmaQ9bSm|6gG$Cvh?8ysOgSOKN1l?%8YZ7y?#!N{+qD9L)7VQo6u3cWaj! zKuB=sY`hG|?O!}!Q#va_4X75UdP7?!SLj}vXCJ3t8>fW(osL>uZw#2r8PKMbnPI@C zUz+rP#{J~dHBHkCtx$8c>Fo9?ZhPO77XzLujNYC`zK%%8bf*a7 zZ8Uo1;H}xqT53s~;%&38#;pZjalNHJ~tRom2xyb{_ANY)w$gr?PVdWrr3(%iv1sjKd_l$j%SmoxJ;A++VRWc7O5 zjDX&ax0m>F#~?OablYIa74QwzFuw%5DLdQGzgVktNI0~rWp*=3fHnKWcA?sh+Fpmp z8di6?H*&m)vjbfyWb4Lzn*DdAXh`Ez*{+!}j!C_BfYsMkH4Xi(8)0v%_-barDyytw zic5b(Pq-m0e<%NU{k@==#Z~XO1_m{}OTi~1D&e0>q7%xd^dqOrDw3<1{oFHD7}%dW zz>qAT9c8>7H2?BlJ+1nI; zVow09TNGnVbt)eJS196I!$hOvnWE$25jh`|!KAGJ1-pg0a!?5@?nh6*V8gsN{ zRmz%{2`j`RO0=p0!(6EGE&bL)$Y&Uc`ojH!_b_4Sn%2b5EMQL;8wxg}9@*Nf`sx`6 zas44}s0VC!W@})L4K6tgW>xH^lXChCF5Vr1_)^`ZEqBtO*%!p0eY}5Oe^qyvVQH|i zg+@nJGv_oon`x2tp1Cr@8QbN;-*?JQ8Or;rzr*RkJUOzQxopeDb!$2zny|x{ ztRXUl+fQSb$yDTobPHl+2C(k zym(C@hCi1$X1UGBWR=%QL<6hb_1Nsl+K?rgT999R%$<4EQ|Xf)&!hlJUCYKi@f7OM zu+!Pn`P^g44{K?kXDM1v=3Nles%#Xc_RY}`*Ik< zx32D03ytRW&In(g+qOZfgTI@JZ*Kv6sNG!2-Roj38$9vDF3^uaKHkL*Gz#NkLc#_% zZ1&J4GRqPlX!y!hk;g0^B7`nm#xI4GM|ZH?#F(!=-6}vV`>6Jgl>v&F@ix=S^07}J zXs&`=D&v#Nc3v)aQgd*V*m*Ls>`&i7W`bnrr1 zbXrNXPp2(QS*ITi#rVMuc)V2iFA8xp7Sl$bLc9=u9B31)B|Z~>17H+)(uIx*{br^$ z6AN>L>~Gh%nH5=xaM&`7I}Nm)G8at)+&(pi?1{qMv{S*3G}9+#{(^u#M`VdUL~B!{ zR8P~%tj9LE_AD?m`Ftxwz&B0kloOo+mB1@eCzUr1!awHh>=S7!cWEl1Jwfq`Z~VzB zKxNPgt^KuupQmh!xtWE$7jI8X+@wnHx@1_jFL?F6*Jm>`vUgxL$6B+~V9q_f=`rHj>T(#p9&CSPjDCs>|pxL@(uhcCHQ;I-n#E} zmPpKupG|>2IZEBA;hCY>GUa&QmHO@gM1bslvh<(5323g2HQdMtdS-3j4#u(QF*!*V zB^d*hKPM6d_3RZ8_MP-8 zX4yE|wq_rIVtF%0mb36 z^;y4NYySLKOxzsMRQMrV#|QGDw;_kCTCmOmM2WTls&k+bBx@mC8wkJOsA*cbX(Smc zFP(kw0O6@;qA3unvc}mS{Hcx6bP3DRp!#UFYD41)Rq$$D#w~9dVaye+5HH;b zs-Ma5-socyV-g#VKJh~eq%p(AFh^y~VZZ+iiev1#zU*CC%b zR}WpV+?8l2R?6M}Y7> zjietc9oie`M3Xh^;2Ck)yQ3K^*hR)s!PYecR|Xb?;jOa_urohTErOaz;`rkY1-}OZ zSNXNbO*QL;UoL=Ef?X*F+~4e=-{~tuXM(4^lfDhl>v~C4SpucRvEE`47@8l&H|A5J zX6P3B#o=*m0;jq`8s-ff%Jg@gm9M7Q8c+#QFPOJ02i>fIzz;xXrxK@+5QzSdt(}s8 zh<94EE_y2F+@9w+H{8Yf3TOzb|s zNa*gz6dD(zB1$QCs$w8bHBc-|nH4lHDv6o2#|K!f)qQ@~XJWp!2d3}7EH_u5gD*@z zWGiiYLryMAbg=gd;tEC>#K6NjQq8_{qhaGRG^u~U5V#=Ks|~5-<|-@?&9AyIxMBmi zC+vBv*U|TO{j;+=6O?>ENTFkX2RG6q^&F5$No!}oqI55xd(4$y@H6)h$n4eOe{{O4 z^yL#G^WD<&>h9^*f8FudvmJj-J*fDDDx8s}ULp0F8oAM9&9|;xV>sy8e2Vex576+a z2-Qzv4 zJ8sy~D!gDX_{Vqd<_c*IinU4UgbCooP5Y;ljs=!ka#kf|Qd9p=0)$JyQkLZXo&xRU zFLzU}8w0sX%)leSvk&%Hbi0^UAqGw#8aKn+X72lW&YtWnu9xmwKdZbVX{};0zMCux zgZY0X2w;CPAOars-_7ZfrT)RMFH<3$zF%4r!~i0u6}z#3KhxLgv}HorXraKd2{Z1P zN*ZCx#eBkfT`6rKgbA;#tK`?>)VD_OP-;riC!X~&D~RMWlUe!!wgQjPo|f{2=$o%O zz0>zLQ|3#XX#lb;3gl@cX`==}hx2Z_TOx+6JF{|O-|>4f8lgVLVMqT~R0&Hhn~H+e z%j}+!GU1iapyu{g%IrNylRnHTQtGWKHtuuLr5E>CI1f`S9Cor|QCuSR5@PwLd7TM& zscCbgvTv$RWYV%{H?g;pY0SpPg5mQ>8WWpI)7tudt_b|@i9HMHvBbqf5kZMv0NS>E z6-qSqHWe-G@nlVLU~O2JhZx)ZlvvydaJ`!i^Vo|6K}&!YkoYjfRV%m5?4qIn7@K|o zJG?`|tgt9!6%T>{0CfwaSsjstL5J9^eLS>Quw&1wOrs|!Cn}?)aVYCDxWwbvl(rde zHd+#lv%EFCpp;oJ=S{`-R1bcYpC3guIy#w=BaNJsT1)LXm(C&6uH0-z?02fvZU6Ww za=Zq|1x)=_7T&%#du7sXm2dtvapXovO&DQx-kFTdkybMQ8#RMIXl8Zzgo$3?B0pfn zkdvV_ZK^;qdG~J$+VPUUhtLZL5Cm}^Io|DMK?&%$EEvIo&I{_R%8#p zvXIW(FO=!e&=Y=#B0>JngO1V?<`cikH72EF7Vn#c*>4XXkVE(U#?|XaS$x41wHZLZ z+p@4+Ipqu!5b(}d%?#pK{?eLpf)Pk&r6QDqGErSZr&roemf^GN3o_GxqYQ?uPcGIy zmNd^q8&259q-#DK{zi&%u#u1ZIlOQFq%3i*-Sn9nk+mAl_No$n#iCqlzWK!=yrj0S zG1PReht9LZ)&f9NlN@d)C2_SR(iJ&l*udLQF`B}}N@x;JI$DrIxkV=FYq{V(k-zup zv(9?aucdjz_bu&|Q0nBFy9FUX6WSpcu=rctE&~G;eGIfvg5D}0q>2fCavO_MpZ-Te ze}lZ&bzW(taYcbq5~H&Ty5ORss+uv8y^;w>ke9F+X@82E>-e-Jzyyy#*C=ZzPn$SE zY>p7SwYDCSfpcL6v~LOtpr3!PG( zM50x;sky+*3y*s_icp1pokTC>3g{ z>Jdq)*D?3zKv=V#nh+lk?T7NbA0(XQng!Toz_s6;FJGLy*CqUR#f+8XiANfPG3q41eRd_a zl0B^T0l)(MpA40^3-{SGgPR;FgQp6#hq1Y**C0_}v2@AME#?riw>83<^En}$-p+2W z?Mf=e^{bOTV$seFdX=jcI0$NXkuQ{$P^yMyVG?sCAKwO3C0%vUK88ldM^$R3G*-{;g}7PF3K$J@VbD`WvXuihC}*x%%LFL-Y>2nBuZIKLoJ^rk@8gPJ ziB9Zg62eq^dwvmB`*|jlmtZk@uD*o3S|KRLK0!R@C@*PvpCxem}Sq=s#N{t%CIJ+vyj47rRYXi;GKo!i!%8 z)~jL4*n1=51-NVavoe+LK22lJl2AI~ke`cwb!$Q;DokigEV_hUz>$$H_&%bu?oQ3x zQDn$&pyc*V_E0=k{u)7};ur>gO$XXAXUne=AN#-h=a6zIieEzd+&H6XBOnfnXo1XL z%+!UCQHL6eUUW8iy!6GUiz7PWk9%vm5W5O}S(K}3tk*D;gXTNw5_jH>q6}_{JbFTE zV@}41Dg6hrhcV|9oy9;jOLH^c5%dG?>F31j-z86eZFUn-GC;fBN9iH8nzJN>no9<; z?12+TPJaV*U%co&!0CT5;&#mM58tunAtn(4$A@*Gg{64OQj3S^I0r+SWFoUqKx!tp z=M#wI=NV2zUkqpJ)+0~y4kJWvjf;u2|V{l-*Ap?fp0g3guHI_1d!B$#N^j;`?WY>meLPRjFXr zPi3g)n&1g$7r00r{;K1~?y?L` z_3iT4M6n5jyEQT2cT@{C!)xH0Z#H@xGY~LG$`FPI`k!E{B4fwZ3mMAkIxU6Q%#elt zJ^LT3i3U8_EQyzqmQ_4T#^@-~SL3Yk9C-MyRPUflI^@~ox?ek`I{1$ozk0ZD!2Y;e zD?7LMw*}GUAG+Va9P3$&IMrv6lR7(cbBd1`qGB@V?(won-mH*itQSu)J ze&6X?w!xRCmd~$S+OB5re_wg+SUUmmTcn;dxcWC2h-8GJ_O5iBuI9F)G+Ff1soIdc z;UQ9hqWMl(k2KLS?I+>ifWE5s$s@_-?KT0SYLEbce(#hJr6WIRMwgdTiZ9?d034O& zpF()Sopb4@M$x#aQ{`5m<>Mv=PvKy33YFEuUphhc(@U$~3PaAt_rXq=j2}tr6rKqI zsc|>s0Oxn|fij8H{twO7B%oju7HAAU8pp7>B-H++`Xg*Q`$gXZMM`J1im?Ul+u=~z zS~Z$U6#VM)K{D&c-#oO7FFz00!xw2EkbP}d|oMFC$vnp$AVdk{0e?y|Akgz#SX#luQ*#K<57yN zwE_NCfv51B1L8rEDpSa)L!ptwvCviUML9d?56)kCjUQ52YJ9z=} z7uk|Rl9omK(+$4gg|?>!9iM{^J@U)igH6A$9TvrFxuZ*u{8QG~rWI_eX7|z$v0uZ zo?sno&b7ISr#*&xf+@iqcm-aPN$or{CLEbpS6RRc9O64UZcUTN8%e^}tIEgU^>u*M z5>K!MU5io)IH0iyPX1gHQ-swgC^*xU!}6G+({I`x?v0zx(o#F;m=eR=&mAKaBbEJp zKgd%IZfQzzRoWR?^$G~c4fE!GA@DoqK61Zzqp{<(Kd&eBXOK6rb~!pYG#N~*@tpLM zx|8&9W7se5ni&@jwMu6Mp^bga?~G6jx@u~V8De{N7)jbQ&K)&=OzU?SgN=o6&=j8B zlXsBtL*?L%Q6Wk3S-K6jJ>w-HqC?MrfxL@tYt2Bzkl%Xsu)CvD%>=&=G_+br+t5Mu z4zsm}HR-h)-H#mFmLwU#P{d{xxDhzuqeWsME*$Bv<>h&;wAs(8t-?ik{_BocSn)@N zTNdCp2D4EmmWm0W4P+toR#XX25K0B7`tI9-)k_vLMGr}p#7)^o`KzFd((g~T`nqZwID^P z1=_USd~>itLR?p-ikY86UCa*~OhWGjOJs|7_xL9b>-QO6qbVgI)w^iRO+{<>B~rTz zMgU@jJ=B1#3s&m%!6uX?THMArlrEZT8>v)xz7lwLk&Me$TqY9ASlfd{k&FK891Kc} zYe)qJ?J&to)ni#iW5TQi&p6N~04T-w>GsWiHs2)Pl2X#Bs0Y^-$B1~( zRb0s{7B`hG{AG4Pn`D$$ebwne)ZF|}PxFFRVqE3ar2a!GiFLw9Xx>5)1#^p@?&jI* zo7-704Z}1EpG+8L>#CdwP0UDla=mfb*2b8DAYB`KWL4^c$iE&uaSV7(GAjV zxai)=^0LX`Ai*mFi&EeI|HDa1D`gKZ-15i6l`eg*6Ol6N(j|#j`Hh`3-_1U}5vEo7 ztMbj|Z3W1re=|CMrrfFhJg5CL1eD|aw243OSNe!g*a-Nv?De9KpJQUygNnr-#5=NS|6a;TQC%_|~R*y4~vUxr^pYr#Fxg z9gR{m|3(=lnToOnvDl;C@MW2`wuwvjvbd;!m!B?P(=9IAUrf>G53K!fBJ6XcJO4jb z*iq0Ul6%GC7M;en-?`FVBn#9N5xwj);R@-fS4hcPhVM^SGOrN2Kz7q&M)a5GVdn&I zm+D@Odb7A)o#f+QCK&Hq1Z2H9q}EH$cahh4f#(v2WcIcG53>(Bpf!X&m1ajhtNsSa za=5V?g#$(ac2|a$KZ`9@XPVnH*5Bc6Z54m+%04mFRUM>774Uc8e>hEP5Hmb7>^L!E zk7-ja`~*%#O1LAXPWRcn@>6BS{V!mb7!7IL9Q*eS8c0s~@BhXEsGXW(-65DAf2@0< zO>@}(Z~QXazkn>I|707!Kba+b8Ws1a9;Zw|*17Q0?{+39k_eAt(0|LO^S7q^Z5$2D z4sa(?rO>v!np?_jw*XMWy1A9TSF~7L*oqcLWCUY{DomZZSGJ%wF(nFqL z4K;G;zCN|udKy*3X(T$mp=6t72Y%9;7}O?7)e2PN6m8U|X`SLrYBlq3URqM3>cih+ zpksI%)RqeA`gXg}_=sgFG_7J1%5D%%D1pgUJ;0-h(6`$Z?@rWkH0_-w8>?AI4L(XKlK&@?euJw}b>xjl3AFEh`?6{2(jucwJ*46wS zu=t*mK09k=a+x_zM(q1n15a}xW^;MHZU>KGt_KzK+mq@w$SKd@I1{bKM5;r|sCnSn z-vIr3h2d}^{L0qdKx(^g_A6M|+Wg&lKOSel>G|0RI-eMw?bT`V{CdU&^T0FIZ>!XF z5go(;z@xK&SA{#hDW3a`yh`cFqRsQw-RzR<*U~)Sld`x$FP2UCMo$iTiFDkGZxw4I zvE6-X48Z%70<@vF;(M^q`b#=fJWmw1)1PF8isOiHf8&CmT(^(Y)o#4(>D(9NIpoTe|41$9Alp`aS`coE1sh94aFP59 zLWui=7RRsmNXB{R+~~_fXWvCHaMya8H&QPF$pJ*F7VjaWA|>0rO4m1`MpZqQ$Uk$I z(7)&Fo6`Jv&>R_#Y`3wBq=YwW?^}Nk9l}BG_tC>c3uLQh8;6Au1ByQQs2XX1p~bF=7U5-3Lz8Wh#}Beb-Q;?9Dd}1nl(Fo*_XzMv zW2#q*%S~O7rUVPE@;NDFJ^JI9!d1d>0n5`mJ{{mBUIhXEYOJt12jn?Xt zF4B`mA=T)>&Uhfnb?=sryuD9ZUi+lo`L*Bt!>m8Wh`JQ$R88Ly8Tc4<+6F zxGnq_%que5?inT;QIKzYGs6?1^Fv`LL4Hz781}C(5$o^vE95XUm4tjq^i)t&1JxsQNkc@i@9@i)~b@XwbFbQCHQOTy+y+LCVxb{5cYsZ_W5d*e`i%dp(-Ks{#wHLG!^{ml;zeq68-jLhs zG-M-X6Q|a~eOWz^@p7t+Vs`<3YoLpfVf3&q_z5+$iLKL@p!TGM+Wtj#`AZ6&;+66zX~yy$>Hb?5bC}aG*6m#Uc0Sihy_$Wu(&j zD`!&VdO2G(?)xCYOijY)b=tGcWkA~6bt)OcplB^qlr|Qrwa}k0J_?)oI0jFz%3 z9!Rz-%v{m;GY|(>&iBu!xZENEtE%bKtp80o{m)8TJYp=Es(Fb3CQcU2Ce^JIHlLeE zQWcnNbds@yy<=Sa>3MQn%Qoh(w?UKV(M>~0W8vpatCkz0-D;f^Yi2<7RNoORC)5a! zDYkZtgb?>oCh={Rsp!5rLCqNUs|l9tyt}pBvzEN`^SxH6t)VpxQ)qd3q=(%jh9>l-Z3n+Wt27x%F$(QGY(B?pOG|@-NbnP{<*QV`iSFF;{CKCo zm=8tXfxjIzH$3+XIJ@UtzQM{`Qi!FE8B`VRx2rt|?xCUicRAB4A3v2SQ@vdE8*2N+ zc{MlMJ%L`UVw>avV3?0WLL9I^F=HY1N}tM=iL76unq{0bvp_ueE;pS>loxjy&_)BH zl+%Eo0}+8hXmI1(tM*Myp;eLOl?ivHe zzBH3Oim}vSS>=Jq#muAfBxs}f5VHI*fu&>tVg%hhw1gW87b~m`bQ7QR@>fx56%oc<{f2&Q2R8S2bE_a>%7z#(wlQ@lv-g!kN*c!N1w;*#`FfKL0WaK;8a4vS| zXT*Q6h(%>iJQ`RJobb{RPEozikVe$4Yl;VQ4j4g)pcBqz$FUXAX%5Bp?>haD}p^v zI+j$~#3vbgQuRs$Ir?S4^ja^;&ueDo*=8Nm;~3^S*Odh)G)75ES9o{k^ta{oIbe|? zA9y4+pG5SAJQ@;-SZI{iu*O8-`1YQnBAZGCwz)K!PFEotjJVmtFmc01Qgi3scy_W! zvi)7pdrC_VdysOtXshl&&YfDi>YxcbD!M@N@24a5KQxygMD~T-b)JV`1y&@{yQBS{ zVl4e0J}mzK4l6I+|BJ4-j*4<^`#?cTkPrkU6&ZTy?oCKbGc>4l4KXx`n-E008zhE? zL1G3NKtZHChVE_<2}RxSc>wqOecxH<{4r~>n0fB!o@?&sj_dkGr2}@@kUl|H+szwU z00G9+yy*_pL9%ZhfB>YCp8R}Vr#18Seag=)5?^3cA5aqxJ3xX~ffEI2Ij*!^TuB}nBko)VBm zv{27-5Bflzb%*7AHlE?7+$JDV+f<>6bxK>TpM(xh@;x5jYpIs$)7%rDo{x#UUL2%% zZ%XUeB!mC+2PN8Y7Rn213*$1?njvL4*?7eu0;@t4Om6VwK7QSNd?>|>LnDc3t9wN9 z58cX`ktStsEU$a-U4Tu*LRXbli*!nfE#@pNSTu*H2g7xKF%Vft@74 zRI*t|_5PB4z16t%V>$rpZjfR@0s!Q|s+r)dqkrg`3w3&)i(_b4zB@{)s1@f6sLVf8 zKC&Ib7E$=70iyP`v;M3mV&vsoY(L!n!-JXEfX{k-muJwOi^>H5!tHJ^)k_lz#?!Xi zHFnOe%HIz>S%(ld^y`vYv%@H?W%Grf1#@cM#%m$!jf_ZeyCRms#-lsp;5n44`Q`n2 zW!v0Pj!o&0*sF-YD$``5XM;YLd@MoKxK+oxSc~-RrS-2tGKO)=^zN+V}p<0Ip_ZW7N~J$Tvf)3}xqgHwJ?ZDjf4 ze6P^)5tX(K2D9+l`K`Un(FoRZuQ(q2jaqUWg<9gg7%+{ci*cJ2**C9RHP2M+`hLuu zFXprVP+t`zDthB4_Tt(8~x8h$I{o_ zTU#l%_QNcN+49|_!xlY&<%`DkVo=hYapo4-klSk%C{ZV^ zGK=?QwEM68^qTB!OU9-QTal_Hh6uP`<-X)Ef~ep6x)#Ioc5BI>{lPQv zZ%Bc%>1uO)RtbH^k22J?T;#13^)%u0GB$$R36CQnuXC+qEg}L>uAM;1jQ!9S9KDs) zH0iQ1{9tdX&4sF9tldD$+^Njl+1xW^EbTxaTP!I!>?qu~n!uvm)zs zt2w&Y$0k0sEi&+qYY*!`Q~%B5)bLnYb_E~m1Pli8MqUapCIvbLHI7w4Edyx!bX`U} zQAeJEeY=G;JaY7pp4UJ8Czk&3{ZsUds%l9>ugr)4dj$@7DR}_J$MpyXw=YjiTCk6E20_P(c*C5$BGh8t^V7q|ifD>HKfH%>Q-6 zm#uSN6ubOetIyeTbu~%`t@^L_E`@i!RGN#oZbJ6Io9Mjt1+;m1nbucMTva)?inBEA zAx{|XxM&phn-}n@Z0$NMzxWT9a_s5QI_m_<*4V{6-%6<}FXRxsIWfz4=3=jheVKN% zve&C59<6XMoFo;@`%o%GTB_L@{HObb(Jwxt+s4r5fGIA8kKUn1No3oI*c|J)U6bit zYWq8)_b`Evfb?n)<3{=Y&)gX}*+D)I7M!>q*@4-q?I7Fg#E^bLx#H(0&(bwHnc#KK zAQCH5Ejb|FSS zLyo5XWDU%D5c#cZ3RWaKJaa`6>Seonf zZ)H6C@-rd?dI@<_@jP0xL0jbmFjJQD5$j;_I>hXf#8^UtC$K?i`jxuTN%zJ>o%nG; z^~VCPgg!9Ij0={(*jgoftYS!2WjGFjnU5^dn}bq&IyJqYHTYQy*Gvb3Q3sUsVf4ka za+~V38JZ7!*YmNbx*7&L?rxzjll9Z;cjH)j{d1S+s4HRJ%fY*UvT!-NJ{t2iv}jAf zo!Vu3{^8-rSntv=^}#rQAU{rbr$N)#|D^;(q|dw7AEo~lt;8tq70j^{e9;X3F2O`< z9b$Ry>l~mI_@{X_y1h>bK1#3Vp5_AfFK5`$d=XK-1X5Jp{)3L#?_H)-uhPzM2Z8SuOzIDQYPmL(it}_$~I3Ty>E{jgt-z41;2hndc zOP-kdncIYIuau}1xD-8U@d4!=ZEbY1X?v-Sb1E58?+sh(TP$h6-m}3$4p)?|jF8EA zPMZ(bn)gCk$q}{pDpQ$YvF+cCWb>s4uY+D+lAR0%w6u5cp7B}>&zH;ngdXQ;b#yn+^FZW3Mhfjiiq>GUL|&qC7V*;F^ph)Yvq z#6MgoC-!*_sYSVA&h<9P&w@y0za%ZSzHOCL-^-f{@5=X~+k6}y}ovZVPbY>%@B`Iy7sw+#Wk0noRtX#5UY^<@A|6vxh*HzBF zoV(s(58AN~+o+bR7!^5tU)+_&frz%83GdKqJ96|cU}2=CDjF3X6|Dx72U&t+)=}J~ zhwI>uIQ5CT+$VNSH`Rw;q7 zt33~+V!+Zi%qDN{J@m}cpuH7d$%B6MhBwZV+wz%rR@?pZl~gg}pL|6s+!~dS5v87t zygrx0`uAZF3p-A^yXGs~T=?#uBgaOy9@iSIfpywY?dzxeDf%}?ym}mPwpTF5af)Yn zWXD!4bbA*km)meqN~N@H^e!Id=>poCh=_MSg!|=-kBhIZZLeEtyb>1nQ1fUVQAJDq zYz6QE&WlMf_3L$Q`<>6JodIKuSMx7ZPIp`G;@Yi%H$Wm$<@V+xdtWk+%7N#hSwUUn z|6N}Zkc#>A0C1>f_eft0aP)EzuMPAk-+^!p8sEA5`M7U{EX zIp_z#>9P=&M_B0wKXVY&lK!zMCzZ8IrS$mmiko~vVSM~Gv5R~>h(cUZs822y%l za=wD>6W!M!rJ4`XD^_1++FIvJim%|{O!i3cQvu9y_rJur%Xciw0@213B;5th`;J~f z8yCEKx_Ot+xt7B7=`V?19($iw@0i}#5FPWY1T#tnI=-<+X<-za*Fsvn4W}!C`xl5Y z@Jcw^(<`aLr|N#nKkvUhogK=gQ1;cEKUYukcUCev#4g$rgTjr&V}vX6Pf%Jy$A%GA zv(s$<{Gj<+4+`4moP{{Tfz)|<>N|5&Mdji(JAMktii@=@js=oS=#5>DO+|*4UG~#m zJluo&I4k&-a}F4Q%TT=_m0wU^H=SD|f@L% zh539Y3k`OEfz%A3y|`IPEmdsVnkBs3?yX*G3#>OC%s1N4|4muJ9Knfr&2kz1elQ+)w;2#N~>J^T?Ce^*V&T671&%oSr1{qiJ z=APE>iP_A4t)*mSR1~#zau$`Ev%r!yWb|z2ju+|5mxZvsgLbcIC0BQ7+?mef@LSJCsM+; zogJKYP39`Ru&TQfphr-QMX?w6oOI>`L9_SvvHL4-c{Mf>JYdqvfW<+N^>nNc;;Z!C zzq{L-A6PhS*JYD0N`sib(!@Nd@b?2N50B(Hw!&M$nEaMz9@`gtS$!~dwVjD}8^$FC zlbKraK6Z9rJo2M!e@$nMK)xYXL(~sjsbrkwyq3c=nZ>oPdJEMOACD)D6)~jGw%@!k z&~v*t=i2Ms@` z3iur2PUa%W|2M4##k_`tUBt_`Hr^z!&&zAhb zzU@~5qcItSDclmiaDy%euuHsEpk*In-Q=J75U#tUVE_kDU})G<#OOs=BC1 z#cC4SyP!f>mq7cIL`G+jv@K_}UE;!nBktu%IwFJz6XTN>^%FNxf|vF@iMzkYcr(-3 zb%cONt<$*7HC4R{ZHb}pK=Vpw*(S-n+}HRl@qE{)ZisqGX|@Da&tO|0ll#kQcwu?D zi$O@bf2P5NRnmVXGD2IKjKCX$>LZWnXfk5LeQm|JmoO8QqpcK@$}z<{p|p`qA2z3|&NqB1cGuDd z?uor1jt({vK=@&87D~=Bk1s31j~g5|UzMv`NtT*#W|{{RE)bB=ia!qotYWkv@lv#U zNWT(fddnYxi4@nogB2#;Lf;%w?~J!HweAj~LjJ1nv~fL(MGx4sRC7#f`col2lI|{u zt)~?YPxMJUOC*v;&Jik9x%QZ}xbiB?trW3tAI7zfQ71?F?gmtbYmC9Yf(Dox9cKRII!D+{&HrG`k+TJBp+O)@Bdipb1nlk;L7}ZeF=WGLHHc8^D7vE!e-aBH ze-&8eP%kL{o5>6xvr&%ihJ@hykzCijP?`j;o^_I~9movta6|Js4W~`Z`|Z|^7O<9I z64gBFHIB_scn5~tG!oXM>w84RB#F@>MDo|3X$| z>^A8m5m1gOVNV+b+9-T*Y>=dWkrv9!!|-wfG&TJefa`Hu00m*^Zs}^EhVmBJtQ6mD zRw@mT7;&||C+4Pymt`o>PM@l4C}EA_C*x(eaKJY|fh_!=xBs9P<@KUI{=nL0lzMJv zxz$=dbUgY85Sa9njO}9-(Z25`mgGat{Bz_DcJbd{!(~PThjxT1A!AT~6xLATi`cB= z?tkWGvqpF7$?M{+J3bkEig8q7e2ka+Y%BKL=oA?JyC44jNo!%MV%R&4vRJEYEK5BV z8`s92F13vRe^3%bL4k}Ztn+xo8(N;}*B%zPgx*+y>*{Z)=(3+U+N{ zo!4x66)cQ)F`Al=Tc{rV_y=S;4seCOAMThE(ZAB*C%6Sj?reI^%UTnlB$hf)c7;8C zjlRa0v>0hoWf0!JzdyQLv4m>HNp1dpWf34=eN3i`VEdl;;@&N8bn+Jdc}B%id7MC+ zI00y@e6cj#y4?BGF*QGJm0HXlUz=0Ne87Q;Vz+r^ z;4l2Tse?Yjx*V!0rtfkh%S8>9a@63kYFcqzkL0hZZl12;RLNpb_x(9~H(JJy?`0N; z(OWGLANZbxg&75~d8J{jv}hnY>tSI&LMsR;C(o+iMjh|i8wrP>w!_+@PIa6|O!21d zHc|>^kFdm*NT>afe*Ka^2>YjCXg!#QMtOOK#S?cvzN9{HB+kKtZHlPs@QSj^C-bkn zfjfQE38EgKvAg}11=K=Ur_NnPLaEca{rP+T{_6>1&J`&_MOV@P`weW)u~gZ7q}nan zQ{2E&;6A25BxdCV^K{QH)fItc;FMEPYsX%|BJd>;@g4AX<7h#mUtqz$K1j@oi6bL{ zu*AC@U@41ZB-2)&O86Cu6hL->I6IOA;jgjO6Qj>Rp>s40N(B$#`~g$v3vfl zR5SC+kp9XF-|@5gIW4KeajqzshQ8H91@3+pWUNgL0%j8N&mBO=|5J3W1t@9Rh&)d8 zlN4;~bLf5c2OP zBqGt-uX?R9OVQJd)Ye^|Fpp|j?EPPO?&kA-P&Rl@zTk(oy4;nhXah!j5#dUR>G)-U z$*8jG1>wHN;^WjG>5Dpl5cp;7KGK2TExv7;T6olXL`_EzpT*3n9BKfpfM;0-W^b8U zdwn)v|4rAtb0l?rxOS)poQB^MwY^xue&DEwjA^_6nk>1JL#Ge7#`WYK>Qu0q=r|5-Nfv&;W5}VAsz75_1A{dr znnV*CqCD$6HtB1t^XQJ^={lF(bH)x1F7|6dOA8fT9(RqN^r3GB_iXJ zUBn)k(59P8uf*7Jc2Q2%WiF!pB@e?|q}h^gh!(e|E3|QAn|7Tlu)vuKdnuV;w2N6H z$i$*#;4)sJuusN%oQbzt2&y}36I4+{HIAzd2{AMwIKlUuY67V(8Q-%>h)V#R;HJYz z*WJ^E^429j#?_6}id@v7PU7{p#*C0+QL!=B{ouGNOjnek+^MnP-Pj3TddYtO>+|fw zSHg_(f64uNFXNAOJ`(lYuz1WHC$HbPiW-XUzL5TnbNcGcZV4J1tGGy?o%u>+OvH|DN?J33rfO9Ov)^_bI^N`Ws)JUUQG=S~vQGsoSm2pnN zNxT(i(fE)yaE9(#FHCnav3<2eD!$#>+R$Y)1zGga+xS?hrLGSGD+G?)B}V@jD`NC0 z)tg#RkgWs)6}{zO@4fI@);{`@nYReNs#(Z>)>4)#N2c(;*xIR)DT2{T_xtftrFLx^$3;L@4v;h z0W2{;Hb7KLf3ESd1&NsXupI0c6biN@?yGBw1U;5vaPNN{kO%hkq%(6FHVM>kL9RZ= zMzoj_vNR^0T$Dw25s;#=@#|L^N}pyIf8R34rI7FuJk##ew-yyIeT;{vji-DVB)dXD zV>?shePtw^Zit+uf9f5^{Tnz!nJ@6)#eI`}$NzSS-w6zM`6? zPHl$p2oqfmsyNS`;;atoj|H7dd+t#7nrYF9DPltiwP_aNAK^blmE3Yp|;V7%Kz{EQ`} z%pHK+6VlgeymTKI4pC1Z_I4M0q`8nfR#+YW3!N$Z=LODpy}k4^Lp%mNep|JxN3a~RTN|lAYrQ=grQaN9B7jk2i z6gM%LJ^M|712lI%-BOgR!#K1Q*H!pZ60K(V%~UE=iE~y>C1=c2)4tW~g5vXFQTSav zEgbvwl$ck-`x1;G=Rmm6yYzdphL}}p08oNZYI0q6!bNYh^d-T>Nns>h1qQh~mxNjp zLXN9JLVK+Z&_|8b1*_OB1Bo;eQ?Dlzu$QoL!tyGA-cCiV$@Xsa?9R-Cg9t+07d&7S zMv6*8}_YDK_s`%7MR$EGdN7nakY{X35tvs0 zGhQ41NXpE8feiNB8i-vtk^tqnip;ydaHfZFD_3#07fDUJ z%6!TKQ1xPj&Tu}c?%>wxmSFhZx%u9F8_(6o7(b`FC}_4}+Qb{HafC?omU7;bCr`F& z%v@Y;T^In1I|;-LPJ4g{XjtJ90-(asp|G65jdk}5=Sh2{-&4&73wr#%3qcK#ETOF) z1GiuIx0tL5O0(!5fj;DWr6&>c^bCFV(0q2OxYu+?${(-b62+KehCM{Qip9hJt`z=W zV(g9u-{a-glA-rzryAeA^U$$|_F{=6f--Nwj`hkxCZQLdo<7w%KHcc7p-lm{B;uni zQhu#+TfvCGy|4kS9P@#irv^;p$<%LYUur+L)=)oqo2c%-@ILiey1_b0Dvfk0bG?nG zNY4EQCALwAQ9b1-wGBtHEq;+;1%4^(kJZ8oVi=36Y&p`XM!fz!@xGU>v1>6=_N0!U zjvUBvR|MxC_mkF;W0pG1OJSno6A^81g@~ z7vgC8?x|C_o+47hqF}b3QLo6?No;KQuIMg2Mz{AXy#`yzGZ&%C&sf82c)m{@j}a0> zg2iKlb6sZ^HqUElgT5*Xf2E&=BHO&2RgGRNq;ZkumAk65T#~pkY=L7bL8yBVNEfIN zRY#ngPDd48`#i`e6J1$GcM^K7U8me>?rR0=$LX8*woqt$wHB+c?0o&)j2M2d54tIB zP$}iF-tn^cPfVNP`AkD6ENJ7AS$vqoaEt>ieVi0a7RUwtg{K#hC}kG=d!m8R{>91% zF#-si=jvOMmzpk5IUBbvy9Wu65O^B(7lW0w3zhh~V5M^%qhgr=Vx^vgFhfhQ}G z&wkJ&NqxfxI?R1U{n{FmzEkH4yUz_&R__-CcYA-(s%FQKG?eTuRw0+`ik#JEctvzG z&5T#_o}G*qR;q7(VTFniNawK5I-Hc6e~`55_k+4xaqI0S(R9~95%{FazNAxV#x!9^ zhP{eAgW6a){vv8K6!VVnpi`pG8pc~KjqOZAnsnjvpFD>BNSNt8rTA4BSmp#@>^wC_Sc6!J7Bh?EWaw$9Qtz_KKLHsNfQ-oq5#qYm@DyK- zl=8$t-H%t#+s*aK0&7y;6eclYCCkB&)nlsY@eb$FVzmqdM-_zBtgJrbJ62%KHCBDE zW5TVStXS8OU)EP_;KZN=X z$o^)oPxUBeiyd@#POMOaTC9uH$9)}v7)O^ZhdfrV7c=WedKLF^EA?Mstrn%DuSNBO zl@jM0$({yraT@YeUL1DIegQbomg#mqY8?i*VtbZryxFgDgSc49oj$oN=pLwuUmCE^ zORsPhKVk;Hk;-^^BpUji{H&~GIO~qafppdthnRKefL4Oi+{Mts^h}%^T^PC7{0V5+ z$h2*BLhjE7jB_*+6^3%fIZzR}G@yBV)59opRO?SHqF3bao(YKIj8p`zS89B*5dC%c z%D~#Lwi5h-S(z!Emf+q|Sya)dMpJpZd@LFU9B=jQ56uq^2iRbpNa)Ox^!XSdTArl& zVs!iuzPr^5qJfO^%)kB4%L+1SKW4#L~I6z3PETFcp{ z!vht;pB2Qw6=Y7bsovEY+$(rDJ3IZ`DC-U~1DMDK>jRbX!gOf?lXlJ9Tu$K^nd?YG zcF3I?T^4X=;{K*>Q}l z+Txe8a%Zq71827yuNdy*9$B>9Z+wz0Z~Kxl)0ee zzy;XM&$2x&lf_^f&dp+FA3hLQZiVo=c0$#}h1I%BOCb)6MUyz)4E_9LtSY$l-#{kU zYzpGd(fQ;$hidO8qg7m%w8yE{M;=#TVZQ=;%iQdYKj-|Wt*P zl?0lfuw+v;jU}PqvCqndg-_EyCWCy@{?~?cc?0+zQa(rVH$SsD4|B81OmDXV-Mox$ z)xbdIyc;M*SGjkytO8wZl({S86XDEIxTkTC$z7;I`D^u1a*OP_=PiRsTXi)gb(4Dx zB~Mqh#B?zqIl_^j`(nOtzLBvlc>8N5;!K%@QxZ~Yi16QaPf_+Yu%u=pdxeQHrBetV z;t2nto21a09pW7B!_|?dg3Ay}dFSrt`osp>G27yZbr@?!>gzyHfxgTycDt>)UVpGu zAM~RAe~6lv_x6>W4s<1HJGuw?r$$HxMpkN|fpcV_#|99imyTi|qfD%I8N|9>N4snH z?#n@SaHyAClOYsZNH4Kc33){}35Zjp;o1}r>x;RI0Z-b@8Ln;`XA1Z}v1imadVDHv zsGfqm?wxgPp&{K$^SvZ#+GX>1g@_iaAgK5H_}XTikreaLC)rC@T!0RgFjtMHGW!bS z6`3|k=|lKhOLTNB_v!V;C7K-~A4@5pi)EUdE-kXgHlz#Q>A?D2bC1HkLgv(wr<6x4 zj!s$AA@!jxi#^?%6017QW^`A|xpFG>E{zIJx-$zL{G#NH4j!{H&2UBck2qiTn`n1F zE48s+<2Jv%S$D#2Ir{xX-QuIGuN27KitN5<4_!wK%Yalwu2RT&mN8%f;C&^9fKDqfO$&E*rk5qWTDwpe%S*MOwBkOY~JZ zJSMSqY(aVK3wB}{F^4oR#{WZeYeMTqBESmjbE~JoX_)H9hXg`s7R{%rFQ=~9Rq3l= zKD4UHPc2H)kzW!?ATDE|En?%74feUHxTG&ycTwGS4Wah8ugHkg!hz)tc zPfA8A6m`1v&-gYoXJV#~RQ?O~4g0^_An)~Sc$u9;aNY68YMk#Y6F3cG;~vrF`#IDI zYj$-qD^RmuWn2t);*hE*@Qbbcl6ZGZYJts6A<7kqJrT3-(KHRQF;NpL9`r0vX=(VM zDEn!LwgK9fM;AV)ECb-7d2qRe0wK++v~;SLm&LEC^t)qJnN?j4FX54)FjD*q4ji8~ zO`pD^60;UfC2}}*ediN%5+hp(4bEG?!bFpwdyIx@<3)WXv{}CW@r)|wMyPZOVgA7+ z)yyfS7sl2e#eHzwsNJ)mw&pzLMw55b#_c+*{>s14M~Zlk^6z)ZRH^b52t)^WI@bhhu5upbNUhm35+_L znLwA;tY_9ZO=)rA#F8h$@=U)dw?EazvE**YS|vwbbwb*X0?Mzl;nepG$hnX)BeBuU zP)G!Bm@z-e@ZG{7S{Uj?+M~A~o-83S7-}$=lh}5LUwjGNEHLq2jSA|LZd0ji)YR%) z?%^9~PoyMV-<{Y;84zcT=Tausyu<#n0YxyG_o<_F~&rAZrFV-Y08d2D5o%qopV#9(bMZ)Q3+PP$R< zIcd)GJLf^6h9pR}NzT|7*@@R9tBuFQ2W82uF3NmlFx>Dmz=FDmJHY%4@;ooH0`u+TR1}s6f6)c@Qt~JnuN#UVb zR{)WMahVH3MusvOCFbP34~8)B{v`Q}`!bF6kW#Z=O1?}PABL~(Y@%3xNdolk1`v)0`4T<=&U2ZuM3zd9P&H}l;v@CbD`~>y|Hf-?^uy_6oT`me(l5JnTDur?3Lqx|a<}JhK}qUf z`guFi9~xdE!0-l8Ee}ChPDU{uR5>SHN&c6_SzFPn^Fu`uDVorb@RB9|tI8x_`?ubd zZlVG1A@h76PMvr1YkZ=G-3K!U|O{>A6355fYa$*y?27~(w@p~l-BV-j#?`=X3 z{9bvNgD;ODgk>^su~fzOvvt5;auSXoINu21a?ur4-qFol`zRGa9op>HfJDX(&%o;! zBz*6;N0{6pCV`2)u=gg9PSt~W;XZdD_;T8 z$jWi<@tq$&Q##Gv-dN%*i!CP=*{Z|r<0KWZ+DfMH*dqhx8Z1%8R2g9RU{(A!fR$!8 z>Ufb|Jg2~4%&FccEV*eG3~cd@nEyXuNgP{1m6VQ1qNVbCcg%x_;_{7)8i5cN@x_3<*OM>a%W<+Atd zNWM<}!JT7yChDpU;!M(i%wG`IRkY#p`-KeT4tZx|yMhDq*y{FxoY$NylBX;6%Xbe}{`@Ze zn8${z8g5|g-aX?Djljsm$p>r}ahEHu&w|0IKPVZ959Mi>hgAj{b+TE48I!Qf=V!4!pJjEY1s96WSl1TJI1nYS{y|ux`!Y`2#{P(f@ws@4*JKHE)ilYm>%8Yz>i0aohf#Ok7_` z<}a%?a$AV;^p-Az^nKZOPAvLn9ZO8Nq%@r!#+~17Mi~s|mh=j|@>!62o0sWWGIe!j zX6+J9=`?_w`Kqt(iOq%in`vS+*ST;w=CGcvDp3`R$%r+vB|`LgbZ-tla3JJP>(}7i z@Q0o=z-#u6UmYq0x74dhy?z+FoD9+P=l%IrJ?gNrZhY?0PKYHT-_OqGiN-p8CK-LI zDtuRy8_kQ`Oufq_SiwKA4GEb7p;p@ww$5*oj`lE5Bbjg!F?YBA{)PU}TE6Ki9z zKDs`zh{gGsNh~@wV>j<%>w{?t#A(_8X4~7(e&*0#xGj*emH5R5dQSj%!znB$&SJg-9jM9b_d&Q; zAs#Aj6DMH-Nh#M82@QqY`+$4K(#H-yvpC^?YdvA9D`WjmI=b0Mv)qw&EO`b#F<{QE zvY>#$J^UfA6^OUijt-_A-QMNZAub*gIL*6a!fM8x(cW&O#LNwBMK>B8 z>9Ei!6)mV~NB`WB_tKQe7z5vg-qN!A&VK3ae8wVD078OV5BVKNh0Maa*nJn zR1(xgPQS3h^Tt;eiwX62)F@)(w5LzKhnIpnO_l1DEZlHiZl!}DV#f((!p!eJ^&w<2 zQSi>7!jOdG%j|7Sz5c8@FP*Af1957C7|G1k{p0w+B*-x^=LYo__6M}1)-dtO8WXd^@@E_?+--G=)(;XN8^UD>$g(h_VVynm#u{M!HbW8vQ6{z z%peSNM&RPB$^hy&pLLC_91?#k#fTkWbw1QIqN#$*O=1lx8ip#spdAGK%H{0mE zcpVVBdG9U%?}yn4tnj3 zZf<}!BWojYnp5!`*}k>@DnUCfxN5u%bDFGX!|e85Y?SMT&lIK+nK6XX{^Hujs))wK z9(-^xIXJ|2uEbCSTAJ#IS_PiL?gcQl%7^1qU|J6*EBsB`DfX%gvyuL1FNm(8dNuGwl#; z$H9lMV9>A*+}>EYA=#UmQn=3ANW6ljyf-<(?G92Cs`4m1%#DQLeAZ+I6brxDnPtSh z{QPj*LZ>H0ZG=RBd7I_O+|*tbSh-o%R!FQ!@AYuhCUoPCwtYZ-PkpYAT1-WKi-6C` zkMdfFmDoa&7q1p(v>A8V^byY#4P?zcrdC#}vB%NET{I8flg0(h=6Ju&#kfz`JvZs% zN2RR^XVyl}PD+g6A8fUN{ik-2zM#Vj@5cP$9pfzVGj+2L7QLR?Xm<-+U6ep@m3O0c z7!6Fz83{AyxLOa>V9q(UN={h_skvgB}=)R&_{ovi#~z~vIq&0YG-;+ zq6n|H8~2rzV4%(K)f{xiSXE3bogT3Esia22Q17aQ#KUX!LVynCGWx7s zdK1oa5k>VGL`*spMO!s=)+lJM2nrwNuk(e_yKDXaV%xFtgRB2iLmT=!OLl4uQS3*& zSQY(`n{K zRyWgjfBy6f>MB%kz$2_CS5L%z!_DciR_)8>k?zo1hCfe!xmAdl`%HQQSA9CyV@)#MXUeh zMN>|%@W=?MWKZfZ6=lg5-Xg&gw8KK^W__)l9(3BQ>w~F6H9CcU(37|oQs3Nl+27i) zv)yuhJ?x~6^2^2)PUobI%uHDQ&Tt3n&U??{a}O#LV?-qyr$ylU+ySccl+g@V9F&ka zhh!(xyE+Gh#_l#bSu={ zu~siuxmP}|;Z%v-C@0b&4$GPLbiC(4Av=^NWx^si&&ddr0Q4ycd>oS<>F;?Pmo!I7 z5b{(E7a&z}8SKM6%53}4O;fc+(<<;yle}EsVpP(VhKb(zzWTc(o)qzn`8R|~!01g( z!oNCf=J748dRf=l6sFYiw~&RxuFSCY%Y8kXuy>*XvxlBd$6bPd8TbfR!^_d&X1jQY zgYx>>JFo?5=`d+z!DyD=EMbadA8|W2^UDbNZkU9`?v&5?oADf&)jVXVsMKR}=a|DD zg_eAvWNfMEDbrAAAvh${da8E!=N34H%1(hjF?rc29 z^J<+tuox8*=wm@?&+EB*b(OlYZZ4>w77Ff5#vpvjKZU09oTu<64oQ171XCJ%)C*Pf;%zo0a2xxjRz&QGpUjV8i zE5m;Hj&%$3I24&W4;$w=rszj)(jSqLa3z&6sNnD4C=8}jYGwT%0)*2RdO9KFjzM&3 z6BgB9U@CX^WrtFS|G|zq$y0Z7lwqV(^57ZN?UAI8X{m_lm8QQuUQ~#wXkNIw^R4m* zQg>Eyi%?934FuU@E9LpE3u5UAad4Ba0O^Fi#ksofeLgRnMLip{u!ou}(O0MVW ze#0YFE6H^<T~*kubP~*FUAINxRmGJG>31(_C-svnI}Fv`X(6cGmD-d6Dl7n0oHO)Bu*8DQK zmsJV^#rWObszUt%{O(OWJPh*N5VeX)je)&zGgKpCn}Gs`QK_wdTVvp3sc#t~3G`1OwnbDq`w zVyk>;eQ$?`hi7uIHY?59uyAr^HOIF$xj#6!8pEeOuxpuGLaQV~I?j}$@=nfGsn1H)IsG!#}-a7(^Pu#4tdv* zXUNg*r^;4|+Q_02e!oBeMW=lzOnH$gDsVOa6~6g5P-7Fl?XKb+jAw%2T8Qx8|00oT zFguf(T9Wqzio8*d51jsKXa&%Hz(qrmkWFwNnTok4Ls0)U^P_E!{YJKsPBmL1$kDH| z|M!!lGBX9u34$n~$*7c}!oX`uV52|ZtuSjCv-8TrbN0`!Q}+LCNpE{^AnhSRy@PmV z0h7OGrJ1H{hd!P2WnKFOKGOz%@;~v5nF+VlZ(eC|p2DNO&0Ssox!msQ3|}>$m#fj% zb8m$?3fKKSN%Y!nQS#r53wyIVr_$fRK8+W>*>_W1+Yh_(OJ!?0!zI^-Cup<>qvL!m zi8j)n0uuutWApQzpA`+~q96MFPV2Z_^tswmf;~p5k>&D+8V=e1O*5Kf2w(d81;;&u z8d{_QN+?)MX0PF8-nc7o^iaB+y#lI?grZ=aK65&&xxgVtp0>KTsWG+&3C$R9&(@+4(+S-_elZp#B6I{CB_tmj*h~BnfbxMH0H*m$RU8L5rW<+cepbou#twk_@ zRY)kM#rstks38#Bjj48tQ{s8t_yaf{iO+)gJlt$9DLR~`hlJhdd!XELRY&eP6uzE6 zF@KSOo(Xwj9zK~LrXRZJ{}(3L7&CVPwrR8jrwNo1Yx%YG@c3lkLyjB0#iwdUhKe-D z6!mkXY^JOxOj_)D+Z>8&2)Gre07eoTB&hr#L!3_=(>|WRoxpzrpu^V!UZ$ z8)bvnYXY*W!vBY4zJelU(yhqIvIcXJoIYA9YN|e>F7HqGF~RsC4?l59e1m%gA(TVX znW3Xpa6B&L%d8^YqXqyW!blY0G#EvGth#NfOGsSecsx`FnOa<@>FqOA#+VC&$fx-* zC7%$1q3qm-)3DuWhl8pAhqkv4YjbLtcZcFoycB6^_ulg&`*+TF=9`&ouDRwPl90U1*Lq|<&wa0yE`{5KDKMHL z)SB>*ELw}iSjN_x4L=F3V!5#GOw88}e$OBh{Ge=P+|XH@qratzFrqHA?2#VjSK4MPzvm=ZjVP3WB)14V&dfT}H`6hf(xUg+pVTd3e!mRO{mP@2+<*pwRjUTXMieao8|9!(wsOiafp ztrWX5WeE=BS<#H*$s39*#z_rh**tw?V}TL_vL{_BZsYC0E};cb#>P0`V)X)}J`e;{Aqu_{lT<&;v`09WB+xEJX<3P_y>~Xw2azZK_A{nM62A^*w!=J(3|zf zM<%n#Hi&L{`o7=to4f;^Udv*Ex3O8Wa;VDu0?5%%F<07g;lgD0eMN1P z(crYgfXyQ-IRtq$m2l0M&dR;%R(iIl_Kc2;AP9|jNWI5W&3;JEVqXAr#$=+2H*rj~ z2sztfRv4lavW|upE;!FN`@MO#t>|radw~f`A=fd3K6>z`xM1i`u+qp&uSmkdq#ztT zXTsfrmWftbqsTRBE2B1jI=9DtL>2U*USj*7xqV_^3z{eZR5yK9%S!^zXEKd+SEa4( zba6hZt3CY2(FY$Cs}>uYwN+IVa&{;+Ga2+tSF-%@)l*~J2c&#p{_5CPq=am8bv{fRIijQ+o=f@F3p5(DjQ zRm@AR(-`YsE&uUh;Fqu(meRh;{pN7Cr zKBycCq|BMbAQBcR+sgvIX%kB^-Ha=0ZOZR_>;F)!$0TRnm`eCjyjU;qb>;`1T0^1m(Y-rf%gSr$X6f6r)RuM! z>N{lgDMUj+JNbk1Tq6JVU%h%&{lQKkZh4(^4kG^ZO+3{N#(g5tRKdJz0$>m1>h97U zG^YvgqUh{z(EPZ^Y7b<8cbjJQ-o0t6AX7p9adQ!KzB7B zu1i#Rd9xmqApD!;)q@2v9zg%->D~WY9qvRa>9#7yCn&r~v)P^js zK34;H*?Vcx5Q71DF7^;Zn*y6R#Q{F%skL7A_N;Sp(u$8{43v*DIq6uKW2(xVgoMrK z+9cjm;+y=tt(X8(BUJpVjhVhbgk_W?>StG63N?tha^6?-;qr>b#}=z~{?+S61+#cnVQ){RaYe@4 z$Kbuwn8YFGGIyru{+y7c)eHge)E>=gDAD39y-y->$goF-#kX}Vf+1~=0fN0T*`dZ) z%h#tBk0Gbro(elVD@y6Q>C8(Ou%!aobz6#o#CKGwtc%J}1&i(UM~_vPt*x?mv{R^> z#r$Kn?DnQ^*vTUvc}gE=G3ayay**K9k2_heKA~AQR?Lc zvXw!$CYqW3WVx2l9s5krEL9B>3t{nNLLO@Q*z5)5D)YgUA+vVuK8maD%a4|11Z|4v z0;FO^HOA!e8D3gc<2Cvraz&__ERxdf2TG>OUUwn?C_WrslYInl1xd#eF2-j$px!mT;{+U$wbZikQ*Y~lucTksaD#nb;#;s znAb26tv-zYg3hc+BVt^HvaCU?xH9owJD)>Bo&z-yWa(18tgIg5rsHTL^3v9wof&2n zzVvcwG{$NseZfyK4}SZ%GO9`U)S?SP%~!bpl~E%nq)(Jelu&H&3q9=Q9?u)mJq6jf zBUBYcq{Y7+FB0%{RVC@G=Z&q5B|rArb8nIiV5D$+@k?rn(#9T2AEo0*#ok)S+y9Kw zd)7s>sI%iS&g*;(Wy%gT|2Yat9kbRn%H^!A)RdGka60J~{Dbnj!9rJgby%|ZQ_JTS6W!{Xq zAQ21>u&SpZQxuQ+loc()%|)jeiT30KgDIvw!25b!;)MoNkh7In+~R zlU&`Jw!5sfKzx*?>NS&2FG|=?4k4%gPNB7b%tK>B{$+-okH@F zIxAh1^SVG4TmB0d=1;ya%}ls5;*E33jJPU!N4v)j9{~`%uN5#Te^0mOT#5~{52@r3 z76~N17U&_{YiWpEB385{C#*?mBg%_8$8|3Hiube#@r#~>w_a0%;Hd!OoxK11;yhy_ z^ExU9MN`0R>1gI^ag;~S97~fn0A}gn}MgS@QG`CrY!G_rb#}7PJ%Bn zAhOl&TtlP%$4w2Blk$T}eK>}ur(z#b`ddR{fAycf{a7)x^`cW!aMnev#3#_SWvMnE zvaeDm5IU1qL7aA-IPiFY14+@(AhNE;x0TEg=%om^Qi;B%=Sx@bB{r|^#SX49(ce+#P$ekRT{~yC3VT*#N3?3~2j>%7UvJ$Z_OP1dj?10f zv29tT6q+1-G7xUKjVtevcI z`Jt2!hqx}tF`tuFJ(zzFl+K>md!$U@1@5*iGKaUdR5x5+!`bU}OJQ0KCb93nbn(Hu(`5C^v!#Bqc zE*(3?FfjDbZ)s>Ee8R*Ls=%P5BfUq7L_Gdl*xZ(8pjP*cK?cN?2iKyzFD)OsyWrwx3tyQhl7MY^FX4F^O zf99L(>tdFqy_Vk)(x6PzP`H>YPP_2@+^_sK_GM6EmiWMh-@sGC>C{5J$RvGcppuJo zYf(vX`E3d9-u2hO(C4b{y?cm;6Zbc-RWYbWttY-!A1Qhw=HrVk=R|+uNM-qjkH1VC z<1bro@-UUzIGetwlh}3S4v!7D5HEor0KXHz|DAlATi8|;$~M(NuiArD`p%Uu*WX)1 zJ@xCg7ER6Qg4@ONh?IZMeYGX?^&a=%bInd(@*X~R6uIJ!_1^k}7J!w1eczA6sZ@b@BS%$33E0wZgs3A< zvfXboF5^sl;)~bJzfTj5NoK=MnnJg!={AaQm+zWsHSp7P`z`Z@xUYd9%i^5TlB?lg zn=;;9K6K24grj}?dsxgT$C zN|Ddm-kYCj_dnphcqn$B!1G7dtU#+MY&id})`1sg@%oDQJ^mUtCK(*-eG)q;n%?^o zF8SFPNbLX5F9Sakyd0=>_a+V$`c9DBVI*=H?!3Z~@aEzs`c`3i81MV>!~y1wjTJZ~cXzke)%qyj>NU$Ut1*;{;sa2!Gxw;NN;(Yva*6Bg0L0u&X{`isgom>>-uVE}Rl9v~k0iH5P?tma)AbFl=6Mtu1YAS+fg9 zs#);2k&sy1I%V6G*Ay8Zhb{>v6{Gg#)8aYh^t%51S|_WgU8@9AKytJuRqBM`KXK=8 z*Rvi=ZcC$kWJZ$U=n!Kok$dTO@)&(T-{<28W5d+3%B|0Dj(49+5@BC98wH)?1H5Yg zE-%bI6L@)`N9N0n_#9v%mqq-%U0>%#)Zr&@L&^hPhb*z$-f2m)ORf9oaWhGeFkC$njhFP)kd7Gh<~`$FMKeMtYGtpDd#${C z6V`q0cDY6;RvJ2+J^I$}+P^;-Z_&0Kw-N$m9p?uAAy{;kV3c8%v^HbZ_=MS9Pu;j? z5Q$tTM*zUOy54bfyP}Lnfe>zHRTHH&bwR$zsD5LZ8;ZOq&f&3_y}6v0!BtbcV^Nah71G@`eY_F+P0VCHoe4_` zU6G9)ct+C;xdHB$G2ey+#d_#*zq8Ev>BQ#UC|A5VIc1&>kzX9-nvuSKs#;zvCD@>& zEp$Tj6u^6kti(H_czGqaG>juVk*AmL%okmejX4MuDCFxpdpY)fwfjx5WOml_J3p*H zK0S;g0xFbXD890+N_;A2G~m?jwL0!3Xe9RD^8KEdFU*>${wRWLC-w6vdIF-j-nkuW z!&QnEE&`M(EEm?|HRjQmc0Y{UgjZS1EpfmZCHRWwL$G6jeO|DE;R(b-DP7B0LOKmS zZMOe}YBR^BnCJ$ZIe5)^$r8$*&=Q)EW3l|LVuRR&ba#|S)T^gf{C*4-pTxfoZLS&= zjSov#0H{Zr@@85>JP^PlZW$@|yI%qKnMg<1oov-fGfTXK}29`jr@lPMvqNL$ba+G>-ToqLIhhXGyGN9=Di}?tiXw*4xlV z0PoKObFY`-cE_9FZ@75EBk&3I~wrS235#jeyNCJ zCo8bEC%j%E$X{9&NWxE@#oh7$d>eA##-lq+Z(?$UGUqC;?6Q|FMuw&^YdK03OUd`& zQzaWBp)p5H3^Ze(XYTfZaJyUTG9FN>%2-72T-Q3)@kRkWIrtA|NiLJP&FYX=0YuY0 zxwVVEC1{^*Bd9h09_Y^aU*TQk z-B~PY&SgnaW0LPgWd)Ksi@ne?=(q7eEU&fzJK!ZcTDwh@^TFS|7n66@5bZV`_-X#e2M6${$MP`bKcgx^~}p!JDbI{Q}SmK>tj9syh|`lkS(U?wCkSs5*O*RUkb7Y?q)LJUk+|PPBaikl?YO zW)RsbQu6w5;E{({*&Ve1Cg<~SeFMZfcg8q>kbwQIJy6N!dH>29Xogt?6hVIHg~P#N zyM?XEQ&+FXYr-AMiFzK)0)VBRW9ZfoK@8Ho z6PR`~?CvG#u7u6=_X5<;4s~eyrEyPe!{v^#rFhn#VeK7LqwZ0OrJ$I`+A!MhsP0k} z8vrra=L;B4oV=qU(XeNctPQtUR(KcaLa!FUDyk=T2mUs2q08J0wfurRo~|&gRF0t( zDzbY(VE8C!1mQ~UM`G$99|_!Ek^cj#pHTO_0DvFkG%{aPGha;H277n@{6G~4`9Ap} z2vnfP@B_e4fRKx{sC|*2Hg#W=tWV?{3{p1hMBZv*$|y%{1`H`3OW%foQ?RI z^FC)CZooK33?Ef#kIiHFW}6sOS+q)Om|k&ZyD9PnJJt~sDl4gnHjhDe)m62HGMcky z&Xto1y<7q?>d)!0^dnJ|6Pv>fjohk!0D&k)ODfNszvVuQGinmnTq&Atnb8Q3FbApO zsbliOo=xC!HEe6H@~Z?0@Mn4vJG2`%_k;wCo8s(2xxCB+3ok;al+Fw!TnA8<+a#2p zpjA|Kv_YMI6CZxmmW-rdRza=&#UK#zou0i|Nu3g%{|W!QJ$O!Mduwm*=pY{ylf{Id zG5gS-bwd#x ztKNQmhC)VN%s}Y;<&*0u_q<%?GeapiHs`Jep)QAa2uf{7>R-(w>}8%ar-jh^gp9vl za^STikGyN;t+~#KF!+{dpIaCiMfR`xnL7^fDb--au13)(;Tur~!P)7O>8BxfbsoM= zb9D_xD~8`9b#$c%)s*>iKHK^tv=01*8&jE@lT^w|;x-UtrEZLGWS<40j4CpJfY{Iv zt)74yo+Tv>6DoaS0^_@{;mGHfZ7Ss@nqw3-08wD6mh4ptBoOL4XYnRIzmYxBtpX_O ze4|rSlZ#}JTJiutz0*wGytZP8m(m7RedDE6@e&zEKMhA%PTY`WavB-CC7CfwclKt4 zf1bTK9cPuH8+Ep@b>E6_;ib3Vb|K@SP$dllUNsU7x3RrXzEsOQV+dg%>=#HQzelB{`Y z!t6Y9efK#_3$}jiUQm?OP519A5gF-4Iv<Hn(<6r2rx+E%T)pnGd5yDaXy}r4Kv78F*}5)H&hSqkSUt4PpC7Y_@q2|ELz!TH%PyIp-M$NYZ4mJYNO@53b( zl13Myv@Zm^yyrgHs+Uh8uP8GXIv<2-?#`~XO7N`60iTK_(erAeAED9Ej|xwvix(zn~*7T!wW*IJyeef4*l z@v_mEtEWyUB}TqslY-Gwt;yZZsO{~71m)xm;3Oj+L zIfN-);Pu_LiZ-%%j+(Jma?4m^^T{x~M5Y9;I@-Hjj}I6)H~CEJ4HcYNN*#$=CJ-WL zb=fUOkBQy-J<+5e(GDT+12)V1vyP`$x)gf9NEQ$4JI_!YGrRT8(w^z$^(%fdDfgvv zcz0)tsy?tNPUxxQ-Z~}^aqe<$;sCdaEvg2x`*|`=THb?d01myhwO6 z`>X}|El_}1aTIQ|7z&vdYv?tWlMZj`fD9a6@|`$g=wj?nu}&OS@)HICAlJ^`4ksDl~Yb%8h1GN-r?4crutkN1pQDpi4A4kZ!>)3 z+2sBC%v9&%854DMw+*l&z9>6Uiq?oSuM0$zNi5u8@U1k7+u503q(JM6vm9U^1ZVmz zlrM`A&L(^CKXC_dwf$L~aHnEH7-#J~Fe%2?gIB9}SN_0(t8HJEpk=K8{iJ9HF=;2N zD>BNARBNhrmN|Lz?*P(l=JNjovd_zB%3~*k8OJRHy(g}NG`wA2yfu}};jJh^ZB~JGBjTq(Ovg0tkf%J?-$v~rE zIQB$_at!leGi&Cu@S`~R7~O}!g`w|>LcA$jWhEx!=zO*v&>KG%gu#kBHAAXhem3J;Jl0m6G9bvl=iLm9hm! z@OG&V<+WbDZS%*twNN+{OOUlB6Z=h8ohlyldm>168Wi!#u^ul0ENq!f{8K={g^|F; zjjJ-zh^x5WFw+jqQ(~Yr&P#dF)1fBzqbDX}AGf3sKJCx_*C}oq_87%%6{A+ z9ya6^&Mh-4#)bVA3Z+V13(IYNb)PsW| z2un!Vhx;rzJES2R+gA>YNkZ8U3IesE-opEH7~#k&qR zYw+1&m?}!nMcc&YEPFPV*!a(=wGg@Yo|sxwdPa6d@8}eBA&sQ9OJ%M>N87WjEs7vx zoR@~^(rLkz$SD;P-;EUP%g?W3`rY4KdT+(dRw?r_rONWP+Eg+(&9R(#>0KMbe#hAm6abCxZl*O9)cs_0GD)xL$-j3sAp z#?&fivZA2D7RZ~rIr$!K9dw8>OQ+4;vf5AUQrLUoFvdmVQvi@KlB`s4G&v%0Y7^kz zJc15$5qA>#q5H3(e@e_xE7CP3DbY7JrYhl*K)eIHwi;cM+MF$nh81huE*A<_6|q1c z@K4YZVPdH(sd;>vT`+QZb7SuA&F+yQhNJH;Tj_g5DT@xc5vBhoO^nsaAK~p;$Ej-A$K@8 zA;6tjk)CRPCOquFjWOuOE=}1iZdmsqiNP;DZGe$OsA4CM*2nGY#McD~$VFVDw;++T za|~T-2evc%;)Lc)ouyM@|9~VB-dS0CA<-r?_d=MQaDx05M9b0A^~Qfo)j03{(Py4g z>p*94%DNd*98*p}%7PPKc zNZuEyKs9yf))DQFZ@FHiq1gYUYF|L09>d^d$uxZspgX!Nqs;3VkTu$FFx8}-+ty_M zx1;hdeYH7h;@_kF;h>}e{8gHz_rjZ4r;B~u`|bqP;GEiu1%y}Xtr)+RUqSy&{htkJ zFTjANxE7Uq0o<40+tIRP=y!L-_cz6PpnEIw;{*8&2*6$I$U}49&i!?JZo~h5lkZ+l z4_LRXcOZO)6SoP__Y?xE-~ySY`V$zCetj~#i!I%j>L`>XRM$%Byz>Yd?p93*fS_+r_A-h$Bjqs%yU={ zBJFT(6!qGp74&0qHWSkl%5|v_Q@yhO9|U=`VT|Xuy|aBFF$L%V9?a_?K*hVbyZV}z z6;b@8a2H=IU<oBU?PrT+Vpu3j|+&m@5iu+qMkRaoad@donJ?ot#SP7kQl z8UbR}vDYGDY>1K$N;!=zEmAp-y-1%koX>3m%kH|_dgWxP?NT#)JW+EJKnUyO^ zq6bl~er$E9Qto9?6uavmNZ?1=IEo&b)2B2hxfKF|jUA(shIVPMxhhd2x2q(TN$SS^ z2CQN-g1trbR}%QZW$WMd67N8&9jU!$@)@lx*M@6?YcF>S^FRZC4tDips2Y~U zel|(gH`Sb}_@h)Ht^l3S%U_(~DX(j?>-Zl4l{bn{%uN_lw2^hl+~E zLO5iDSn*Dq%0mxQ6dBlWOsWFmY*H}5!3XI+o0w$5>NODo{WCqWn0h4s zcK$S?<(0gad&l#XDb9Z{KAWQ|Em9YeOBa5xBr)~i=P;)GTTTxpnjQZ?*x(5t?U(+# zYA;S#yhSgNMoZoQT^xyX=;lYjwktq#aO-~*oM66vFw-=C$j)(z6^#sm6gSn|k=hO6 znEa{w)Q9o<3qWV%22$43_il%$%-51EeR4cnPWcYQxF@^5#gl-G&{*HrC)*|}ZmIxq zo=RILu)0?gp8*^d8y~e=kf$&7)qhHVzb*3RN5vh%9pz(?Rgrtg$7(gL5mr8+Q%y27aU^~67co;%KRBrcuDX_=rYd`Wv;!yr*Y_I)>EKl;-A(CmzQ##ZzW@mt7oZdh+ic~+0RxqlDf-L)sPu`SMt7VjVn@?-qiI_PF$RF z5D42PWmMXNK0bvJ4=2>4a! zXMk5!rNpr7n%g|aI)fm{$_jw{qcgZ&A}Nm5+Oi`)AU;*Y-aP3yI;kH)?9vIPd}In6Cgugms)8b6q1*0@X0F;xpb+47UP9Cj(*6?1m8693lB2VMi;^UB|Af=Bra)l>=Cc;!Pssgn!{;n zfR?ABq?5uVyO%kyV4(Qg1VihHZ2~UcHe-z%KpgyaXY-3 z)=)C4UjtcKRH>HMh1=~}sB`j738G(q=K zL!tVF;oFKc;uhW18{d;B=ER+N#2oZ~DMLO?=`tGQMNY1Y!%6?!mo5n3K<)mkf)htb z0R##t&zhFDDdLO{&3H>mQ>^3?Er^|A712a$jE07sj)Fwg^;}Z%g=tdO$;?FAbWsb; zM^d*$uj%PpYem~&H1x>=dF9ShUWVL7Uw0$HuFf*+rbd&h_H?zhB-2;)WRtp#i4)mG zdwLtN)x9|1IRETPOGF{v6d@&4+%iZh6&@@&HxTuO}BONknpcnV5n~DZ%xHZvCQe3w~3#6 zAAY0CM!dhsoZR_Mv);bm z_^-j^w@uBzasS*(wMPHy=0ZJW#aL5;Xxv1@J+1t}WMs@qaPU&m-TFyKiVB0Y;EsB? zjG6E@?slBh43sus*_P>1i*8Z9@DpRU06!ufEOa;)=({s>rU8n?6^9!Me7UpU8+HTk zp?jhPGp9Vv<6~}xlVT;f#^4+@P6QT2uNj@kneEVwG;5!j*k^9G<{BYUYA2xr^i*WqfdTbk z3ky}t^5|^Pqc!$rS-};bCeo&-!>&1zwysq|j|jMDlu&Sly@R%rg1A&aKW1&Rf1=#W zL2gDB=gJSWw!+cp4(?D{=(W!YNC+@q6YTa`5U{1#b}^9^MlqrPuEbb}l$;5^S~H0e zV$a{oz$WRQeVn_96#KavqmBtHvV;m0r>clrHMjT>EiLo%wyN@}az?!mHjky(e1y&` z);z}6C`_StrSHVp1{3+abhT%kvNDNm3O)6iou%={vWI0i3^X@`z{7BJ^U6PFX|KYB^RN%R>XgTr#LRa%=q<&1AnH$XVNFrNS^^}jrA$*RsXNg% zx{tiA>bYb-#qwMV*+ehTuvJsHd^CYj#Cg z%V~Ef{-yRhJSgT?S~%!Y0U|=BK#d?QOUCS|D5r5zw}cA7eLJa2t+ers<8Y`gUix#9LD7ql4&|$o z?&c7aZw5;}yi`h3xF6C5v7jWO+o{REE9yr2E2i?ewC3cskghLLp8ojXns=Ul0dj9U zb#%zoLA#Wp0V>|Lqi%v$b*Yc?gi*hHcWoaaPE+O$?Xno5-f|2?YQ{;TKZJ3P$}~KZ z#~`vCyu0P^%0XSL0R7vdp%P9#B&0V8D?FL_AeCYw6`#LA!0*=~&3B&PVvhv4qO(iw zt}StV-n1ZYQaM}fZTT$osoWMqLyxI2L&F``Mx4>!o=~0Xk&K0~!)sKOKA+CBgJ{h4 z1X;C`MAkD03Z{IkM)(Kncyly1s6@xq9BYe|x4gW>Qb`_Z0=$2>0G~nsfuoo3W-SU% zqqWs>OWy0VJ{26<9>l2uC9IgkW~TNUgLk}aq_>hK7}g{NMPAXZ%eoDLHSfLDRn7vB zgAEtEsUm*GcfdY68fD;HM*`-p(rTBVFWZ4zQcI+pBQY}oy2|h__rc!@m+X_U1#X~a zQE%^A?;Q!7=%6MMGgphY8NU`4r@+`@o3ClB$Z04`~3B3v%bT#;-+L; z_gRy$`luu6tnM@LajFtiN*s}BdFOs~Y6?Kp&e5#aj^m#?eaWHx7xZ`8^Kq>M-PD`q zpPGLZ8MKc&PVkYxkTE~-wVB(tidjia?2&Yqy!Z!H>W$jJ)Gfzu(5@-J{*JreR;;h4 zJ?CcSr{M1U`j+~pROe)yDK%qmIph7X$%dF%P8ZI&^I;BwO0u*RFv1tBA$BEoRkPT$Jbq>; zMpgjA{D{I3QCxeF+m{S|N;5Ayw)M%kWNANw%UPjknBzSWwz)SY+52#V;2`)qKpRK0 zsu{$gCB3ZZZVM^KafTgQkb4{H4ccrTQf;5Gpe5yB{sCW_;{Y#_ZPb%ScvW|6!z-*% zmN8?VI1Ckm+!yRFYL|oA$(?2Z zb+(iv%Uum_k#$!;bUt%coK&I=Dep_;XF{ebG zOvUESD~&GltuStbtq3vM`Y76Q6frrn><@eZN;m$$aGanU#L0b5wAYe_Iod|Aw4NH8 zJiSi0|55c!TL*J`=Co8CmvSQ=$VM^=&SZSjJRB3#^9(`DD*dmZyFH6O>*U63z@B?UgSmO6*UPN~gruNU^^9Y4jCo%-;o=V$o1t{}UCyK<_PyJal?vx&J^L4t`g zEIMk(Kla82{qRHUqNMi>rA0{2^dx=-A#PHvhgEPR_Gv-5cwO$mQCpyN$8KftMY}I{ zr`A!#x>7h%XpFdJF+(ywdirv-UJuvB2krq}7%Oc~A&T)V) zpYD61Xqi6`%xdZ~NNrHJ-&Kxm#V|Vks!hYSxO5Yk3CjuD-8C=qix! z@4Vv2IlbgvOa7aSrqJv8Ovn4QIdy(y75s$Mt_U5=3DUsZctp%XP6P6FsILi7kT9Jd zxYV+wVm{EfRk4Y)r_C-ucu9}3td7Z*RIYr8k|3T}`iG%Su!(P|4h) zPljPY8A{-|v4IG`gRV0G$2{dfKH4;qy0hX zh5n?{XdUS;US1C}xX2>`^REk(eo4(`OyAwc<|ykpHippmP|jdILRu6nC!rcpSih(} z#j9D2zK)`iY5;=z$Rqp&9QJ#T*!IN>vK zAN^1qi6y8}@2y9oYVyqaE2^H86Z^vEFr~u82JjwllS961o>M>QESCb5Xz$acbX){E zbs;aL6i|XE6IMDM1$wBX)T70=XX6~UOu2T$i#~ypNm{b3Rx2}S2W3TMkf_OS`HjiZ zZH}2-2)QBoD8gR`^5zp^n%E-_ioC?`c1EJ~ahzrq^41CE)dr@hfc5 zEZ}F1uCrmGSm+)@xaC}+AgvGL?Xi=5xBYgE6yoLt)R!Tfd<)_VUve|ek(I#q`s#@Ek6Ws)1Xc}?y4kOj=xSHLHxOYD3 z1}hO->BDhqWA&sOqth6?-^>u*WIrR!Z*5QW+wiipNwhF~r<1ImuPT?Yr@zIrP7HGQ z&wIx;wJGkmBby`vE8t-utWngpNz|^UJ<){pJ(<4h|5l|-9#!~lxud`QNIt0mNw(!k z6;6fb!{sr0U`j5Fk4&&wT~DqL4Z*Z=AHpGttsU@>!^M{|f#jR1{%Pz{-xj?8&3B?u z2@4B_5O)G2_TQ6@*Wc&V`SjZMM%6K@&GU3^^~=fl1#F%~yZ&h0zOChrYu)8n4$Xd< z15?S^p~ay&*Gi8;*QgN^J(gs~Eh&m&-Dz+i)e^-VTcTC$u?21n8XE=N4a==q-*%nd zN9%li#WMIloSn(opy(iyipwOqz&7lQR?YVA~;73k|VKfO% z9?f0_S^B=kb2{6jtjopmgV}ICJ6SscFx1?zSJtzWZTvWb29MO#$|x9MlKZ^=4Xe{Z*P0(2?ouJRT9yQQg z+t%jB%osye>xRh%$#UdV1)SO+21VXK8p?u~)|LpNE))Ye!K8v9TJ$6zS67&(-6~C@ z464!RnkA6{PaHu@Gi(g7FwMdQhPw zK;g8Q=B{L9nh3YcJ|`>n~5s7g%KVx5@a8w#!_TszRr z^Wny-LoA**NY;SNrf8!NlD|HVM((~lcHRkNp!$gOIiggjK@Nj)Pd^PS99FqLd8J$1 zK6h65irFg@ETX0+TI-XozGBxw?ZdscyC!PYgH;vEknJt(^{!z*gn~wXlyj_NUT`UUL0C#w)Pn< z7oTDp0{47VS2dFMt-h=xjGce!o5!FVG8adGqLtC{ubJq1;tJHfn5Rjgb;|3Le4%R0 zibzG8)G4A7n1}+}pmSc6fo)S7F8FMe`=!&(A|}^zzr&uw;QZYCwSlLq#NWGio?*XK zn>++9GSJ$Rmnalmc;bE}X?NJ~?%jG(nV%x0cJ8`un=!o=#VVtpLThVF2j&~`%J{XN z4P);Key*?}1$mF^FZx;r0iNKf^mb1uJVCdL52vqk&`#N|wlb#w4kSz8n8y4Xt^chX zUfM9Nb0efkAvXQzrhvpM1|p~8`|seO=bDKP$se{!gg%a+1#2tH<@XoON&vH$aJ@n>5xEvfax!`D zbHhz)bfY|pyU_9(RM%k{UnG{Oac$wmu^l}`eFJ@>a9bqu#Qq35$#+QrC*VTe|ZR> zf0(H7U^xAPTraDClk+;Qr)t0-*+-EgeJPk{6?`>)0NzgyP- z>$>@0mi7PL@+A87M?nzipG7FJb+&c$Z60GgM?P=S#ZB5&@ZBN^_ZQI?`wr$(CJADPtQ`M>BjTb~+h+20A4-TVpy|0}Dk* zYaX6|?GDmxi;-1@UM`fC1tgvyvKUNnYyeRpjh`F}+!!|B01yZoU}FP<`G1Ij<-a1} zx3T%<=z!1kHz)-Dzzr44;|tZ+i-K3dRnB0WAc%Xbrh zBT!`c-e&l_&BH?{@*U6L3XHnnjWhnEf|AnT%IyEz{#*H|9)WpH6Y)?vH#Z) zh=moZuG_DVAb2gSPOJk_=m!Fd#foWp$6l;#X_zV^Y!@a*5aY+yg41`5JZ=BdHE{>S zC$~(X%mAWq&c2#2k=321t^O?A>S%rSyg$v7SX^&jzP4EyT%5EnPxg4peHuU7vtX4> zlCKYeN+=@^n!a%X`Wh-qx2CF54BEfUwyTs`8>1@N>UZ1*L1^^i69vnZnv1tB{gmEpqV!2VMB7 z;CF{=Qag2Ptj$KCjIgEVEkY|(d)sdGYtD<+4omd0-BZexmP@ldNqBaFy& ztA`ndk5-?R)~ylI0d0Tq^d=0-lx0Q$RC%Wk3DOO}mmu6S0l;F@CN8KbGZL?Ay6kfe ziRttwP&JI*iv_q&o!`OYB@!O+{Q)1#4qGi7I98hekUMv8uBzS?>hPLr4pUNjv=KK= zF47wPR7r4T{&j=zQ*N3in_fbKUQKj~ykN!c2+c?M^2#nx^q#w+muxbbRU0T}dUyPe z3T%Sc@3}ZfjX|dODTDl@cZF1~YhEILw>ie>2692ju~@TUCPi)Z<6)%ZN>IB^$)>1B z(VclX^wQ_ru|^8&(ec()-f;taw;AWNnd-;3_LViN8OT5WF99>F4odxp{45G%uj zr^I5a`z|Y^LzmNM?^`#p%a-petoYec8WjhQ-dGdOmIxIw$be}$8<^?oFotPas0q!R zSd++^HkcIA+DC8E+cN#w2rSWfP|0$~)WY6L26Llda@+0EKS!FN&n_bVD1v@g8QtCLc5g>5k0hAlqEz{n{a#qX(?<3hkRCwx-Hf3{Czn;wVE)WHhl$q@Zy z(H-Qmvk!Z%HEgIGbTW^*Dc3u$GiuD}ftJw-b;F1GA$Lq0p-&Y7zppRw4&|qiQ&?(r z0u#l?S_XZvHswDiVmtS+jwO7FQR!nZcT9V%0Ws2Bj4;pQi zn5RfH5UMJ{BT1(;kV3zva6Gg4we0Id!~GbBx~PV4Gt@gZ2Us80oQTEW61bkza)O8E z{sEvaOXK~7d;)^aauR9{E34(qg0_0|_YWO_*kYJNT(1H+WccY8=saNn(c8pKmqe*D zch0!Pa)h!oCniRv7=kJft-ZKYoidn#0A^x&+@cTQD`DQuEf&>N5>x#6 zgu({Q@+t^;=>s?9awdjT@Ge+~ve8C6t8(>Zqe00=@)QjaNzqkH3;8WTF3%DFJ)!K; zEK_^3fEvw}s@pT=Z3ExJDr{S4!`xfRO4}FrsHHR)Z-Obb&)gvT1^r0bJ5FXi0tY&FQ zFr6^^x1L4MCcLdSi-&x}&1+|_8xqFv z>^G|=w{a&&-?hjt4Q@^Us)pii@el0&A1>@$O~Y4dQ;eeclYFwSw3lxBu}_aK-^*dw zMbglAPQ*H5ch8_$_dJSMud8>{pL#6Hi`#HkA)M%I2*7jDHN~NOSZFGXE~7k{naE+Tc3Si9!oaPK z69nx_W{|QS8UBs{1HBdlp_Bbc+u3Z=rvfnS)Pw|ePsyIl;hKsg0t~{xu#=*%Xa#?H zKUG5M%K>i=)vGwk5?P3!H|f`dQW)s_ty298S`=A}g>5)~B%YsM`+(ize{0P&f)TmO zCyM)>e&_gnt?a@Je4POgoHrD{ zgsihb(`PO@&cBWvzmnyp$~d*cRGxlA&fUr#(&n9J5c7(Qrv5p?5mP0os{SPH!w3!* zDv$sIC{UQ-~S+ zwxOQkj)d*i71Pl)j)qh!qH15p@rnP+^zW|9_#GdFloF)M)+|Eve1fF+Bg-&xcMqxP zY20MRl#mSiEXg2dqGk>Xu7TaF`#vy=>r7vFgXzC$%_10wjNW{R}^ z9*LC9l|6Yho@_`HgS|Ow6O&}KleHc4HNS}3(HIf26<4b|BePo1^*p%R_cH;2n$avc zxd(AOSW&_!uHvu_ot>W}k)H;r#4wVT9@=Nd!)C-^gWM4)@G*S z1Qs~Y$f8Qf4uu@K?!mL{+dPmzwj_EURqn;B9Mga{-C zlL=9=U3hBripuJXZsZfIL(^`JCGWWXJC!78%y24JaCRKoISN%=en6a+RgOGa3#y5@ zzXtf>+T*(Qo|uA4jI~Y}X7r64j)MSB>LA%QlXH?1YjV%$aTN#E zxn~>J(mg@E29(NF5?Uc~a|X%DZ`II9$|3joB)Z2v6i<>}>hV33y)SGc{O{QGO$_%b zrG8gNQF$16$VMAxy?p!}Xk*jg#9H0p0!ukd!`p93HC=SC*)(m#2v7~fbW?RD&q8NO zt>$9?t+^`XFaL19zJv3fkqb!16hsI`&zC-#pAaQR6>?(>HVRW~}vgwxfu zHH&Xw#bMg`(>8ksPz2dyzsLgWW;K3CGMtrK#iQCD^W}+t0WD8KlqNSV3s=YdP8M0z zeDO5N5?+1%mi6X zdTSp+RsOX6tcKYdM}P!1$fJ#kt6ck5K;3-J+;%h%vZxfP#E!fML(QI zJp&)B?^i*+2EnHNaoItICAX*FX+|BI`0#du#>ySnkQ02gr5mKwA1azy9>cGHHA0P- zDCYWCrJ**G&I{^z$%sp1f*aVXj9OQ3F#2g&s)n#Pp1jl{v*^2^N!(`p!}cK>+;+q! zj1!-lEm_`^@~+etQaxsz!mRWD-Uc!}*hpF*^b3sdPuU=gb7ppsUkB|Zoj_OCO0Dv3 z70G@Bm{O{U0uUnFNBIE{2q9gNrf1I6G(1E(@zW$bp(hsW`Mh#6ulhp#ad1c^H}!zl zQZ+JYo;GTD9X2LKtqDz+bY%g0#Zlaj=MEU`*HT<3a_p%_Jrgf`*o zeUjkHOYmc;Tul#O7r8^nVa1@h9Lutu$SHPVSwQi*Pl58!?EG`arXc2+6j=8muER6^ z>b6gI>{3NyU(C9m)~zN`&|UagE|}SRCmL;wCXK2J z3|y(^8PxMfRF=0m0Jib3bM=vvz4)iupThCRfRD4d9L4{*dn=(+TRIO``siK|^vI20nCnC5kV z@8a-CRxEU{@yF+QjB08;OPLZ8nG%>Xv4yAd7b>`34Hv-EA zCguAd5E$FPWj+53gkxm=_YhA09}o`sFN8b7r$oi?0U!?of%+d>{fn*sMVS5*wQ>9d zWeNUYM{WOw*Zzsr{sW`^MQZ=RYyXy`vHcs4_P0m>M~=qA#Lo8LIa;NvqyttfLf5_O zPACUFF2H@|+FAh3;!v4WUAeI`tP-Vg98pFXyAruX^q1GGUm73>085i+4YyE%E?yfi z^A?@S^=JMdU3bUZ!|r~P*x>K(uI^WSlWU&$wD3nH>d+D=E{|rlLV<|E52@pF+5v7* z2%lt;M7QcWDQah?G_nYv>7z0UMIuzoU7oH!QCKd8+Lehy#1;zSKO5_@ehh0hiQObB zD0iG`SjGn)pVxwnbV*4*WN~Uc`N`Yyt;$KBR&u39FW}?$^9{ow%1zJjc#u@9*dX4> zcPevt{+ID%i`D{`4Fw=ydQHh8m!yA=_kN?FsS;3}oy&qx;r-NW`(af(152>K!w?uX zsl>lR-CK~Xn@*gt*F3=Ij%iQDz#tWod9IXy5~~)8setgXjU-m6=6A%IhW2jSEjUU< z+tdI7^J@SH<4WlzX!(*t)$dVTt03-t@V6J*#rAbwV zk&ZaPBqv=C(hE~y70BTkXm>Arj~^>GLKSNVSXn)05Mr4BWNa*hqbSp|#Ib=L=u4d& z-S|%pJ=HhUa3n#kfKq<&w_GhLs}5ZxtC-HbIow7#IYL3cm^WuZf+k>SejyN#$pc^v zuiO*q^2*EbY$PK?@9bR-4ypu{qxlfhD-~^DEtEGE1|3etrAGCZTxr#rg>?1h0gR>| zY|B=Wfrv~)9X)Q{c#gtg0yKN45MJDydW46~nV6s6-XuzF@Tk=HPu9zNmi*c(W%)l2 z^hjyxBLR&sTIZseML87m0#6b(LLfQ&7+X*CY=k+YSPYLAJ&Gysq=K)bHz zwvvkb5os93VM3Aq0P?S~ca!zOdVom;UjLOvGZ!>9i>V>%8QcP^xwKw`;uIV_s-&*X zNwc1l+(uil@}cwcx^jLekVAkLui+8dU~u*7snmuxd$`QNqx&9ow?%WU2Mz;k69zP9!|$( z(Z+DLP~@aR0}D`Ke~59xFwCZR#oRO}8l)`PE;2VX_)}emm7QZW)agJaOPpR?xrLfw z$pVIVrzY#7J5|Hq(w@ng_hiZsTLc)_?x8aaF80p3x&<~;XpBXVmW*4^U=^;Rc^J#( zr10w~j>{URcF-zKLH`~`W|~z}&PfZminq{k;k}< zUo|H@tyt}1K9OfXqsH634ZA&~k_RV&yXX=h{PY}v!3D)he*Dwu4%%QY*bV0dTJvwj1`yxrlj{eD>~y#76GB4~PW zL1_5oSLvh}^dA2+B_LmG&~BGT9Hbs%$?C5klCz(50w1zGqz$mo?$^c?yrgSw=ZApn z-br#%mc#($9JAZpnu$$0NS-l)61D~)q>GLp&|$%)dUds0>PP~YA(6@@L%G)o0mDQl zpFz3?bfIv7kCBYMj6c%j{N)HIgxZgbL=$ll&z&!>cNHs7E`ur@3y>xWqx%D#`D`W645ruD*uEg@?uSCwA2Z?|n z4v_`s(t-(w39sa(1dR}oKVVg3+Xb+`IA@B%a;jd*Cq}jEr;~`nb{3JdDG}J{;U$db z-Pa{9+rE9l;PT+byQ#(~rs~!4sv3G}5Rj%?RW7Mn8Ag&~c^H$I)+4>41p~DdsxH)i zn$5h&fQV*q1CB0^n%TxkHpr;{-25_F1iGO|zS%#tQ8fTs5_{YR=T)rO-KfHBGuN%CN* z`3y7zlH~pZ^3qT!dpkG>OdmW~P?7ia^6^9BBG`VGh^#uyI`q9F&t6GbacT~?B7;Ap zxo>V}0+e-Gqow3KIJeH<%bshgtVmy75ifa#NIABg*5hf@$n!}s7_j;k))I6{7vT5b zi$H@bOLL%DKf7k5ijI4EbAQD*!sBcnr;(bqrscdn!xT52-T6c8BpB8dCIt3&MzQzE z(Y^PB24i=8|0bEKM%bxr%%)8S_$<0ZTMgZ-9lEWz87hLVL!0om=+qt>$(IZoo=@oP zIT06uuT0*F5HK-~5(g035Gd7T453GlQUZWf2;jo#EReB9eXQa;sR)&GxuI5%zy+yU zsUz(xS8VYn_y_xjp5;ZXcir<@noT>MXATUCS6*s~iGgCYq1P^AD+x55~w%%NK^)XP)YHuCpxz|rtbkCFC_sHc( zWus~tA_(oLki)15I?jFQbRKO4I?j9Sbi)q})H3va;{o&ox4R^ zu-Ja7l*bPz0B6I;xO9+CDj&AO;MmG|q8?Eu54Kp$K--~6?rWiZpC{xT8fS`F3+{PO z-`Os=08uvqqtn2q3QEBvsDj zw^5iqwyL0i@we65x9)vB*cb8|1)-IZDnNn~ zJ+Oip6@8b+_p77jbVcu|7IlYgc;us5D(|y|kL=gu`~LH0m(o;K({fCugXjY^y^&&) zB*2M;pl71BX0yTh8V*=Q=@U-~A)O?Wz{71CCgod7A-sfJ`DJ0{Hx_a8)uB3Szb*p* zfr1@Y4t}IZWGlTlMp0dupP2~7mPQ>1Vwj-t{(NeU3h)!&xX8XnxX#qQ&Gfa?yDEwq zNyejEg75}ky-lXe);-Adl{RID=(X{$Utk&EG78BF;> z&DgPtgbb=v8U%o9T!dgNdkdo*sE6s%qvV?+V0ULandvNUBWU8Z8rE$^r&U5+&l!65dE@2Vm2<`+mIp2OA=)!kpuTky893Z;4Qa zZNo3GUkV(^Z97bMake)+&cJbM$yVEKdJ@uAtK?Q-Ds&ag!nPBx6T+mfQ^6#7nYdkN zYk|?I>7-w>%F(8xj;AXf?#NRe8|NR^8W~5hrmuHmR)%HCE=Z36+qwqNGcVI_M`y+t z-0UAI15UGMz<~!SRjE#6>$^9q*39y@S)`sDgzZbx#E%mU=kW#6hLGW_GwToULYhIfB zhPPkB?9!ic`9dqN z0TvEe-JW`xOlVBo_3R^cy@t`2i(=8=#c`Z(L$8_B5bOvbD(_L4fxEDJl4m1QLv;pF zRSf6M8luNWq-XI)Ks_oS;-ROsgIf!`qa(uQ{OzWt1ajkmxjT!(f3C(e;Vr(bh!x@1 zcqh!a^WGFxv~+D+%v&=tMj%v%h}5uP>YtwyL*{y+b3={h&=R*ch!`+Kth)-sghhuI z5lQw6k)f{+oXqy5ryXfQo&DmQ5D43y`Vg1t@ifDXdmrXDMb17ai?YTtI?WoDGM?^} z@%d>DL?N|Ohl%cfA(syU?y4$sk>8DT*{~m$V;IbYF>mkVTH8@$ zPpd0*&*TJazlScqpVPhrUtGf=nXJ6T3>$U`WWgW@(X3>%ieFl4|EIPLs8;DIW5sfh z(_Oj&7uMsYqGr{|iXXpqG%nbaSnF#0vg+uO=eP9rM`~xzpW8BQ>N1DfgNnF6~c1rm9kRCS`lS+BQ}wN)7f9FY(AxI={*)%XG^g8^nD%xj(S63o7Fr+v?Xtd3blwlsLRG7)E6>=xinlen|k8 zbW_4)Do!Pi{yx^_evuSt0s8q05oOYQIRqDyqlmlX8#EFeTP=>dyrPktGGl-Xp!~3v z>IJw;1*dO3J!xOE5+^86z*M)FsCLHY`i4&|rc*`e69%yyAQuG?Wz;*h&ru7J93 z*%YidgLN>fmJv;o+TQfa_fzBSPXluuFn7>b*oT!Z;za_?kiCNTJ3WHC{x|?{?XXl| zyKv#2$BNvZGaN+dp>rrvDBOoTF7ZZ2O=iS|!75-sb7?ul0Q3Fi6b2f*08ne>dPi+f zr}axnpEG1BnP8;sP2}EDTO=Y*cUc25QE57+u`r~(zO}h~nzEznF7hTT?$))5tvEwi zV4b)SbIK0j(4eAMU$UVUU$l!wFm8t79~~>7!n71?e{A&EwtBZL+)Zw=n0~y=PlfFD zQty!Ls#I{;Jz_70bT7g^Kid|Keh_tc)YAQWIjnDLYL3QBn}lXhUj9PDWh2t(nLb-h zc)zS6)!E_IlSm79r!?X$tl5GLV0Fp8n<~ySwZ6z2ME5w>`~5U!5Z&!y#Tz_Gp`b>~ z-#x1-ZFa?$I46V^US|IupjwwI%bLiD$C}vJWtTUf>>%xL#qd^#qu{23Okn9xM~UV- zIS1P{FvQ&73TV5UV&7YOYOD`AVp+iZ}(QPM5*BVJ|3)RK|ZtO&xH!V9-9fAz`gd4CB{!6WKLGC4kX>J+$j zE60}Q!x_JssvT<+*Zd7(nn&xYf_eIe5MR5Y&$OXG2c&~<-UJHFE%-P3gCEewzNl7Q z?)Ermlw@T?-jq1zSV@T{_- zu_NBl5sD4>v|>qr&nkiXM=S<7W(kxF$= z<99BX_shL?>YqPVyvtB(Ug>1BMi~{hebMin02KqxT z_)@EDJoHkEU}f`*}xQ@$si<61>M&+;x=;#$SL&U&?pTxwDCv@yUKF8d6{tMxeZdjpob z1~H931nCyO594q;ikoja)CB|sNJ-Q^`5&+`!(UzFzliF82sZzzsr*lh%UR9&}O7en-VR(;SE>#?YJJ2s$)YeF(bMKbj> zbHU9F%7e1DBvSOJSx@+Qt>Rp~u$hZzQpb;TGgnbn&Ej-Ab98sSgL@pOBg>ic=28uN zeO#XZo1NVN9CVMu;+XA%<)c*nZ={DWnQ^t4wfS7U$q6|j!UN3YP|=^yjPr73vT!2Lr(WB zG)NE|%1X@FH|1iNz}kAVT-;reiggqWGEhTTf&NM(CdG)7TLU}myeqPe{c%cOdh@+# zy6mOHW9vyS`$gA=kZZ+?o?_)D@4`l?^wZvJ_F<&t+F7jt1l%+p!KKdQ0DS$}rfns@ zRN=V%QTOrtcYr1Yv#$UTMFBmF6!#IX3y6~z zH_Ikmr%(C|&#;_IKyi0!b3wS^A*O){y0767R` zvbs#mvTrZtq|mJ#-AW}|2|YF&@ZxXKNA32#&dOWe3DXa8t;4zm*uYny{ZfvtT}`dY z*P}qZG9K^ti$9*xjaC(xZ;4dcWx~`o75YdYzCVE{ms_#9Nv!Xd?4VpWehP=i1b}PZ zIA8ziDLGihVA?jN-)>(KSwFVCglBtB!or`A%p2{4m6M|u7OPz~&9rH=^pYq#NxOcV zL>JV$cjZCyT;th-R@FrB_ZgUdM( zk=bRA){kTIH=hf5&D`q}jO`vaN3_nW=1_T)W1bxhmP^+XTLZ8i-mk97IS*zi zZG=d0GrsSPI(87(Q0_8in0yA0IR6GhhjIOG)8zBL4p$25%-h~K*FiPnQ;FAOZkVTQ_|f$Top z)%cPcGVo`X{fIgMVPXW_1adRc`Jj(PS{pQu{1G9&Eq_dy2c=Qo6{6BO{%7<2fnI~s zafK*VG5T5|5)5b%YiKE#tSe#GXsQL-rZ>;!Gy}K)@#onWI$=a0Sdc>SNRIiBf+re( z?G}9u<^c7adK?EKracd07t(W0mU?aC+_Tmk-K3D*^s*^~rF?T-KJuM*W8NKP^Bgp_ zRzF$|Kp0Gi__W}k#&Y9A5t zDYL;GGvQ8BF8#F=72sS7p-L-o@vks`zNE@WbA_}QPabWb-Tg8>6pz;2}5jzz!R`a^Q}3^ue5=&cbjZ=33q%= zLZqDHW6(fwZ`Muvu(3Rmmd{=FVz}PAPTN|Pn5w@`bt5&n?FkidH7w3<+9)ZD{!ULq z9Z&!c%?^TBs1RRRy4fvw&UIhE{m?}gvG4P)GMzVD;er)6ScI5$S@d5H`?ZeVov8=B#g#oYQUs*OgR7b(t9r6J*UKF=2<(54q_s9a%rsz&ou0xW%GX9onHG)JA!p`GKF;87hI(8C{AM!r zzreMPgfR)4vfSPF8Dg!(&iJuYh0<16dudb*@5b&T>BZxZFeq$)x%Ff?Vu>8F2?+NG z;@JEopXNmTcWBlb^>S%>&RV>8o8RkdV54M^|kKEGe{mcb4%FV z{5c!9RhH2v(yhoL$8^m-u`3aL9y572%4{7oJ{%8-6$%zX&0^$jCKbRDBr}Jv%-m6# zl2P>%_;h%ID-n;+9N*twdXt}fkYsfN6Os6j7)Yy5oh*#B8Y}|ZGI7AdYDg#bMP!c_ z1)(#7B5taLXgr5vdfahS-h&;dTu-7v_w38;qQX`mS~=Vl@~Bc zHaJ(PgcHSr*1)MHC14ZuN4dS-4+$!qKt1rJ$}wyu+I95ztokv^{Chj@y4l!cE00Du z6tAc~!Zx9bLhlX_edm}o*@zR(3Hjuy6noISn&A|jZuTGIGi2`tSa>?VFz0_0 zdWG}0sUGzc**rcyHNlwO!W&&cXYKg$f)!r2z-ApV4rNI@1qFWORUuhtxU zdX%)+VKAsn2xTjZ`C8v#iKa39m0~xOwR^?!^G}c7$o7%*EX>#$*a!^urHDF8v8V96 z2l6RM30%B$7%Om92;gDnHLqHWYCd)z7O=cnf$(uKvU%jYF#hd2sO9U%R1NpGf*peE z^hf3u#hx>w5YJHSK6h zkf!JlMQ`$AF!a&JR8$^VY-%%!rb8~qRoNIqGg;9*nvX56YC9M1DqnNU!J1OQ-KK75 z|CqI-_7em*?D^qurm^h&{9-fr3SO46NvmDM#Qw-eht%W}{;RD+Fg&z*@{lGbSd3FINu!9$g!fcdYi{9t%CyN#DA<=Ua z78cohrCqV62U)ZfsLia;8(L+1X*6yr?aK1Kw9#)s)mdZ)NI`i3=A zIe7ODHlL9kD(c}X7UpZsHH!4VtFpg_JsK}rVL)bGx(x7;%AEEak%qwu?2wcM@cFk& z12Y$_2|*DXANsbL988{$&{N70>8zbQEvFwdnO=y$Ot?;bxy7XQnL5zvB~6FYn|F5L z4xt(i>J5Cjc8TyC-LTzm9(Bf4kC2VSKWK?r@L}OcHeRu}^+sYNvc(gHp4ugKZdX6t z_h%*oZ;kgw7o1WP0uL_($od6lA`xy-$we3;KfQGb<^daaH^7B?es1B3Amh1Y#h2ImIf)6{MvM!HR(ZT)n zA2I*yTu@&C=na}d#c7Y2VK|i%2w!F!k$yU)Tz1TvCR|Yo*iCHm;kb%}QXbXJk@J3A zuNoeepkc*3F4gYw$a2{RWbgRQv14L+6L`O*^P@SJd#T2q0Yh`vBm25wxzymA*+-Nw zGTjNPcvanDV^)%#j2Ic&D4x8%G*eK1@i=9ppHJjAX?ld0mqw3f?7>pv6Z?nZxk8piL!x^oJHuaV%hS*QFG&}q2Z;S{UIXp zE;vzXoEEtMlb8<@KJ$0xU+6y%c27rpJ!!02C@taZAvZ>-JX9AetF$Za#P+nz%-wc^hiurY>IL&5u62TTAjs`Te@8a|^y5@Q{R4qPbqKsR;dUA6`1o&J7Vy&W{N=vV~ zWj!b@%|iMoM}2)*>u_}S)DV4i;PizYN2ezD8&MB{#wbq5{{&F}dPo2FoZx?v`!O;8 zd%2(TU%4L>z_;Ab8$yE0>aLMBEX3TA}IXo?D znVql8gELXlb{@>s5dGObwjz8wqe%Hr-fwj|QSfoHJPqrT4PG z|6-C)iJD7N+sNvis%vwre|fxEG|(@Rh`VWTl2nF(Li<=v(jwNdSrRAsrkAF7tm0AF z$>NaHIFWPhYQ*MLyu_R-DG(iVs_EW22X|m45B{G&d&nr9pT#xCcjLNqZ*_7RKEq}G zaZle^)e0s@Qc&KZU0%kTmTXu)Y6fv(F705|JDjUQsEpF2tUtK7n6^0V%`U0K0Vl%_ zcq4qWM}zZIOen`8YtWSMoEfNZA#=og| z97=;6WsMONKhNwHmc2QZCo27fWrIXDEVB%3)2gYW@m@Ex!8Q+BgLnmHhSAh#dk(xb zFD6{=oS;=LJt`XLYkz6}@LH&bYB@7FwR!;#9vGyUu$`PSd$0s$kufc80@#MN60GT% zG7Z-)4+V0zAXX|p^$lDv)q$5|z#PbM{8h=iwteubrP&WdF%dt>wSviVnk`ZxPx z4=6xkmAp}tsqnqzYFkBNrvefsKe2*3m2!q-27#ETqGg2eFvg=WDJ z7_~oj`YAR%%l)Zq3Je0dloN#Te1JLJ`IBjuF>XNmsfx{ES0g`Pq_r(;St{p#aEmQ3 zY7Dx&2)}KagDA0+9uhPe5@qp1%l_s-tj__YL2Lw(vxu!KmC0H@6?1A`3AmOE=s7Pd zT@Vg=Zw_6}leap(%X#(X_XD9kkjCCe9O2ZA51u^jj+4Jvo#{&+on3>=$Ls)a;EE`E z2O3;_+E!=1ZkJ>!IfCip*h?*f7h>ljN(!oYm5aBhl@RIzaUJ*18N0x6r@CiA&93;m z=tGe9!pN?xL8XvYPwQl31$U169LSJ`zX%BF!^J?$k0uk9;r!gbbo=dQVE`Do=`a9o zcOVZ;Q_dV<%!ZHTP@-irpvx~EJ%a|xkF=Z zgJj6bQM~PTrff+15Yn3=1W}~OdVT&^b^UEtJE0=_v?rkZHdd!cso`djUt8M%^jK~^ zYd94;eYj%w?vWsRT!G<&sRE68 zot&5jD-@hR3x>tY!#4HZ&P7#OKMLG>r)lJoICh|}*xov!LS>{$zr=Pz4v+cSp+B2& zW_&{|rU%8r3e4mN(0quZ{G|_kqxW9L=7l}^x-)id$EElg5pTJ|Zq>3rv-qJ?GSb$C zq4$Q2*$zj`ZXwU=893Ckm6QFmscQp)enMV(1Y(C>^hZZHQ;VC11G38Kaov96=xcF=szmt2`-rpeC&CV_dU+q?lB=W^Y6p!m1@php?k|fTrYlXzP7 ze5LdlZ^IBfy~GETd%RFe9?NC%Es2l+8R_|dX6~*D&SV1J`DPEProHSF1 z5~o^qO_-l4-$zC-wK_%Pwh<)>2Uhx;L@v<5CMqd1O_8zcIWBum3b|PL%Y+yvu+wT! z+oV<7G^!p!97ndp;5u|_9+nA}Z8@|*jKGDf5FB_RY%+NXc3N8x*k=W@*n4VOlmX<4 zsN57Pw~-JDT?@FbBkCLqu^^^eathk|K}_@I33$`=d+B^`G~1*;=c2HP6pf`BJe9oN z-HUgSQH!$##H?l#v^|%iHO6->~uZ#{t2vD?w+Yf7nLW7ZqBG8!?q-kbw0wzKHFL`H%{;6r%20Ot^njs3JY){ERfbXw%H zK(-(?PRDz>5{4Cq%FHA{qxX0CuX&v0h! z2QjxiUhl#)n|d?V@rS_EBDYY%{NB-ugLaFLdaJJyWM>WQ0x zHdByor(_VU#b|Bf5QZQM*By%R04JvBY@Kwj=+4Xp9wE)W+tAlXK#<#;4zK9(wU+9{ z@^lfTtp-Ba&$vi~x{zP2%0YYFd-#GFJqVIfVYB&S_Bq7leUa_Q953R~PNHh%&^#Zc z!xX8E8f2Uug>dJ1@|x>#fSw7ktBW>@_$XAGlEfKTN~9P6_J|$J#RmgQVp?tvrl>1h zN~icH?n^!_jU-XFe1F_)q2)%f#osE7C3JbZK6d@?H0t*R5yHNp4~w9tMFMIL%QEiP zl7t59EDPwac#O9332u}*b@6hpF_Y}+xBJ>@$x8tvRNPccNm{X-UZ<9;gOj>8 zMorg$$?*wGKuhlfEsGI(0V-GSTACgD;2)zLOIBS9?Y2Vt5VdP7s;S*yHiwGbY<{%&6q3$5w?lkO;+b+ocjw~F)2$=vai3vG ziZAK&a4Tv2A!E9*t_kijD~=dv!U#=|lPH>{_-zLu0RSYFIq=p(5wA!?H%5AuM~ZoV zvP3=n4Cf!57HPnelI?PN<`#Q?KO;?~y%S*PWBC#dyX6gX>5(=#RDr~~l9M8rGMfe{ zvuPpO5B)uo(%;4rH9Rqu^@NC`BSJ}sK7NRVLE1 zw+A5_N9#r;j;AB!lOW+^p}mVjPc#z=DJn*4;w7actY3n#Fofa2ToaQED6$|?Kp28l z8U^Nqhn8Q;gm11G)SLv~wvFBQSw*D(S6!AUsJ``2b=g12ApM8#(SOPyG5!Bs2kHNN z#rA*FLHf6={+}y04p#R6TCr9At=JC5;QtL(AET=ebCW7BUm9U)%qViK#43IkTHi<% z*-#@+h@|si_v`Hw(wC5G=uYxM6nzGZ0f+Ywx_n)(ys7PclYe@9swCL)epf5LsI0Bo z?NL;(-SLiIeiIs&;;YhrlljK06q&ZGG4oWbpe(`anl@5JV`1CX?T$VC_4b$HU8(-i zu8DKmmA)|H;e%GDP=cHxrG)hJTave#8NEM?aU#$bL(I}&9Ob0nC;e|Dc=xt1QLp9W zXB;Wq7wlrXiMV8R@pu0wJ`8u2z^(A~AZZ)SH1U&cI{1yn5qH&5U#^8<@GWX?Sof1i z^_f7bGWkU)Irr~o2(e)25R1+1YjA#z?81A$8uK@g&$5`o4Nq0sp7A75m05t<@Xold%FKH(GNgLUa|b?(&g z2S3yN_>ilTMQ>dwUEjJxT<{uxwOy|CYkuq-3G&_YbruH0y#fcNUt6`nbx- z<44PZTi$6e^)Qs?I341l6A)$oVDi?$t2reRH!G1sqT|67wa4;9G}~iU(tqVbJPAc3 zSxabTKE#_2nYYje|3kjY_h*h&5Fk-@U%dGSw3_CWCxb03s&M zG`k>A@NJ8ld*Bn2PL8=S#NJ_4-42ogDe;GTN;Hx(5;QRa79ue-^ptAh^8s4Ro{7kM zr&x^j5^|`n5q_v1a>VST3_mu~E7;1IE5kX=eL(1=pV4xTlcJwp5D2ysrEIhxHi(Q8 z5`sGxcGT>3UKW>K$Q4|dtuseR?x?se8V&>Lw@V-os@jnn(7i=c&Cd{PYr6waLCb=V zwft51XDv$bFDk>wO;;aab}Z=#+@nw54G4nLsuQT!YF6)V6a_cBcHRT{pB#lntXjk} zmpfNpyh{=MoN||}=a-Z|Hmugxx%&?jh#-mUnThT9wBTGPXBxu`x}8j>5pTe#+Q*Qw zi`Kgl55b4I++%N}O<8I%UR^A~6elHK>pXD3#4;zXPj7gzZkZgH-0Q>#-&AVSpuw2q zwpW~qar4b?i=1oWQtEJx$690tbaQSS=6~k)(B;bE?y^Gh)vtmpXq8?Oh*Pe4dQ3`Z zZzV;5F&){MhckVX#}<6Mg6dIL@eP7o)vTvaWx7d^Ux#LAsoxe3M21r*J`8RekQs`k+OD*p90A~y2NLG@tD6_4bt zSF0?Ztq7+b_?{3Q$`OCFjR%jZ6Ok$V)oOg+fZ-LGCJAVM`0V2h{#7UgADzVrg2iy$qCdZku_++P6^aXT(%w(s!=6F$CV zLFuCT-@Y9zzUJ5W-jv=H@e6m;Z(kuw-5(Jg5t3c>6WPKDM$tN_HJ0_~sKcF=aaK`C z<(?ECZ%rj*hGq-a>u%b9W&)icyc7LP`y2BZ%DW_r4Qb(_XL$BuLb54IafikX%U@|C z1@*b+#7cf(TN)s3&GaHV8~4`!%~H9MWDiDx)CTl*$Cho>TQCA*%fl}$d;4B1elJWeiS>nAqFo@CWL_T8`Kc40qoFMnzWVwj zuunxR$8Z)~4w;ll!>jH1$TC$1P%{58q+SFotSCThxb{`n&avBe$rKh zCsFCtha}t32vbS#>6fh!@i)y#HK2a+|$17!^LgzgSGa0nLq(OP!!XR~Y9 z&o^Uf} zGFqeH5n*3A!|+B?1fnqsvc|fp=D&7IKDUFcPNa86MXCujj+61R(xi3KQj`!bpSM!b z19Jp{OqRccg9A=d4f{T8s4k1of8`H%{!Llp-c2u2$MM)Ye>c)IIVTKysoxXIS5lGi zPAbd6WW&PRFD!t!m}j)$E5+hr4EY9H7b_qC9_C?gY@MNnKA!>9@m|lIVPgGO!M2}o zToI;iW?Uj;gso%bEu349pPkCRGr&$#OUAqxNdiYJ7Mq#tPytLY$8d(w-8{(se$1P9 z8>L(<$`~JkIY%oV@baC*OQDGnS)q5;;(DKVk1gM8BJjs`!!-yu{93a`>g~|J|h6783>7TNUif zFnx|JtL^cxxg!z(=9BrcT6RA*!Ia7!)2QK=2i?kPUlKI{{lRv07ZGTn@qQPq28isv z?OtACX3GD1`Lm*Qdp;i*7s2fPu1u+Y+faWbhEKkPkB4%HYzu+A&}3t>_^13LtrR^( zQ4ANq+ESCZo}cF!?NmZUO9>P*3~?5})5rL~~PP(Npb#iek!crHTVjOf56q9B(9*Twchqm@&c71M)^5KvUBlh8!X66N=qn(yAzp_H{ z*44|g!x;b7mtvZf z9&o2b@JD7zu^>Z4WpuXsgrOHyGmHj}j`#R0eGhv7dtDd>FL`8u;XcS;uIk;~%{H_i z+nh2Z!zF~YoLIG$Phw7ddZ>@dY3Z;IJBF*crKkGLrd!WZ+cPo>;4}13lewYZCGvHD zNUXdq@n>(ex~$cvAYwN_{Y(vJDW(T`SX_BSdO=AhFaF4gC}?p=YhDcQ6R_>^P;a&W zlYwX_XB%(2%fpU5%DTk+GkdBMv)^Jq4k_la%60+XxL>b@E7I<_-Vr98z8c}r(t1iU zS{xD*Fdiy&bFgW{EcZ203HvEg$h#ZjF^-0%0j2w;nk>-Nr;U`Hf%}GFLqaerDr+Ul zW@|?Gm(T_%I1AO(?U3OnXo1S33#(O1dBn)UNR^)!awa~y&EsM=A`KO|sk1?E)PWtY zHfe#_NDtf(k<3Uv@FjuBD~LI9sPt(*6!Emd*Hpb?dvVV$qGErDm|_93UnvZtN48Ez zd)C6TB@T_aTM|CeLD_RQ)ZAW`>b6ILj@}Hse1`lhAaAu}Jq`K5Xe$sKSx^~aqbCi4 z`8{p@z(zkG2ZMx8VoDO6iU?PZ));gGqo$Sk3GfQqKCnoH?2~nBuu8yO8*q5#KMv>F zqDx2X143GP&ktc7aCl5u0NpDid6KdPxAG^{4LqbG^6Ab858!vk*f*O<_YByOC* z62(#M1}2{rO$z)khB&SZj+IDspH-||)04iAWU1-|`ID+N8gL2bae}!>wxL)_DK0=f zLY-DV(>2n?(EpV48Ytd$kL1Ktc9vj{!L%*KH|m1Jnc#E7n`G1$gb(^?d9k-srwa#5 zJ+I7{fj?T4BJ_{F_hUC_g0gnH$G zNxL7pG+@X?H2gkBfbl)xKPx>TU&hDVzopV?eSG;{3JbmMSN;-KA$`O13%@j?H!urQ zevn+-qPKoEJ+A%$9Jbh=!<)#*5wm(lbt5%5Ly=5Z2{(Lpn5|ET7eL(~7zlk(J>;J{0RQh)VEzYKSovSDaN}QCxE|>5C_mE8kAZ(W zI(Ez)BPDs(#; zjw*~g=WJk=J=bzda ze{^#>9WZpxe)Su=TW zOG^Ksb6ImX=0X(ML9ozb!PYdEeRF$ojnA6WRL?jG9%zik#uM>787;hRwBAp(Sw{~H zF-_A>I|ch4wY6++$xb8yop$tOp%r5vUun&kAI&-`WVCRS+kXy5!AQRRT4Y8ndkayU_odScJddUA=V&0Q*m4+=JrakA$*{&9$v9M2VrHUNJgf~ zPZm$zcwxQaHw+sl8??ea3w6v3;l?q70*46>J%KHeTeOxkqjccF$wfzd5e8#@0Oku$ zUOnfWw`LPiVtvv5nEsW`22wFjJtzo-eu&Cz+|2H8fKN-v8#(G`$*!d62PN`HNJ(Qu zk%}r=X@Clc>sVgL|7JZD@q9&FYtLQ(fY`hnazE5*?12nEbK=3^vTkSrn7GrlikY6s z4kNJI4Y@2!-^n7fe|PK{6zL5kQAM>HNPzE1Os<^(=n_a zBKg{H?@{Ba?KAlz#03BVVzu%;KDcw~hSGpcQO5o2ZCciT_39HDiF)!S6nsydNiGU@F;w)eh zP1f)J(ZKEdpnZkY)YT~}aUQNt!f zkCLgr1&OmnMRYA9a+sWFkXE6jHFhT*&8`<%DXDdhvH&UAciISt`BXiC5^Y3vdr|0W zAk1zR5+k(FKEhGs$&i2ZcDF4s5IF+P-@3&RfwCl5krp=n32gK-&|qmbk>DnQD5MkB zlvWA;Ft|~O7-k$QiD_F&M7@V`RS8!Hxa2Ve+fU}b$5^M=g>R-h(K>qp9@@V|MTCMZeG-)*t@4Gstadc(d3 zZN8=l3g3^yLARRs6o<)-n*48LTn}vbsp%2!zKz~@=IFx@42j9Vd z*t0MgOt%rF+?)CBW&o6FErk!u*1cqD`dbt(^&qtMhk?! zH5m(SgJQPuj&CFecX}WA>$kw2_S*t~D=PCDM{La?tT5p$=V%Dt&p2a37xulNNiTI< zj`gCZzHM&vY%T193ahyr;+YI}PTtqGL&bCT=dl1WPH(*qk~3S$a~z5ySTt5RcU+UX z<&vx%MCX3FY7D-kC(^0hLt|OUlE>3sMtaZeB$u&NF%=iGWx-G4WlGX-`Q36~d;L@n zz+hpUtf`E{%?%F4ZjcvcE2H%9h9G2{jgZP_47poSI%~hKe0mKpn}Tjci3)Sxk^r#r z_hSUC-Z6KD!G#nnwKRDuGjD7}w_I;(R2dp6njeY!rUaL1;H#{W&YK#9ro5Y0lY!Eg zUtFf^h9mNI-K`EDx`$OH5Spu{Sn)K16CNAzXz(tr+>z#E7w(gv8kC+ClB#4vu2~9K z?t2x!TZR2T%AHustwU0l$s`FgtS%Qz9+>5FgMvNplXzpGQ*qokG)%o7!n!~BTGqN) zIWuD9opF4;Z||S&%%T#^GXeb^_PqpbO%tA?{GuXg9(he1ZXsTqwY0@CHi=udqBMG zk^KgC<7Zgl2Spne=^g;Ld6CBM*wrtBIc2tD1RtPb4xpuXZrEbe&bq#4E$OFIez#>r zm=R3rL0~eohh!~0(E`xAUjtK&x$J(HJt1GXpNcbYtTPR@wUULJsK{YQ8*6@3rYDLu z!pNgj^DMG^)+NSd@D0bJTlx4hmm%aMQ3|xfG9h>%`9xudSrNrA{OpD_=Jh!5_OPoK zylitGZ!(XlvIogpwz;;sJBKRoJSU_NR?i8b7~(uQ(siNY{BgNP6mi}WKHW3UC|9hZ z(Bjb_paqC~hVU8MIEt`rt?09-2F@Wmhalokkc_j!tl^iESrPU5WTJ zjo41};byDd;@hFuNA!#T-n!u=eQ!4_!L#|Xv>@1wn? zd+2sm^JG*5Cy0+bC*X$_b`))?^{JWADrQ(^;40oX5r!s=oTjWB=X4Bg*;-k253v#U ztQ(lpAE-`M;S7n~*d4`q>eH;uRd3KlJic2U5ORlc+Wg(PdI1htt@c?_ z#>cB^I?3WB?LBexq$SvTrK(M_nHD%#C*0y?A>}dj4yjBt_Nli~uSO{v6fKduMsXHs zHV4GD!BjR~$d-Gvh~ z7{`g+Kj~BkWkNR!dMfmqpIS^e#5OCe6+5TvSMDN6LeuWZi7hv<>A6qb`8%@K1wfSCJ5>59g4Zl1SrMuJcY`(A`l|3VLIGyW}v6iSKJMma)N{a1-4 zT={ud33b>t3zq^0cRV`tcof$xg(Rbfgp%Rm>opvpR?IoH8(ir;&L320l{UI|f`zK= zL<=Ua(hI5JH!rie!O`@sdd&n->}Z2+Ds7TS#J_IKIH?_y^p4f7-< z;iope&7ObQySZ6WY4P*ryF%^`)y$C|UlKBkC+8n_)r7$K%VlYh%mh5fWNV-MBVL$G zA#~6i6j0b0(c*0zSUN)N6QYw=^=YW@6Oi<6nBZEHi0mTFJkty{GKx z=07tXNM;1^PgDMIo{je%A0TCNROgGZQ095WEc|_-?DB$7qe#i!o#l0Z>d_NJMNE-1 zn-^WgAW6}caFQr>gCPNn%g0WP%}IBOb?6y|7>v={)vZw0-g-zg>(cw_)d>BL@9FdB zpO=`4$m&CJGhX8j<+~QsHYpC8)*@}C>ms`t3KW!6s@B8FzGN|(vwM{oH|!-7y8zS_ z`G9!b@8It?0<2g}*Ron98Vxu-fq{rXv+8Ip6=BXSF$3~o33jAbthHD_Cmq= zk&mn;o-n%_JZmtPH92>6paK zEq@Op`y@di(rJG_c5Y4G(M?LjaVT*{WnZ9aPm;Xw5Kvw%j&gEvilV9fQ$eeVbgtY+ z0!vrqK+2!vG|`Ih@(LMtzaGsXa7S5~s&0}nKZpX!14G-+wxiIP-GTlEy#@RhBi|_< zn1igH`aq*mwM?PgJ@V$&m5^i%i}$NJe0$Jpf(d=}uF#{svcM>C=WOX^_*j^0mHmtX zbLQBsy$Wmx*TonZq_BKoHGqwFj29koi`z@|Bemq}cgc;6^rEx;A{%d>6Gg7SOVOnj zXG5p&_>8Yl7aSP)(>uXM2fUAFik_O{;bPampt;RtMQ1*|k8fH{63d&rH}hXlC1T}~ z=B;F>&S<(lY35|wuk{02U7Ti~Hkw1^1t~al1IN+D+&#z7+@OLJSu2%~r|G&G#+bnD z>$WQ z-qqN9vC^VxOFuJ16vVdbMngzyCahgRWF4xJF@_u{rNSq10Vcr;D$Zls4p{mg-p)rL zElRcbnrYuVFxwzs(!R^XVv3^sPUdFjC3FItrqwXA+f>rp6LYEPMReP9+YNMU#WYPc zt{@U_X~n28n{x|AYLLGaAoJ;ofQ@8WrBEZ8Hqob2^PXk(y(`KiNWlkk83GlnpnhDs zl?LS@<3A1$Wq1R40NGwM?M|oH+guIE!}(ST1;nNksb!SVPRyuO6BaF6I>&P$E85p3 zo!9;@3)?2$mnB*NT@LZrg5mYob+Fg<*DK`h`Js9qe3(zMOjfZGb}S6~aDqbKF#@uL zoV%$p1&bMHkLRXyjt377KKo(Mm|t1Gl=?$|8mw&h7o}6_YsQf1WpH`;nH)aWg7&pGCh}kajp}}3Y zyBFQ0mM=@b`kyi$(ez<-S`~@?gM~VbxP%QO$^jFlMVM?$pnI zPCcDKubhxAU0LMdD5M_#5kk$Yo6RQ;wmgKQ!xF^L8mYl#_)Wl)${D6KKW&;MP%$@*pQ4>RAsQm=Cmr9iBJu zlQB&|{2dmBsbPYCd+7WRw)tJG={f$h^e+q;6L%!*bl!|$T0|QQ;v!jf4w2(vuV_L0 zlX7{8Bo!~Y+xg#X)3b$4*@EbYu*hRlrj(`;wi-K3@?|op8UXofIAwF}J0~x4Pvr*C zS5f6uqFzuMNvyNtGk+=;&qxnh%{(mYB&w)6I}TH*d!fId=R!Zb47UUqGF>I3Z(%QH z9`GFSDOl1R@N^#V4D#XK;c2OxH>o^?cn!qi99{ic%H-K-eRj5*uD@QJ*;zC5GalS9 zkgz-7#E)=e2P4=mCcK!UkIcV^ExZm-5G(a3tRSW5P{dW0&Gwv9#I6>!qcGVC&A(w3 zvzT)p=tWJOoeTSRAY~wS3Czm340A(p!Rf~246X0B;7H2FE)Q5C_6>Jl67y-wAr7C5 zkP$L==DGUG02?z&WLc8TcvVJm`*L=3lT!mcekCS|J;){x8G-ZSJ(1CdJqC)K)94 z@J#H8f$UU&MggjIY{LsW%?xR2GKE7Lp1b)vNy0=E=hZGt8>!~%9549uO&Qf+dyZ!a z`d@55r{m+U`-4;Co?@t{NFi3*d9s)rpsVDt)g%laOS=o1xKl7>G;Q%SF!e|`n(_j* z4I4U7OnG!3b#9d;?HmP`!oM5MURBr7BW#axW65SajCzVjj~7F`KI0exPK~R_I0avC z2A2xG6el>(o?TBhbquUh!01?7jJKuE5Z9$R#bC7efN(1GeIkt8=zsum6WqNMpjpm7 z7Wms}VEMi=jop6zz04J&l#8D)O&snbV-rK27L(Hm%f}j>sW=QJFPT zw)F-g$RC@7;wa!%iz54&bo;A>^VveD|?8vE)XH8R^4NEKthzCTh%A z#Aay9Y93~6%6e92a2sRHR`VlgJX0$#*BPn&X6!~<(u3AhO##$dj5bWWLOE$rPLb!3 zQrTwQvBW2^i;~0{jZp zOz}&|qP+x@p+@jp5c7-a=G?3$2O)*n>MnujEhl^4<+3C61+o))JI~)$0o91Q2{Tc+ zn+aW(7{oLeJr+C(&#GDgQ+DY~Z?zSVjFm=mnuU(6=HUYCi>6FCr`%rmJIrC-#%sI4 zmCb@n^Ga44fdQGhPyI6bjW_9u*u@%7%L_f+W>c+h9*o+{s_{urBKnE9vg?U*KcyDk z?|X8a4AiCr)p=8!_KU34A7Tv%2R7VteTGquPhGv*Xa`-o7^nLXpD-o#6J5RM^dv*0 z-&EX@L72gz!haHm+F&2nWP@{N(BY07mN#gO-ZCj|E> z(GL8$2>YvGaR-D5G@uh5=5p9&x&6Y^Z@PU}at8;A90eoTVZnl;u(k%y`$-Oq_$Fu5 z)oqrXCqD7+@`4v*#U2PFYl5i74Ri?ZwFLfIh)>q)F9XsPRW2-TA-!aqnk4gut%{ID zkz*VN|JOle*|zJg&q_}YlNjV-K0K-~&KN%0Op*iBu0gINyh-LUj_GjwOppia%E)mc z7IZGjywzkg$@B4xoY*y_Pi)hvrO-M$dNzbkH{_~p4eqqI1DrG6uepAn=2$f^zc5w; zDyv1QOGe!;($QhDQNlxrRXEp7jK@K#I0{~p_;&2h;bHZ7>QLt#M+qr8F|hLXiBvar zdAm{2YIbn!-C0wHRUE|JNBeO-#(lSGvI$xkBgl|bHT&68)lB@UfV$7!+^7Bn&fHPn z81O;iOK``X61@GfbRr5f)dhe06Nqr3Yy;J?cz@jNc7^Hv2c3^B}UNcG@!J0rP$q03}-1_a_zO+xSkWWT-<)GW6>F z=b-o?Is`>dvTDF3FKP0)Rj0W_I)E5pdLzm8CmkA<+0Prj;cC6^qK&9F66St&t-s~g zjcg}enUnL9A;p>ZC)**cdYM)eKxcRlk>E~)OucWurt#~v2~NC%T)&I%Qa&i9u*3EZ z4%Ukh7LQ_UG@AcGx;b&L=kHr6PfxRSDddEM))Sc zuz+G991Q?nWQw-xZ;U)EWYEcY#E*HmXrPfDDuPy(gTPqTf;(;k@%M2Ty%#|ZQboN- zS~ZYI9oZu7qKc%fB=(}^!MD4E6MBZT~;B4wNY>-nTdW=Mc)CQJVkISIPXLxXvH zbyT&-GRx-IQ-`IZK7ooFV7lTZsj0|R4~~Dm(YD=F>1$zcWoL+g7rb)7XAtpYKE|l# ziXQq~6cqu1S+`34(qlBMgZi?7`qXA)=T5sQlIJ&@bOJ~5OIr%-m%_N(mFod-&d4l00_?-I-!Se$2gDtDe<6@i3;DtPo*lx%^LteQ-uAiqp|ip9YBa9Q$*&1{$J54D37(u`qu;vC+rjU3&yv$` z5#fN*SmI@yU)9&k z>HhNg@Ik}NYC3OB|CPtrdDHue4*%r-(@As0!<&4rzel$~awqK(dXl0WguCY`410aON*ZDqx2!&jQvZD)6*z2>r1oTS0@*Z6d=w-exclc_u04p<;!J9 z4>b-&>5TbQW(VnVDiOFZl#dI0priHcHEjkLQaL z`cevNLxq6~!F@;V4)9BlZmnSMIJ0;xg}L!15!GK}l}jU*$jUFcya@Ar+Ssr>+22&s z^Q`rSA?Anu1EqBn+eKHIHmN-JJb(>=E90(eh!r`R@6Dy~=axxW8i6FY&OB;P8N#0z ziy2R398 zIqq6;T#a?WSgm=|Y;*!PLH+dc!lrPC8LzADZqr0pMY0qq{N=I~;1$+^njx%{z)~-c zIP{nu7lXf{7=f0c$Nmuv`Y$Y-|2B)|p?C8eerc`2op82PM7vZ|2g6;?(;gGmS%l~qi%2{|&1X>$XU1(GtC zji{c|jK$7?*0BUowK4I%<7EnrTzZgWhQNr}aWfEe$0|QdLJEf1p!bdlzJr*D5mO8a z`45KB%Ui zVzKKH4Jq<+O*3Ou500~An#p@uT$AgXK0--<{||B8?TFBlU7#WH7$g(XWIKvP3uJ7> zm^Nr_;PL=UI^y!(df;&}Ib*{jt%iXK#YTAaREKe3f~K1cV*`eV`{AA_9V~ViE(Nn= zd^a%(1Q&c3i^xi@Axm(2a7IGZHVO&Fypz!p?WkmQw&+iOlO?edTofVRnM#c<7BF%R zl+b$Oh%zcBq815FQJPG1_1ILlUk!@$mdFC8fz7rrK=Y;!8e-4Hm^}3Fh0%mxEvX%KP5En|QzZP>yiaxn9sYo6a7ZYv@KUT^;@AJez=RM6%{i7B$XnYevU@hmDj4d~Uvm-A}8fqGD`WNRq~;(>TjuB2-T2I9mqzJpAd zb~ZQ=1cn5^?pgWwP;Q}KZXuu`numEGE%yk(PZ@6!k~X~g!UFK%{@5D0fpp@m=?1D= z>hiUMwk-_Uf_t*n#SJ}dK=j&uK-r9NSG8icV!C0v+34?e67SjoVjq4PUe$D7K9zb3 z?DBp*zsJyXwJ@fUYA-n!S&z34KS>RsO{7KBs8CX=muWcGD3p`x<~xpefN7?6X-gd0OZ*L^iPB_ILwPZJl3RI&63IBj-o+4O!K4`=m$eqPji>+4MV>tlB5=BQ^~)k@gxL!$LyP~+tv0DfXQ z4N0ZdKk}yX86DsBb(~Y2f2S4c;9fpj8cq|3J(l!?AQ`3a2e{AA-U>dRnYn9SUr(~A ziZ&tgsHz&&3)}=h$nkD7{rb|UiRaq&9~k18nwz9$BlN+doC3zHRqTO1GWXwN@(rF8 zv;`l#1b4op9|%_#tOp*R6hz_fcwNb?FWxK1zCUt9UzVCxte*85iEwNze$ji?^6|nZIJoDr*E40IBaR`?1S(LW3V1Z*!vjR}|m2mt{*vQJn@ z2FV@C9nwD7Kmsy5m{7V}p|<_-`NZ#OfD=8c8)LNGG21Ty*J?ZhV|;u)LhO)N5tA`i zKyQZA*{*0O8a50bgM?B}yC4XE{DlrZj8l;l%*g|WrBk$XB!Hge9I7a*k(P6;>62sU zRR&-7PkHW5?i((zKGI13;fp;s0e%`o+$zcXV@TUAHQ(w`nS7>iyMtGaC5NB`$ad%5 zL&x9um&fM&i}z48y=XQL?B<;zhyN8{7gB5Q9g*HmKA+xD)GPiw>h5)MYO&qBR-**h z^V{oWZZdtk`HwDN{+93c?O*S`mFg-PSUXFH#b8~oz_r?am$@@uBmy{_YM=Cq6MK0M zWA7Kg0IzpYKcDKAb2*AMtyvJsk6ytH>j8uO1_%{vg?OOGd#BWeD_ z%YP1`PW}5j4-ZCRFkGw==Ix_s@B^IX+U%W(lsBOL)eIlo z#)QKX$yske)-z(n64Amjv-Nu~n`@T7&MeQ3ueT2YJ^d9-SUnxEZ|FSzAophgIj4iH zW^V!cq-$vWo@wdCP-dt$r%sPWYSBg6aB)f`TguQe?D;GsQ^qOD!;JZ|J;et3dx1xQ z`G-g+Ksld7p14WfEF)U@<#~1pD`x+kU+|^&Z;vj{5BTn%>X(0!dH-W9MbzEd)Yim_ zkon(bwEz3WgyVlDCQM9!kN=N}NwS8l9WDp#Ck=N?n7gP_t{@^|6uRtuo-S!S7=K%N zg7EfB;*aUxo5IjT%*x|6r@CS+KK=ynrBT{Zd?SNMA{SOvO7te&GDxk@MF7>U`;3s0 zuy&w{n0Ao!aBI90?%I<7F(&h1EY%S-&xt~E7+G?`A=OgZEZ0)iELl@o8+PWsBTTh1 zzWrk`09n}19sLO*siCjGES30-HKa&zh&y?{++Iv74=F&!nRzQYRBp6u0Yq{@#6Gjg z)VVL4k?xSLSnAB5%W4m5it7?FU0Q{P5#!?!^kjia{f848SWvr~KTA5!!3pe%8jzU5 zQi8>d!Sx02SD95d7QV=ncz3jHziMNxfvlVA?HI*xsik0G9SIhYI(|rUTx?18`Xw~Q zx{(!BUS0)zRadafTZI-Hc=@-MU;fyB%RrU<7XB4Ri$KdMCBSNoZg6!!R#SQkunWM$ z4Y4kkVq?MAj1U)qaPkWuZzVOXfDXpTc%j7;XTbOrbl=1#WioKmokoKxe^3?l__tFc zz?v-m)jSL#w1>u9ZVGD8Kf=UHC|Umz!b%5(TJ4-u5C^>isW8AaU=B;M{F8V^L}ipD zM5Ks`i923Gp)w*F4P3Gkd%qxvN+qrc7uiZ;z=k%RbnfAJa?lR)@b>v+@|3{$>vNc4 zlmLMu1qbGKd;bwDgxB*1!7dKq=i~Jx1;=kxj`U*$XyWW`Dt+px{?3w3WZN(UR(Rbw zTxo#^e618CldNRe9VT)y5^n@57qg_ zwZ+BCN6qCY|ppmg|6G75KjE`j6-8|0K;bNoWvunO6AM@F+x$d>e}6xMF_ z%!b=ra#>M(J4c2T(?iqrvIP;^(5&U;HK?rP|M z(`{pZ+VYJR;k0**|L;q&Cdao*hI5py?_!a*^CgjNhbTv{^h!gskxhf^Q``y8QdpM2jjg!F=;5ayfmQbag?*Gdn11O? zWbc7Oh0cD~^V==N{m0eUZf)4&_H^l{pKY%Sz@ zK294s6S5Xu68y+2MlRceRL2&&9Z^lTc{8>I5BaQ}BoFznloFTsE(s*rxVCa}R=$H& z{I|hb=7j1g@vONQCJSRmKG+iRpl=vPAfdi+j(^$+{|oKm|M5o1&iJ2w9VSMWfAhor z?<=(Azl0)Oal}s=9~t<0S05MkAS9FVFkunm?5#lf5hUWFdcrlt@At0E?HsgCHLEv5 zPuAKCm*vVtU+;X<^FMWmcRsQMR49aNusn~%)<24%n)fuDhef##l(Aqzl;6l zNmIc2|F8D0G^~lM3(F!)L;)2_E9w{(LQwUAc~-(fJ^<{sue9&Ts{<6zDW>SM4$RRU;mjO$>iR1-gEAI z?me^KJLf~nM&JC&jO&uiZq0F;=(^ZZ^vItVcC&8t(Io5V-#i=mXT8<@vAL|)!Ea=A z*Qkxuw}U7}d$Q|E{#0;*tv~&;+BSN|l!}7>lbq*Dzjj`+s{+WWIBP#?!Zf&_f5BI8 z{dPDE9>2>d>5BaXXnk$&qQiWi&4y?jd+5>%Dk;-TW;(P=;@7w4p;6LdB-=Q5&-b(X zYEIikkj#Dz3aPJH`gqdlnH3KKlqAzuZ(fs@LX((I?f+HK^b@anISyl+2AatFH-n$l%l1pvu#D0evUPE;iURV>lkE+-|}NWR6VRcSw1tf=wN>I z<=iCKWhcLRR(&t*IDhaI`K=34`QIzUOu=KRH=*qlAN`SIF(9VlkxXaO;zn_)xOlH( z_KY*tHB@(TUiKx&(DE6nJNg|w?|7l~`9_|_skXlw9!An-tx3OKxwhRmJa6IEH*c@C zwAg0YWem%)yEE*L(e&R*Q?oXh1M_iXjrB_lPD|DPmf2q?9awyQ3ENoSH^%x&pM!;q zcb=;;sh!_CGQXh>2ccb;?R%2G|%Z-Z8vWpDMlw$2U`oFTYjA zJ$+VQF1pe7~;5+ciCj`s$U~_9`(v7T=wLd@XD~gS9!{L zQS(^;Wo#Lhxu)p=jkRTe2i0k`W$BRdb>P}!rKdYCGI?}{%sm|HG{q&2f8KIZX-P%xmG;-)P zZXW)3o%w=`jT_dlFEAn&G06fmTZNgS&b%L!to%50FTUgta~`&H4R=jtin;Revy^yx z!RrIAvz}HvJ1EDMMZL20y&4GpzHo7P^127xV(0C_td&=JE`b$OYEqrddSe!mOXqNwrd;tJI;U>D7c1-G_cNCZM>m^>rd#Jy?u0rhwiNl1cyrc;*qzR? zJ*o-mr)$hrT__d`19z;6&s@I0psZg?Lr!oVV!mn8)9C9juk8wNuDreSkBu<(yqp(s zW@o^e+loU)Me#?D#DJ?`7Wef%QMPwT0B7rHkFk3>>Bf8C*cVi!DlBUnOP_OU^G=1P z-aE2p7Cw&l8H_YdEuc+^dGlgVimsB^I+^4rM)R9lG13jaV%; z-M;o}ZxQP90`HFHIazcV42~6R^`uW11hlg+K(&Yz(ITBsZga-z)QBVo)dFHPQm*nM zHy4+X0lCzREMf>CftrU#$^8;=G&o^Oh$JCK!jh85aY-B=NMiP+-cQW<+H-}jw4;-42eN~=|~K`<^Z&OMIij^U9Y%wn-Xhze4v z6heZciC1Y69Yv)X*$&cy!$&m|T&~v2F%_W4MZ{RF){9Km8+!kF*Dj^{y&;vx-OxsN z38n;fh#G|5A@Czg0>P)%l*(Q;rIPn*>R4Q1Xp~d}q6$=rs;%osXmCNG!h!*8iAu5dm(J8QJ2+UwJAU2KW3K5Zm zIA9OSPF@WdJRBwTKY~H+iqS=~2S!In{s>BUPu_KUgKQ5Rg9Qu^!7v5aTY_U^L<Mk@Z&O$4?mz+on~zCi^-=QYb7N!WQZ_7QczPm;Ck2I2Duu}D zEDAy=C}Y7?iIl|DoRHE$?VIt0kaTbiu>0a7Vp^$T_9vo0VW{AyBM18%X zw7X`97av;UNF{87S|y_8B5JilEP9)1SfJ8(P931Pt4 zOYTHs=qA)9y!!IVXnY)oOEq2Nqes=TgRxj#f*Mkf9F=nUY<=p1=&&bDXF$|;*bk(- zqwCl_OsPgx@mv)qG5FD0(u-t!w(X#`ot!Rv4MRnHDX~u?c8B2m{b7erJLCV>cc;t$ zmIVU$i;>SF_X}NL==v-MK1=vZ@A^X5XEE?u!e4sV|BWtE=NUC|!^(>sN1QMBa>`Eo z^z`)hXY-gHS8zS_59YxiyMjW6sl*#j@(a$#odwUh2Ibd2KO5kZ#)J=;t}t_PSnMAR z$&GB`MZ!uO5*f8vm)c;R>*m*B?H3S8Dg4F60_wAB_~2i9^YPQu!h85g9F%>^NyQoc z)Os7!+KBTMDy3yo;p8!uHsS=iak3e{ZfF0X+fmiiwzoEqTt7A8l+rBO1tBMwh z8z(Y3kxwmGJRxT9)ufG!*S2jtV)UEUh1MkI-Cvfh9&~zplZu!=pC$?{>y4)_a|!sU z1e2md1XpS}9FT`8VwEZlzyO6fDwRu!V|4(ga=BnH_b>hVVVns*JWmh4H=PDUz6?6u zn?+^N7?2O0!DrB!GzN>yp%bg|&{@9TG|0!-1EMp$z4;6l!-qv@&}a~!<;e{P{Z%py zpi|pdLhhKz;K2f?VwjdFH!K+h2Fnvr;*UprpPD`um4Tu#7@z@gc<05TsOw^JA0sE< z%Gr@-PG)A6fK64o`KYh2oLhX^N&u|&cjS|f8SQg1Nk2C}Ckn`D;p`-``N(m?- z@o(^WkLOHvN|pez6k7T|{f)c`y|9Yh8Q#1B*e z7y)<%L6^l$#Kdsn&ag``fPeYJ#S(!2-i8d^$^{13uyA+sK(r|B;^^h%>;d2fYPiE; zc2=G)?f@{4m>5vb&e0R@4wQ4W@PvP_0#uYS5&`o`N=Zw}2ujI<`M~_VASnS}K0#iv zAV?Ylm6qa#h>7qb@<0$-X)v#pEEI(J1(D>Dl7YzafCYG={QUf4CO}1J7~Izg(Qydq z@`tqxfS(6}pcYUC?rh^}3lI>z#K!xon*u;B7Z*ag>S}LSK>PgAZ9zX62^mR(2AdWa3qjZ4K>tQz z4^InsPhWSqH7*ti7mJBWR$UGk>o=<7VnHvv@*6*;0bmg1m!w1xneRt;!3bVz1Niv= z&;@gI^XvIUXryRp-b`p>Xedio=4dfBAXln&4s-LFm+kG31Jm;gLJE*OWi@+{Cdpp5 zznbmuo9%q`va@tgLF3)Bi)N$;PQZRg${-F-alS+rVXp|*^k8@U5*s!lT<1Cl2#K&6 zZ{-)=yCU@ufwXY8VLiV^>p`wBP2!@?r8zD z@U#GYXO)J94P3>-&&A6VsO}8^E@!~YL=ONz_&YNZ6|FpV+~M#m77Jb_UU60$0mjkA z=69jy=lhAMF3z5CXHO3!{;L`Q{!8K30tkSB}@8GeqJQ8bBQ##H+w%KH?P&5WMOJ;*|#gz3PJ) z;twJGo`?Ym00FhHi1oc`55#XB3ri26_V`HZ#nQnT#FR`#?4(;%<(3{Oa4WfiA7cBYq;Zka=>=d zYD(E+A7>^s58>##~ZllnBIle8E0l1IyCteRUBoFz3Kj( zT5O~w@e-)1PvBwf-WS}PIr8qfQiaXJyo{x0UH1kJr%5 zx-y1C?DpWt?zKTCq;c{S#Rh>^r7_mcsusH7xu!W@UFx$9?>ygTt3isg&8IQ5i%uPr zurvJ#)MvLc=Z4G7nCs2tTt)V0Ry4CQ*uEotf!_`mw6{C9BuMb=ZwKi0w z$I?y-i)y$euNRixpk zgVJ5oyTQD->>nOfMC?j32m3va-C-RlboBb1eXwM7%{ww^Q%J_C^Gandann4ZYhJb(XYhz_5dA(bUnry(+RliuO@X<(Ue-z4XhkpVO%5UUx9!Vm1R97cs4ZU{jxn)gKIL(*`l&?-=Gu zAL*jJa6@`w$icyIl-7d&Lf`8?5P7tAk!7*0o9czG>=gPf!!1S~K9;<)kM%PzR9}-| z=9iV%g>ZKblL%IgB}N_VZQu<|prost7|Z$RYPq48Jr@eG zPx@4IT;gIwN*(Gvf1B`e~x8&27Pn$2nQ}h+c0O7VK&56XE4jnQ)4)BBb z)llk-9)jLTt0&_!?~FO4(?esTAeuiVy@&kKLeQiQ9m7hL)uT#)zeLIB)*atSQ5oJ>G|a)XJJ)fL z%Cl^heziDWPT2o`a{X-s!vg{RK7%Sm8z*(xzXIVz?gU{`&q}*}9Pq{n83Xs`%^TFA zyE-yKIBPU>q!)r>$b>T6(T*>~KO3Eli`5hJtP3Pmyuy(Nj0pBbP)j9R0lfH^!Uk^Z zI}5xieBM4UWRqh^kzeL8xz4hW^*y5IMmB(XT=RlmO>m7UR+-) z*yv<&_5%XX4z;IbqAOn*2Oqw-QpG4fSX%^f`{&&A>P?r^@nV{kIHR9rWxP;dEDdrs zOBXnNRnVXcS8?0fp=4PMyUkh;QqHXjBZ9>eVC*<3fkQNAHN_FMDk62s`xUJ&*XRF8 zD?Xl|Ha-f`aazg_vl0YtpY#Xayhi@qZTi%T2q1d0KxlMQhQSV$S>F&{Jr@2vA# z?nYBVv=gN<<7QMDpL*^q)xOH~ddHZh1eO=KS3f6BDxexlDg|s}8>1|&K zjDM&RQz1T#>*qs-OL)G10-xpE(O&bMy61<5H9j*No^Z-Z0&BeICrLf6wAzLCPQ%?l z)i`Sd&VqA4nD2Vt(->5o0W}fY&(C(tcbCYP*2n{jJEJ72NyY9`xEAtpEH(9tjlMY) zXFHsq_6EJruftKqkFe43LSwRNxi=PVJm#BJ7n1NPkg4ZFOHJI7rxcrPO4Zhcd7yfs zu$JxskVPJ2)LJu-M9IZ9p=z{80Mxdhe%bqhl5u8?yb`vScbj`N%RzL~ul3gb;%&1+ zvJ2%Vu0o|~t|P8?q^yW42cLRRq6k-_ zV!AD9zAh_oJ&M%R1-z>^Ou--`xM+h|u>hWD&@9KTi7p1vaD3s($;5Xtk3++?{!|K3 z<6{LivPc+e+o}qonB`$!7~;~!M~1|7P_?EVvDH3S8^=d|a;&dl7CRs*m!J0ux2;d+ z=E2)%sOdb!*ezcxViWt0f_?%|G**-2O^(Quib*j;fz( z=C)bw!x>pT2cyi1wD>J>-Q-7YAE%QAkL+&J^qmj&YvmH91cPWfuCkl~)ZuQ|trGxL zaHZu|GZCa5UVc%s~dAyUJedvR^y zse2n1NoAc*uS??h0GNlgGRcsqGTT~SliYadu`{H~Gq|)&>W`g}9iJ*a!nEJ)=Vo*f zpw3!zF5|GJF5F+pq{myLlaTJ%&rj=VEKo_f; z-mfhjHeLx>2=M+^bZ$2caH1%w?=yT}X@)cquPyWFt3+xojX4H-9iPy_eZk z>rz>^v*JL|BTc(OV;)Ke2494H`5IF1W#ZM+45^u;>y*yU-=OS&mXLNoAnFcco~wUI zKk^Hiy!!I^&+{CF@8>n4P+K*2RsyH>oBp~Way5kJ4r2&`ZH;o@c#-H4Y5%f+PG{HW zhJ50mIcj84Ms0h7+ zlJLa-Jkpw_ZhSib&49v8!r;A}SmTqt^}h0TD@t3a%}~)zZJQcEM)i_$G@9$OfxGqH z{J!2;6&Y2!?%??Xyef@Z_tSpEp%6BQ&9x^`n1u@UKAc_<)Kp?y>jDB9j_K9JSn;45g#wW}(wpV^WMwgB-htnuV2sJlz3nDh}6ZIx2oJyv;^ zFCCa-rjFt4e0}nhIeBV?eh>G@0fM3s^<%t#IZTp)S^%vbW zHy*AyB`!K|+r)`2^EzzETZRqm`=iG!kc~@tiC-6s`PPQNb^|)no>-17U=>&WbhWj_ z>&2p>N9OLe({HS!Vg{$eJ2a8akGq%3UeaDeLzP851>JUu8CP?lq-glE)Pp3(V6NT)&aj~{+ zLuJ=uN7I&=xwT_1hDzy{Qrf!+yBXUWC(HKgvzM}LsbEq`Z{oo?%yf-s^hATo^^q#_#FQm9uDLQOC3hE%8A`ch?v0^x(VC z@_eStZ_|q;NAtS3@GPlskw9duZfd6$ea$tV?1vp6!C~eHf$ug^t)Goqef7c=3ONp_ zW|S|!!`e=?#j0z^NzQy5qMIaQTQkU($@T^GfMKCGbA|;l$=FsTm9bsr4=^s@z#Wu( zqWO%Zzoy-VS(-=q+5AuChBX(R@l04(rTGWl^(m;BLc2)dzg7UlqO8i-60-VWoqbm@+Q;)WV z*Ka6J)22Dx6T}-yUhIenD-zC1->wo3GRqaH zn~-N2T@YlHwcEx>*-*Fnl9~kZ&wJx|kQ#6+CBaV2jMG9VS1W5gZVs%5HVybyJ^qp#Fq60S@t2DbLV7Xg6xC9+W3K4lV>wQ5upS^xC zv^&H~<&h+x%BFqvSZ<%$YG+v9Bd3Sb(v|~J)Z|Xr;x-tq!Xe~h)$fOLNG5bSi}C0_ z5Lwbo#@gdIevEvlD8~xJwEOgwjCrB=x`%X zeKCy%C;v%GRtuHpPpG4hhtzxLl+(1yRz41ozg13jBr4IsidV{R=pN&6Br~|Nfp&!d z)-XFn;rt!iPGRS+FIOl&e?YpK&eQ<4$#9N-19Pj z35H=a+M3Z%aakL_3`jDhqc+sJov{$_%jO6TM!OT_W!qniLv7V0Fl_%2;P4%$nm5I~7zb4Pte8m)SG&+J&~>f?xRWT*N^R*~(K$|ZL-GSx@R zb>qZ>_r5$(K1IDTD;a95AF1V9M5mvDaa-HC@O~-n(d)POTnU0>?-XppX{>_s;_T<{G})NZ3WBhdsK^dyj^EJlm-8i`(>Ku(XKR;RJ8i7 zmWCdYqH*ayTaqO;1%~*#(py-uf&>ve^%7~<(%?Fn8n?U{a97?&a!_zHr<50E-%;2O z*>W+Nc33$8yPs1LyGfhIFcHB%4p#P1wx{S*$fM+0n?^=`QS1=&kso!g7ejx`K~b6E z>ZSVp;pV$2o*{7#?d+bgsH4KcO;jdz6a8iJp(2 z#z?M2&=31icyDDUM9|!|Ju>HbLw$}qzxAmG(`BKon7#F85(e;PcYWEsLl|n)NOe^d z{LP>=rmNZu)SF27v&1345~rUIEdKp`1>yU{cPcDd)#c@-p6HlFOeiXnk*g?;0Ns$+ ziDDM7G0)C2wGxv81-bLZ!+WVOJDL2pW?X1kK13*jAdgmYgh(3QYb-J5POHWmkfx4< zgI++mbCuVvK{s)fGkE1fuRk-_QYg)lef=2n*kFac3q}G{4;$BlVPcm;6o~8 z6SCP7Q#BeE+?j}SnpwL=FL)1O(F(d>6}}2RpDZd;)>YPDuS8QPOmjA98Dv@!9rI!g zWV`()c+Qr>>jAUkh3GZvjqVM5>FPnldzcgzuB+{YxwbWg5z=q5X}XToUfLXr*X#^WwqrfyJrmDRVyoW6#Cqfsfb* zW)u>y`V#sRO}96<#B3LG#iS;}nN-)$KHdA$UP8bX(iAwI%Cf$lT`xk`P~9=~h9#nY zBw`Bx0?LDPj&c)e>|65ruXyz52PHprdEl$#k)MaXrMY>|yY=Oje#Z9pq-=ey6`GZs zo!?LoOA@geuG;Sk-6#il~O9w4#Va@wMUhO@gxfy{8X?Flvywl)pWT$P)Z{n|Ks z@C++ctsuF=ooma3dnwl+30hrG;z~)ywGMk74U0m7BEO-Q;5SpWM^%XHfWCNC!wL~C zkm(p5AJ^&tGl{e5(lyjHF!I$KbU=X67mooiSgRTNP#=@pqhstglQHSBH?Vy8z|4Mg zgFJcNogRsmlkUj~-4e)>SU8bDI(TI~pNI8ca$jc1H9$L(Vz(ghR}}iMw4LBTeAwEX zOI*W6LVVC*Bwf4qE13V4RuCe<3;FGY3XC|P1OH*#jnljBNxVvOF~5`j#w108AFvX^ zGfS736dnZ#XN-&(ij*hVyYBt!l?gxHH5BbfBJ5Mdcxl}DrK`aaSPIDLM0MyyeAtv{&quEih*Z({Se8 zSK6eiE-c*Q?Uq_Q-5VJ%UC!nS6It|Rzb^rLMq zUHLv2zIpO`HluDD${Q!C+V^ecC*VZ1L))m@SV{H=+9gSno?T+Y&v`JfeviGu!Y}#r3@m>&WBOV~%|%oR#%N_o))M z^uR!AilO2pLC)!}b1QCvM0e^GLF#)H(V0Xm+Y-#z5^EbCV@ABu+V+isk%4lR+SEH)_l8_%jIZ)4Yk>QW0+Om%oowvBp+B{rQ@hMN^D- zKsR-XdjckJoE@V!U85bvP<~HouHLw_e_Fn0%J4YfiBcS)RhKVVTPMbUj8!k1`XvFO zo02i%#WE{)p?*c`NN>SjT!2v+IQw!&NQgybJbl*V(r zrGtlE>vm&NEo%*cbkkDQVW0EJyYhW**sJ|{JE4N zQh%3}-nQ}1+Jv>c7Rrkv^&ICb$=wnTJkQZDW?nuoy=Ey6EFPn6GoYZn=uw2r|^2ZU<{fgnX+&~X3)nl zc6-vOMyp&o!bo=V2G(wlr>RVlG1^}jHHo{tv#EgCRDE$-t1ML3X$GK3k(=HDPomwzrAS)a4!Dx-1FIL{x{C~2kG0+ z%I@~Eto;L%Elt)rz_D7^Nu8t2MZNrQeDD2p?r;usym1@N4jJfT;B_&Sj<(j2*rzBe zr+m2}fjL5^sIt4B+Z5hnEJH+eUllg2FiFXfYN+BSSLlyTe?4J=DlIuL!#CcuwG*o& z>DGezQ%%!%`{}SIux!AL+1?)w2T__gB=rlMIycer4uA4n%XZ%*aZMPSdps@@kq+K}olj0|urn5SS7z z)%IafJ~mzx%1wUf%qK1tsgJGy%`*c`r+tX7j3!4T(cnJMvEj_sTEYwzSXSBKbSzYN zC%gChn`v={5!u@E2U2~#Hzv1g=*LUk4)yjKViT1#~i{kTVnxB86SENEF%j;pfQ zvLJ(nz?;;--JvDV8tTP$%GZE=@af@~RFr1MI?lD}DuZ(MrrYsfeEb+#dT#O$+7mWM zO{ZFMCcKy5bJv&el4%_){Tw?GL@OmUn;Biou6rBQnZjP=&(v##tWetRER{cfhh zG>YN&)Zr5Gj@1)!blD-wsmDj3W-UxCC{UrIZWj1+3@wFKE5T`wntCQT@K_E;KchV) z9<%e1?NrS!w-0!#Cic*|;wv>7qezJ2d9V4@u_0eObw-SHX#_8JUR;AkBDTD7+MADP zS<8k@+;`t=q!MI6xBD^j9{Y_au8@t1PUSMP%xC57*DAbO5MgikR2tvVr6GH#A#5sp+xio=0AIsS1GFr?vX^U+ zi+zx5GiAMwS#9B~!Mgr4t4(AYTyP~^NxJN-@W^ge}VW=@ST+->q?Gx_^|M}O8&0@)7YaSt=NVQOs zKuU`S!&)-*>?w6)a(<~(eO}K^1CnXNxKL7GdEcy~f4&Icv&iGV7t)4#L}-Ba{2B!T z>dSVtC8&9UhCD42`nyjb&U3n?Uw6OqO^V=l3rLuRxkwNU~+!|Z~pSaLj@vY3zjh+^z2JDe`HcR=fuLT|p z&0ce^Im#;-#3zb2%iAI72BSP7anWE1pv~|!WZ{2zT>RMBH+w3W(&7%r1Is5|%j(a`jiZAEV$H^hZ$D5AE*T3d^1Me{Wh7@T@M<=6 zgnf{tk4Lqa#|ZBnwV||5yVO1H`uaubEmHkaZ!sT1gD;sLLMRtoci(rN%vubCdx&VT z9oDjVnO>KsLc?vQR|_2x;YYlG1q7YOfbcLXwl%v`Q``<{sHC*EeK>y1B zI(tPg#*J02EYbzlGUDiMuoJY~uAS-v&Epi!Dkm*dAHlpi8Tjs)EM@K4wF6=2rA!~> zjiQcClz^}8cWN~v5@D6Q3plp%wgXgzPA|0~D%`yzlsIPI*Q0N0e!1AhyXbLlqgAy; zueo_UNkXqohF$rfbyd|Ps$VXYui3%r{+o%rJG1+m*~v`3BbhZg$F~d=`=z*4E3PQ9I&6dkRs?f&+@8U6k2TOHYk4bIlMxs;YmzxjrWOq?TL8J>&9(y?VIWLd9DX0j!A_Tlbw?!okoi7CEni4 zFEMrH;5FH$c@$JYirzEkO|Z&uUqbp;M$A4Ru+bYIY0DxzCJm&Ih?_Ebj$Vr)LNoW( z%%De#ztV)Y!-SJqJ9O28&yla6C9bA}mBWusCqZB6fnA>EDVN$nH@1?bvIsPT3|g+_ zsOE!NDZW{{!{ud4VY1$Wlfzx=-L_oe-G-raJ?!zmH&a2;u#BRm&2mxafEMoRs)giR zcU|=?ljC*8+v%d^%=fJy`hQGa=~3E?OWD*)nN3|`W@^+^tk6m!QPR>+kyUb!w$yhj z(|u4ftock=H%(WOL`Q3DV~{CvSRA9-ag|ZIB^Bol`>s~zu_;P1R%X`g>tF!N+W^j_ ztT;_TS&?&H<2Wbfnqcfek5(NLs+5>~nI3*&nuHlYvvvrB^7SnWTThE*&&tS40BW~gz~_ zKy$qKACHUssw>+-7b3!TSx+?9ngR-U#xC5y?8j2Yiw5Dv!RR4uo3!=N@-J2A*$Ca@ z>+z)GUwrcZbc84UoAD~bX8F?a^M8>g>JRf%@Ned)SC**X?Nk5E5*7R>mZ<;L!4Q}a zB>1y(rBHv?`8_{D;GzDYQ4zfs>qkpJLKIu>8SAkv(#OGKzOhnun={!mdvEowUj(j6 z#iTs2uHOn{(qde5|1jtppc^-Qr_sI)+1NPePD@+!HQbC0eSv9^(2H}EjsSElbAd{? zvI{K&$!aQDb{&fA5z0I{tT#*iG96fR5xUp-{ek6y^%mB_Yb4CK!kc65S3-cw$tGG@ z=pMu@1!Q-hIL0sU=dP6MAH6j?POc9=4BDJu-o#p*4kC!Sv2z3O_#5fkLKY3lHY&~5 zQlEND&GM^NNLzpH!|>!oh4R(G63tKt@uU0t+kH zM*~73%V?UnmWC;+XWlh;9j1%5r-wf?Dy`=pOD5-jN;@q$PwR>Sw4L{VvDdTE)Q!HR zv5&dLpdM7{`XF2?j6-?G;EiydN$U2yj%m7hHne#0?$5EbHw3XG%a&Jfr>pKm#@8XX2o^M-_{1k%tkvEbn<|*jDtovA)AM$slK^S#xN_xUQ#L^Sa4`1ayP^&?(w=&-9i68l$BQ$;(RC z@(?E*GRkLmA0JqhcOw2JkVLYaDp=;Jq9PT}-C7v1bq&LHrT-j3*wp?_|B6XBU z(aubkYvdF(x4)2`ysb$H<9m`X-6^E!1q7r%Q2#WnFNsvU@T|1uEkX18E+)tcU#p;W z&3uxj{vBmBA@yF1KnEc?vlXZ4V^dD*R@)1o4?TpMyAA~SDFrsgvUgs+aiV+EEVx|q zb&MWp^W;6Io^j2s$ARCHEArowq&0GU91><5$OoMr>W`0|O(^DlTFcJF`4qu$ZBS`| z?Ou5A+CliD?kz67!sxrePm z@kGfdrfTbgR2O&D4A``HSQh1u#OGNf>7s|owSgwwUSpK6TjDz#?AauU>I!1|_2tH! z(Hl2C_&gSUcZxd-5~;tQQN&?0uSh07fXm(vP7AezBX0ljSeG;i9>1xS?6itBb*_ zal_CZ-!M`hSD&W4r1U6T`Bj7RtNhW5S3dI&gVbVmQH_eMGzol#x6~MhODRz*<}#`Z z%Bp$>mqI7_UTC|#SagqVlvB3ZqPhK+Kw9G=h4B3rJLhr8A@4+A86)m9nI}!pRBp;F z7hbp8^{%u3y6vS+i5qn?9e`T5Qx4DQ+vW!P8-LO|d9GZesKU0rE;8fj$5gz3+9eRv z4*&9sEyHas&#r?n9p6h@-sF|ZeY|znS7vtNk%zIebg3sBAL(3-_{N!a>PCtUy@-&F zxO$8W7W!(F&AZeW}vuAMt@uC50UHI?UxK3RNkM#?t6g(h~J zcU-A_q^)b;3)L{$^QoF4CZQ%D@q!O;CkNN0pZ`MXG^^*!;9|veC47>k_tki{5tbi^ z@^1=!X!WA@zQf{~qjR808Y+l6!ApHwZ{Dd(fj|7IVhZLckxQs)Bcd0br8?^L_F;sk zwH490W>;upn5R+PIjK3)%l$UGU#yUSe!BbJWq}ur@QM2FASB2SMYt^R{pJUx{x2>I zae5}|vmoL#jzhQGnN)X}(>0jPL3B5zQ$^`$uEUrN70Z&84isI?MK7EKb=QR8E*?opq`R;43m_Ep!jo0j`B0>8EC~T*}?rq!Vr#g#$-8WV5D=IHi)kT{vSiZck zaV9fq^ncUPcWc6j()&cqTU5A`>{Es1;wPf>>G|gl`X#IO!lDkjlBU%Thl27vV%B6s zHO^(n%F*Gd2bEqsj;3fS1{Y7?deIht>ZvcOFx@IHFPjyZ%cE!6YStbJ5*R@oNM{Y@ z&k1~59T%4&ByX84e!`<{=r_)uqDOwKr|dky%jn5MJ){!E7wXZ3dIIBVS{-}YlmbxoekcpYH=MI*B{QLdB zXyPu<#}9DQCLFlmTNU>-D|T1gL1XmYv^PE*bMUodTCv%;sCshB#@9zDxM1@wtor+N zO@3YZ224Er)P+v?Jc3L6For0K^(8jT7S@KJ@*JV9F ze_nk@d}9~>;r*e!V9ucHQp&W0+g*VGdqxu;;mzeJ6Z+K?mUbj~22RH>2JufP=)a9q z2$UD$x#VT(dF8IBs`A~%=!c`&@4G$`abJYflmpxoU+`9C zR9&Uvwss2s?r?2?H61H|2P-IyUR(@I#8=4I$<+zrb_Vcua&-0(@)f1GK=?qyg%IzT z$v}F*RS{1IQF_VC41j^E20+@y9S-2*=H;?NI8h=zw79{1P(dC(P5=)GanuKb0>S)T zAcznIECdq#;Y&#`cIn_J;tsPG(vp$;tvSRmQF>cXPgfxz(8tGz+Xuq!;%);3L!nS0 zhzH2S!-Xip<>BY-Y2nM|?7{FI$PYL&a1SeYJ6BIT7iYjFTnkHttDGo3{SQyVtEPYJ zmy_#18glmFzUm{lm5US5*TNMD<^}=(O(j*;KdTN->J-ch2zP`# zUHaW2S_J>Hp6gHa_yd}V3`8Z!zpI2`+iz6-=UTqst6dTQJ1ayG92Zh`f!SI6$sio# z#CSkFATAIu7Y|ei3=!f12|*wnAOz&U`QjJMG>B@{{@VnO8yg!AA0)2e}Z$>f{VM3i;JU}q?NmirG+N|;U%nU;Q&W?)~Z-54ZCCiNim}hc?{pkEuU09PPv)BEZWbgLwNL;AQqz>K`lqK;mB;5`kF> zAt>u);VEX}>gs4`WpOzcfe2w00sfx#djpr{J?%Ul;s4a=B_@)N|I~%wk-eNOgd7om zw4(IBTrjw`g_olzJ@B7kTp|8PAXiBIb9b{tI0G z$O!~Vey56+}*;_krSYSpb5hB{jV_fm+gumcqgRc?gI0&g1d`-pYajn2%utT z>2BffhZsuSh%r!h95HAlD z%!7F2y#o6$rTz%rS4i5$$<@NyPt4iH>bD9%QhrhL`(*ortlx?A)1q;e@jVr>Bq3Hq z;6IkbA9cP{{D12I-%g%Fakpb{tTsn zp-ZoO0+dm+u^}F=FNSy#kpvigt-NT`*wBITEY{juIEUux;jIiB_kJg|NP!W#khfc9 z(rPxAfl}GSz1~?gx-R>~^y!lvLy+!+f{W$)_}GM%!m208T~o}jx2A%x&17aYfk%1q zHOP>4eY0m5{r?HTo0EY0+G8cvlA#D(?_yK?(%qNMyOTu~>%IF5dV z`mppalsg!U`bKfO^h}V=~N#NoSn0`BWV$;2mgXXKUw7duZZOIFTtDm z`2RIx6C!ZcRdAU3;>*TL8}4ZYM10c#b>P09h@e;hEQ%rt~Vs@p|`+ZCDyUy_cE z|8*whSBi?OV8%Zp82=@m#h(Q=zEX|+7M?@O!UKL8PZ=m}pe3cE&Y@%H1ou#b`)Ij1 zSvYHGtLgwRk4X`VPYY+y%W@t7==X@rvd)Om=XTCEKt&kBM8eL~k4xbn)=8K8DFgy8 zy3Tf&@zDX$OI0L77jtR3bP445_{vv$qyHEw1k5iW@VkMNLUfLviOVcMao|Yh(rh7} z9%IZ2d+7CeZBObcuXdEpJZiKzDOR-!E4Q?+UwnITTT!XzUR?(bV{+5Vnc(4^^1=$4 z{)_qNtD44UW`PE6FG#dnf&x97iOKW_!~?6h!+|pO&Y-l5BYJ}45A?gDX3OHmBK-l$ zGNlD|xW8J;XQi8)HD&@LE9#~kQ77jn_sN!Nz(`x_48`Fp8rNuIxI?{_Svn4*Oq zI$NK;k9hjc=bYmegS;jRr)Md^bQBmDb8@)KCLSogI6X zZw!&kgt?PvQ>r;l9m?jceo;$Yht5mVYD%)$eR7*mw-e5$LXPlIjR_Xb$+j&*FpfBKUD(XN>cC$Me-aXWd>0?bpE)RjII^! zC!RnN-*mcjH^joEeh7T&jTuQ*ZW|{Kj{(S>`w)#Qt3l01n7v*`` zPuP_$C)$|Z6K@IHN#1@??hbgwcWQ&1AY7M4Ej<^}_)O)(cdM;yYX0tr7AC1j0~33B z6zbO#{4(Rx)W5xh_HnD;s~Xx};e3f25qMK=`S}ptdC*gls7;KyQ>%d6iAV$9}*&?YFN#;mcDcq?~?OCo6sN%wq<{<>|<>It$ZWdG>gNg$vv!V`>mt z(hbUH0kf$LX|Nn$#SnPZ&J6J=%cndjB8V?U=?--cL^V5!@q?a$)3gNBwQ|uXy8N2R zBLm#JCpjijUlqv2u&UX0@_AsxV%i9(C*ANr+$-HMJ?`81hP=37fAoyP-VK;xkza$s9K$U&r((lx+Cx;BnQI^@7i=HEC1VXPF-gqpJL!GmXTixu#H}kY*2*cw1 z%Hyw=`dY`LF*1H`2!FqZiPsLTuDm2&rp)qX0GTo$Add7J;TVOt-7_rfvtFV3z^=*0 zbrw|%v?r;Aw6l`LpDIz&_HSB_HFvjbU)+YBO z2;aOk2+!No$-0Z`o88^AHb0xa+CvCcWg*Ge;sj=FowY643AGA8e`OlrT?l*_!GWO# zOo$V1=e|39#`lF)vW8$I{45`tF*iW)EiRR28g(bx;))lTxfj1gtr|niSO7R$K~cO{KpDsG^={WcCR7 zOGG2t;iVrWikK=K+;udCOy9%gC(quxZ;g@N$9&@ynA51}7(3G5YY9xR3k>jXjh1uS zkG(*I!XW{lyZ_?Y@Gt}PB6Go5!v)Way}@SAzoXW3;WHjqaBVu1rPe6aWO^1mavC?mf$AeyEe~7O<7XA!1vb?oK zJoH#{!j@9D0<0es(^;89V)LT^ZrpkO!!1p3yGft-FF!vO&t<%&#huFh=msmQXc*5Z zd3e)SYeJY-5)vGM`8L#@0DVj1`g3%}(QBz;xe~&ogwOFiEi$S+W|%gqyfKBNOkNKE z>rZSIMN6gY+9{bS?Wyi6ijSUAJ-|FjDImLMmK$Z${9pB%pjS6(01=5gF7k>p zstB{DSc2?!vd zoA3Z203JRNfY%5DfdF_xf+qX`0RSHeaR-KxAR^_m6yh2g6NI@d7*Q6H0)`k}X7eHL zBe|@2nRNN&5fC&1LjgR3SCx67h)ZNH(*O`KqR3Tg2(J+@FE0Sf14di}!easv06+u* z{QQUq)CiG)xVQrmQizY=gqH`vi)a{;!uuU72;vTo9|Z&jp(eagL>pHrd|)F)jqjNV zK$q_bC?<#ppTPG5f<{nYUK2hjfd6|9ez4JHJ6Bj=Vu!$u7jaX`Wsk1j5eQzsUn2VB ziAXm=+*E?NrQ|Y20MVSlRnG(juLyD3Nd%Ql1QADq-zy37T@mvV?Mtc%3SM3!a#-xJc&$H%ruX|qiTF;ITny@;Mmy5Z89uuCii!iNbD z)CRtRb~dljgo}D1%CRE+$5)~fZU9<%@W4^uN5sL{sN(=>_#-CZ0K%Gt)C3pdmc}Ly zqIOh9Z-EKN)daLK!4Eex`0>YL@W+WH>lN}{q%bhJ@u!o(mXh@Y^CqHJctsL;2^JcI z;fgqe)`~UYFEmNk1sa$T5x^?=J53TowsJGz11F1q^CXcB-yncO5+3CkgX8gu0&^#PS2GN^if^`E2te(ST{6>&Ve=49K<`c9uA)mDP?2hEoA&j{iw~~Zvn4Wnp$C$ z!b)#i1IuIW^yaqq{TqHMEKIC{AL;w=wf`Q6(<-BX;oZM533tCSsUU2`>|F1%z_}&y|a@ zxg0+7^ah>4dqR9?!WDAC2c$jFhIko$#l%D4JuY~TwFl2ZHo;KFeEK6nLRYScD2>$- zM~R>&0KI^)Ph1IUU>HLk&A>+=8ifN1<^fVtx;)H6Gtvrq;5IHFD>nuw5p+mPDb`9| zDV2Y7)<3Z*rOJPMGmZtu|Md;-CF)@uR~}J-Cs_-RC(){{b&~ZF?C@XyIp@D|#6R2p zGf!%qCxDg#M^hb7@R#~+n8tu{u)BPl`|v?CpOA$HtVb8zz)s!}>7~Un;?(R_ll|;Lnv0n)0z8HjYTZ@W${@FarNVu`yf$`r$&t zIpBci7x1YJuwgy0wg5y7;OGl90+ay)(`XF8hDKsKiLi-E9+PCkETF}xTruBOfHJ}e zp9}1ma9oI^2%7@J1j?AMYJF2b9`rnw33w9yBx%ES6%fWrKLRTP4mcegA)q;-MeuP0 zC=OVFZ8ip0O|VcoVOjvm6ac$S&+<6nG?EC+Pm~2bQW$uoo%klM0(enkXcfLO;D=uz zU~x_SNkDiC6m7$|6s`hLNWlJ}f&lcPk$JGXxVHcrgGWerK{IoRuV}^4$~DXRt}*%vF(b4oVUGt01Y%$eI)%w6tq$$TJ0q+zsNvP|dBm?|d9hkx zL`d@p#jZp$A&rmu7_Es)m{SN@!`QAu;sNkKjU|Mo5CWsL2BC=v_5ZmJE~D~)u7Tih zg`L67;QimgO1PkL+1i<& z5NS&h>@TIopc1|`g(id4|09pNA*p0v`K}_^UJ+?A8XvqXf;K~nW~TL1ser?Dv2g~kK7i3yif&Zqx0KD_}OWY5Hyb{$|?F<4QA0mKkCF%*1j1$u)gSp}#f zhCj~-2H~J(ff)5%P*V&oE+z|2?GZB(V^IVbzWpWbE+GvP z&|wn#G04#xyDKOpJRpa_JQ6|@5XPiZHZd^AVRqII2(qNKg|n z0V~Ar#+bH}GzHc~53nsn1_^*-LW+geafB}T)2Gq(H7E# z_I)%8ZTn~|h`%;Vxz^>GfR{{6KsssyA4=*El9i(I{{MLY)7Slf&6AHpa7y27-O}~{ zzrM*bOY!!9djCDH1iw-||NEQ9`@7#?dBW@eNBCVqaPSugas#4q;QNq+MeYPSTx6J; z+e6|=#vE_9Kp6dhLlhh;017vPy(Nq!B|KXI6e20YR&gisrw|2%feXH;8YCc}u=~iu z9wN)i$VP*|xLg=BX$3_uU@`zY7tsr;UjLUjMuIX#2n1Gwgo?}ONM#&VqyxFof26RH zfaGwY0VVK|8ss8~B&mZQG~q%CO6uU}A_tSr`oTgW2N#E}1N#-^AmWlb8U@Re)WMrF z;lj8}>fp&BC&3I7GzuAb)(;$loD>$22RSJ$u=XZgC{oFoBG}1R8-h|A1Relc3nW0< zKUFja)TyKjVW~e=#0^|%)Yd9&j(+z7L!b&S7#k1~lHXMbGg0`6{9cy$3k>XAsj3wW z9`q|>OSD~~AQChoB1~|U0E-EEQh30TAe~A36+8$KmZO%?YOQrN3XEH89ah7GVv^L6 zI^%)Fk~*j+WJqLjt~NhMVxk^+gXL@Cz514&z} z;DG$8V(~ag9fK4i3oQ+pO|VX+s2^EFhIzPs|8T{y46=i5~y)4sI zd`Rzqcq900if96IOC}|fV?*280Uq&hw*@;|s%ljr_*IoZRTTd+5s-rquLcPo=}<&r z$rmC^O10R=!Yu&Y#v-^$0{FmqFr6#l7`vE|=Ou*Wfh+B(Ks)L~VNVLV3P`WhMwS&~ zT>_X$CZ_^IfB+O_R27gurcJU$6a}R51t2LCMFBMaKZK9D`Q-4C8%OKsa%eUpp8#}X z7=Z!$&4aWP1#5!p#5Vupt^K!hOh8n@4p>52Y{>sOfMlA9y zBxr{#@rFd$7fG9wzF=_!(xHf;APx@x!hV>UStQ`yVQvmI85u#T?UiiAX?xXbmkA2c zK@7Ar+byxdt_Z0E_d;ygh-FP^Pt4Rm`M`jNhN0P|Z;B_;FhYRM6a(r2HHINJ5JGEH z{1pkHTL>Pf6(NE330u#9kPu^`;Ko)rg@WB2W~ad5L}&Iefd-|(9>V;f6&WM~5C5nH zdpdGOTCqj%KhDHIBYjeY{M(zwi(6OvKc@bTO4=Kd%>F&X-*f-duO#^YPktkjo7za< ze~-%;1S=&PNbydZ0THC%^OO5T@!r4i&*}&!DJ;@4|0mScLs}z!qZiIUKpZ?Mh5!PH zxa{Z##iUk65I`Cl305bW7&$)USBNk*1chm*P7!z{u=RtgA}V8{s3wa|n|A^L2^{x< zT`41(owTV4!YQeSa1#39=AkE9X%Wm7l_0^KP%5S#UuVQno-DBElGv)UOBtNs!oje8j?pBn5;Bs52UqhTs8Wym8D#c7{R^tQ*B1 zDC#02M~Aw=kt9EaRGJVAK-`q^C?7f)u`6^ZLePOKms}=<8(d&~s2DUP9f05ep#&mC z1S`nTAu9mo4Hp&7i11>7#ZX0o1?0#|099g;8LA!FCXZH3q@_rLq$R*HA$egaqF@4Y z5^hIA1QY{%@Xyq7_^T7teNr|MG>Dtp|w~F3Aq-=*l9?LSxB9h1AO8kg#-?$WNfk&#$+XKLrCV!tD5yHPG zEk_DNK=g!I2%s{Ev2Y}d6>%^f1D%8G2<%LbOfx)SHa!#to!v3tjlgNO7yt#`A(VJv zG6p&i@gbN+f|8ms{}Wb^Mf#bC0I{bi8Sa}(mO_k5VH^=yM7p=eaXn&IkU;Xfnf8a+ zQS4u;V-QP)TMw71^$pBIHP8-$JWASs;M5rrTowcRJv~$)!GwJ?z(xcOF;HrN7oBF3 z4 zQqrDLC`mwnfKQpzhXi<)+)_HgLINsLKq`#XzW^GOBhk9l2(AYnASWC+BWF#slI)hKsg+903d_=|Lm_4Bbj$OA)|_L=Fog(AZ9o#E~NY92{fPgHDAA zG)NeSi82%>5(r1|#jZ%uoaBa3U>+%|Bta$vE1>wB0Afpd^W*hwd< zMW_)$J))Btpe349LCUxvwh@% zQL-aQ5T3~CWq1Tuk(1aCBm^#S`N6c{F)`dIA@vZE-6KY1$DVZF$&f?`o+8rRWCGzy zu%lO8=fGYTGmu%9bTWZAftx=l0a9r@PTBpnWR~(9-~6)M)#UXkRWpC4uQd=RSRRACAo@5pmS&|A%PM^Lk{?( zZ2;}FP>jA5=cauVwWVt{QiTcjqmT+Mg-2Tv(j2sz!h_hG1``U|{*ZhZ1}t+JX~&0d zz$WuF04usOw~G%3Bln9~2hIY9BSO(RE|Um4$VF6^ifI-MM%y1GFbnvTPyfOE0xW@o zlGKNd1hqyGNP^Q~2*?IQEI6EkynMKX#1^!fKoY7&d03-cw96ARt?#r z1RP^{!CWvaU5n%r8;Id4;sI;|R3xx+I>2RD{cwWo!Ubm{s)fe1jU`qklwm|d6dm2- zLD)hG&TcV2?Z;?K2(ZA$tP2I{XmQk)bRL#Krz(`Eq3N)k+GFBBZGe4g8@4y3`-c>) zH=(5nh-Z*NC=EbB_i^Yrmas-@OmZAcD4FKPZlaby+q6?!5AKh zgDVc6W-Lbnf`vh|NIWg(PJ-%^yBFlrNw}4S039$2$c2Z**djsOD9KgWHU|NnBYSP>h@u77{+%EVkCsD6pEX{V)ohJ+nF(qTkVQlwuItI#M(oi9a_Z zkii&iLn*1EF+hJhHbR2Bu^0#|#@uuVn!?IRum<2Is88hn>-7ZUV8)EC*B9veDD`aJ z;@T{3$jjT2Z`TjH_V3qpDw(Rx%jJ|E~nBg;1h~sBSA|dE@6^NDjH`2(mGla zDIQ53%?z!`;6)^!a;-!`$eeOyebLthQiVq=QHbG@17aj~Gzw`sA|?XD^q}nn^&>W; zi`Pt^Oo+`)h+El`A)&ZS3wdG4CdQ(x*AiqCVI(^al#^pX<;(!^AQp578xLt~a1M<{XB^awy0Cc>lAzES zQv{TNc+r%Y4M&d{1v&-~C>a8af@OF}pg;nw12CuxV4*Qg79JEwqsCAwt==?)niOMe zQ!I&^6Bn_N1JMy-2b}bfT;an94sj8O#f3mrT=m9T9<`CEdEgUGU{~-U?M!WPxdRb7 zDh9PE5W(yLf)TLt1Wiz1;M>% zS|Mp35FZJAeE|#;Y;ZZLn(zajq2;&U0%TT=%oeSUJTTZKRI-Mk0Ye$0tK?C%Znsbk zhQR~)f(OB+UU`Ut4aY@f{$nMkdG#?#GNVh>! zwqkxX=-3JZYX@Svf*EK?vfG4M{9`d`=?w@Pj%X@%U&=7j0i|y#yc8}Lz#cH)MhMeJHv;gW&w%h^J{@8U5`%;{8j#FU0D&6N zEx1;YrG6%9U|N7gHpsQ7+jayOE+V+%&IAz5gQ_KwMgqk=pqm!WWv&d}rUP0i2L$2w zIZ20hytRD#)64YcEg15p3X+;$VBHPLwTasToCdUIn zVj?8aSOD1R`Yj$3j37aCgDwo8bS93R1hYthx9BLGaE$vj>_OP0Rg%7=vu?sU*oW$v z`5^#_=lQTY%qigG$c9~h1~CX-QsNWAaebIAnh}lA0iw~;i14%yDdFih1nY}7!~l$8 zs67!Hc2&}!$bm_j_@Y1R*;q6u<5$u`l0Gcz4Ei&s0~}10DBgifL1e428pJ!Gd&zU6 zpeErT{|TAo(bCj34e=xRm<c0jd--n_g zl0k5>o_rkI{Yc-^OB2w%AOH)IkdnvJeqWkEh9;*739G`<^`Bm(#n|T`k}B#7veG3E zB&Zvs1La!j09nPl$@3#LO5h^N5rR=Ai(^|(vI=Z*#9g#Ek<^jJW=8>%IvNGcN*8jF zpi#(XlNQ1Uc%UO4E?^SSgG>(Xbm`QD%oe+G0i_05Nc!pIpC-a}g+FV9Yljjz3~X(< zlJXCy_CK89KV4}rNn9rB`qvE?-UB^FTxmLMOM;whwONnw(%CrP8@Viv{*D>CCt4mL!bSv!J}`T#KI z7_>SH*uvn*72zk`*Mg2@yKFeopa_M|@PPLQW<>&C3NE!HLEwPEt;JwweBXi+a6QGh zB*hpH7m8YUdm=dHhzBxUW7mtuUEVS_lIfNqWP3Mj2?$yaMEbLka@2Z=}f7(_uCqAS5X*F@4emrO9jxsW%{& zfkY_5@a!`eaK&%ei*CikZ}3U*}SA> z*=ab&M}i(87zrE_R0mg&)G89V+#nL-TSD*~9#|FG9h`(qi&;*xkw-DC03DE%G$Qfm zYY${#$|(>-ItmG()|hZdKCdwu4~oOEaI7(+o(O!y0&p=c0K|8U=*Ai%ruL_bbTpl& z)3y@{8UyPkzD0sPupBH2IT{4>k}g96pBthW`V8Zf<)mYG3B)*d|Er3|K*QE58iU2{ zXbh58x;sz&fdmagOJ>u;$AME!8W68Pcf2q?*;!f;D#2`+9b5#rnf63@(U4>v*^=qz z2#GwP{?9koEUjzpKr5r&6ht0_5ho*xi>z zfG->q16HgaL1%gpV}T)%BHamzqI-2n@cu)EvxuM=>_T6X6-RaLfS4v zHgFRd>WV&Sz?Wix7jG~#xwhmRuvX9n@HQ|Mwz_zLD~VRPc+5UQrwnz)eicpNU$RT! z*mhHnI*{EYHwo8X5!9q{;K<+s!$nRUVkdC1a6H4M9*}H2ARTN91lZ_K5uN4Gmuv9T z(FEd!2OvPK1qrwXKr+cAhNEg4lj0*JC%AEk-KAtER)BR$lr`2wmLHT7kq^|Grr-cA zgTC-5Q%$TyZZY5kVX1;K4kVP(6B3Fdl2rm55(?a6TEKu`KLD}u0JaDax*!0zj98B) zum-k|XLTSX_F`Z-mLqB6K!_wQF*9;x9B34{pm=~OSPnP8*mBu)#Q&raTdT0|LWZj8 zCK!F!MfMSdmRMZ6IYs+mDx^=M=*BNyEhb$Ag9-4Vsr(#Hwp9!a4i15fafy`w7% zi>&O+;=NEdj`8O_7H7kQ|}01REU8L*!*3v04&l`ceY-=_H^d z0hDtwHeISf0%T=7Z_+Px&VmP_jEZpu4A%=W0PTw4vXat+KMIayKu`q@0d*@N)`x!w z*B(tcB?#R>0rSx4=mo(#5)&GNC`#cY`ZN;>YDuC_Y7-WZ9)wD) z05*so5|Kwj68@t>unVTaTv15)LRVscBw*@@YoI(SC-L}@fS*QKg50ARSdgF@hLJEz z14_DsAs|Q8gw!hyh;OuLY%~CmNZ(TKBOeLM1)WIS0#oP&cEZBxL1?3~$oyeurkId` z4*(5MVHGfDhI#wU?E}!;zU{_T_2?{ zwCMV%H-b2nUrI1mHnClQkkYls3}RdTFqW=*vQ9 zt>a0@rM49Bg+|8mB~d(p&L@hpFbr9L>WD`xmEe)Uo5qwR0^mM6VWXQ|#4iK}T}z^c5t)(r z<#0>{#OzogF$&#Bz!o1=B6SODAx%h-4)xEsl)+ekAd>c8gbv!G(2j`O6SbI~r!*)` z%o zpRS|Qxijf{5@kSuUy>kiR{C8z64VzgMv5801XpB)}tq4IjmFKsZ`~^vyQ+ zSQTRI=z=BV0p&?jk1H(jQGht`72Es(skF6Z2Mbs@AsBO`8_^q49%gHh0DF=f%N$qo zF<=O23k7sYI1lV5sUy}UmT0Y`QCjUD5;O|7RLq0JWtl&oG3`-tqAwkU93lZ(01yv} zKi?K1Lt{`xiO7i1&>!!e-K(VgH00#qQz#k(G?#!yI-laFpaA>i0f7Z1s0p@FuvS9+ zjg;TNWk%uc*55L-T{3sx68sdXzVvsl42&G`r-zsNEeX_Te>lmcUzE2Dm7BaP{|v+%cBkR})1!DzJGBCB}|Jm&iW^_JjmR@ci zOZy1e4{D7X;qDGle!YAxNo7kCBgv)?!EgC98U!+zn^KvK8BYaW?r zTDk)(v2pXB_wPT6N40_vY1|1z4=x;7jL{lSc6>Hqb&;y5OM|14_k<@#UpZM)R}(w|I!)u&fd zyMF(h-!_vh^S=*`7>@MsRl%C#ZjRvZx$2z5mq(1%UcH+8VO891pR@B-!lS$NRR{}p zdFF6T!Tj0!Bp03KVHQbG2OhJtiH}OSqCKkSk=?Fc4rjfuIb~h{VdE0!*yKIfX{D&y zJ?_za@pq#-@t*4J=S_v*3$q*cK5wboQ!OuJryh7uA*`3SR!!va6>@P}ulS4c6LzcD zSUJSBSsV$3+Lr-Y3H@e8=s8)b?;8yIK@Jbqr=x0lui8*8*OY@-83V^ zzpZj&>c!_#8;`%bpBAh)^;esuZaX9Q?n^WDd)?v1+vjVa2emn2n*ZH6Y2MGdL+{^O z`>Un4vz7hl8~U&B=bDT+ojl+7wn^>8)zP|bb>+r<>npqZ%lWA_VLKz7i6CPdi}7Y!bp?S!|k=L zD;M#&y2Nn3MO6Ou^WpBhLr3Y|F*qGr)GKST`Ro9pLR!J=Cs{l4 zXY{-=_Lle2i(8Gf%sDyfZLH^iw24ajGW5RJ!MthldUCq!e1C-+-XA&ijl$DgUs64r z(>raO$2_}y*TH#c{?Nzc_wD#z#qkcm;0TIRxs5B4V%`l)`a=v8Q}=($+aV}2h0+YgUnI|SF4@ofvv92*HiMfgdL z%_cW9gRJ9tmeQ^3+Fc<_7&znTC_U9=S1wbmToGkAnNOr7=opB__^lm}cfq{2N47=+k^K8qR)s5F& zns?7=P7HVuQo6J6gIDs?eqQ=EAt!!j$|B`}#tQL+6rx3X}Fv_U(2oep2!@3$( z-uq_Uic5vM;~TYuZmg>mm2OliO1Kwwe&Dlp@8>U{eWLR2niWM=V_L#JwF5K*%Nx~J zDh2vH-Qh2Ir##X$J@IJxg4de4F9uZ1v8>QuwYBnGmGyx^+gDB1|B%1QC^dHJ(|#^`2k#7#Mo-yz1AZrKe+43+6fA6d9J7YlL*!;@C~0 zy8PU@ExB0=H&*AqP}!JNvfHzvUs(2t(3WGTojF|wEz93!mhNqKx1(>#zUiWMht2x_ z>aAOwcQfdY+KBhZm$VyN;=5~TQ2qqf{G4D5mE6?K?uM>e1>)IgYiB*F$d+c)?dN*m^ zFx723WhY1Vd+4*f;B4^jS=R5S9GQKtY{Jj|Zp-7j-S-CY@24-jdNXzGYr_L$pO5bw zXsYR)KUU^`m!{Bn={YgtwX)SJ=hM!*E;PCv{&T*Ka{o_i7uOAXmiRn=nRw_5xfEOP zsKS?ulfw>W-uX7Z*OA8)I3LWtmh@a=s~sCVaZA}Ky)nV}%1i5a%`)rdSz2rT?NH=~ zSO>?2<0l?7;2%wB`PI$$>ZTPbeJ4+tQ+4{pG0_ua?y=IQE5!o0Vr|#m=a(H`{nlpx zgUEpi%FArkO0JKrIX-2!sB4~-Lm-Jc!5_Hi9YO*JJn<4%y-RmyW_txjaa`86zj>7C&xD_j<)c_tmXkQ{H8)y-sKQR9O1j!VxZ&YfpdXk}|X zah#2ox=_b|k;R7@!&mw#e<;ncuC{UOHQIDzyR*LP#hDXpFFOrxJFR8!$Jt@tmFEiY zEcsfr{BvUZnc=lv-{z*ojo9fuKH4ea<`jo_Z>ncGXT1w;wDzKYz#6#|sSPt)BH6-oAZ@#(SfcKVND8Odz{nXIyx0<~Mhz_@lCe#}D!- z_bp%9V8+ez$}w+xSN7oK*^FG5*q%LWYSW*@)+FEBJcXy?G`ho;B<{5{Ltc-I*|f8+ z_}GwjXgu9wBpv;EEbi&oiU5Yn(v=Eb%*=g8=Fts zymFo-J4LaJuUpKjXPk}wM^57y#2uW^7u|UJXnx4qGxjfKoK^Nbla1SVhI{yeo5*#) zR$|9Nce|SAdrmZ1fB$|b<-|aX*h9Bx3*X3nHvOvmh^E;Pr+&WaX zF5=U!m=Aez2M=bOdFNzCrWno`aA`vOn!r=`mxj*!@Je&GpVqxA<8*3QOf_DmI!a_R z`bzinRgbi0w%stPZgic&qcWY_3Y%B1`=nu-zbm`rkbVgTmGi$Pr?CZou}&;U0%Dk z!A@3(pL?(|q1wxQ?bwNPr@B8L-u{G~*{6{76K}37_K7!i=vMsU{2BLkk0y_D*6+IO zbB^6+i$iPsw|_9`;WNi8ZzgHv{yLwO{`LHn{)u|GGrwGStnyhkOa0RAivw+CHjN&~ zF)^(U?3NWURdjrq(e3%AOD|4ekha@n(wy=Ovkfzs8&vuv=A;K!hZLp>dp)|YVzX=+ z=gP;b>XT8n0PBY^^4PF)G zUO3}nm-vSs@A&J-JsJMCx!2{ihX$i|9Z@mwX0gt0-9g1p7t<}{9cIit+hyQ*A1jr9 zGxXj1EhzHVv6ck79IC~+vQ%o%n1#vHFKx*=zX7a{Oxn) zM)cl3^=Y!m{pfKS&(Kb)p`m?F$h=m%sWi*aQ$cx7nf(3-JEvbAv*z;shes3M4$jxH z>M$*JLfgB+kCevDGJ4efSkF{s>hWB2)WMk%eHJ^kTn|*VsjF)jm>oJ~yT<~VA*UOR z!@K+U@ZF=%r}f2e)|cpx&8iABKN8N^1=ga%)2I9^iOnJ3f?)-x@Be6kZ8M>fbJ6_H$GA_ zvT=BLXb7+4fis8f4V>K)s$ZV;5Eu1{ys~=0%j4?}stYbpYZtc2PkWte?JA!gVPC3r zQq3DTq%GKYxW``IvWDGxCg*nFTyLCY`)SdV2@~q4bEf*(XNT-l_w5^grL*GuTW=J+ zSA_IX3f;bOOaFFC0|y#~tk;{dq{>xQ$G*B`W#dNq=;6u}dyMaXVA-K{$1Kw(B@9h$ zD`&2uy1VUW*(*~~Bwpw#)2z;e4;Y8Lnfj%)6#vJ+&v(wqE|#Xf?~OpNcdcM)&{p(!2d+i+1&9 zmM4l%f9qPW=uq#dACeQEv!Np4OUaAFSGZ5qHzfA%9PhR^W0SE~O-Yd2z%f4;dA5J4 zaOY{ z?EY=0y@}lI>GoZU>ia#b_pO-RVyczfe^q19q)r8eiZitfloxJD@@Sho`eHzNJEJIv z^n#h@SBF0GF^=8RBi`&=YE@r*jUevz?NS+&ec7SHJcl zw>*5uqm1N^Mjd~|%;Xhx=4H!#cNzV1yjpKF+3~8I_U_fZ=C$U`hxsEchnHF{Z@PIi zZ%N(z)axgs3ck;^3To>=dAt8?s~>*P8-6HM?p$&?dBAwxzNh&&$M+xjGRR4H@``TG z=Z_p8*c5g8lg!WdUwMi+dJUn^J3x8&&R)UL!UKQwSDbeqjKL){@dYtx54Vc4?on$CJVxjUAS;!qvwfl zQ+ke{Hg0zRvR4Z~&EP~GSA7**{i5TWZjHLlXYB1gE0oGRz75^Gz3JCWdV9J$#TI14dS2kX}pyFdyI$&Vr$I@L+DuPkV0@ID2?aJHA zZ^L(%DPFfgyVhQ#CL>|k!V_z+Z0z0rn)%le0riv1oEI2;dic~Zd0N?|%`Nl1k6zI9 z_ffjtuJ?%%rE6X-vR>+{yDm!0O8ddI*lk+xN0iQ7-Z=8p$er)DZOm^jh^czEe0BYo z&(Etzto|Hq%h4Osl#_lo>ulw9$74m89LMI{_I}}!Ft+?hL1mNK%9h(_f40=F8MgXG zPV~x;)y>y8oXvUexoTYVCw@3;?j)?PDJ zOqYxNRrY3&+!r-TTYND1Q>kCgg*G>=cR6hzJfp9+-v+_>k;fc5M5P7}aqea?fCPdCQ6yFOMsv1YBtV8!oc{euTP6xtTKYrnc5m~?l7xrvc1^SmI`K?b`R3F;JNUoa8EiNf__Z?s^R33Ho#{;*@}4Rj zu&l{#^gh>hn^E#nhkMZjwcGDf?3*qG~L9*UUlzYKT!Ae!E0(`(k_=28?N7dxOPI!)$YCS&$3%NQ};fw7RdM}J1rd;@8|fT~hU)*Lo{eCl*r@2sxAZ*CpAXWee?X7#uo{raov zY!1C5h;^D0|8lly;`F7R0(yE5+sb$9aL;o1m=e8vP7%t&K5DzhYuN_OSv>k$P~)-E zr-8$Iy&W63Vu`V4(U4x^pAVn#^?U{gfAPD0OJ|lx&gRQY0^XGk*Yo$^|KoFSxlErR zPp>cG{cpt&G)*+Iy|necQHb{KA8ApQHme_%=vTd8HFtpP*4x+Rdl~NcR5y;XNIE{< zVZneWDlsZwuTPY>?LTYJBh_-(pfhz|k1ak2*QC5m*)hWT*U~E)p`ICbdp5My?bfYB zw63FW&Z*!hTKhE)PrV_3Nvl&t`+|UpI=eS?)7?C2>SCp#NwVYn#l;qmy=TIiWg2p6 z+dltwhVpF#a+1$(?lfs$idDDr-kz^l+O5_4n)TLLb^F9sQGFCAJUi+!;dA!*Nhb<7 zXWsqrWWh@D{+bIut_h27x!t^x$esA$*n;A~A@4MkJxAGZy0fU`mecm`7M()o=)Rv{ zyw1ew+N6xpR=LqH2l>ixno>}bIr^Ad`jUy`3fsF3%amW^<;0!jtd%zXh~dB;4^w#^ z%pX>@TgKa}(r#(X)|crzWuJSj8N9t`UG`|-pv)^F!#5pwF*E&I^X^%A$hGd(r9LlA z-}kODEj_a;K5O~++iAa^G+Ast)Gcsz-L~tQExhTIG}nA~yBJu1Xt?*-p}YCtmDc10 zJ}?}szIDXX6?aXQqvX{)c&Szoi}jh2)o)7bpjXW{GaE_|sETIRw;LUIP zd$@rw_)WizpG2n*pQv;2T+4*iY1WQ&wyxi5zQ@U(GtTyKp4^$7p@lEJGIpIAG-sE) z!}gk6YTM3hth1VKQ@=NY_hEa#+;3-(=Z8lWm)uZa>E(RTxK459mK90Y)DPZ`=pFa9 z|KqR4A0Knh{j8|FJImVWV$&CyPgN6A#yFbZPY-t;+v9Y3sn3n4odSd*m(*+AR-QZX zLZ)ig_EUPFbLTY9SrJ||^%E~EHlW)CDdKPY)H?Y&0ijT>`W;u3ix315e z`}vKWlcJ??^JeS$W|vO~EMH{tu=6rm$H6002Gl4=s_o%*8rI(CvO}_l)7HvUy2f`YJEo?j+kc+Hf(_hYnNZKV z_JSdzy~nTDswYYm=jxT%oL)Kh{l$vtn;8muMfWCt zaQFXypn*H?(E2%VPdgo2oL)X~?OL(mp2r9>|Lt(Jbu!cl9Fj9ljMt!-%6SG`r>SV(~Q;b3oq??oEm&sVa&LR z9(I1`5?hiY4XZ*2i`*Yy-5L6(^RA8K6{^Fmib6GV(;YTHHMq7lg)=t2*ZAxerWu!m z)oW_q-P=E!UZSBAui-Fff%*2f+bfN>CA2-hW!}37FVhG8$l(V2#Qs__VCwLK$ogIU zVj1TtiyrpYn%h<2Hd`smh)wM_GR4lm__2kI$MwfFVhg_StGv=P`BH8|XR3=W5TiI-T zM<-V89?xxl7~i=hE%NfqjzUERd!-q@?+(3k?EE9ePvS9=YjzLWY_Aa+xG|qIs6poI zmL&z>k4)MA=y27Al5Q2Z{8pVTY0AnPabWD|XII|8`1Z&wVo#oI)=0T!M%v3o`f{cd zZ1j8CI4tyTGo~haop;5B$`AWLtjhdQC|+~@(xZqV|0VufdW%(_j;q`Kb-w=g{=pNrk1QQ? z#H%xp+tz{KMgK%kGlA9AduET)BO+|>bwAX>YX9}if-{PCX9W&fhnDTP9Fyo{Smt12 z@NPgx-|sm~=WiNOzOt$1ec^|nzn*_+`qgV)-QdyYYS$9eTQ0Wyc}1h)M)K&Vb5_cV zhvZdH7dIvC?5G{Ke}_%h42K!78&1A`@%kSB0sp=Cl`A@`r5&SgYb;T)iP6!oQfe7g zZluMFGp}-ry4owL?OA8-A^Yrr7Fbsjo%o1u-IZv#oP*~^){1QWLMvliBFcX zPgs#yGpwpue7hp1eysHo%RzxU24}v`*Q70RJY>GQNE64fCGkyNz&^*%dPQ z`4-Q*lD+o(yQQ0r+|ax->}Z&1q403h(M*MX{ad~Dw*3G$a)2FI0f zGoQ$QFSjW5R~Fk$oU-0}klc~nq5H;E_t057{(;JTg^gY-?hno%Vb(J0c~1|Ui@S!e zG<*EDx?@h^mn|N z)sDQJ6)(3v4)W~%l%FlQ#9z_W+t9XYM8mTKol_z=Tn?HkV{x(5<4TLZ&yru;c=^8R zRrT(&Y2Ouw!>`tH>rCEPEbpkB>H2B6TTa1T-j+?roZ71HZ0Q?T6xdBO^-lkmW&Pav zy=!Do$XQO>YCkVa*1v7wxIP7)7FDJNCaNl`xS6RB*<3N3-ZWGQuP`*9sK{wTT15+-XO4w`IeObpb-nRzrh!-iFmlTgP%+0vzlx5ht zyP5vL1GC25(`yzU{-iS7p|kN$v5{zUN1n{#ProKvjY>9%`7WEH_UP9H_o<~@Hct<2 zm!`g@)}r*zv%KI!3&+Te^GUV^);F};9}gWjEL^5U-^6r9?TPxZ#JuMkk5>LT>iT?T z)3=T}@v}?iEwyWg7iX<Ofo-sfty@lxh&?wReUgV0@~~#M^sN{=(rdE@Pjq_1frIGyA6XCeND6 z?1dY{KP?OtFBn{}I&(_)p%wW$`tJ|yI(?*I{F4sjCS`kF2(h#eEiSP-vTc}2K!K&Y z)ovdP_r+>T>D6Z3rCgQs1Iu@NC&@3Fbav?hU6WfEPAa<0o5_g@d@P!Gf2wY2(EOQo zT{J6mRlY4r(e3ZPq{ovtZ|4sEtb9vZZm8qJszv9o%yplqHb1Xdg8#|kMMckcEu5LT z?&;NDJZFyX(BfM@m%vJs5)|t6J*L7DfcE7dzRm!=3wqM?l?{9G_ zJaN+eZ-M)dFS|CZAo1wcinwCqnCXVzJ2R~>BsHd6jI;e}F~NU&oYMm}ua)v9Mj46$ zKJClKmyBAvjGJ*TbEdh;y6Vcs0rhd_?HbEcZwGWtw&-yFusBRDZl_~}L3;8t`=ovA zyX_d{FvQV2bj;CkuIi<^3uJulFTS6DX5Hk1aeLm)UV7YS?#Eu;RW&k$j=ggklU=8! zxw*^F@X(H3MWIL3brz&HhYZx5SEXM5LABc7y(;AL8_PlC&J0iq>z?5`DsN7g6FTX; z>@o%x)f}7URWNwsV6{n~2efS;F-FPmTf3O39Y>#4nLD|J+19@pImR%u@nHAS({sZ_ z9-l+Cy_7~q-cKCfZt;QwbMv-wR?GOQ_5lhXEKJRH5BWV4?MR*NU~GA>OYx4ca*qt= zzB-|3Uz>0z-@V6|8Bci1z%5LIW*KbG zTyo07+h^gzA)5T4V-J1?KCbCE*EiL4tzzunSnK>%H)X5U0uM}EmVRcziGWLi+Kw2p&L7EnC|YYdL^e_m*$lR?AqI^L{C`I_Nv;jsYcsB4>J;Xo!G;BR>0(N zSN>JbN`obamW9u)Q)A2BeJnS}ru6;cKG!l^>9lXsa-(P~^K%=OhR9U!SbFpPj1a|v zR^SY`L$z&aM5M!Hu1}8SXf=<;I?tfcM;%RJoJMoT+)K=2NSqQ*ZYRwA*w2qjp=Z zuk&-Z+!mdckFG8Iv~yNh4bRQ(x64E|zC2VuqbcQR=%)=A3p@-;-wZjuRCQ|Q#Z~=3 z=c$h|eHE8r>tz)-bx_3J6o02}F3LY&z4@@l%s;c%&o*pOU~<7Dr=CxDt!lm==G#wY zaCk$M~gWo6C=q z)#>{7_H+b&7kn9*ujARiZ*5+RXJyiQi$?}tv-G!l55E{OHF4%$A3xv5(=NN+25egL zGy8jNOG3+t@$awD9jDt_rcCQ_lVFc zUfo5*F>j$wh3d1n7r4#6R_&Rt6f~%O^Qzh9SNO6IQ-UU%s*RW%Q9QV~YsvMTEa9dJ zqKc8$`kVC&&bIO2TpD_#uXXB#l;`oanrRVJRh@3crdAzqpK@!3V8w%NKVr6Sw3ro` z7I|e@XaB5So5rj-k+Qh=`-Wa$7GK)8e%kh}o98QQj#f=tU$x!BROD9^{3Ix2`kKMo zr*34-t4qshFQaSTb;6-Br`w;smvOvSwrO;puyc%{Kt04d{OHvaDjQ}DEfbHJIa_wI zwafU?cdOok|jQbZGD{NNM>cQL5 zgRjwEb4H}f{_#Z~-}DDf{NnlM#~t@J0?#)J+$B4H$!~UOXmeuz^uu$L+Ifwu%9LBL zFLO#9`EpOk`02Yhv^6?^py!Lgft_x>SovPHB2sgUY~-y5zxi`*)t(m3jtbAcSTCHh zAvOMGyqW^H)BX7uT2_meHbyL{igm0LdM&={WPX#+J+RNl)Njwp35gG)*7~S*c<|y- zO2f!K+sCQfy`S-Vf~~D*#DL;&eoH+~nv!cLH<>@Qdhd5~r>?(Gzq~{HijE|ny>NE3 z%l%WTXLiiup1t*;GVoSINNvo-yd_6=x>zku2%Au=^D0C=>T9Y}+TB&Tt4g_ZFU^iP zytqN_{Kz5vz{uGLubj0BZ-3$Q{0*r?RKor9+;%^VE_!_O23Hgr)=)0`G|enBR(qn6 zrf%+n4cmIok@I+F^SPt(L+;js6TAZ-7N}l`&H6HQOUFWw#pmv&J~AI+XVj*w(DCYI zjY^%@G9OC^JQ$MNcZZtefbm%`img-z_$=|zD4D%!ZpU}L-t#jyZL)4(-|29yIx zvL}AsoYGd`R`9qOXTzJ0ds@xA=w;%vS6(&(R| z9$8JVzF+!zB|699)d-nE*?ZzfnybA|)E>3^@cgy+zqPcP+%K&US990r?mgX96*i5w zTBquzKWEkox0K`#&NqA7B(>`ryl7*2!ePZqujXEhqd&OL(S1>ID=?OS^7Ra(!#!($ zPR)=@wVPEhue*Kk$zi8u?1S3%YP+*?Vs2nISFt)wCn(g__Rz^LkrTRT@6g#@KIi(F zh;yr}V*Nfg+PB+f$rX%q>)k1L&S{$!iYdX32UCLk^h~$jRheqEcT;0yr_aj4O&x+8 zb#3M;zBPBXul#{)yv7zLtr+=}^9c$Sg7I7|Xrfa;Op{mrZH1PZ35!I_5mkR3D-;e&a?6p$U zOtXXC#@Rn>o60o~Nqjp

TWKn<3x8+-}BuwnGZdG14i@_l_iJJF5Jvn&E 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 literal 0 HcmV?d00001 diff --git a/dev/read_gebco_raw01.ipynb b/dev/read_gebco_raw01.ipynb new file mode 100644 index 0000000..aa8f409 --- /dev/null +++ b/dev/read_gebco_raw01.ipynb @@ -0,0 +1,2977 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exe time: 0.012810468673706055 sec\n" + ] + }, + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lon: 86400, lat: 43200)\n",
+       "Coordinates:\n",
+       "  * lon        (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
+       "  * lat        (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n",
+       "Data variables:\n",
+       "    elevation  (lat, lon) int16 dask.array<chunksize=(43200, 86400), meta=np.ndarray>\n",
+       "Attributes:\n",
+       "    Conventions:  CF-1.6\n",
+       "    title:        The GEBCO_2020 Grid - a continuous terrain model for oceans...\n",
+       "    institution:  On behalf of the General Bathymetric Chart of the Oceans (G...\n",
+       "    source:       The GEBCO_2020 Grid is the latest global bathymetric produc...\n",
+       "    history:      Information on the development of the data set and the sour...\n",
+       "    references:   DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n",
+       "    comment:      The data in the GEBCO_2020 Grid should not be used for navi...\n",
+       "    node_offset:  1.0
" + ], + "text/plain": [ + "\n", + "Dimensions: (lon: 86400, lat: 43200)\n", + "Coordinates:\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", + "Data variables:\n", + " elevation (lat, lon) int16 dask.array\n", + "Attributes:\n", + " Conventions: CF-1.6\n", + " title: The GEBCO_2020 Grid - a continuous terrain model for oceans...\n", + " institution: On behalf of the General Bathymetric Chart of the Oceans (G...\n", + " source: The GEBCO_2020 Grid is the latest global bathymetric produc...\n", + " history: Information on the development of the data set and the sour...\n", + " references: DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n", + " comment: The data in the GEBCO_2020 Grid should not be used for navi...\n", + " node_offset: 1.0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import xarray as xr\n", + "import time, sys\n", + "st = time.time()\n", + "#xr.open_mfdataset('~/R/gebco/*.nc', parallel=True)\n", + "ds = xr.open_mfdataset(\n", + " '../data_src/GEBCO_2023_sub_ice_topo.nc', chunks={0: 60, 1: 60}, \n", + " decode_cf=False, decode_times=False) #.load()\n", + "et = time.time()\n", + "print('Exe time: ', et-st, 'sec')\n", + "ds" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "112\n" + ] + }, + { + "data": { + "text/plain": [ + "6.9522857666015625" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(sys.getsizeof(ds))\n", + "ds['elevation'].nbytes/(1024 ** 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dimensions: (lon: 86400, lat: 43200)\n", + "Coordinates:\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", + "Data variables:\n", + " crs |S1 ...\n", + " elevation (lat, lon) int16 dask.array\n", + "Attributes: (12/36)\n", + " title: The GEBCO_2022 Grid - a continuous terra...\n", + " summary: The GEBCO_2022 Grid is a continuous, glo...\n", + " keywords: BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n", + " Conventions: CF-1.6, ACDD-1.3\n", + " id: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", + " naming_authority: https://dx.doi.org\n", + " ... ...\n", + " geospatial_vertical_units: meters\n", + " geospatial_vertical_resolution: 1.0\n", + " geospatial_vertical_positive: up\n", + " identifier_product_doi: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", + " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", + " node_offset: 1.0\n", + "\n", + "Dimensions: (lon: 86400, lat: 43200)\n", + "Coordinates:\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", + "Data variables:\n", + " elevation (lat, lon) int16 dask.array\n", + "Attributes:\n", + " Conventions: CF-1.6\n", + " title: The GEBCO_2020 Grid - a continuous terrain model for oceans...\n", + " institution: On behalf of the General Bathymetric Chart of the Oceans (G...\n", + " source: The GEBCO_2020 Grid is the latest global bathymetric produc...\n", + " history: Information on the development of the data set and the sour...\n", + " references: DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n", + " comment: The data in the GEBCO_2020 Grid should not be used for navi...\n", + " node_offset: 1.0\n" + ] + } + ], + "source": [ + "import xarray as xr\n", + "import dask\n", + "\n", + "# Open the GEBCO_2022 dataset\n", + "ds1 = xr.open_mfdataset('../data_src/GEBCO_2022_sub_ice_topo.nc', chunks={0: 60, 1: 60},\n", + " decode_cf=False, decode_times=False)\n", + "\n", + "# Open the GEBCO_2023 dataset\n", + "ds2 = xr.open_mfdataset('../data_src/GEBCO_2023_sub_ice_topo.nc', chunks={0: 60, 1: 60},\n", + " decode_cf=False, decode_times=False)\n", + "\n", + "# Inspect the structure and metadata\n", + "print(ds1)\n", + "print(ds2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "print(isinstance(ds1['elevation'].data, dask.array.Array))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Assuming ds1 uses Dask, get its chunk sizes\n", + "# chunk_sizes = {dim: ds1[dim].data.chunksize for dim in ds1.dims}\n", + "\n", + "# Apply these chunk sizes to ds2\n", + "# ds2 = ds2.chunk(chunk_sizes)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'title': 'The GEBCO_2022 Grid - a continuous terrain model for oceans and land at 15 arc-second intervals', 'summary': 'The GEBCO_2022 Grid is a continuous, global terrain model for ocean and land with a spatial resolution of 15 arc seconds.The grid uses as a base-map Version 2.4 of the SRTM15+ data set (Tozer et al, 2019). This data set is a fusion of land topography with measured and estimated seafloor topography. It is augmented with gridded bathymetric data sets developed as part of the Nippon Foundation-GEBCO Seabed 2030 Project.', 'keywords': 'BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ELEVATION/DIGITAL TERRAIN MODELS', 'Conventions': 'CF-1.6, ACDD-1.3', 'id': 'DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c86abc0289c', 'naming_authority': 'https://dx.doi.org', 'history': 'Information on the development of the data set and the source data sets included in the grid can be found in the data set documentation available from https://www.gebco.net', 'source': 'The GEBCO_2022 Grid is the latest global bathymetric product released by the General Bathymetric Chart of the Oceans (GEBCO) and has been developed through the Nippon Foundation-GEBCO Seabed 2030 Project. This is a collaborative project between the Nippon Foundation of Japan and GEBCO. The Seabed 2030 Project aims to bring together all available bathymetric data to produce the definitive map of the world ocean floor and make it available to all.', 'comment': 'The data in the GEBCO_2022 Grid should not be used for navigation or any purpose relating to safety at sea.', 'license': 'The GEBCO Grid is placed in the public domain and may be used free of charge. Use of the GEBCO Grid indicates that the user accepts the conditions of use and disclaimer information: https://www.gebco.net/data_and_products/gridded_bathymetry_data/gebco_2019/grid_terms_of_use.html', 'date_created': '2022-06-22', 'creator_name': 'GEBCO through the Nippon Foundation-GEBCO Seabed 2030 Project', 'creator_email': 'gdacc@seabed2030.org', 'creator_url': 'https://www.gebco.net', 'institution': 'On behalf of the General Bathymetric Chart of the Oceans (GEBCO), the data are held at the British Oceanographic Data Centre (BODC).', 'project': 'Nippon Foundation - GEBCO Seabed2030 Project', 'creator_type': 'International organisation', 'geospatial_bounds': array([-180., -90., 180., 90.]), 'geospatial_bounds_crs': 'WGS84', 'geospatial_bounds_vertical_crs': 'EPSG:5831', 'geospatial_lat_min': -90.0, 'geospatial_lat_max': 90.0, 'geospatial_lat_units': 'degrees_north', 'geospatial_lat_resolution': 0.004166666666666667, 'geospatial_lon_min': -180.0, 'geospatial_lon_max': 180.0, 'geospatial_lon_units': 'degrees_east', 'geospatial_lon_resolution': 0.004166666666666667, 'geospatial_vertical_min': -10977.0, 'geospatial_vertical_max': 8685.0, 'geospatial_vertical_units': 'meters', 'geospatial_vertical_resolution': 1.0, 'geospatial_vertical_positive': 'up', 'identifier_product_doi': 'DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c86abc0289c', 'references': 'DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c86abc0289c', 'node_offset': 1.0}\n", + "---------------\n", + "{'Conventions': 'CF-1.6', 'title': 'The GEBCO_2020 Grid - a continuous terrain model for oceans and land at 15 arc-second intervals', 'institution': 'On behalf of the General Bathymetric Chart of the Oceans (GEBCO), the data are held at the British Oceanographic Data Centre (BODC).', 'source': 'The GEBCO_2020 Grid is the latest global bathymetric product released by the General Bathymetric Chart of the Oceans (GEBCO) and has been developed through the Nippon Foundation-GEBCO Seabed 2030 Project. This is a collaborative project between the Nippon Foundation of Japan and GEBCO. The Seabed 2030 Project aims to bring together all available bathymetric data to produce the definitive map of the world ocean floor and make it available to all.', 'history': 'Information on the development of the data set and the source data sets included in the grid can be found in the data set documentation available from https://www.gebco.net', 'references': 'DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e', 'comment': 'The data in the GEBCO_2020 Grid should not be used for navigation or any purpose relating to safety at sea.', 'node_offset': 1.0}\n", + "--------------- data_vars\n", + "{'grid_mapping_name': 'latitude_longitude', 'epsg_code': 'EPSG:4326', 'inverse_flattening': 298.257223563, 'semi_major_axis': 6378137.0}\n", + "{'standard_name': 'height_above_mean_sea_level', 'long_name': 'Elevation relative to sea level', 'units': 'm', 'grid_mapping': 'crs', 'sdn_parameter_urn': 'SDN:P01::ALATZZ01', 'sdn_parameter_name': 'Sea floor height (above mean sea level) {bathymetric height}', 'sdn_uom_urn': 'SDN:P06::ULAA', 'sdn_uom_name': 'Metres'}\n", + "--------------- data_vars in ds2\n", + "{'standard_name': 'height_above_reference_ellipsoid', 'long_name': 'Elevation relative to sea level', 'units': 'm', 'sdn_parameter_urn': 'SDN:P01::ALATZZ01', 'sdn_parameter_name': 'Sea floor height (above mean sea level) {bathymetric height}', 'sdn_uom_urn': 'SDN:P06::ULAA', 'sdn_uom_name': 'Metres'}\n" + ] + } + ], + "source": [ + "print(ds1.attrs)\n", + "print(\"---------------\")\n", + "print(ds2.attrs)\n", + "print(\"--------------- data_vars\")\n", + "for var in ds1.data_vars:\n", + " print(ds1[var].attrs)\n", + "\n", + "print(\"--------------- data_vars in ds2\")\n", + "\n", + "for var in ds2.data_vars:\n", + " print(ds2[var].attrs)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Example: Copying global attributes\n", + "# ds2.attrs = ds1.attrs\n", + "\n", + "# Example: Copying variable-specific attributes\n", + "# for var in ds2.data_vars:\n", + "# if var in ds1.data_vars:\n", + "# ds2[var].attrs = ds1[var].attrs" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chunk_sizes = {'lat': 60, 'lon': 60} # Replace with the actual chunk sizes used for ds1\n", + "\n", + "# Apply these chunk sizes to ds2\n", + "ds2 = ds2.chunk(chunk_sizes)\n", + "ds2.to_zarr('../data/GEBCO_2023_sub_ice_topo.zarr', mode='w')" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "larger-chunk read time: 0.007239341735839844 sec\n", + "112\n", + "smaller-chunk read time: 0.0065441131591796875 sec\n", + "112\n" + ] + }, + { + "data": { + "text/plain": [ + "6.9522857666015625" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st = time.time()\n", + "#larger chunk size\n", + "ds2 = xr.open_mfdataset(\n", + " '../data_src/GEBCO_2023_sub_ice_topo.nc', chunks={0: 45, 1: 45}, #{0: 120, 1: 120}\n", + " decode_cf=False, decode_times=False) #.load()\n", + "et = time.time()\n", + "print('larger-chunk read time: ', et-st, 'sec')\n", + "print(sys.getsizeof(ds2))\n", + "ds2['elevation'].nbytes/(1024 ** 3)\n", + "\n", + "st = time.time()\n", + "#smaller chunk size\n", + "ds3 = xr.open_mfdataset(\n", + " '../data_src/GEBCO_2023_sub_ice_topo.nc', chunks={0: 30, 1: 30}, \n", + " decode_cf=False, decode_times=False) #.load()\n", + "et = time.time()\n", + "print('smaller-chunk read time: ', et-st, 'sec')\n", + "print(sys.getsizeof(ds2))\n", + "ds2['elevation'].nbytes/(1024 ** 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-4008\n", + "-4311\n", + "-4805\n", + "-4770\n", + "-3752\n", + "-3739\n", + "-3761\n", + "-3691\n", + "-3840\n" + ] + } + ], + "source": [ + "print(ds.sel(lat=23.326173, lon=123.978125, method='nearest')['elevation'].values)\n", + "print(ds.sel(lat=23.317670, lon=123.973958, method='nearest')['elevation'].values)\n", + "print(ds.sel(lat=21.336378, lon=123.003125, method='nearest')['elevation'].values)\n", + "print(ds.sel(lat=21.33, lon=123.0, method='nearest')['elevation'].values)\n", + "print(ds[\"elevation\"].values[27200,72956]) #this is correct value (got depth = -3729)\n", + "print(ds[\"elevation\"].values[27200,72957])\n", + "print(ds[\"elevation\"].values[27200,72955])\n", + "print(ds[\"elevation\"].values[27201,72956])\n", + "print(ds[\"elevation\"].values[27199,72956]) #But we got -3813, this is: after subset got a latitude offset 1? why (in zprofile01.ipynb correct it)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Slicing time for chunk-60: 0.006575822830200195 sec\n", + "Slicing time for larger chunk: 0.005826711654663086 sec\n", + "Exe time for smaller chunk: 0.0052683353424072266 sec\n" + ] + } + ], + "source": [ + "#The following try different subsetting and index methods\n", + "st = time.time()\n", + "ds_s1 = ds.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", + "ds_s1.close() #try if it can close\n", + "et = time.time()\n", + "print('Slicing time for chunk-60: ', et-st, 'sec')\n", + "\n", + "st = time.time()\n", + "ds_s2 = ds2.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", + "ds_s2.close() #try if it can close\n", + "et = time.time()\n", + "print('Slicing time for larger chunk: ', et-st, 'sec')\n", + "\n", + "st = time.time()\n", + "ds_s3 = ds3.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", + "ds_s3.close() #try if it can close\n", + "et = time.time()\n", + "print('Exe time for smaller chunk: ', et-st, 'sec')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.1062154769897461" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds_s1['elevation'].nbytes/(1024 ** 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lon: 7200, lat: 7920)\n",
+       "Coordinates:\n",
+       "  * lon        (lon) float64 105.0 105.0 105.0 105.0 ... 135.0 135.0 135.0 135.0\n",
+       "  * lat        (lat) float64 2.002 2.006 2.01 2.015 ... 34.99 34.99 34.99 35.0\n",
+       "Data variables:\n",
+       "    crs        |S1 ...\n",
+       "    elevation  (lat, lon) int16 dask.array<chunksize=(7920, 7200), meta=np.ndarray>\n",
+       "Attributes: (12/36)\n",
+       "    title:                           The GEBCO_2022 Grid - a continuous terra...\n",
+       "    summary:                         The GEBCO_2022 Grid is a continuous, glo...\n",
+       "    keywords:                        BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n",
+       "    Conventions:                     CF-1.6, ACDD-1.3\n",
+       "    id:                              DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
+       "    naming_authority:                https://dx.doi.org\n",
+       "    ...                              ...\n",
+       "    geospatial_vertical_units:       meters\n",
+       "    geospatial_vertical_resolution:  1.0\n",
+       "    geospatial_vertical_positive:    up\n",
+       "    identifier_product_doi:          DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
+       "    references:                      DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
+       "    node_offset:                     1.0
" + ], + "text/plain": [ + "\n", + "Dimensions: (lon: 7200, lat: 7920)\n", + "Coordinates:\n", + " * lon (lon) float64 105.0 105.0 105.0 105.0 ... 135.0 135.0 135.0 135.0\n", + " * lat (lat) float64 2.002 2.006 2.01 2.015 ... 34.99 34.99 34.99 35.0\n", + "Data variables:\n", + " crs |S1 ...\n", + " elevation (lat, lon) int16 dask.array\n", + "Attributes: (12/36)\n", + " title: The GEBCO_2022 Grid - a continuous terra...\n", + " summary: The GEBCO_2022 Grid is a continuous, glo...\n", + " keywords: BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n", + " Conventions: CF-1.6, ACDD-1.3\n", + " id: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", + " naming_authority: https://dx.doi.org\n", + " ... ...\n", + " geospatial_vertical_units: meters\n", + " geospatial_vertical_resolution: 1.0\n", + " geospatial_vertical_positive: up\n", + " identifier_product_doi: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", + " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", + " node_offset: 1.0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#da1 = getattr(ds_s1, 'elevation')\n", + "#da1\n", + "#https://www.programcreek.com/python/example/123571/xarray.decode_cf\n", + "#da1.attrs['_Unsigned']='false'\n", + "ds_s1\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#da1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exe time: 0.009853124618530273 sec\n", + "[[-121 -119 -116 -111 -106 -101 -94 -88 -82 -76]\n", + " [-123 -121 -119 -115 -109 -103 -97 -91 -86 -79]\n", + " [-126 -124 -122 -118 -113 -106 -100 -95 -88 -83]\n", + " [-127 -127 -126 -123 -116 -110 -103 -97 -91 -86]\n", + " [-127 -127 -128 -126 -118 -112 -106 -99 -94 -88]\n", + " [-127 -127 -126 -125 -119 -113 -107 -102 -96 -91]\n", + " [-127 -127 -126 -123 -118 -113 -108 -103 -99 -94]\n", + " [-126 -125 -124 -122 -118 -113 -109 -104 -100 -96]\n", + " [-125 -124 -123 -120 -118 -114 -110 -107 -102 -98]\n", + " [-123 -123 -121 -120 -118 -114 -112 -108 -104 -100]]\n" + ] + } + ], + "source": [ + "st = time.time()\n", + "st1 = ds_s1.isel(lon=slice(1000, 1010), lat=slice(2000, 2010))\n", + "xt1 = st1['elevation'].values\n", + "et = time.time()\n", + "print('Exe time: ', et-st, 'sec')\n", + "print(xt1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(10, 10)\n", + "3.1 Get index of point by two subsetting time: 0.004407644271850586 sec\n", + "[[3 4]\n", + " [1 2]]\n", + "(array([3, 1]), array([4, 2]))\n", + "3.2 Get index of point by numpy ix_ time: 0.002244710922241211 sec\n", + "[-116, -119]\n", + "[-116 -119]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "print(st1[\"elevation\"].shape)\n", + "st = time.time()\n", + "pt1 = [st1[\"elevation\"].values[3,4], st1[\"elevation\"].values[1,2]]\n", + "et = time.time()\n", + "print('3.1 Get index of point by two subsetting time: ', et-st, 'sec')\n", + "\n", + "st = time.time()\n", + "#pt2 = st1[\"elevation\"].values[np.ix_([3,4],[1,2])]\n", + "idx_arr = np.array([[3,4],[1,2]])\n", + "print(idx_arr)\n", + "print(tuple(idx_arr.T))\n", + "#https://stackoverflow.com/questions/43034563/numpy-array-of-multiple-indices-replace-with-a-different-matrix\n", + "pt2=st1['elevation'].values[tuple(idx_arr.T)]\n", + "et = time.time()\n", + "print('3.2 Get index of point by numpy ix_ time: ', et-st, 'sec')\n", + "print(pt1)\n", + "print(pt2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#slow\n", + "x = xr.DataArray([-45,-44.95833,-44,-43.95822], dims=['longitude'])\n", + "y = xr.DataArray([35,35.004167,36,36.004168], dims=['latitude'])\n", + "st = time.time()\n", + "#ds_s2 = ds.sel(lon=x, lat=y, method='nearest') \n", + "et = time.time()\n", + "#print('Exe time: ', et-st, 'sec')\n", + "#print(ds_s2) \n", + "#print(ds_s2['elevation'].values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#https://stackoverflow.com/questions/58706834/angled-slice-in-xarray\n", + "startLat = 35.0\n", + "startLon = -45.0\n", + "endLat = 36.0\n", + "endLon = -43.0\n", + "n = 3600/15 #15 arc-second\n", + "# not work, need another dimension to project\n", + "#x = xr.DataArray(np.linspace(startLon,endLon,n), dims='z')\n", + "#y = xr.DataArray(np.linspace(startLat,endLat,n), dims='z')\n", + "#st = time.time()\n", + "#ds_s3 = ds.interp(lon=x, lat=y, method='linear')\n", + "#et = time.time()\n", + "#print('Exe time: ', et-st, 'sec')\n", + "#print(ds_s3) \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import orjson\n", + "import json\n", + "st = time.time()\n", + "jt1 = orjson.dumps(xt1.tolist(), option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)\n", + "et = time.time()\n", + "print('4.1 Convert JSON by orjson time: ', et-st, 'sec')\n", + "st = time.time()\n", + "jt2 = json.dumps(xt1.tolist())\n", + "et = time.time()\n", + "print('4.2 Convert JSON by json.dump time: ', et-st, 'sec')\n", + "\n", + "print(jt1)\n", + "print(jt2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ds.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "import zarr\n", + "import dask" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#compressor = zarr.Blosc(cname='zstd', clevel=3, shuffle=2)\n", + "dask.config.set(scheduler='single-threaded')\n", + "#da = getattr(ds, 'elevation')\n", + "#https://www.programcreek.com/python/example/123571/xarray.decode_cf\n", + "#da.attrs['_Unsigned']='false'\n", + "#ds3 #### try 0:30 chunk #### not work\n", + "#In GEBCO_2022 it works but in GEBCO_2023, it encounter ValueError: Codec does not support buffers of > 2147483647 bytes\n", + "# https://chat.openai.com/c/67eaa069-b863-4924-9f56-1a1ef98c8b79 \n", + "#ds.to_zarr('../data/GEBCO_2023_sub_ice_topo.zarr', mode='w',\n", + "# #encoding={\"elevation\": {\"_Unsigned\": \"false\"}},\n", + "# group='gebco') ##compute=False, , encoding={'gebbco': {'compressor': compressor}})\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "##import xarray as xr\n", + "##import zarr\n", + "#from numcodecs import Zlib\n", + "\n", + "## Open your dataset\n", + "#ds = xr.open_mfdataset('../data_src/GEBCO_2023_sub_ice_topo.nc', chunks={0: 60, 1: 60}, \n", + "# decode_cf=False, decode_times=False)\n", + "\n", + "## Specify the compressor\n", + "#compressor = Zlib(level=1) # Level can be adjusted for compression speed vs ratio\n", + "\n", + "## Update encoding for each variable in dataset\n", + "#encoding = {var: {'compressor': compressor} for var in ds.data_vars}\n", + "\n", + "## Convert to Zarr\n", + "#ds.to_zarr('../data/GEBCO_2023_sub_ice_topo_compressor.zarr', mode='w', group='gebco', encoding=encoding)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#import xarray as xr\n", + "#import zarr\n", + "from numcodecs import Zlib\n", + "#from numcodecs import Blosc\n", + "\n", + "\n", + "# Open your dataset from NetCDF\n", + "ds = xr.open_mfdataset('../data_src/GEBCO_2023_sub_ice_topo.nc', chunks={0: 60, 1: 60}, \n", + " decode_cf=False, decode_times=False)\n", + "\n", + "# Specify the compressor\n", + "compressor = Zlib(level=1) # Level can be adjusted for compression speed vs ratio\n", + "\n", + "# Define the Blosc compressor\n", + "# blosc_compressor = Blosc(cname='lz4', clevel=5, shuffle=Blosc.SHUFFLE, blocksize=0)\n", + "\n", + "# Apply the Blosc compressor to all variables\n", + "\n", + "# Convert to Zarr without specifying a group, and with the new encoding\n", + "# Update encoding for each variable in dataset\n", + "encoding = {var: {'compressor': compressor} for var in ds.data_vars}\n", + "#encoding = {var: {'compressor': blosc_compressor} for var in ds.data_vars}\n", + "\n", + "# Convert to Zarr without specifying a group\n", + "ds.to_zarr('../data/GEBCO_2023_sub_ice_topo_compressor.zarr', mode='w', encoding=encoding)\n", + "#ds.to_zarr('../data/GEBCO_2023_sub_ice_topo.zarr', mode='w', encoding=encoding)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dask Dashboard is available at http://localhost:8787/status\n" + ] + }, + { + "ename": "TypeError", + "evalue": "__init__() got an unexpected keyword argument 'max_buffer_size'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 17\u001b[0m\n\u001b[1;32m 11\u001b[0m ds \u001b[39m=\u001b[39m xr\u001b[39m.\u001b[39mopen_mfdataset(\u001b[39m'\u001b[39m\u001b[39m../data_src/GEBCO_2023_sub_ice_topo.nc\u001b[39m\u001b[39m'\u001b[39m, \n\u001b[1;32m 12\u001b[0m \u001b[39m# chunks={'lat': 30, 'lon': 30}, #why it's too slow\u001b[39;00m\n\u001b[1;32m 13\u001b[0m chunks\u001b[39m=\u001b[39m{\u001b[39m0\u001b[39m: \u001b[39m60\u001b[39m, \u001b[39m1\u001b[39m: \u001b[39m60\u001b[39m},\n\u001b[1;32m 14\u001b[0m decode_cf\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m, decode_times\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m)\n\u001b[1;32m 16\u001b[0m \u001b[39m# Define the Blosc compressor\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m blosc_compressor \u001b[39m=\u001b[39m Blosc(cname\u001b[39m=\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39mlz4\u001b[39;49m\u001b[39m'\u001b[39;49m, clevel\u001b[39m=\u001b[39;49m\u001b[39m5\u001b[39;49m, shuffle\u001b[39m=\u001b[39;49mBlosc\u001b[39m.\u001b[39;49mSHUFFLE, blocksize\u001b[39m=\u001b[39;49m\u001b[39m0\u001b[39;49m, max_buffer_size\u001b[39m=\u001b[39;49m\u001b[39m2\u001b[39;49m\u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49m\u001b[39m40\u001b[39;49m \u001b[39m-\u001b[39;49m \u001b[39m1\u001b[39;49m)\n\u001b[1;32m 19\u001b[0m \u001b[39m# Apply the Blosc compressor to all variables\u001b[39;00m\n\u001b[1;32m 20\u001b[0m encoding \u001b[39m=\u001b[39m {var: {\u001b[39m'\u001b[39m\u001b[39mcompressor\u001b[39m\u001b[39m'\u001b[39m: blosc_compressor} \u001b[39mfor\u001b[39;00m var \u001b[39min\u001b[39;00m ds\u001b[39m.\u001b[39mdata_vars}\n", + "File \u001b[0;32mnumcodecs/blosc.pyx:548\u001b[0m, in \u001b[0;36mnumcodecs.blosc.Blosc.__init__\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: __init__() got an unexpected keyword argument 'max_buffer_size'" + ] + } + ], + "source": [ + "import xarray as xr\n", + "from numcodecs import Blosc\n", + "from dask.distributed import Client, progress\n", + "\n", + "# Start a Dask distributed client for parallel processing and monitoring\n", + "client = Client('tcp://localhost:8786')\n", + "\n", + "print(f\"Dask Dashboard is available at {client.dashboard_link}\")\n", + "\n", + "# Open your dataset with specified chunk sizes\n", + "ds = xr.open_mfdataset('../data_src/GEBCO_2023_sub_ice_topo.nc', \n", + " # chunks={'lat': 30, 'lon': 30}, #why it's too slow\n", + " chunks={0: 60, 1: 60},\n", + " decode_cf=False, decode_times=False)\n", + "\n", + "# Define the Blosc compressor\n", + "blosc_compressor = Blosc(cname='lz4', clevel=5, shuffle=Blosc.SHUFFLE, blocksize=0, max_buffer_size=2**40 - 1)\n", + "\n", + "# Apply the Blosc compressor to all variables\n", + "encoding = {var: {'compressor': blosc_compressor} for var in ds.data_vars}\n", + "\n", + "# Convert to Zarr\n", + "future = client.persist(ds.to_zarr('../data/GEBCO_2023_sub_ice_topo.zarr', mode='w', encoding=encoding))\n", + "progress(future) " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'time' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[15], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m st \u001b[39m=\u001b[39m time\u001b[39m.\u001b[39mtime()\n\u001b[1;32m 2\u001b[0m dz1 \u001b[39m=\u001b[39m xr\u001b[39m.\u001b[39mopen_zarr(\n\u001b[1;32m 3\u001b[0m \u001b[39m'\u001b[39m\u001b[39m../data/GEBCO_2023_sub_ice_topo.zarr\u001b[39m\u001b[39m'\u001b[39m, chunks\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mauto\u001b[39m\u001b[39m'\u001b[39m, \n\u001b[1;32m 4\u001b[0m group\u001b[39m=\u001b[39m\u001b[39m'\u001b[39m\u001b[39mgebco\u001b[39m\u001b[39m'\u001b[39m, decode_cf\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m, decode_times\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m)\n\u001b[1;32m 6\u001b[0m et \u001b[39m=\u001b[39m time\u001b[39m.\u001b[39mtime()\n", + "\u001b[0;31mNameError\u001b[0m: name 'time' is not defined" + ] + } + ], + "source": [ + "st = time.time()\n", + "dz1 = xr.open_zarr(\n", + " '../data/GEBCO_2023_sub_ice_topo.zarr', chunks='auto', \n", + " group='gebco', decode_cf=False, decode_times=False)\n", + "\n", + "et = time.time()\n", + "print('Exe time: ', et-st, 'sec')\n", + "dz1" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exe time: 0.007412433624267578 sec\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lat: 43200, lon: 86400)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n",
+       "  * lon        (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
+       "Data variables:\n",
+       "    elevation  (lat, lon) int16 dask.array<chunksize=(43200, 86400), meta=np.ndarray>\n",
+       "Attributes:\n",
+       "    Conventions:  CF-1.6\n",
+       "    comment:      The data in the GEBCO_2020 Grid should not be used for navi...\n",
+       "    history:      Information on the development of the data set and the sour...\n",
+       "    institution:  On behalf of the General Bathymetric Chart of the Oceans (G...\n",
+       "    node_offset:  1.0\n",
+       "    references:   DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n",
+       "    source:       The GEBCO_2020 Grid is the latest global bathymetric produc...\n",
+       "    title:        The GEBCO_2020 Grid - a continuous terrain model for oceans...
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 43200, lon: 86400)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + "Data variables:\n", + " elevation (lat, lon) int16 dask.array\n", + "Attributes:\n", + " Conventions: CF-1.6\n", + " comment: The data in the GEBCO_2020 Grid should not be used for navi...\n", + " history: Information on the development of the data set and the sour...\n", + " institution: On behalf of the General Bathymetric Chart of the Oceans (G...\n", + " node_offset: 1.0\n", + " references: DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n", + " source: The GEBCO_2020 Grid is the latest global bathymetric produc...\n", + " title: The GEBCO_2020 Grid - a continuous terrain model for oceans..." + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st = time.time()\n", + "dz2 = xr.open_zarr(\n", + " '../data/GEBCO_2023_sub_ice_topo_compressor.zarr', chunks='auto', \n", + " group='gebco', decode_cf=False, decode_times=False)\n", + "\n", + "et = time.time()\n", + "print('Exe time: ', et-st, 'sec')\n", + "dz2" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Codec does not support buffers of > 2147483647 bytes", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[39], line 13\u001b[0m\n\u001b[1;32m 10\u001b[0m encoding \u001b[39m=\u001b[39m {var: {\u001b[39m'\u001b[39m\u001b[39mcompressor\u001b[39m\u001b[39m'\u001b[39m: blosc_compressor} \u001b[39mfor\u001b[39;00m var \u001b[39min\u001b[39;00m ds\u001b[39m.\u001b[39mdata_vars}\n\u001b[1;32m 12\u001b[0m \u001b[39m# Convert to Zarr without specifying a group, and with the new encoding\u001b[39;00m\n\u001b[0;32m---> 13\u001b[0m ds_compress\u001b[39m.\u001b[39;49mto_zarr(\u001b[39m'\u001b[39;49m\u001b[39m../data/GEBCO_2023_sub_ice_topo.zarr\u001b[39;49m\u001b[39m'\u001b[39;49m, mode\u001b[39m=\u001b[39;49m\u001b[39m'\u001b[39;49m\u001b[39mw\u001b[39;49m\u001b[39m'\u001b[39;49m, encoding\u001b[39m=\u001b[39;49mencoding)\n\u001b[1;32m 14\u001b[0m \u001b[39m#encoding={\"elevation\": {\"_Unsigned\": \"false\"}},\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[39m#group='gebco') \u001b[39;00m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/xarray/core/dataset.py:2497\u001b[0m, in \u001b[0;36mDataset.to_zarr\u001b[0;34m(self, store, chunk_store, mode, synchronizer, group, encoding, compute, consolidated, append_dim, region, safe_chunks, storage_options, zarr_version, write_empty_chunks, chunkmanager_store_kwargs)\u001b[0m\n\u001b[1;32m 2359\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"Write dataset contents to a zarr group.\u001b[39;00m\n\u001b[1;32m 2360\u001b[0m \n\u001b[1;32m 2361\u001b[0m \u001b[39mZarr chunks are determined in the following way:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2493\u001b[0m \u001b[39m The I/O user guide, with more details and examples.\u001b[39;00m\n\u001b[1;32m 2494\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 2495\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mxarray\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mbackends\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mapi\u001b[39;00m \u001b[39mimport\u001b[39;00m to_zarr\n\u001b[0;32m-> 2497\u001b[0m \u001b[39mreturn\u001b[39;00m to_zarr( \u001b[39m# type: ignore[call-overload,misc]\u001b[39;49;00m\n\u001b[1;32m 2498\u001b[0m \u001b[39mself\u001b[39;49m,\n\u001b[1;32m 2499\u001b[0m store\u001b[39m=\u001b[39;49mstore,\n\u001b[1;32m 2500\u001b[0m chunk_store\u001b[39m=\u001b[39;49mchunk_store,\n\u001b[1;32m 2501\u001b[0m storage_options\u001b[39m=\u001b[39;49mstorage_options,\n\u001b[1;32m 2502\u001b[0m mode\u001b[39m=\u001b[39;49mmode,\n\u001b[1;32m 2503\u001b[0m synchronizer\u001b[39m=\u001b[39;49msynchronizer,\n\u001b[1;32m 2504\u001b[0m group\u001b[39m=\u001b[39;49mgroup,\n\u001b[1;32m 2505\u001b[0m encoding\u001b[39m=\u001b[39;49mencoding,\n\u001b[1;32m 2506\u001b[0m compute\u001b[39m=\u001b[39;49mcompute,\n\u001b[1;32m 2507\u001b[0m consolidated\u001b[39m=\u001b[39;49mconsolidated,\n\u001b[1;32m 2508\u001b[0m append_dim\u001b[39m=\u001b[39;49mappend_dim,\n\u001b[1;32m 2509\u001b[0m region\u001b[39m=\u001b[39;49mregion,\n\u001b[1;32m 2510\u001b[0m safe_chunks\u001b[39m=\u001b[39;49msafe_chunks,\n\u001b[1;32m 2511\u001b[0m zarr_version\u001b[39m=\u001b[39;49mzarr_version,\n\u001b[1;32m 2512\u001b[0m write_empty_chunks\u001b[39m=\u001b[39;49mwrite_empty_chunks,\n\u001b[1;32m 2513\u001b[0m chunkmanager_store_kwargs\u001b[39m=\u001b[39;49mchunkmanager_store_kwargs,\n\u001b[1;32m 2514\u001b[0m )\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/xarray/backends/api.py:1775\u001b[0m, in \u001b[0;36mto_zarr\u001b[0;34m(dataset, store, chunk_store, mode, synchronizer, group, encoding, compute, consolidated, append_dim, region, safe_chunks, storage_options, zarr_version, write_empty_chunks, chunkmanager_store_kwargs)\u001b[0m\n\u001b[1;32m 1773\u001b[0m \u001b[39m# TODO: figure out how to properly handle unlimited_dims\u001b[39;00m\n\u001b[1;32m 1774\u001b[0m dump_to_store(dataset, zstore, writer, encoding\u001b[39m=\u001b[39mencoding)\n\u001b[0;32m-> 1775\u001b[0m writes \u001b[39m=\u001b[39m writer\u001b[39m.\u001b[39;49msync(\n\u001b[1;32m 1776\u001b[0m compute\u001b[39m=\u001b[39;49mcompute, chunkmanager_store_kwargs\u001b[39m=\u001b[39;49mchunkmanager_store_kwargs\n\u001b[1;32m 1777\u001b[0m )\n\u001b[1;32m 1779\u001b[0m \u001b[39mif\u001b[39;00m compute:\n\u001b[1;32m 1780\u001b[0m _finalize_store(writes, zstore)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/xarray/backends/common.py:256\u001b[0m, in \u001b[0;36mArrayWriter.sync\u001b[0;34m(self, compute, chunkmanager_store_kwargs)\u001b[0m\n\u001b[1;32m 253\u001b[0m \u001b[39mif\u001b[39;00m chunkmanager_store_kwargs \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 254\u001b[0m chunkmanager_store_kwargs \u001b[39m=\u001b[39m {}\n\u001b[0;32m--> 256\u001b[0m delayed_store \u001b[39m=\u001b[39m chunkmanager\u001b[39m.\u001b[39;49mstore(\n\u001b[1;32m 257\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msources,\n\u001b[1;32m 258\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mtargets,\n\u001b[1;32m 259\u001b[0m lock\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mlock,\n\u001b[1;32m 260\u001b[0m compute\u001b[39m=\u001b[39;49mcompute,\n\u001b[1;32m 261\u001b[0m flush\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m,\n\u001b[1;32m 262\u001b[0m regions\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mregions,\n\u001b[1;32m 263\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mchunkmanager_store_kwargs,\n\u001b[1;32m 264\u001b[0m )\n\u001b[1;32m 265\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39msources \u001b[39m=\u001b[39m []\n\u001b[1;32m 266\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mtargets \u001b[39m=\u001b[39m []\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/xarray/core/daskmanager.py:211\u001b[0m, in \u001b[0;36mDaskManager.store\u001b[0;34m(self, sources, targets, **kwargs)\u001b[0m\n\u001b[1;32m 203\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mstore\u001b[39m(\n\u001b[1;32m 204\u001b[0m \u001b[39mself\u001b[39m,\n\u001b[1;32m 205\u001b[0m sources: DaskArray \u001b[39m|\u001b[39m Sequence[DaskArray],\n\u001b[1;32m 206\u001b[0m targets: Any,\n\u001b[1;32m 207\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs,\n\u001b[1;32m 208\u001b[0m ):\n\u001b[1;32m 209\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mdask\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39marray\u001b[39;00m \u001b[39mimport\u001b[39;00m store\n\u001b[0;32m--> 211\u001b[0m \u001b[39mreturn\u001b[39;00m store(\n\u001b[1;32m 212\u001b[0m sources\u001b[39m=\u001b[39;49msources,\n\u001b[1;32m 213\u001b[0m targets\u001b[39m=\u001b[39;49mtargets,\n\u001b[1;32m 214\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs,\n\u001b[1;32m 215\u001b[0m )\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/array/core.py:1236\u001b[0m, in \u001b[0;36mstore\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 1234\u001b[0m \u001b[39melif\u001b[39;00m compute:\n\u001b[1;32m 1235\u001b[0m store_dsk \u001b[39m=\u001b[39m HighLevelGraph(layers, dependencies)\n\u001b[0;32m-> 1236\u001b[0m compute_as_if_collection(Array, store_dsk, map_keys, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 1237\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mNone\u001b[39;00m\n\u001b[1;32m 1239\u001b[0m \u001b[39melse\u001b[39;00m:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/base.py:369\u001b[0m, in \u001b[0;36mcompute_as_if_collection\u001b[0;34m(cls, dsk, keys, scheduler, get, **kwargs)\u001b[0m\n\u001b[1;32m 367\u001b[0m schedule \u001b[39m=\u001b[39m get_scheduler(scheduler\u001b[39m=\u001b[39mscheduler, \u001b[39mcls\u001b[39m\u001b[39m=\u001b[39m\u001b[39mcls\u001b[39m, get\u001b[39m=\u001b[39mget)\n\u001b[1;32m 368\u001b[0m dsk2 \u001b[39m=\u001b[39m optimization_function(\u001b[39mcls\u001b[39m)(dsk, keys, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mkwargs)\n\u001b[0;32m--> 369\u001b[0m \u001b[39mreturn\u001b[39;00m schedule(dsk2, keys, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/threaded.py:90\u001b[0m, in \u001b[0;36mget\u001b[0;34m(dsk, keys, cache, num_workers, pool, **kwargs)\u001b[0m\n\u001b[1;32m 87\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(pool, multiprocessing\u001b[39m.\u001b[39mpool\u001b[39m.\u001b[39mPool):\n\u001b[1;32m 88\u001b[0m pool \u001b[39m=\u001b[39m MultiprocessingPoolExecutor(pool)\n\u001b[0;32m---> 90\u001b[0m results \u001b[39m=\u001b[39m get_async(\n\u001b[1;32m 91\u001b[0m pool\u001b[39m.\u001b[39;49msubmit,\n\u001b[1;32m 92\u001b[0m pool\u001b[39m.\u001b[39;49m_max_workers,\n\u001b[1;32m 93\u001b[0m dsk,\n\u001b[1;32m 94\u001b[0m keys,\n\u001b[1;32m 95\u001b[0m cache\u001b[39m=\u001b[39;49mcache,\n\u001b[1;32m 96\u001b[0m get_id\u001b[39m=\u001b[39;49m_thread_get_id,\n\u001b[1;32m 97\u001b[0m pack_exception\u001b[39m=\u001b[39;49mpack_exception,\n\u001b[1;32m 98\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs,\n\u001b[1;32m 99\u001b[0m )\n\u001b[1;32m 101\u001b[0m \u001b[39m# Cleanup pools associated to dead threads\u001b[39;00m\n\u001b[1;32m 102\u001b[0m \u001b[39mwith\u001b[39;00m pools_lock:\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/local.py:512\u001b[0m, in \u001b[0;36mget_async\u001b[0;34m(submit, num_workers, dsk, result, cache, get_id, rerun_exceptions_locally, pack_exception, raise_exception, callbacks, dumps, loads, chunksize, **kwargs)\u001b[0m\n\u001b[1;32m 510\u001b[0m _execute_task(task, data) \u001b[39m# Re-execute locally\u001b[39;00m\n\u001b[1;32m 511\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m--> 512\u001b[0m raise_exception(exc, tb)\n\u001b[1;32m 513\u001b[0m res, worker_id \u001b[39m=\u001b[39m loads(res_info)\n\u001b[1;32m 514\u001b[0m state[\u001b[39m\"\u001b[39m\u001b[39mcache\u001b[39m\u001b[39m\"\u001b[39m][key] \u001b[39m=\u001b[39m res\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/local.py:320\u001b[0m, in \u001b[0;36mreraise\u001b[0;34m(exc, tb)\u001b[0m\n\u001b[1;32m 318\u001b[0m \u001b[39mif\u001b[39;00m exc\u001b[39m.\u001b[39m__traceback__ \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m tb:\n\u001b[1;32m 319\u001b[0m \u001b[39mraise\u001b[39;00m exc\u001b[39m.\u001b[39mwith_traceback(tb)\n\u001b[0;32m--> 320\u001b[0m \u001b[39mraise\u001b[39;00m exc\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/local.py:225\u001b[0m, in \u001b[0;36mexecute_task\u001b[0;34m(key, task_info, dumps, loads, get_id, pack_exception)\u001b[0m\n\u001b[1;32m 223\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 224\u001b[0m task, data \u001b[39m=\u001b[39m loads(task_info)\n\u001b[0;32m--> 225\u001b[0m result \u001b[39m=\u001b[39m _execute_task(task, data)\n\u001b[1;32m 226\u001b[0m \u001b[39mid\u001b[39m \u001b[39m=\u001b[39m get_id()\n\u001b[1;32m 227\u001b[0m result \u001b[39m=\u001b[39m dumps((result, \u001b[39mid\u001b[39m))\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/core.py:127\u001b[0m, in \u001b[0;36m_execute_task\u001b[0;34m(arg, cache, dsk)\u001b[0m\n\u001b[1;32m 123\u001b[0m func, args \u001b[39m=\u001b[39m arg[\u001b[39m0\u001b[39m], arg[\u001b[39m1\u001b[39m:]\n\u001b[1;32m 124\u001b[0m \u001b[39m# Note: Don't assign the subtask results to a variable. numpy detects\u001b[39;00m\n\u001b[1;32m 125\u001b[0m \u001b[39m# temporaries by their reference count and can execute certain\u001b[39;00m\n\u001b[1;32m 126\u001b[0m \u001b[39m# operations in-place.\u001b[39;00m\n\u001b[0;32m--> 127\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49m(_execute_task(a, cache) \u001b[39mfor\u001b[39;49;00m a \u001b[39min\u001b[39;49;00m args))\n\u001b[1;32m 128\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39mnot\u001b[39;00m ishashable(arg):\n\u001b[1;32m 129\u001b[0m \u001b[39mreturn\u001b[39;00m arg\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/array/core.py:4402\u001b[0m, in \u001b[0;36mstore_chunk\u001b[0;34m(x, out, index, lock, return_stored)\u001b[0m\n\u001b[1;32m 4399\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mstore_chunk\u001b[39m(\n\u001b[1;32m 4400\u001b[0m x: ArrayLike, out: ArrayLike, index: \u001b[39mslice\u001b[39m, lock: Any, return_stored: \u001b[39mbool\u001b[39m\n\u001b[1;32m 4401\u001b[0m ):\n\u001b[0;32m-> 4402\u001b[0m \u001b[39mreturn\u001b[39;00m load_store_chunk(x, out, index, lock, return_stored, \u001b[39mFalse\u001b[39;49;00m)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/dask/array/core.py:4384\u001b[0m, in \u001b[0;36mload_store_chunk\u001b[0;34m(x, out, index, lock, return_stored, load_stored)\u001b[0m\n\u001b[1;32m 4382\u001b[0m \u001b[39mif\u001b[39;00m x \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 4383\u001b[0m \u001b[39mif\u001b[39;00m is_arraylike(x):\n\u001b[0;32m-> 4384\u001b[0m out[index] \u001b[39m=\u001b[39m x\n\u001b[1;32m 4385\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 4386\u001b[0m out[index] \u001b[39m=\u001b[39m np\u001b[39m.\u001b[39masanyarray(x)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/zarr/core.py:1495\u001b[0m, in \u001b[0;36mArray.__setitem__\u001b[0;34m(self, selection, value)\u001b[0m\n\u001b[1;32m 1493\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mvindex[selection] \u001b[39m=\u001b[39m value\n\u001b[1;32m 1494\u001b[0m \u001b[39melif\u001b[39;00m is_pure_orthogonal_indexing(pure_selection, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mndim):\n\u001b[0;32m-> 1495\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mset_orthogonal_selection(pure_selection, value, fields\u001b[39m=\u001b[39;49mfields)\n\u001b[1;32m 1496\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 1497\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mset_basic_selection(pure_selection, value, fields\u001b[39m=\u001b[39mfields)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/zarr/core.py:1684\u001b[0m, in \u001b[0;36mArray.set_orthogonal_selection\u001b[0;34m(self, selection, value, fields)\u001b[0m\n\u001b[1;32m 1681\u001b[0m \u001b[39m# setup indexer\u001b[39;00m\n\u001b[1;32m 1682\u001b[0m indexer \u001b[39m=\u001b[39m OrthogonalIndexer(selection, \u001b[39mself\u001b[39m)\n\u001b[0;32m-> 1684\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_set_selection(indexer, value, fields\u001b[39m=\u001b[39;49mfields)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/zarr/core.py:2038\u001b[0m, in \u001b[0;36mArray._set_selection\u001b[0;34m(self, indexer, value, fields)\u001b[0m\n\u001b[1;32m 2035\u001b[0m chunk_value \u001b[39m=\u001b[39m chunk_value[item]\n\u001b[1;32m 2037\u001b[0m \u001b[39m# put data\u001b[39;00m\n\u001b[0;32m-> 2038\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_chunk_setitem(chunk_coords, chunk_selection, chunk_value, fields\u001b[39m=\u001b[39;49mfields)\n\u001b[1;32m 2039\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 2040\u001b[0m lchunk_coords, lchunk_selection, lout_selection \u001b[39m=\u001b[39m \u001b[39mzip\u001b[39m(\u001b[39m*\u001b[39mindexer)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/zarr/core.py:2304\u001b[0m, in \u001b[0;36mArray._chunk_setitem\u001b[0;34m(self, chunk_coords, chunk_selection, value, fields)\u001b[0m\n\u001b[1;32m 2301\u001b[0m lock \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_synchronizer[ckey]\n\u001b[1;32m 2303\u001b[0m \u001b[39mwith\u001b[39;00m lock:\n\u001b[0;32m-> 2304\u001b[0m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_chunk_setitem_nosync(chunk_coords, chunk_selection, value, fields\u001b[39m=\u001b[39;49mfields)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/zarr/core.py:2314\u001b[0m, in \u001b[0;36mArray._chunk_setitem_nosync\u001b[0;34m(self, chunk_coords, chunk_selection, value, fields)\u001b[0m\n\u001b[1;32m 2312\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_chunk_delitem(ckey)\n\u001b[1;32m 2313\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m-> 2314\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mchunk_store[ckey] \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_encode_chunk(cdata)\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/zarr/core.py:2444\u001b[0m, in \u001b[0;36mArray._encode_chunk\u001b[0;34m(self, chunk)\u001b[0m\n\u001b[1;32m 2442\u001b[0m \u001b[39m# compress\u001b[39;00m\n\u001b[1;32m 2443\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_compressor:\n\u001b[0;32m-> 2444\u001b[0m cdata \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_compressor\u001b[39m.\u001b[39;49mencode(chunk)\n\u001b[1;32m 2445\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 2446\u001b[0m cdata \u001b[39m=\u001b[39m chunk\n", + "File \u001b[0;32mnumcodecs/blosc.pyx:559\u001b[0m, in \u001b[0;36mnumcodecs.blosc.Blosc.encode\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/numcodecs/compat.py:155\u001b[0m, in \u001b[0;36mensure_contiguous_ndarray\u001b[0;34m(buf, max_buffer_size, flatten)\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mensure_contiguous_ndarray\u001b[39m(buf, max_buffer_size\u001b[39m=\u001b[39m\u001b[39mNone\u001b[39;00m, flatten\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m np\u001b[39m.\u001b[39marray:\n\u001b[1;32m 127\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Convenience function to coerce `buf` to a numpy array, if it is not already a\u001b[39;00m\n\u001b[1;32m 128\u001b[0m \u001b[39m numpy array. Also ensures that the returned value exports fully contiguous memory,\u001b[39;00m\n\u001b[1;32m 129\u001b[0m \u001b[39m and supports the new-style buffer interface. If the optional max_buffer_size is\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 151\u001b[0m \u001b[39m return a view on memory exported by `buf`.\u001b[39;00m\n\u001b[1;32m 152\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m 154\u001b[0m \u001b[39mreturn\u001b[39;00m ensure_ndarray(\n\u001b[0;32m--> 155\u001b[0m ensure_contiguous_ndarray_like(\n\u001b[1;32m 156\u001b[0m buf, max_buffer_size\u001b[39m=\u001b[39;49mmax_buffer_size, flatten\u001b[39m=\u001b[39;49mflatten\n\u001b[1;32m 157\u001b[0m )\n\u001b[1;32m 158\u001b[0m )\n", + "File \u001b[0;32m~/.pyenv/versions/3.11.3/envs/py311/lib/python3.11/site-packages/numcodecs/compat.py:121\u001b[0m, in \u001b[0;36mensure_contiguous_ndarray_like\u001b[0;34m(buf, max_buffer_size, flatten)\u001b[0m\n\u001b[1;32m 119\u001b[0m \u001b[39mif\u001b[39;00m max_buffer_size \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m arr\u001b[39m.\u001b[39mnbytes \u001b[39m>\u001b[39m max_buffer_size:\n\u001b[1;32m 120\u001b[0m msg \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mCodec does not support buffers of > \u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m bytes\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(max_buffer_size)\n\u001b[0;32m--> 121\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(msg)\n\u001b[1;32m 123\u001b[0m \u001b[39mreturn\u001b[39;00m arr\n", + "\u001b[0;31mValueError\u001b[0m: Codec does not support buffers of > 2147483647 bytes" + ] + } + ], + "source": [ + "# import xarray as xr\n", + "from numcodecs import Blosc\n", + "\n", + "# Open the existing Zarr dataset\n", + "ds_compress = xr.open_zarr('../data/GEBCO_2023_sub_ice_topo_compressor.zarr')\n", + "\n", + "blosc_compressor = Blosc(cname='lz4', clevel=5, shuffle=Blosc.SHUFFLE, blocksize=0)\n", + "\n", + "# Apply the Blosc compressor to all variables\n", + "encoding = {var: {'compressor': blosc_compressor} for var in ds.data_vars}\n", + "\n", + "# Convert to Zarr without specifying a group, and with the new encoding\n", + "ds_compress.to_zarr('../data/GEBCO_2023_sub_ice_topo.zarr', mode='w', encoding=encoding)\n", + " #encoding={\"elevation\": {\"_Unsigned\": \"false\"}},\n", + " #group='gebco') \n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exe time: 0.008665800094604492 sec\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lat: 43200, lon: 86400)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n",
+       "  * lon        (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
+       "Data variables:\n",
+       "    elevation  (lat, lon) int16 dask.array<chunksize=(60, 60), meta=np.ndarray>\n",
+       "Attributes:\n",
+       "    Conventions:  CF-1.6\n",
+       "    comment:      The data in the GEBCO_2020 Grid should not be used for navi...\n",
+       "    history:      Information on the development of the data set and the sour...\n",
+       "    institution:  On behalf of the General Bathymetric Chart of the Oceans (G...\n",
+       "    node_offset:  1.0\n",
+       "    references:   DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n",
+       "    source:       The GEBCO_2020 Grid is the latest global bathymetric produc...\n",
+       "    title:        The GEBCO_2020 Grid - a continuous terrain model for oceans...
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 43200, lon: 86400)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + "Data variables:\n", + " elevation (lat, lon) int16 dask.array\n", + "Attributes:\n", + " Conventions: CF-1.6\n", + " comment: The data in the GEBCO_2020 Grid should not be used for navi...\n", + " history: Information on the development of the data set and the sour...\n", + " institution: On behalf of the General Bathymetric Chart of the Oceans (G...\n", + " node_offset: 1.0\n", + " references: DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n", + " source: The GEBCO_2020 Grid is the latest global bathymetric produc...\n", + " title: The GEBCO_2020 Grid - a continuous terrain model for oceans..." + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st = time.time()\n", + "dz = xr.open_zarr(\n", + " '../data/GEBCO_2023_sub_ice_topo.zarr', chunks='auto', #group='gebco', \n", + " decode_cf=False, decode_times=False)\n", + "\n", + "et = time.time()\n", + "print('Exe time: ', et-st, 'sec')\n", + "dz" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['crs', 'elevation', 'gebco', 'lat', 'lon']\n", + "Variable: crs\n", + "Compression: None\n", + "Chunk Size: ()\n", + "Variable: elevation\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (43200, 86400)\n", + "Variable: lat\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (21600,)\n", + "Variable: lon\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (43200,)\n" + ] + } + ], + "source": [ + "import zarr\n", + "\n", + "# Open the Zarr store\n", + "store = zarr.open_group('../data/GEBCO_2022_sub_ice_topo.zarr', mode='r')\n", + "print(list(store.keys()))\n", + "# Inspect attributes\n", + "for var in store.array_keys():\n", + " arr = store[var]\n", + " print(f\"Variable: {var}\")\n", + " print(f\"Compression: {arr.compressor}\")\n", + " print(f\"Chunk Size: {arr.chunks}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['elevation', 'lat', 'lon']\n", + "Variable: elevation\n", + "Compression: Zlib(level=1)\n", + "Chunk Size: (43200, 86400)\n", + "Variable: lat\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (21600,)\n", + "Variable: lon\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (43200,)\n" + ] + } + ], + "source": [ + "#import zarr\n", + "\n", + "# Open the Zarr store\n", + "store2 = zarr.open_group('../data/GEBCO_2023_sub_ice_topo_compressor.zarr', mode='r')\n", + "print(list(store2.keys()))\n", + "## Inspect attributes\n", + "## Access the 'gebco' group\n", + "# gebco_group = store2['gebco']\n", + "\n", + "## Inspect attributes within the 'gebco' group\n", + "#for var in gebco_group.array_keys():\n", + "# arr = gebco_group[var]\n", + "# print(f\"Variable: {var}\")\n", + "# print(f\"Compression: {arr.compressor}\")\n", + "# print(f\"Chunk Size: {arr.chunks}\")\n", + "\n", + "for var in store2.array_keys():\n", + " arr = store2[var]\n", + " print(f\"Variable: {var}\")\n", + " print(f\"Compression: {arr.compressor}\")\n", + " print(f\"Chunk Size: {arr.chunks}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['elevation', 'lat', 'lon']\n", + "Variable: elevation\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (60, 60)\n", + "Variable: lat\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (21600,)\n", + "Variable: lon\n", + "Compression: Blosc(cname='lz4', clevel=5, shuffle=SHUFFLE, blocksize=0)\n", + "Chunk Size: (43200,)\n" + ] + } + ], + "source": [ + "#import zarr\n", + "\n", + "# Open the Zarr store\n", + "store = zarr.open_group('../data/GEBCO_2023_sub_ice_topo.zarr', mode='r')\n", + "print(list(store.keys()))\n", + "# Inspect attributes\n", + "for var in store.array_keys():\n", + " arr = store[var]\n", + " print(f\"Variable: {var}\")\n", + " print(f\"Compression: {arr.compressor}\")\n", + " print(f\"Chunk Size: {arr.chunks}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "112\n" + ] + }, + { + "data": { + "text/plain": [ + "6.9522857666015625" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(sys.getsizeof(dz))\n", + "dz['elevation'].nbytes/(1024 ** 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Exe time: 40.998939990997314 sec\n", + "[[-121 -119 -116 -111 -106 -101 -94 -88 -82 -76]\n", + " [-123 -121 -119 -115 -109 -103 -97 -91 -86 -79]\n", + " [-126 -124 -122 -118 -113 -106 -100 -95 -88 -83]\n", + " [-127 -127 -126 -123 -116 -110 -103 -97 -91 -86]\n", + " [-127 -127 -128 -126 -118 -112 -106 -99 -94 -88]\n", + " [-127 -127 -126 -125 -119 -113 -107 -102 -96 -91]\n", + " [-127 -127 -126 -123 -118 -113 -108 -103 -99 -94]\n", + " [-126 -125 -124 -122 -118 -113 -109 -104 -100 -96]\n", + " [-125 -124 -123 -120 -118 -114 -110 -107 -102 -98]\n", + " [-123 -123 -121 -120 -118 -114 -112 -108 -104 -100]]\n" + ] + } + ], + "source": [ + "st = time.time()\n", + "dz_s1 = dz.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", + "dz_s1.close() #try if it can close\n", + "zt1 = dz_s1.isel(lon=slice(1000, 1010), lat=slice(2000, 2010))\n", + "xz1 = zt1['elevation'].values\n", + "et = time.time()\n", + "print('Exe time: ', et-st, 'sec')\n", + "print(xz1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "st = time.time()\n", + "jz1 = orjson.dumps(xz1.tolist(), option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)\n", + "et = time.time()\n", + "print('4.1z Convert JSON by orjson time: ', et-st, 'sec')\n", + "print(jz1)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.8.10 ('py39')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "e4b16f993b66de7f38f135ed21ea7c985362ee20cd8e4dede1c122c7165d5297" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/simu_gebco01.py b/dev/simu_gebco01.py similarity index 99% rename from simu_gebco01.py rename to dev/simu_gebco01.py index 02eeefc..805eef2 100644 --- a/simu_gebco01.py +++ b/dev/simu_gebco01.py @@ -12,7 +12,7 @@ from typing import Union #, Optional # from loggerConfig import logger # from models import zprofSchema -from xmeridian import * +from src.xmeridian import * import dask # from multiprocessing.pool import Pool @@ -39,7 +39,7 @@ global ds #logger.info ds = xr.open_zarr( - 'GEBCO_2022_sub_ice_topo.zarr', chunks='auto', group='gebco', + 'data/GEBCO_2023_sub_ice_topo.zarr', chunks='auto', group='gebco', decode_cf=False, decode_times=False) # @app.on_event("shutdown") @@ -382,7 +382,7 @@ def zprofile(lon: str, lat: str, mode: Union[str, None] = None): return JSONResponse(content=out) -#print(zprofile(lon='123,123.15', lat='22.13,22', mode='dataframe')) +print(zprofile(lon='123,123.15', lat='22.13,22', mode='dataframe')) #print(zprofile(lon='123,123.15', lat='22.13,22', mode='dataframe,zonly')) #out = zprofile(lon='123,123.15', lat='22.13', mode='dataframe') #print(out) \ No newline at end of file diff --git a/wireframe01.ipynb b/dev/wireframe01.ipynb similarity index 100% rename from wireframe01.ipynb rename to dev/wireframe01.ipynb diff --git a/zprofile01.ipynb b/dev/zprofile01.ipynb similarity index 63% rename from zprofile01.ipynb rename to dev/zprofile01.ipynb index b2628c4..73e1ebc 100644 --- a/zprofile01.ipynb +++ b/dev/zprofile01.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 105, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -16,14 +16,14 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Exe time: 0.005364179611206055 sec\n" + "Exe time: 0.5036609172821045 sec\n" ] }, { @@ -72,7 +72,7 @@ "}\n", "\n", ".xr-wrap {\n", - " display: block;\n", + " display: block !important;\n", " min-width: 300px;\n", " max-width: 700px;\n", "}\n", @@ -386,24 +386,18 @@ " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", "Data variables:\n", - " crs |S1 ...\n", - " elevation (lat, lon) int16 dask.array<chunksize=(675, 2700), meta=np.ndarray>\n", - "Attributes: (12/36)\n", - " Conventions: CF-1.6, ACDD-1.3\n", - " comment: The data in the GEBCO_2022 Grid should n...\n", - " creator_email: gdacc@seabed2030.org\n", - " creator_name: GEBCO through the Nippon Foundation-GEBC...\n", - " creator_type: International organisation\n", - " creator_url: https://www.gebco.net\n", - " ... ...\n", - " node_offset: 1.0\n", - " project: Nippon Foundation - GEBCO Seabed2030 Pro...\n", - " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " source: The GEBCO_2022 Grid is the latest global...\n", - " summary: The GEBCO_2022 Grid is a continuous, glo...\n", - " title: The GEBCO_2022 Grid - a continuous terra..." ], "text/plain": [ "\n", @@ -503,25 +461,19 @@ " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", "Data variables:\n", - " crs |S1 ...\n", - " elevation (lat, lon) int16 dask.array\n", - "Attributes: (12/36)\n", - " Conventions: CF-1.6, ACDD-1.3\n", - " comment: The data in the GEBCO_2022 Grid should n...\n", - " creator_email: gdacc@seabed2030.org\n", - " creator_name: GEBCO through the Nippon Foundation-GEBC...\n", - " creator_type: International organisation\n", - " creator_url: https://www.gebco.net\n", - " ... ...\n", - " node_offset: 1.0\n", - " project: Nippon Foundation - GEBCO Seabed2030 Pro...\n", - " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " source: The GEBCO_2022 Grid is the latest global...\n", - " summary: The GEBCO_2022 Grid is a continuous, glo...\n", - " title: The GEBCO_2022 Grid - a continuous terra..." + " elevation (lat, lon) int16 dask.array\n", + "Attributes:\n", + " Conventions: CF-1.6\n", + " comment: The data in the GEBCO_2020 Grid should not be used for navi...\n", + " history: Information on the development of the data set and the sour...\n", + " institution: On behalf of the General Bathymetric Chart of the Oceans (G...\n", + " node_offset: 1.0\n", + " references: DOI: 10.5285/836f016a-33be-6ddc-e053-6c86abc0788e\n", + " source: The GEBCO_2020 Grid is the latest global bathymetric produc...\n", + " title: The GEBCO_2020 Grid - a continuous terrain model for oceans..." ] }, - "execution_count": 102, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -529,7 +481,7 @@ "source": [ "st = time.time()\n", "ds = xr.open_zarr(\n", - " 'GEBCO_2022_sub_ice_topo.zarr', chunks='auto', \n", + " 'data/GEBCO_2023_sub_ice_topo.zarr', chunks='auto', \n", " group='gebco', decode_cf=False, decode_times=False)\n", "\n", "et = time.time()\n", @@ -539,14 +491,14 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Estimated memory usage: 7120.129395484924 Mb\n" + "Estimated memory usage: 7120.12939453125 Mb\n" ] } ], @@ -557,7 +509,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -598,16 +550,16 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([2.55682213])" + "array([2.55699391])" ] }, - "execution_count": 58, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -621,12 +573,12 @@ " geodesic((loc[lk-1, 1], loc[lk-1, 0]),\n", " (loc[lk, 1], loc[lk, 0])).km))\n", "\n", - "curDist(np.array([[121.53967066033685,25.070035818788032], [121.56499lonx[414543,25.06911681954908]]))" + "curDist(np.array([[121.53967066033685,25.070035818788032], [121.56499414543,25.06911681954908]]))" ] }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -671,377 +623,378 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "72369 27616\n", + "72368 27615\n", "m, b: 0.06490248512891315 17.175908845785813\n", - "line: 72370 121.54166666666669 0.5406250000000189 121.54062500000002 25.064197452407125 27616\n", - "line: 72371 121.54583333333335 0.5447916666666818 121.54479166666668 25.064467879428495 27616\n", - "line: 72372 121.55000000000001 0.5489583333333447 121.54895833333335 25.064738306449865 27616\n", + "line: 72369 121.53750000000002 0.536458333333356 121.53645833333336 25.063927025385755 27615\n", + "line: 72370 121.54166666666669 0.5406250000000189 121.54062500000002 25.064197452407125 27615\n", + "line: 72371 121.54583333333335 0.5447916666666818 121.54479166666668 25.064467879428495 27615\n", "m, b: 0.6648659566106117 -55.749993007023775\n", - "line: 72373 121.55416666666667 0.5531250000000075 121.55312500000001 25.066541725110483 27616\n", - "line: 72374 121.55833333333334 0.5572916666666704 121.55729166666667 25.069311999929695 27617\n", - "line: 72375 121.5625 0.5614583333333333 121.56145833333333 25.072082274748908 27618\n", - "line: 72376 121.56666666666666 0.5656249999999962 121.565625 25.074852549568106 27618\n", - "line: 72377 121.57083333333333 0.569791666666659 121.56979166666666 25.07762282438732 27619\n", - "line: 72378 121.57499999999999 0.5739583333333219 121.57395833333332 25.080393099206532 27620\n", - "line: 72379 121.57916666666665 0.5781249999999848 121.57812499999999 25.08316337402573 27620\n", - "line: 72380 121.58333333333331 0.5822916666666477 121.58229166666665 25.085933648844943 27621\n", - "line: 72381 121.58749999999998 0.5864583333333105 121.58645833333331 25.088703923664156 27622\n", - "line: 72382 121.59166666666664 0.5906249999999734 121.59062499999997 25.091474198483354 27622\n", - "line: 72383 121.59583333333336 0.5947916666666931 121.5947916666667 25.09424447330261 27623\n", - "line: 72384 121.60000000000002 0.598958333333356 121.59895833333336 25.097014748121808 27624\n", - "line: 72385 121.60416666666669 0.6031250000000189 121.60312500000002 25.09978502294102 27624\n", - "line: 72386 121.60833333333335 0.6072916666666818 121.60729166666668 25.102555297760233 27625\n", - "line: 72387 121.61250000000001 0.6114583333333447 121.61145833333335 25.105325572579446 27626\n", - "line: 72388 121.61666666666667 0.6156250000000075 121.61562500000001 25.108095847398644 27626\n", - "line: 72389 121.62083333333334 0.6197916666666704 121.61979166666667 25.110866122217857 27627\n", - "line: 72390 121.625 0.6239583333333333 121.62395833333333 25.11363639703707 27628\n", - "line: 72391 121.62916666666666 0.6281249999999962 121.628125 25.116406671856268 27628\n", - "line: 72392 121.63333333333333 0.632291666666659 121.63229166666666 25.11917694667548 27629\n", - "line: 72393 121.63749999999999 0.6364583333333219 121.63645833333332 25.121947221494693 27630\n", - "line: 72394 121.64166666666665 0.6406249999999848 121.64062499999999 25.12471749631389 27630\n", - "line: 72395 121.64583333333331 0.6447916666666477 121.64479166666665 25.127487771133104 27631\n", - "line: 72396 121.64999999999998 0.6489583333333105 121.64895833333331 25.130258045952317 27632\n", - "line: 72397 121.65416666666664 0.6531249999999734 121.65312499999997 25.13302832077153 27632\n", - "line: 72398 121.65833333333336 0.6572916666666931 121.6572916666667 25.13579859559077 27633\n", - "line: 72399 121.66250000000002 0.661458333333356 121.66145833333336 25.138568870409983 27634\n", - "line: 72400 121.66666666666669 0.6656250000000189 121.66562500000002 25.141339145229182 27634\n", - "line: 72401 121.67083333333335 0.6697916666666818 121.66979166666668 25.144109420048395 27635\n", - "line: 72402 121.67500000000001 0.6739583333333447 121.67395833333335 25.146879694867607 27636\n", - "line: 72403 121.67916666666667 0.6781250000000075 121.67812500000001 25.149649969686806 27636\n", - "line: 72404 121.68333333333334 0.6822916666666704 121.68229166666667 25.15242024450602 27637\n", - "line: 72405 121.6875 0.6864583333333333 121.68645833333333 25.15519051932523 27638\n", - "line: 72406 121.69166666666666 0.6906249999999962 121.690625 25.15796079414443 27638\n", - "line: 72407 121.69583333333333 0.694791666666659 121.69479166666666 25.160731068963642 27639\n", - "line: 72408 121.69999999999999 0.6989583333333219 121.69895833333332 25.163501343782855 27640\n", - "line: 72409 121.70416666666665 0.7031249999999848 121.70312499999999 25.166271618602067 27640\n", - "line: 72410 121.70833333333331 0.7072916666666477 121.70729166666665 25.169041893421266 27641\n", - "line: 72411 121.71249999999998 0.7114583333333105 121.71145833333331 25.17181216824048 27642\n", - "line: 72412 121.71666666666664 0.7156249999999734 121.71562499999997 25.17458244305969 27642\n", - "line: 72413 121.72083333333336 0.7197916666666931 121.7197916666667 25.177352717878932 27643\n", - "line: 72414 121.72500000000002 0.723958333333356 121.72395833333336 25.180122992698145 27644\n", - "line: 72415 121.72916666666669 0.7281250000000189 121.72812500000002 25.182893267517343 27644\n", - "line: 72416 121.73333333333335 0.7322916666666818 121.73229166666668 25.185663542336556 27645\n", - "line: 72417 121.73750000000001 0.7364583333333447 121.73645833333335 25.18843381715577 27646\n", - "line: 72418 121.74166666666667 0.7406250000000075 121.74062500000001 25.19120409197498 27646\n", - "line: 72419 121.74583333333334 0.7447916666666704 121.74479166666667 25.19397436679418 27647\n", - "line: 72420 121.75 0.7489583333333333 121.74895833333333 25.196744641613392 27648\n", - "line: 72421 121.75416666666666 0.7531249999999962 121.753125 25.199514916432605 27648\n", - "line: 72422 121.75833333333333 0.757291666666659 121.75729166666666 25.202285191251804 27649\n", - "line: 72423 121.76249999999999 0.7614583333333219 121.76145833333332 25.205055466071016 27650\n", - "line: 72424 121.76666666666665 0.7656249999999848 121.76562499999999 25.20782574089023 27650\n", - "line: 72425 121.77083333333331 0.7697916666666477 121.76979166666665 25.210596015709427 27651\n", - "line: 72426 121.77499999999998 0.7739583333333105 121.77395833333331 25.21336629052864 27652\n", - "line: 72427 121.77916666666664 0.7781249999999734 121.77812499999997 25.216136565347853 27652\n", - "line: 72428 121.78333333333336 0.7822916666666931 121.7822916666667 25.218906840167094 27653\n", - "line: 72429 121.78750000000002 0.786458333333356 121.78645833333336 25.221677114986306 27654\n", - "line: 72430 121.79166666666669 0.7906250000000189 121.79062500000002 25.22444738980552 27654\n", - "line: 72431 121.79583333333335 0.7947916666666818 121.79479166666668 25.227217664624717 27655\n", - "line: 72432 121.80000000000001 0.7989583333333447 121.79895833333335 25.22998793944393 27656\n", - "line: 72433 121.80416666666667 0.8031250000000075 121.80312500000001 25.232758214263143 27656\n", - "line: 72434 121.80833333333334 0.8072916666666704 121.80729166666667 25.23552848908234 27657\n", - "line: 72435 121.8125 0.8114583333333333 121.81145833333333 25.238298763901554 27658\n", - "line: 72436 121.81666666666666 0.8156249999999962 121.815625 25.241069038720767 27658\n", - "line: 72437 121.82083333333333 0.819791666666659 121.81979166666666 25.243839313539965 27659\n", - "line: 72438 121.82499999999999 0.8239583333333219 121.82395833333332 25.246609588359178 27660\n", - "line: 72439 121.82916666666665 0.8281249999999848 121.82812499999999 25.24937986317839 27660\n", - "line: 72440 121.83333333333331 0.8322916666666477 121.83229166666665 25.252150137997603 27661\n", - "line: 72441 121.83749999999998 0.8364583333333105 121.83645833333331 25.2549204128168 27662\n", - "line: 72442 121.84166666666664 0.8406249999999734 121.84062499999997 25.257690687636014 27662\n", - "line: 72443 121.84583333333336 0.8447916666666931 121.8447916666667 25.260460962455255 27663\n", - "line: 72444 121.85000000000002 0.848958333333356 121.84895833333336 25.263231237274468 27664\n", - "line: 72445 121.85416666666669 0.8531250000000189 121.85312500000002 25.26600151209368 27664\n", - "line: 72446 121.85833333333335 0.8572916666666818 121.85729166666668 25.26877178691288 27665\n", - "line: 72447 121.86250000000001 0.8614583333333447 121.86145833333335 25.27154206173209 27666\n", - "line: 72448 121.86666666666667 0.8656250000000075 121.86562500000001 25.274312336551304 27666\n", - "line: 72449 121.87083333333334 0.8697916666666704 121.86979166666667 25.277082611370503 27667\n", - "line: 72450 121.875 0.8739583333333333 121.87395833333333 25.279852886189715 27668\n", - "line: 72451 121.87916666666666 0.8781249999999962 121.878125 25.282623161008928 27668\n", - "line: 72452 121.88333333333333 0.882291666666659 121.88229166666666 25.28539343582814 27669\n", - "line: 72453 121.88749999999999 0.8864583333333219 121.88645833333332 25.28816371064734 27670\n", - "line: 72454 121.89166666666665 0.8906249999999848 121.89062499999999 25.290933985466552 27670\n", - "line: 72455 121.89583333333331 0.8947916666666477 121.89479166666665 25.293704260285764 27671\n", - "line: 72456 121.89999999999998 0.8989583333333105 121.89895833333331 25.296474535104963 27672\n", - "line: 72457 121.90416666666664 0.9031249999999734 121.90312499999997 25.299244809924176 27672\n", - "line: 72458 121.90833333333336 0.9072916666666931 121.9072916666667 25.302015084743417 27673\n", - "line: 72459 121.91250000000002 0.911458333333356 121.91145833333336 25.30478535956263 27674\n", - "line: 72460 121.91666666666669 0.9156250000000189 121.91562500000002 25.307555634381842 27674\n", - "line: 72461 121.92083333333335 0.9197916666666818 121.91979166666668 25.310325909201055 27675\n", - "line: 72462 121.92500000000001 0.9239583333333447 121.92395833333335 25.313096184020253 27676\n", - "line: 72463 121.92916666666667 0.9281250000000075 121.92812500000001 25.315866458839466 27676\n", - "line: 72464 121.93333333333334 0.9322916666666704 121.93229166666667 25.31863673365868 27677\n", - "line: 72465 121.9375 0.9364583333333333 121.93645833333333 25.321407008477877 27678\n", - "line: 72466 121.94166666666666 0.9406249999999962 121.940625 25.32417728329709 27678\n", - "line: 72467 121.94583333333333 0.944791666666659 121.94479166666666 25.326947558116302 27679\n", - "line: 72468 121.94999999999999 0.9489583333333219 121.94895833333332 25.3297178329355 27680\n", - "line: 72469 121.95416666666665 0.9531249999999848 121.95312499999999 25.332488107754713 27680\n", - "line: 72470 121.95833333333331 0.9572916666666477 121.95729166666665 25.335258382573926 27681\n", - "line: 72471 121.96249999999998 0.9614583333333105 121.96145833333331 25.338028657393124 27682\n", - "line: 72472 121.96666666666664 0.9656249999999734 121.96562499999997 25.340798932212337 27682\n", - "line: 72473 121.97083333333336 0.9697916666666931 121.9697916666667 25.343569207031592 27683\n", - "line: 72474 121.97500000000002 0.973958333333356 121.97395833333336 25.34633948185079 27684\n", - "line: 72475 121.97916666666669 0.9781250000000189 121.97812500000002 25.349109756670003 27684\n", - "line: 72476 121.98333333333335 0.9822916666666818 121.98229166666668 25.351880031489216 27685\n", - "line: 72477 121.98750000000001 0.9864583333333447 121.98645833333335 25.354650306308415 27686\n", - "line: 72478 121.99166666666667 0.9906250000000075 121.99062500000001 25.357420581127627 27686\n", - "line: 72479 121.99583333333334 0.9947916666666704 121.99479166666667 25.36019085594684 27687\n", - "line: 72480 122.0 -0.0010416666666666667 121.99895833333333 25.36296113076604 27688\n", - "line: 72481 122.00416666666666 0.0031249999999962107 122.003125 25.36573140558525 27688\n", - "line: 72482 122.00833333333333 0.007291666666659088 122.00729166666666 25.368501680404464 27689\n", - "line: 72483 122.01249999999999 0.011458333333321965 122.01145833333332 25.371271955223676 27690\n", - "line: 72484 122.01666666666665 0.015624999999984842 122.01562499999999 25.374042230042875 27690\n", - "line: 72485 122.02083333333331 0.01979166666664772 122.01979166666665 25.376812504862087 27691\n", - "line: 72486 122.02499999999998 0.023958333333310596 122.02395833333331 25.3795827796813 27692\n", - "line: 72487 122.02916666666664 0.028124999999973473 122.02812499999997 25.3823530545005 27692\n", - "line: 72488 122.03333333333336 0.03229166666669319 122.0322916666667 25.385123329319754 27693\n", - "line: 72489 122.03750000000002 0.03645833333335607 122.03645833333336 25.387893604138952 27694\n", - "line: 72490 122.04166666666669 0.040625000000018945 122.04062500000002 25.390663878958165 27694\n", - "line: 72491 122.04583333333335 0.04479166666668182 122.04479166666668 25.393434153777378 27695\n", - "line: 72492 122.05000000000001 0.0489583333333447 122.04895833333335 25.396204428596576 27696\n", - "line: 72493 122.05416666666667 0.053125000000007576 122.05312500000001 25.39897470341579 27696\n", - "line: 72494 122.05833333333334 0.05729166666667045 122.05729166666667 25.401744978235 27697\n", - "line: 72495 122.0625 0.06145833333333333 122.06145833333333 25.404515253054214 27698\n", - "line: 72496 122.06666666666666 0.06562499999999621 122.065625 25.407285527873412 27698\n", - "line: 72497 122.07083333333333 0.06979166666665909 122.06979166666666 25.410055802692625 27699\n", - "line: 72498 122.07499999999999 0.07395833333332197 122.07395833333332 25.412826077511838 27700\n", - "line: 72499 122.07916666666665 0.07812499999998485 122.07812499999999 25.415596352331036 27700\n", - "line: 72500 122.08333333333331 0.08229166666664772 122.08229166666665 25.41836662715025 27701\n", - "line: 72501 122.08749999999998 0.0864583333333106 122.08645833333331 25.42113690196946 27702\n", - "line: 72502 122.09166666666664 0.09062499999997348 122.09062499999997 25.42390717678866 27702\n", - "line: 72503 122.09583333333336 0.0947916666666932 122.0947916666667 25.426677451607915 27703\n", - "line: 72504 122.10000000000002 0.09895833333335607 122.09895833333336 25.429447726427114 27704\n", - "line: 72505 122.10416666666669 0.10312500000001895 122.10312500000002 25.432218001246326 27704\n", - "line: 72506 122.10833333333335 0.10729166666668183 122.10729166666668 25.43498827606554 27705\n", - "line: 72507 122.11250000000001 0.1114583333333447 122.11145833333335 25.43775855088475 27706\n", - "line: 72508 122.11666666666667 0.11562500000000758 122.11562500000001 25.44052882570395 27706\n", - "line: 72509 122.12083333333334 0.11979166666667046 122.11979166666667 25.443299100523163 27707\n", - "line: 72510 122.125 0.12395833333333334 122.12395833333333 25.446069375342375 27708\n", - "line: 72511 122.12916666666666 0.12812499999999621 122.128125 25.448839650161574 27708\n", - "line: 72512 122.13333333333333 0.1322916666666591 122.13229166666666 25.451609924980787 27709\n", - "line: 72513 122.13749999999999 0.13645833333332197 122.13645833333332 25.4543801998 27710\n", - "line: 72514 122.14166666666665 0.14062499999998485 122.14062499999999 25.457150474619198 27710\n", - "line: 72515 122.14583333333331 0.14479166666664772 122.14479166666665 25.45992074943841 27711\n", - "line: 72516 122.14999999999998 0.1489583333333106 122.14895833333331 25.462691024257623 27712\n", - "line: 72517 122.15416666666664 0.15312499999997348 122.15312499999997 25.465461299076836 27712\n", - "line: 72518 122.15833333333336 0.1572916666666932 122.1572916666667 25.468231573896077 27713\n", - "line: 72519 122.16250000000002 0.16145833333335607 122.16145833333336 25.47100184871529 27714\n", - "line: 72520 122.16666666666669 0.16562500000001895 122.16562500000002 25.473772123534488 27714\n", - "line: 72521 122.17083333333335 0.16979166666668183 122.16979166666668 25.4765423983537 27715\n", - "line: 72522 122.17500000000001 0.1739583333333447 122.17395833333335 25.479312673172913 27716\n", - "line: 72523 122.17916666666667 0.17812500000000758 122.17812500000001 25.48208294799211 27716\n", - "line: 72524 122.18333333333334 0.18229166666667046 122.18229166666667 25.484853222811324 27717\n", - "line: 72525 122.1875 0.18645833333333334 122.18645833333333 25.487623497630537 27718\n", - "line: 72526 122.19166666666666 0.19062499999999621 122.190625 25.490393772449735 27718\n", - "line: 72527 122.19583333333333 0.1947916666666591 122.19479166666666 25.493164047268948 27719\n", - "line: 72528 122.19999999999999 0.19895833333332197 122.19895833333332 25.49593432208816 27720\n", - "line: 72529 122.20416666666665 0.20312499999998485 122.20312499999999 25.498704596907373 27720\n", - "line: 72530 122.20833333333331 0.20729166666664772 122.20729166666665 25.501474871726572 27721\n", - "line: 72531 122.21249999999998 0.2114583333333106 122.21145833333331 25.504245146545784 27722\n", - "line: 72532 122.21666666666664 0.21562499999997348 122.21562499999997 25.507015421364997 27722\n", - "line: 72533 122.22083333333336 0.2197916666666932 122.2197916666667 25.509785696184238 27723\n", - "line: 72534 122.22500000000002 0.22395833333335607 122.22395833333336 25.51255597100345 27724\n", - "line: 72535 122.22916666666669 0.22812500000001895 122.22812500000002 25.51532624582265 27724\n", - "line: 72536 122.23333333333335 0.23229166666668183 122.23229166666668 25.518096520641862 27725\n", - "line: 72537 122.23750000000001 0.2364583333333447 122.23645833333335 25.520866795461075 27726\n", - "line: 72538 122.24166666666667 0.24062500000000758 122.24062500000001 25.523637070280287 27726\n", - "line: 72539 122.24583333333334 0.24479166666667046 122.24479166666667 25.526407345099486 27727\n", - "line: 72540 122.25 0.24895833333333334 122.24895833333333 25.5291776199187 27728\n", - "line: 72541 122.25416666666666 0.2531249999999962 122.253125 25.53194789473791 27728\n", - "line: 72542 122.25833333333333 0.2572916666666591 122.25729166666666 25.53471816955711 27729\n", - "line: 72543 122.26249999999999 0.26145833333332197 122.26145833333332 25.537488444376322 27729\n", - "line: 72544 122.26666666666665 0.26562499999998485 122.26562499999999 25.540258719195535 27730\n", - "line: 72545 122.27083333333331 0.2697916666666477 122.26979166666665 25.543028994014733 27731\n", - "line: 72546 122.27499999999998 0.2739583333333106 122.27395833333331 25.545799268833946 27731\n", - "line: 72547 122.27916666666664 0.2781249999999735 122.27812499999997 25.54856954365316 27732\n", - "line: 72548 122.28333333333336 0.2822916666666932 122.2822916666667 25.5513398184724 27733\n", - "line: 72549 122.28750000000002 0.2864583333333561 122.28645833333336 25.554110093291612 27733\n", - "line: 72550 122.29166666666669 0.29062500000001895 122.29062500000002 25.556880368110825 27734\n", - "line: 72551 122.29583333333335 0.29479166666668183 122.29479166666668 25.559650642930023 27735\n", - "line: 72552 122.30000000000001 0.2989583333333447 122.29895833333335 25.562420917749236 27735\n", - "line: 72553 122.30416666666667 0.3031250000000076 122.30312500000001 25.56519119256845 27736\n", - "line: 72554 122.30833333333334 0.30729166666667046 122.30729166666667 25.567961467387647 27737\n", - "line: 72555 122.3125 0.31145833333333334 122.31145833333333 25.57073174220686 27737\n", - "line: 72556 122.31666666666666 0.3156249999999962 122.315625 25.573502017026073 27738\n", - "line: 72557 122.32083333333333 0.3197916666666591 122.31979166666666 25.57627229184527 27739\n", - "line: 72558 122.32499999999999 0.32395833333332197 122.32395833333332 25.579042566664484 27739\n", - "line: 72559 122.32916666666665 0.32812499999998485 122.32812499999999 25.581812841483696 27740\n", - "line: 72560 122.33333333333331 0.3322916666666477 122.33229166666665 25.58458311630291 27741\n", - "line: 72561 122.33749999999998 0.3364583333333106 122.33645833333331 25.587353391122107 27741\n", - "line: 72562 122.34166666666664 0.3406249999999735 122.34062499999997 25.59012366594132 27742\n", - "line: 72563 122.34583333333336 0.3447916666666932 122.3447916666667 25.59289394076056 27743\n", - "line: 72564 122.35000000000002 0.3489583333333561 122.34895833333336 25.595664215579774 27743\n", - "line: 72565 122.35416666666669 0.35312500000001895 122.35312500000002 25.598434490398986 27744\n", - "line: 72566 122.35833333333335 0.35729166666668183 122.35729166666668 25.601204765218185 27745\n", - "line: 72567 122.36250000000001 0.3614583333333447 122.36145833333335 25.603975040037398 27745\n", - "line: 72568 122.36666666666667 0.3656250000000076 122.36562500000001 25.60674531485661 27746\n", - "line: 72569 122.37083333333334 0.36979166666667046 122.36979166666667 25.60951558967581 27747\n", - "line: 72570 122.375 0.37395833333333334 122.37395833333333 25.61228586449502 27747\n", - "line: 72571 122.37916666666666 0.3781249999999962 122.378125 25.615056139314234 27748\n", - "line: 72572 122.38333333333333 0.3822916666666591 122.38229166666666 25.617826414133447 27749\n", - "line: 72573 122.38749999999999 0.38645833333332197 122.38645833333332 25.620596688952645 27749\n", - "line: 72574 122.39166666666665 0.39062499999998485 122.39062499999999 25.623366963771858 27750\n", - "line: 72575 122.39583333333331 0.3947916666666477 122.39479166666665 25.62613723859107 27751\n", - "line: 72576 122.39999999999998 0.3989583333333106 122.39895833333331 25.62890751341027 27751\n", - "line: 72577 122.40416666666664 0.4031249999999735 122.40312499999997 25.63167778822948 27752\n", - "line: 72578 122.40833333333336 0.4072916666666932 122.4072916666667 25.634448063048723 27753\n", - "line: 72579 122.41250000000002 0.4114583333333561 122.41145833333336 25.637218337867935 27753\n", - "line: 72580 122.41666666666669 0.41562500000001895 122.41562500000002 25.639988612687148 27754\n", - "line: 72581 122.42083333333335 0.41979166666668183 122.41979166666668 25.642758887506346 27755\n", - "line: 72582 122.42500000000001 0.4239583333333447 122.42395833333335 25.64552916232556 27755\n", - "line: 72583 122.42916666666667 0.4281250000000076 122.42812500000001 25.64829943714477 27756\n", - "line: 72584 122.43333333333334 0.43229166666667046 122.43229166666667 25.651069711963984 27757\n", - "line: 72585 122.4375 0.43645833333333334 122.43645833333333 25.653839986783183 27757\n", - "line: 72586 122.44166666666666 0.4406249999999962 122.440625 25.656610261602395 27758\n", - "line: 72587 122.44583333333333 0.4447916666666591 122.44479166666666 25.659380536421608 27759\n", - "line: 72588 122.44999999999999 0.44895833333332197 122.44895833333332 25.662150811240807 27759\n", - "line: 72589 122.45416666666665 0.45312499999998485 122.45312499999999 25.66492108606002 27760\n", - "line: 72590 122.45833333333331 0.4572916666666477 122.45729166666665 25.667691360879232 27761\n", - "line: 72591 122.46249999999998 0.4614583333333106 122.46145833333331 25.67046163569843 27761\n", - "line: 72592 122.46666666666664 0.4656249999999735 122.46562499999997 25.673231910517643 27762\n", - "line: 72593 122.47083333333336 0.4697916666666932 122.4697916666667 25.6760021853369 27763\n", - "line: 72594 122.47500000000002 0.4739583333333561 122.47395833333336 25.678772460156097 27763\n", - "line: 72595 122.47916666666669 0.47812500000001895 122.47812500000002 25.68154273497531 27764\n", - "line: 72596 122.48333333333335 0.48229166666668183 122.48229166666668 25.684313009794522 27765\n", - "line: 72597 122.48750000000001 0.4864583333333447 122.48645833333335 25.68708328461372 27765\n", - "line: 72598 122.49166666666667 0.4906250000000076 122.49062500000001 25.689853559432933 27766\n", - "line: 72599 122.49583333333334 0.49479166666667046 122.49479166666667 25.692623834252146 27767\n", - "line: 72600 122.5 0.49895833333333334 122.49895833333333 25.695394109071344 27767\n", - "line: 72601 122.50416666666666 0.5031249999999962 122.503125 25.698164383890557 27768\n", - "line: 72602 122.50833333333333 0.507291666666659 122.50729166666666 25.70093465870977 27769\n", - "line: 72603 122.51249999999999 0.5114583333333219 122.51145833333332 25.703704933528982 27769\n", - "line: 72604 122.51666666666665 0.5156249999999848 122.51562499999999 25.70647520834818 27770\n", - "line: 72605 122.52083333333331 0.5197916666666477 122.51979166666665 25.709245483167393 27771\n", - "line: 72606 122.52499999999998 0.5239583333333105 122.52395833333331 25.712015757986606 27771\n", - "line: 72607 122.52916666666664 0.5281249999999734 122.52812499999997 25.714786032805804 27772\n", - "line: 72608 122.53333333333336 0.5322916666666931 122.5322916666667 25.71755630762506 27773\n", - "line: 72609 122.53750000000002 0.536458333333356 122.53645833333336 25.720326582444258 27773\n", - "line: 72610 122.54166666666669 0.5406250000000189 122.54062500000002 25.72309685726347 27774\n", - "line: 72611 122.54583333333335 0.5447916666666818 122.54479166666668 25.725867132082683 27775\n", - "line: 72612 122.55000000000001 0.5489583333333447 122.54895833333335 25.728637406901882 27775\n", - "line: 72613 122.55416666666667 0.5531250000000075 122.55312500000001 25.731407681721095 27776\n", - "line: 72614 122.55833333333334 0.5572916666666704 122.55729166666667 25.734177956540307 27777\n", - "line: 72615 122.5625 0.5614583333333333 122.56145833333333 25.73694823135952 27777\n", - "line: 72616 122.56666666666666 0.5656249999999962 122.565625 25.73971850617872 27778\n", - "line: 72617 122.57083333333333 0.569791666666659 122.56979166666666 25.74248878099793 27779\n", - "line: 72618 122.57499999999999 0.5739583333333219 122.57395833333332 25.745259055817144 27779\n", - "line: 72619 122.57916666666665 0.5781249999999848 122.57812499999999 25.748029330636342 27780\n", - "line: 72620 122.58333333333331 0.5822916666666477 122.58229166666665 25.750799605455555 27781\n", - "line: 72621 122.58749999999998 0.5864583333333105 122.58645833333331 25.753569880274767 27781\n", - "line: 72622 122.59166666666664 0.5906249999999734 122.59062499999997 25.756340155093966 27782\n", - "line: 72623 122.59583333333336 0.5947916666666931 122.5947916666667 25.75911042991322 27783\n", - "line: 72624 122.60000000000002 0.598958333333356 122.59895833333336 25.76188070473242 27783\n", - "line: 72625 122.60416666666669 0.6031250000000189 122.60312500000002 25.764650979551632 27784\n", - "line: 72626 122.60833333333335 0.6072916666666818 122.60729166666668 25.767421254370845 27785\n", - "line: 72627 122.61250000000001 0.6114583333333447 122.61145833333335 25.770191529190058 27785\n", - "line: 72628 122.61666666666667 0.6156250000000075 122.61562500000001 25.772961804009256 27786\n", - "line: 72629 122.62083333333334 0.6197916666666704 122.61979166666667 25.77573207882847 27787\n", - "line: 72630 122.625 0.6239583333333333 122.62395833333333 25.77850235364768 27787\n", - "line: 72631 122.62916666666666 0.6281249999999962 122.628125 25.78127262846688 27788\n", - "line: 72632 122.63333333333333 0.632291666666659 122.63229166666666 25.784042903286092 27789\n", - "line: 72633 122.63749999999999 0.6364583333333219 122.63645833333332 25.786813178105305 27789\n", - "line: 72634 122.64166666666665 0.6406249999999848 122.64062499999999 25.789583452924504 27790\n", - "line: 72635 122.64583333333331 0.6447916666666477 122.64479166666665 25.792353727743716 27791\n", - "line: 72636 122.64999999999998 0.6489583333333105 122.64895833333331 25.79512400256293 27791\n", - "line: 72637 122.65416666666664 0.6531249999999734 122.65312499999997 25.79789427738214 27792\n", - "line: 72638 122.65833333333336 0.6572916666666931 122.6572916666667 25.800664552201383 27793\n", - "line: 72639 122.66250000000002 0.661458333333356 122.66145833333336 25.803434827020595 27793\n", - "line: 72640 122.66666666666669 0.6656250000000189 122.66562500000002 25.806205101839794 27794\n", - "line: 72641 122.67083333333335 0.6697916666666818 122.66979166666668 25.808975376659006 27795\n", - "line: 72642 122.67500000000001 0.6739583333333447 122.67395833333335 25.81174565147822 27795\n", - "line: 72643 122.67916666666667 0.6781250000000075 122.67812500000001 25.814515926297418 27796\n", - "line: 72644 122.68333333333334 0.6822916666666704 122.68229166666667 25.81728620111663 27797\n", - "line: 72645 122.6875 0.6864583333333333 122.68645833333333 25.820056475935843 27797\n", - "line: 72646 122.69166666666666 0.6906249999999962 122.690625 25.82282675075504 27798\n", - "line: 72647 122.69583333333333 0.694791666666659 122.69479166666666 25.825597025574254 27799\n", - "line: 72648 122.69999999999999 0.6989583333333219 122.69895833333332 25.828367300393467 27799\n", - "line: 72649 122.70416666666665 0.7031249999999848 122.70312499999999 25.83113757521268 27800\n", - "line: 72650 122.70833333333331 0.7072916666666477 122.70729166666665 25.833907850031878 27801\n", - "line: 72651 122.71249999999998 0.7114583333333105 122.71145833333331 25.83667812485109 27801\n", - "line: 72652 122.71666666666664 0.7156249999999734 122.71562499999997 25.839448399670303 27802\n", - "line: 72653 122.72083333333336 0.7197916666666931 122.7197916666667 25.842218674489544 27803\n", - "line: 72654 122.72500000000002 0.723958333333356 122.72395833333336 25.844988949308757 27803\n", - "line: 72655 122.72916666666669 0.7281250000000189 122.72812500000002 25.847759224127955 27804\n", - "line: 72656 122.73333333333335 0.7322916666666818 122.73229166666668 25.850529498947168 27805\n", - "line: 72657 122.73750000000001 0.7364583333333447 122.73645833333335 25.85329977376638 27805\n", - "line: 72658 122.74166666666667 0.7406250000000075 122.74062500000001 25.856070048585593 27806\n", - "line: 72659 122.74583333333334 0.7447916666666704 122.74479166666667 25.85884032340479 27807\n", - "line: 72660 122.75 0.7489583333333333 122.74895833333333 25.861610598224004 27807\n", - "line: 72661 122.75416666666666 0.7531249999999962 122.753125 25.864380873043217 27808\n", - "line: 72662 122.75833333333333 0.757291666666659 122.75729166666666 25.867151147862415 27809\n", - "line: 72663 122.76249999999999 0.7614583333333219 122.76145833333332 25.869921422681628 27809\n", - "line: 72664 122.76666666666665 0.7656249999999848 122.76562499999999 25.87269169750084 27810\n", - "line: 72665 122.77083333333331 0.7697916666666477 122.76979166666665 25.87546197232004 27811\n", - "line: 72666 122.77499999999998 0.7739583333333105 122.77395833333331 25.878232247139252 27811\n", - "line: 72667 122.77916666666664 0.7781249999999734 122.77812499999997 25.881002521958465 27812\n", - "line: 72668 122.78333333333336 0.7822916666666931 122.7822916666667 25.883772796777706 27813\n", - "line: 72669 122.78750000000002 0.786458333333356 122.78645833333336 25.88654307159692 27813\n", - "line: 72670 122.79166666666669 0.7906250000000189 122.79062500000002 25.88931334641613 27814\n", - "line: 72671 122.79583333333335 0.7947916666666818 122.79479166666668 25.89208362123533 27815\n", - "line: 72672 122.80000000000001 0.7989583333333447 122.79895833333335 25.894853896054542 27815\n", - "line: 72673 122.80416666666667 0.8031250000000075 122.80312500000001 25.897624170873755 27816\n", - "line: 72674 122.80833333333334 0.8072916666666704 122.80729166666667 25.900394445692953 27817\n", - "line: 72675 122.8125 0.8114583333333333 122.81145833333333 25.903164720512166 27817\n", - "line: 72676 122.81666666666666 0.8156249999999962 122.815625 25.90593499533138 27818\n", - "line: 72677 122.82083333333333 0.819791666666659 122.81979166666666 25.908705270150577 27819\n", - "line: 72678 122.82499999999999 0.8239583333333219 122.82395833333332 25.91147554496979 27819\n", - "line: 72679 122.82916666666665 0.8281249999999848 122.82812499999999 25.914245819789002 27820\n", - "line: 72680 122.83333333333331 0.8322916666666477 122.83229166666665 25.917016094608215 27821\n", - "line: 72681 122.83749999999998 0.8364583333333105 122.83645833333331 25.919786369427413 27821\n", - "line: 72682 122.84166666666664 0.8406249999999734 122.84062499999997 25.922556644246626 27822\n", - "line: 72683 122.84583333333336 0.8447916666666931 122.8447916666667 25.925326919065867 27823\n", - "line: 72684 122.85000000000002 0.848958333333356 122.84895833333336 25.92809719388508 27823\n", - "line: 72685 122.85416666666669 0.8531250000000189 122.85312500000002 25.930867468704292 27824\n", - "line: 72686 122.85833333333335 0.8572916666666818 122.85729166666668 25.93363774352349 27825\n", - "line: 72687 122.86250000000001 0.8614583333333447 122.86145833333335 25.936408018342703 27825\n", - "line: 72688 122.86666666666667 0.8656250000000075 122.86562500000001 25.939178293161916 27826\n", - "line: 72689 122.87083333333334 0.8697916666666704 122.86979166666667 25.941948567981115 27827\n", - "line: 72690 122.875 0.8739583333333333 122.87395833333333 25.944718842800327 27827\n", - "line: 72691 122.87916666666666 0.8781249999999962 122.878125 25.94748911761954 27828\n", - "line: 72692 122.88333333333333 0.882291666666659 122.88229166666666 25.950259392438753 27829\n", - "line: 72693 122.88749999999999 0.8864583333333219 122.88645833333332 25.95302966725795 27829\n", - "line: 72694 122.89166666666665 0.8906249999999848 122.89062499999999 25.955799942077164 27830\n", - "line: 72695 122.89583333333331 0.8947916666666477 122.89479166666665 25.958570216896376 27831\n", - "line: 72696 122.89999999999998 0.8989583333333105 122.89895833333331 25.961340491715575 27831\n", - "line: 72697 122.90416666666664 0.9031249999999734 122.90312499999997 25.964110766534787 27832\n", - "line: 72698 122.90833333333336 0.9072916666666931 122.9072916666667 25.96688104135403 27833\n", - "line: 72699 122.91250000000002 0.911458333333356 122.91145833333336 25.96965131617324 27833\n", - "line: 72700 122.91666666666669 0.9156250000000189 122.91562500000002 25.972421590992454 27834\n", - "line: 72701 122.92083333333335 0.9197916666666818 122.91979166666668 25.975191865811652 27835\n", - "line: 72702 122.92500000000001 0.9239583333333447 122.92395833333335 25.977962140630865 27835\n", - "line: 72703 122.92916666666667 0.9281250000000075 122.92812500000001 25.980732415450078 27836\n", - "line: 72704 122.93333333333334 0.9322916666666704 122.93229166666667 25.98350269026929 27837\n", - "line: 72705 122.9375 0.9364583333333333 122.93645833333333 25.98627296508849 27837\n", - "line: 72706 122.94166666666666 0.9406249999999962 122.940625 25.9890432399077 27838\n", - "line: 72707 122.94583333333333 0.944791666666659 122.94479166666666 25.991813514726914 27839\n", - "line: 72708 122.94999999999999 0.9489583333333219 122.94895833333332 25.994583789546112 27839\n", - "line: 72709 122.95416666666665 0.9531249999999848 122.95312499999999 25.997354064365325 27840\n", - "line: 72710 122.95833333333331 0.9572916666666477 122.95729166666665 26.000124339184538 27841\n", - "line: 72711 122.96249999999998 0.9614583333333105 122.96145833333331 26.002894614003736 27841\n", - "line: 72712 122.96666666666664 0.9656249999999734 122.96562499999997 26.00566488882295 27842\n", - "line: 72713 122.97083333333336 0.9697916666666931 122.9697916666667 26.008435163642204 27843\n", - "line: 72714 122.97500000000002 0.973958333333356 122.97395833333336 26.011205438461403 27843\n", - "line: 72715 122.97916666666669 0.9781250000000189 122.97812500000002 26.013975713280615 27844\n", - "line: 72716 122.98333333333335 0.9822916666666818 122.98229166666668 26.016745988099828 27845\n", - "line: 72717 122.98750000000001 0.9864583333333447 122.98645833333335 26.019516262919026 27845\n", - "line: 72718 122.99166666666667 0.9906250000000075 122.99062500000001 26.02228653773824 27846\n", - "line: 72719 122.99583333333334 0.9947916666666704 122.99479166666667 26.02505681255745 27847\n", - "line: 72720 123.0 -0.0010416666666666667 122.99895833333333 26.02782708737665 27847\n", - "line: 72721 123.00416666666666 0.0031249999999962107 123.003125 26.030597362195863 27848\n", - "line: 72722 123.00833333333333 0.007291666666659088 123.00729166666666 26.033367637015076 27849\n", - "line: 72723 123.01249999999999 0.011458333333321965 123.01145833333332 26.036137911834274 27849\n", - "line: 72724 123.01666666666665 0.015624999999984842 123.01562499999999 26.038908186653487 27850\n", - "line: 72725 123.02083333333331 0.01979166666664772 123.01979166666665 26.0416784614727 27851\n", - "line: 72726 123.02499999999998 0.023958333333310596 123.02395833333331 26.044448736291912 27851\n", - "line: 72727 123.02916666666664 0.028124999999973473 123.02812499999997 26.04721901111111 27852\n", - "line: 72728 123.03333333333336 0.03229166666669319 123.0322916666667 26.049989285930366 27852\n", - "line: 72729 123.03750000000002 0.03645833333335607 123.03645833333336 26.052759560749564 27853\n", - "Exe time: 0.20121383666992188 sec\n", + "line: 72372 121.55000000000001 0.5489583333333447 121.54895833333335 25.06377145029127 27615\n", + "line: 72373 121.55416666666667 0.5531250000000075 121.55312500000001 25.066541725110483 27615\n", + "line: 72374 121.55833333333334 0.5572916666666704 121.55729166666667 25.069311999929695 27616\n", + "line: 72375 121.5625 0.5614583333333333 121.56145833333333 25.072082274748908 27617\n", + "line: 72376 121.56666666666666 0.5656249999999962 121.565625 25.074852549568106 27617\n", + "line: 72377 121.57083333333333 0.569791666666659 121.56979166666666 25.07762282438732 27618\n", + "line: 72378 121.57499999999999 0.5739583333333219 121.57395833333332 25.080393099206532 27619\n", + "line: 72379 121.57916666666665 0.5781249999999848 121.57812499999999 25.08316337402573 27619\n", + "line: 72380 121.58333333333331 0.5822916666666477 121.58229166666665 25.085933648844943 27620\n", + "line: 72381 121.58749999999998 0.5864583333333105 121.58645833333331 25.088703923664156 27621\n", + "line: 72382 121.59166666666664 0.5906249999999734 121.59062499999997 25.091474198483354 27621\n", + "line: 72383 121.59583333333336 0.5947916666666931 121.5947916666667 25.09424447330261 27622\n", + "line: 72384 121.60000000000002 0.598958333333356 121.59895833333336 25.097014748121808 27623\n", + "line: 72385 121.60416666666669 0.6031250000000189 121.60312500000002 25.09978502294102 27623\n", + "line: 72386 121.60833333333335 0.6072916666666818 121.60729166666668 25.102555297760233 27624\n", + "line: 72387 121.61250000000001 0.6114583333333447 121.61145833333335 25.105325572579446 27625\n", + "line: 72388 121.61666666666667 0.6156250000000075 121.61562500000001 25.108095847398644 27625\n", + "line: 72389 121.62083333333334 0.6197916666666704 121.61979166666667 25.110866122217857 27626\n", + "line: 72390 121.625 0.6239583333333333 121.62395833333333 25.11363639703707 27627\n", + "line: 72391 121.62916666666666 0.6281249999999962 121.628125 25.116406671856268 27627\n", + "line: 72392 121.63333333333333 0.632291666666659 121.63229166666666 25.11917694667548 27628\n", + "line: 72393 121.63749999999999 0.6364583333333219 121.63645833333332 25.121947221494693 27629\n", + "line: 72394 121.64166666666665 0.6406249999999848 121.64062499999999 25.12471749631389 27629\n", + "line: 72395 121.64583333333331 0.6447916666666477 121.64479166666665 25.127487771133104 27630\n", + "line: 72396 121.64999999999998 0.6489583333333105 121.64895833333331 25.130258045952317 27631\n", + "line: 72397 121.65416666666664 0.6531249999999734 121.65312499999997 25.13302832077153 27631\n", + "line: 72398 121.65833333333336 0.6572916666666931 121.6572916666667 25.13579859559077 27632\n", + "line: 72399 121.66250000000002 0.661458333333356 121.66145833333336 25.138568870409983 27633\n", + "line: 72400 121.66666666666669 0.6656250000000189 121.66562500000002 25.141339145229182 27633\n", + "line: 72401 121.67083333333335 0.6697916666666818 121.66979166666668 25.144109420048395 27634\n", + "line: 72402 121.67500000000001 0.6739583333333447 121.67395833333335 25.146879694867607 27635\n", + "line: 72403 121.67916666666667 0.6781250000000075 121.67812500000001 25.149649969686806 27635\n", + "line: 72404 121.68333333333334 0.6822916666666704 121.68229166666667 25.15242024450602 27636\n", + "line: 72405 121.6875 0.6864583333333333 121.68645833333333 25.15519051932523 27637\n", + "line: 72406 121.69166666666666 0.6906249999999962 121.690625 25.15796079414443 27637\n", + "line: 72407 121.69583333333333 0.694791666666659 121.69479166666666 25.160731068963642 27638\n", + "line: 72408 121.69999999999999 0.6989583333333219 121.69895833333332 25.163501343782855 27639\n", + "line: 72409 121.70416666666665 0.7031249999999848 121.70312499999999 25.166271618602067 27639\n", + "line: 72410 121.70833333333331 0.7072916666666477 121.70729166666665 25.169041893421266 27640\n", + "line: 72411 121.71249999999998 0.7114583333333105 121.71145833333331 25.17181216824048 27641\n", + "line: 72412 121.71666666666664 0.7156249999999734 121.71562499999997 25.17458244305969 27641\n", + "line: 72413 121.72083333333336 0.7197916666666931 121.7197916666667 25.177352717878932 27642\n", + "line: 72414 121.72500000000002 0.723958333333356 121.72395833333336 25.180122992698145 27643\n", + "line: 72415 121.72916666666669 0.7281250000000189 121.72812500000002 25.182893267517343 27643\n", + "line: 72416 121.73333333333335 0.7322916666666818 121.73229166666668 25.185663542336556 27644\n", + "line: 72417 121.73750000000001 0.7364583333333447 121.73645833333335 25.18843381715577 27645\n", + "line: 72418 121.74166666666667 0.7406250000000075 121.74062500000001 25.19120409197498 27645\n", + "line: 72419 121.74583333333334 0.7447916666666704 121.74479166666667 25.19397436679418 27646\n", + "line: 72420 121.75 0.7489583333333333 121.74895833333333 25.196744641613392 27647\n", + "line: 72421 121.75416666666666 0.7531249999999962 121.753125 25.199514916432605 27647\n", + "line: 72422 121.75833333333333 0.757291666666659 121.75729166666666 25.202285191251804 27648\n", + "line: 72423 121.76249999999999 0.7614583333333219 121.76145833333332 25.205055466071016 27649\n", + "line: 72424 121.76666666666665 0.7656249999999848 121.76562499999999 25.20782574089023 27649\n", + "line: 72425 121.77083333333331 0.7697916666666477 121.76979166666665 25.210596015709427 27650\n", + "line: 72426 121.77499999999998 0.7739583333333105 121.77395833333331 25.21336629052864 27651\n", + "line: 72427 121.77916666666664 0.7781249999999734 121.77812499999997 25.216136565347853 27651\n", + "line: 72428 121.78333333333336 0.7822916666666931 121.7822916666667 25.218906840167094 27652\n", + "line: 72429 121.78750000000002 0.786458333333356 121.78645833333336 25.221677114986306 27653\n", + "line: 72430 121.79166666666669 0.7906250000000189 121.79062500000002 25.22444738980552 27653\n", + "line: 72431 121.79583333333335 0.7947916666666818 121.79479166666668 25.227217664624717 27654\n", + "line: 72432 121.80000000000001 0.7989583333333447 121.79895833333335 25.22998793944393 27655\n", + "line: 72433 121.80416666666667 0.8031250000000075 121.80312500000001 25.232758214263143 27655\n", + "line: 72434 121.80833333333334 0.8072916666666704 121.80729166666667 25.23552848908234 27656\n", + "line: 72435 121.8125 0.8114583333333333 121.81145833333333 25.238298763901554 27657\n", + "line: 72436 121.81666666666666 0.8156249999999962 121.815625 25.241069038720767 27657\n", + "line: 72437 121.82083333333333 0.819791666666659 121.81979166666666 25.243839313539965 27658\n", + "line: 72438 121.82499999999999 0.8239583333333219 121.82395833333332 25.246609588359178 27659\n", + "line: 72439 121.82916666666665 0.8281249999999848 121.82812499999999 25.24937986317839 27659\n", + "line: 72440 121.83333333333331 0.8322916666666477 121.83229166666665 25.252150137997603 27660\n", + "line: 72441 121.83749999999998 0.8364583333333105 121.83645833333331 25.2549204128168 27661\n", + "line: 72442 121.84166666666664 0.8406249999999734 121.84062499999997 25.257690687636014 27661\n", + "line: 72443 121.84583333333336 0.8447916666666931 121.8447916666667 25.260460962455255 27662\n", + "line: 72444 121.85000000000002 0.848958333333356 121.84895833333336 25.263231237274468 27663\n", + "line: 72445 121.85416666666669 0.8531250000000189 121.85312500000002 25.26600151209368 27663\n", + "line: 72446 121.85833333333335 0.8572916666666818 121.85729166666668 25.26877178691288 27664\n", + "line: 72447 121.86250000000001 0.8614583333333447 121.86145833333335 25.27154206173209 27665\n", + "line: 72448 121.86666666666667 0.8656250000000075 121.86562500000001 25.274312336551304 27665\n", + "line: 72449 121.87083333333334 0.8697916666666704 121.86979166666667 25.277082611370503 27666\n", + "line: 72450 121.875 0.8739583333333333 121.87395833333333 25.279852886189715 27667\n", + "line: 72451 121.87916666666666 0.8781249999999962 121.878125 25.282623161008928 27667\n", + "line: 72452 121.88333333333333 0.882291666666659 121.88229166666666 25.28539343582814 27668\n", + "line: 72453 121.88749999999999 0.8864583333333219 121.88645833333332 25.28816371064734 27669\n", + "line: 72454 121.89166666666665 0.8906249999999848 121.89062499999999 25.290933985466552 27669\n", + "line: 72455 121.89583333333331 0.8947916666666477 121.89479166666665 25.293704260285764 27670\n", + "line: 72456 121.89999999999998 0.8989583333333105 121.89895833333331 25.296474535104963 27671\n", + "line: 72457 121.90416666666664 0.9031249999999734 121.90312499999997 25.299244809924176 27671\n", + "line: 72458 121.90833333333336 0.9072916666666931 121.9072916666667 25.302015084743417 27672\n", + "line: 72459 121.91250000000002 0.911458333333356 121.91145833333336 25.30478535956263 27673\n", + "line: 72460 121.91666666666669 0.9156250000000189 121.91562500000002 25.307555634381842 27673\n", + "line: 72461 121.92083333333335 0.9197916666666818 121.91979166666668 25.310325909201055 27674\n", + "line: 72462 121.92500000000001 0.9239583333333447 121.92395833333335 25.313096184020253 27675\n", + "line: 72463 121.92916666666667 0.9281250000000075 121.92812500000001 25.315866458839466 27675\n", + "line: 72464 121.93333333333334 0.9322916666666704 121.93229166666667 25.31863673365868 27676\n", + "line: 72465 121.9375 0.9364583333333333 121.93645833333333 25.321407008477877 27677\n", + "line: 72466 121.94166666666666 0.9406249999999962 121.940625 25.32417728329709 27677\n", + "line: 72467 121.94583333333333 0.944791666666659 121.94479166666666 25.326947558116302 27678\n", + "line: 72468 121.94999999999999 0.9489583333333219 121.94895833333332 25.3297178329355 27679\n", + "line: 72469 121.95416666666665 0.9531249999999848 121.95312499999999 25.332488107754713 27679\n", + "line: 72470 121.95833333333331 0.9572916666666477 121.95729166666665 25.335258382573926 27680\n", + "line: 72471 121.96249999999998 0.9614583333333105 121.96145833333331 25.338028657393124 27681\n", + "line: 72472 121.96666666666664 0.9656249999999734 121.96562499999997 25.340798932212337 27681\n", + "line: 72473 121.97083333333336 0.9697916666666931 121.9697916666667 25.343569207031592 27682\n", + "line: 72474 121.97500000000002 0.973958333333356 121.97395833333336 25.34633948185079 27683\n", + "line: 72475 121.97916666666669 0.9781250000000189 121.97812500000002 25.349109756670003 27683\n", + "line: 72476 121.98333333333335 0.9822916666666818 121.98229166666668 25.351880031489216 27684\n", + "line: 72477 121.98750000000001 0.9864583333333447 121.98645833333335 25.354650306308415 27685\n", + "line: 72478 121.99166666666667 0.9906250000000075 121.99062500000001 25.357420581127627 27685\n", + "line: 72479 121.99583333333334 0.9947916666666704 121.99479166666667 25.36019085594684 27686\n", + "line: 72480 122.0 -0.0010416666666666667 121.99895833333333 25.36296113076604 27687\n", + "line: 72481 122.00416666666666 0.0031249999999962107 122.003125 25.36573140558525 27687\n", + "line: 72482 122.00833333333333 0.007291666666659088 122.00729166666666 25.368501680404464 27688\n", + "line: 72483 122.01249999999999 0.011458333333321965 122.01145833333332 25.371271955223676 27689\n", + "line: 72484 122.01666666666665 0.015624999999984842 122.01562499999999 25.374042230042875 27689\n", + "line: 72485 122.02083333333331 0.01979166666664772 122.01979166666665 25.376812504862087 27690\n", + "line: 72486 122.02499999999998 0.023958333333310596 122.02395833333331 25.3795827796813 27691\n", + "line: 72487 122.02916666666664 0.028124999999973473 122.02812499999997 25.3823530545005 27691\n", + "line: 72488 122.03333333333336 0.03229166666669319 122.0322916666667 25.385123329319754 27692\n", + "line: 72489 122.03750000000002 0.03645833333335607 122.03645833333336 25.387893604138952 27693\n", + "line: 72490 122.04166666666669 0.040625000000018945 122.04062500000002 25.390663878958165 27693\n", + "line: 72491 122.04583333333335 0.04479166666668182 122.04479166666668 25.393434153777378 27694\n", + "line: 72492 122.05000000000001 0.0489583333333447 122.04895833333335 25.396204428596576 27695\n", + "line: 72493 122.05416666666667 0.053125000000007576 122.05312500000001 25.39897470341579 27695\n", + "line: 72494 122.05833333333334 0.05729166666667045 122.05729166666667 25.401744978235 27696\n", + "line: 72495 122.0625 0.06145833333333333 122.06145833333333 25.404515253054214 27697\n", + "line: 72496 122.06666666666666 0.06562499999999621 122.065625 25.407285527873412 27697\n", + "line: 72497 122.07083333333333 0.06979166666665909 122.06979166666666 25.410055802692625 27698\n", + "line: 72498 122.07499999999999 0.07395833333332197 122.07395833333332 25.412826077511838 27699\n", + "line: 72499 122.07916666666665 0.07812499999998485 122.07812499999999 25.415596352331036 27699\n", + "line: 72500 122.08333333333331 0.08229166666664772 122.08229166666665 25.41836662715025 27700\n", + "line: 72501 122.08749999999998 0.0864583333333106 122.08645833333331 25.42113690196946 27701\n", + "line: 72502 122.09166666666664 0.09062499999997348 122.09062499999997 25.42390717678866 27701\n", + "line: 72503 122.09583333333336 0.0947916666666932 122.0947916666667 25.426677451607915 27702\n", + "line: 72504 122.10000000000002 0.09895833333335607 122.09895833333336 25.429447726427114 27703\n", + "line: 72505 122.10416666666669 0.10312500000001895 122.10312500000002 25.432218001246326 27703\n", + "line: 72506 122.10833333333335 0.10729166666668183 122.10729166666668 25.43498827606554 27704\n", + "line: 72507 122.11250000000001 0.1114583333333447 122.11145833333335 25.43775855088475 27705\n", + "line: 72508 122.11666666666667 0.11562500000000758 122.11562500000001 25.44052882570395 27705\n", + "line: 72509 122.12083333333334 0.11979166666667046 122.11979166666667 25.443299100523163 27706\n", + "line: 72510 122.125 0.12395833333333334 122.12395833333333 25.446069375342375 27707\n", + "line: 72511 122.12916666666666 0.12812499999999621 122.128125 25.448839650161574 27707\n", + "line: 72512 122.13333333333333 0.1322916666666591 122.13229166666666 25.451609924980787 27708\n", + "line: 72513 122.13749999999999 0.13645833333332197 122.13645833333332 25.4543801998 27709\n", + "line: 72514 122.14166666666665 0.14062499999998485 122.14062499999999 25.457150474619198 27709\n", + "line: 72515 122.14583333333331 0.14479166666664772 122.14479166666665 25.45992074943841 27710\n", + "line: 72516 122.14999999999998 0.1489583333333106 122.14895833333331 25.462691024257623 27711\n", + "line: 72517 122.15416666666664 0.15312499999997348 122.15312499999997 25.465461299076836 27711\n", + "line: 72518 122.15833333333336 0.1572916666666932 122.1572916666667 25.468231573896077 27712\n", + "line: 72519 122.16250000000002 0.16145833333335607 122.16145833333336 25.47100184871529 27713\n", + "line: 72520 122.16666666666669 0.16562500000001895 122.16562500000002 25.473772123534488 27713\n", + "line: 72521 122.17083333333335 0.16979166666668183 122.16979166666668 25.4765423983537 27714\n", + "line: 72522 122.17500000000001 0.1739583333333447 122.17395833333335 25.479312673172913 27715\n", + "line: 72523 122.17916666666667 0.17812500000000758 122.17812500000001 25.48208294799211 27715\n", + "line: 72524 122.18333333333334 0.18229166666667046 122.18229166666667 25.484853222811324 27716\n", + "line: 72525 122.1875 0.18645833333333334 122.18645833333333 25.487623497630537 27717\n", + "line: 72526 122.19166666666666 0.19062499999999621 122.190625 25.490393772449735 27717\n", + "line: 72527 122.19583333333333 0.1947916666666591 122.19479166666666 25.493164047268948 27718\n", + "line: 72528 122.19999999999999 0.19895833333332197 122.19895833333332 25.49593432208816 27719\n", + "line: 72529 122.20416666666665 0.20312499999998485 122.20312499999999 25.498704596907373 27719\n", + "line: 72530 122.20833333333331 0.20729166666664772 122.20729166666665 25.501474871726572 27720\n", + "line: 72531 122.21249999999998 0.2114583333333106 122.21145833333331 25.504245146545784 27721\n", + "line: 72532 122.21666666666664 0.21562499999997348 122.21562499999997 25.507015421364997 27721\n", + "line: 72533 122.22083333333336 0.2197916666666932 122.2197916666667 25.509785696184238 27722\n", + "line: 72534 122.22500000000002 0.22395833333335607 122.22395833333336 25.51255597100345 27723\n", + "line: 72535 122.22916666666669 0.22812500000001895 122.22812500000002 25.51532624582265 27723\n", + "line: 72536 122.23333333333335 0.23229166666668183 122.23229166666668 25.518096520641862 27724\n", + "line: 72537 122.23750000000001 0.2364583333333447 122.23645833333335 25.520866795461075 27725\n", + "line: 72538 122.24166666666667 0.24062500000000758 122.24062500000001 25.523637070280287 27725\n", + "line: 72539 122.24583333333334 0.24479166666667046 122.24479166666667 25.526407345099486 27726\n", + "line: 72540 122.25 0.24895833333333334 122.24895833333333 25.5291776199187 27727\n", + "line: 72541 122.25416666666666 0.2531249999999962 122.253125 25.53194789473791 27727\n", + "line: 72542 122.25833333333333 0.2572916666666591 122.25729166666666 25.53471816955711 27728\n", + "line: 72543 122.26249999999999 0.26145833333332197 122.26145833333332 25.537488444376322 27728\n", + "line: 72544 122.26666666666665 0.26562499999998485 122.26562499999999 25.540258719195535 27729\n", + "line: 72545 122.27083333333331 0.2697916666666477 122.26979166666665 25.543028994014733 27730\n", + "line: 72546 122.27499999999998 0.2739583333333106 122.27395833333331 25.545799268833946 27730\n", + "line: 72547 122.27916666666664 0.2781249999999735 122.27812499999997 25.54856954365316 27731\n", + "line: 72548 122.28333333333336 0.2822916666666932 122.2822916666667 25.5513398184724 27732\n", + "line: 72549 122.28750000000002 0.2864583333333561 122.28645833333336 25.554110093291612 27732\n", + "line: 72550 122.29166666666669 0.29062500000001895 122.29062500000002 25.556880368110825 27733\n", + "line: 72551 122.29583333333335 0.29479166666668183 122.29479166666668 25.559650642930023 27734\n", + "line: 72552 122.30000000000001 0.2989583333333447 122.29895833333335 25.562420917749236 27734\n", + "line: 72553 122.30416666666667 0.3031250000000076 122.30312500000001 25.56519119256845 27735\n", + "line: 72554 122.30833333333334 0.30729166666667046 122.30729166666667 25.567961467387647 27736\n", + "line: 72555 122.3125 0.31145833333333334 122.31145833333333 25.57073174220686 27736\n", + "line: 72556 122.31666666666666 0.3156249999999962 122.315625 25.573502017026073 27737\n", + "line: 72557 122.32083333333333 0.3197916666666591 122.31979166666666 25.57627229184527 27738\n", + "line: 72558 122.32499999999999 0.32395833333332197 122.32395833333332 25.579042566664484 27738\n", + "line: 72559 122.32916666666665 0.32812499999998485 122.32812499999999 25.581812841483696 27739\n", + "line: 72560 122.33333333333331 0.3322916666666477 122.33229166666665 25.58458311630291 27740\n", + "line: 72561 122.33749999999998 0.3364583333333106 122.33645833333331 25.587353391122107 27740\n", + "line: 72562 122.34166666666664 0.3406249999999735 122.34062499999997 25.59012366594132 27741\n", + "line: 72563 122.34583333333336 0.3447916666666932 122.3447916666667 25.59289394076056 27742\n", + "line: 72564 122.35000000000002 0.3489583333333561 122.34895833333336 25.595664215579774 27742\n", + "line: 72565 122.35416666666669 0.35312500000001895 122.35312500000002 25.598434490398986 27743\n", + "line: 72566 122.35833333333335 0.35729166666668183 122.35729166666668 25.601204765218185 27744\n", + "line: 72567 122.36250000000001 0.3614583333333447 122.36145833333335 25.603975040037398 27744\n", + "line: 72568 122.36666666666667 0.3656250000000076 122.36562500000001 25.60674531485661 27745\n", + "line: 72569 122.37083333333334 0.36979166666667046 122.36979166666667 25.60951558967581 27746\n", + "line: 72570 122.375 0.37395833333333334 122.37395833333333 25.61228586449502 27746\n", + "line: 72571 122.37916666666666 0.3781249999999962 122.378125 25.615056139314234 27747\n", + "line: 72572 122.38333333333333 0.3822916666666591 122.38229166666666 25.617826414133447 27748\n", + "line: 72573 122.38749999999999 0.38645833333332197 122.38645833333332 25.620596688952645 27748\n", + "line: 72574 122.39166666666665 0.39062499999998485 122.39062499999999 25.623366963771858 27749\n", + "line: 72575 122.39583333333331 0.3947916666666477 122.39479166666665 25.62613723859107 27750\n", + "line: 72576 122.39999999999998 0.3989583333333106 122.39895833333331 25.62890751341027 27750\n", + "line: 72577 122.40416666666664 0.4031249999999735 122.40312499999997 25.63167778822948 27751\n", + "line: 72578 122.40833333333336 0.4072916666666932 122.4072916666667 25.634448063048723 27752\n", + "line: 72579 122.41250000000002 0.4114583333333561 122.41145833333336 25.637218337867935 27752\n", + "line: 72580 122.41666666666669 0.41562500000001895 122.41562500000002 25.639988612687148 27753\n", + "line: 72581 122.42083333333335 0.41979166666668183 122.41979166666668 25.642758887506346 27754\n", + "line: 72582 122.42500000000001 0.4239583333333447 122.42395833333335 25.64552916232556 27754\n", + "line: 72583 122.42916666666667 0.4281250000000076 122.42812500000001 25.64829943714477 27755\n", + "line: 72584 122.43333333333334 0.43229166666667046 122.43229166666667 25.651069711963984 27756\n", + "line: 72585 122.4375 0.43645833333333334 122.43645833333333 25.653839986783183 27756\n", + "line: 72586 122.44166666666666 0.4406249999999962 122.440625 25.656610261602395 27757\n", + "line: 72587 122.44583333333333 0.4447916666666591 122.44479166666666 25.659380536421608 27758\n", + "line: 72588 122.44999999999999 0.44895833333332197 122.44895833333332 25.662150811240807 27758\n", + "line: 72589 122.45416666666665 0.45312499999998485 122.45312499999999 25.66492108606002 27759\n", + "line: 72590 122.45833333333331 0.4572916666666477 122.45729166666665 25.667691360879232 27760\n", + "line: 72591 122.46249999999998 0.4614583333333106 122.46145833333331 25.67046163569843 27760\n", + "line: 72592 122.46666666666664 0.4656249999999735 122.46562499999997 25.673231910517643 27761\n", + "line: 72593 122.47083333333336 0.4697916666666932 122.4697916666667 25.6760021853369 27762\n", + "line: 72594 122.47500000000002 0.4739583333333561 122.47395833333336 25.678772460156097 27762\n", + "line: 72595 122.47916666666669 0.47812500000001895 122.47812500000002 25.68154273497531 27763\n", + "line: 72596 122.48333333333335 0.48229166666668183 122.48229166666668 25.684313009794522 27764\n", + "line: 72597 122.48750000000001 0.4864583333333447 122.48645833333335 25.68708328461372 27764\n", + "line: 72598 122.49166666666667 0.4906250000000076 122.49062500000001 25.689853559432933 27765\n", + "line: 72599 122.49583333333334 0.49479166666667046 122.49479166666667 25.692623834252146 27766\n", + "line: 72600 122.5 0.49895833333333334 122.49895833333333 25.695394109071344 27766\n", + "line: 72601 122.50416666666666 0.5031249999999962 122.503125 25.698164383890557 27767\n", + "line: 72602 122.50833333333333 0.507291666666659 122.50729166666666 25.70093465870977 27768\n", + "line: 72603 122.51249999999999 0.5114583333333219 122.51145833333332 25.703704933528982 27768\n", + "line: 72604 122.51666666666665 0.5156249999999848 122.51562499999999 25.70647520834818 27769\n", + "line: 72605 122.52083333333331 0.5197916666666477 122.51979166666665 25.709245483167393 27770\n", + "line: 72606 122.52499999999998 0.5239583333333105 122.52395833333331 25.712015757986606 27770\n", + "line: 72607 122.52916666666664 0.5281249999999734 122.52812499999997 25.714786032805804 27771\n", + "line: 72608 122.53333333333336 0.5322916666666931 122.5322916666667 25.71755630762506 27772\n", + "line: 72609 122.53750000000002 0.536458333333356 122.53645833333336 25.720326582444258 27772\n", + "line: 72610 122.54166666666669 0.5406250000000189 122.54062500000002 25.72309685726347 27773\n", + "line: 72611 122.54583333333335 0.5447916666666818 122.54479166666668 25.725867132082683 27774\n", + "line: 72612 122.55000000000001 0.5489583333333447 122.54895833333335 25.728637406901882 27774\n", + "line: 72613 122.55416666666667 0.5531250000000075 122.55312500000001 25.731407681721095 27775\n", + "line: 72614 122.55833333333334 0.5572916666666704 122.55729166666667 25.734177956540307 27776\n", + "line: 72615 122.5625 0.5614583333333333 122.56145833333333 25.73694823135952 27776\n", + "line: 72616 122.56666666666666 0.5656249999999962 122.565625 25.73971850617872 27777\n", + "line: 72617 122.57083333333333 0.569791666666659 122.56979166666666 25.74248878099793 27778\n", + "line: 72618 122.57499999999999 0.5739583333333219 122.57395833333332 25.745259055817144 27778\n", + "line: 72619 122.57916666666665 0.5781249999999848 122.57812499999999 25.748029330636342 27779\n", + "line: 72620 122.58333333333331 0.5822916666666477 122.58229166666665 25.750799605455555 27780\n", + "line: 72621 122.58749999999998 0.5864583333333105 122.58645833333331 25.753569880274767 27780\n", + "line: 72622 122.59166666666664 0.5906249999999734 122.59062499999997 25.756340155093966 27781\n", + "line: 72623 122.59583333333336 0.5947916666666931 122.5947916666667 25.75911042991322 27782\n", + "line: 72624 122.60000000000002 0.598958333333356 122.59895833333336 25.76188070473242 27782\n", + "line: 72625 122.60416666666669 0.6031250000000189 122.60312500000002 25.764650979551632 27783\n", + "line: 72626 122.60833333333335 0.6072916666666818 122.60729166666668 25.767421254370845 27784\n", + "line: 72627 122.61250000000001 0.6114583333333447 122.61145833333335 25.770191529190058 27784\n", + "line: 72628 122.61666666666667 0.6156250000000075 122.61562500000001 25.772961804009256 27785\n", + "line: 72629 122.62083333333334 0.6197916666666704 122.61979166666667 25.77573207882847 27786\n", + "line: 72630 122.625 0.6239583333333333 122.62395833333333 25.77850235364768 27786\n", + "line: 72631 122.62916666666666 0.6281249999999962 122.628125 25.78127262846688 27787\n", + "line: 72632 122.63333333333333 0.632291666666659 122.63229166666666 25.784042903286092 27788\n", + "line: 72633 122.63749999999999 0.6364583333333219 122.63645833333332 25.786813178105305 27788\n", + "line: 72634 122.64166666666665 0.6406249999999848 122.64062499999999 25.789583452924504 27789\n", + "line: 72635 122.64583333333331 0.6447916666666477 122.64479166666665 25.792353727743716 27790\n", + "line: 72636 122.64999999999998 0.6489583333333105 122.64895833333331 25.79512400256293 27790\n", + "line: 72637 122.65416666666664 0.6531249999999734 122.65312499999997 25.79789427738214 27791\n", + "line: 72638 122.65833333333336 0.6572916666666931 122.6572916666667 25.800664552201383 27792\n", + "line: 72639 122.66250000000002 0.661458333333356 122.66145833333336 25.803434827020595 27792\n", + "line: 72640 122.66666666666669 0.6656250000000189 122.66562500000002 25.806205101839794 27793\n", + "line: 72641 122.67083333333335 0.6697916666666818 122.66979166666668 25.808975376659006 27794\n", + "line: 72642 122.67500000000001 0.6739583333333447 122.67395833333335 25.81174565147822 27794\n", + "line: 72643 122.67916666666667 0.6781250000000075 122.67812500000001 25.814515926297418 27795\n", + "line: 72644 122.68333333333334 0.6822916666666704 122.68229166666667 25.81728620111663 27796\n", + "line: 72645 122.6875 0.6864583333333333 122.68645833333333 25.820056475935843 27796\n", + "line: 72646 122.69166666666666 0.6906249999999962 122.690625 25.82282675075504 27797\n", + "line: 72647 122.69583333333333 0.694791666666659 122.69479166666666 25.825597025574254 27798\n", + "line: 72648 122.69999999999999 0.6989583333333219 122.69895833333332 25.828367300393467 27798\n", + "line: 72649 122.70416666666665 0.7031249999999848 122.70312499999999 25.83113757521268 27799\n", + "line: 72650 122.70833333333331 0.7072916666666477 122.70729166666665 25.833907850031878 27800\n", + "line: 72651 122.71249999999998 0.7114583333333105 122.71145833333331 25.83667812485109 27800\n", + "line: 72652 122.71666666666664 0.7156249999999734 122.71562499999997 25.839448399670303 27801\n", + "line: 72653 122.72083333333336 0.7197916666666931 122.7197916666667 25.842218674489544 27802\n", + "line: 72654 122.72500000000002 0.723958333333356 122.72395833333336 25.844988949308757 27802\n", + "line: 72655 122.72916666666669 0.7281250000000189 122.72812500000002 25.847759224127955 27803\n", + "line: 72656 122.73333333333335 0.7322916666666818 122.73229166666668 25.850529498947168 27804\n", + "line: 72657 122.73750000000001 0.7364583333333447 122.73645833333335 25.85329977376638 27804\n", + "line: 72658 122.74166666666667 0.7406250000000075 122.74062500000001 25.856070048585593 27805\n", + "line: 72659 122.74583333333334 0.7447916666666704 122.74479166666667 25.85884032340479 27806\n", + "line: 72660 122.75 0.7489583333333333 122.74895833333333 25.861610598224004 27806\n", + "line: 72661 122.75416666666666 0.7531249999999962 122.753125 25.864380873043217 27807\n", + "line: 72662 122.75833333333333 0.757291666666659 122.75729166666666 25.867151147862415 27808\n", + "line: 72663 122.76249999999999 0.7614583333333219 122.76145833333332 25.869921422681628 27808\n", + "line: 72664 122.76666666666665 0.7656249999999848 122.76562499999999 25.87269169750084 27809\n", + "line: 72665 122.77083333333331 0.7697916666666477 122.76979166666665 25.87546197232004 27810\n", + "line: 72666 122.77499999999998 0.7739583333333105 122.77395833333331 25.878232247139252 27810\n", + "line: 72667 122.77916666666664 0.7781249999999734 122.77812499999997 25.881002521958465 27811\n", + "line: 72668 122.78333333333336 0.7822916666666931 122.7822916666667 25.883772796777706 27812\n", + "line: 72669 122.78750000000002 0.786458333333356 122.78645833333336 25.88654307159692 27812\n", + "line: 72670 122.79166666666669 0.7906250000000189 122.79062500000002 25.88931334641613 27813\n", + "line: 72671 122.79583333333335 0.7947916666666818 122.79479166666668 25.89208362123533 27814\n", + "line: 72672 122.80000000000001 0.7989583333333447 122.79895833333335 25.894853896054542 27814\n", + "line: 72673 122.80416666666667 0.8031250000000075 122.80312500000001 25.897624170873755 27815\n", + "line: 72674 122.80833333333334 0.8072916666666704 122.80729166666667 25.900394445692953 27816\n", + "line: 72675 122.8125 0.8114583333333333 122.81145833333333 25.903164720512166 27816\n", + "line: 72676 122.81666666666666 0.8156249999999962 122.815625 25.90593499533138 27817\n", + "line: 72677 122.82083333333333 0.819791666666659 122.81979166666666 25.908705270150577 27818\n", + "line: 72678 122.82499999999999 0.8239583333333219 122.82395833333332 25.91147554496979 27818\n", + "line: 72679 122.82916666666665 0.8281249999999848 122.82812499999999 25.914245819789002 27819\n", + "line: 72680 122.83333333333331 0.8322916666666477 122.83229166666665 25.917016094608215 27820\n", + "line: 72681 122.83749999999998 0.8364583333333105 122.83645833333331 25.919786369427413 27820\n", + "line: 72682 122.84166666666664 0.8406249999999734 122.84062499999997 25.922556644246626 27821\n", + "line: 72683 122.84583333333336 0.8447916666666931 122.8447916666667 25.925326919065867 27822\n", + "line: 72684 122.85000000000002 0.848958333333356 122.84895833333336 25.92809719388508 27822\n", + "line: 72685 122.85416666666669 0.8531250000000189 122.85312500000002 25.930867468704292 27823\n", + "line: 72686 122.85833333333335 0.8572916666666818 122.85729166666668 25.93363774352349 27824\n", + "line: 72687 122.86250000000001 0.8614583333333447 122.86145833333335 25.936408018342703 27824\n", + "line: 72688 122.86666666666667 0.8656250000000075 122.86562500000001 25.939178293161916 27825\n", + "line: 72689 122.87083333333334 0.8697916666666704 122.86979166666667 25.941948567981115 27826\n", + "line: 72690 122.875 0.8739583333333333 122.87395833333333 25.944718842800327 27826\n", + "line: 72691 122.87916666666666 0.8781249999999962 122.878125 25.94748911761954 27827\n", + "line: 72692 122.88333333333333 0.882291666666659 122.88229166666666 25.950259392438753 27828\n", + "line: 72693 122.88749999999999 0.8864583333333219 122.88645833333332 25.95302966725795 27828\n", + "line: 72694 122.89166666666665 0.8906249999999848 122.89062499999999 25.955799942077164 27829\n", + "line: 72695 122.89583333333331 0.8947916666666477 122.89479166666665 25.958570216896376 27830\n", + "line: 72696 122.89999999999998 0.8989583333333105 122.89895833333331 25.961340491715575 27830\n", + "line: 72697 122.90416666666664 0.9031249999999734 122.90312499999997 25.964110766534787 27831\n", + "line: 72698 122.90833333333336 0.9072916666666931 122.9072916666667 25.96688104135403 27832\n", + "line: 72699 122.91250000000002 0.911458333333356 122.91145833333336 25.96965131617324 27832\n", + "line: 72700 122.91666666666669 0.9156250000000189 122.91562500000002 25.972421590992454 27833\n", + "line: 72701 122.92083333333335 0.9197916666666818 122.91979166666668 25.975191865811652 27834\n", + "line: 72702 122.92500000000001 0.9239583333333447 122.92395833333335 25.977962140630865 27834\n", + "line: 72703 122.92916666666667 0.9281250000000075 122.92812500000001 25.980732415450078 27835\n", + "line: 72704 122.93333333333334 0.9322916666666704 122.93229166666667 25.98350269026929 27836\n", + "line: 72705 122.9375 0.9364583333333333 122.93645833333333 25.98627296508849 27836\n", + "line: 72706 122.94166666666666 0.9406249999999962 122.940625 25.9890432399077 27837\n", + "line: 72707 122.94583333333333 0.944791666666659 122.94479166666666 25.991813514726914 27838\n", + "line: 72708 122.94999999999999 0.9489583333333219 122.94895833333332 25.994583789546112 27838\n", + "line: 72709 122.95416666666665 0.9531249999999848 122.95312499999999 25.997354064365325 27839\n", + "line: 72710 122.95833333333331 0.9572916666666477 122.95729166666665 26.000124339184538 27840\n", + "line: 72711 122.96249999999998 0.9614583333333105 122.96145833333331 26.002894614003736 27840\n", + "line: 72712 122.96666666666664 0.9656249999999734 122.96562499999997 26.00566488882295 27841\n", + "line: 72713 122.97083333333336 0.9697916666666931 122.9697916666667 26.008435163642204 27842\n", + "line: 72714 122.97500000000002 0.973958333333356 122.97395833333336 26.011205438461403 27842\n", + "line: 72715 122.97916666666669 0.9781250000000189 122.97812500000002 26.013975713280615 27843\n", + "line: 72716 122.98333333333335 0.9822916666666818 122.98229166666668 26.016745988099828 27844\n", + "line: 72717 122.98750000000001 0.9864583333333447 122.98645833333335 26.019516262919026 27844\n", + "line: 72718 122.99166666666667 0.9906250000000075 122.99062500000001 26.02228653773824 27845\n", + "line: 72719 122.99583333333334 0.9947916666666704 122.99479166666667 26.02505681255745 27846\n", + "line: 72720 123.0 -0.0010416666666666667 122.99895833333333 26.02782708737665 27846\n", + "line: 72721 123.00416666666666 0.0031249999999962107 123.003125 26.030597362195863 27847\n", + "line: 72722 123.00833333333333 0.007291666666659088 123.00729166666666 26.033367637015076 27848\n", + "line: 72723 123.01249999999999 0.011458333333321965 123.01145833333332 26.036137911834274 27848\n", + "line: 72724 123.01666666666665 0.015624999999984842 123.01562499999999 26.038908186653487 27849\n", + "line: 72725 123.02083333333331 0.01979166666664772 123.01979166666665 26.0416784614727 27850\n", + "line: 72726 123.02499999999998 0.023958333333310596 123.02395833333331 26.044448736291912 27850\n", + "line: 72727 123.02916666666664 0.028124999999973473 123.02812499999997 26.04721901111111 27851\n", + "line: 72728 123.03333333333336 0.03229166666669319 123.0322916666667 26.049989285930366 27851\n", + "line: 72729 123.03750000000002 0.03645833333335607 123.03645833333336 26.052759560749564 27852\n", + "Exe time: 0.13093948364257812 sec\n", "[[ 0 0]\n", " [ 0 1]\n", " [ 0 2]\n", @@ -1049,369 +1002,371 @@ " [ 0 3]\n", " [ 0 3]\n", " [ 0 4]\n", - " [ 1 5]\n", - " [ 2 6]\n", + " [ 0 5]\n", + " [ 1 6]\n", " [ 2 7]\n", - " [ 3 8]\n", - " [ 4 9]\n", + " [ 2 8]\n", + " [ 3 9]\n", " [ 4 10]\n", - " [ 5 11]\n", - " [ 6 12]\n", + " [ 4 11]\n", + " [ 5 12]\n", " [ 6 13]\n", - " [ 7 14]\n", - " [ 8 15]\n", + " [ 6 14]\n", + " [ 7 15]\n", " [ 8 16]\n", - " [ 9 17]\n", - " [ 10 18]\n", + " [ 8 17]\n", + " [ 9 18]\n", " [ 10 19]\n", - " [ 11 20]\n", - " [ 12 21]\n", + " [ 10 20]\n", + " [ 11 21]\n", " [ 12 22]\n", - " [ 13 23]\n", - " [ 14 24]\n", + " [ 12 23]\n", + " [ 13 24]\n", " [ 14 25]\n", - " [ 15 26]\n", - " [ 16 27]\n", + " [ 14 26]\n", + " [ 15 27]\n", " [ 16 28]\n", - " [ 17 29]\n", - " [ 18 30]\n", + " [ 16 29]\n", + " [ 17 30]\n", " [ 18 31]\n", - " [ 19 32]\n", - " [ 20 33]\n", + " [ 18 32]\n", + " [ 19 33]\n", " [ 20 34]\n", - " [ 21 35]\n", - " [ 22 36]\n", + " [ 20 35]\n", + " [ 21 36]\n", " [ 22 37]\n", - " [ 23 38]\n", - " [ 24 39]\n", + " [ 22 38]\n", + " [ 23 39]\n", " [ 24 40]\n", - " [ 25 41]\n", - " [ 26 42]\n", + " [ 24 41]\n", + " [ 25 42]\n", " [ 26 43]\n", - " [ 27 44]\n", - " [ 28 45]\n", + " [ 26 44]\n", + " [ 27 45]\n", " [ 28 46]\n", - " [ 29 47]\n", - " [ 30 48]\n", + " [ 28 47]\n", + " [ 29 48]\n", " [ 30 49]\n", - " [ 31 50]\n", - " [ 32 51]\n", + " [ 30 50]\n", + " [ 31 51]\n", " [ 32 52]\n", - " [ 33 53]\n", - " [ 34 54]\n", + " [ 32 53]\n", + " [ 33 54]\n", " [ 34 55]\n", - " [ 35 56]\n", - " [ 36 57]\n", + " [ 34 56]\n", + " [ 35 57]\n", " [ 36 58]\n", - " [ 37 59]\n", - " [ 38 60]\n", + " [ 36 59]\n", + " [ 37 60]\n", " [ 38 61]\n", - " [ 39 62]\n", - " [ 40 63]\n", + " [ 38 62]\n", + " [ 39 63]\n", " [ 40 64]\n", - " [ 41 65]\n", - " [ 42 66]\n", + " [ 40 65]\n", + " [ 41 66]\n", " [ 42 67]\n", - " [ 43 68]\n", - " [ 44 69]\n", + " [ 42 68]\n", + " [ 43 69]\n", " [ 44 70]\n", - " [ 45 71]\n", - " [ 46 72]\n", + " [ 44 71]\n", + " [ 45 72]\n", " [ 46 73]\n", - " [ 47 74]\n", - " [ 48 75]\n", + " [ 46 74]\n", + " [ 47 75]\n", " [ 48 76]\n", - " [ 49 77]\n", - " [ 50 78]\n", + " [ 48 77]\n", + " [ 49 78]\n", " [ 50 79]\n", - " [ 51 80]\n", - " [ 52 81]\n", + " [ 50 80]\n", + " [ 51 81]\n", " [ 52 82]\n", - " [ 53 83]\n", - " [ 54 84]\n", + " [ 52 83]\n", + " [ 53 84]\n", " [ 54 85]\n", - " [ 55 86]\n", - " [ 56 87]\n", + " [ 54 86]\n", + " [ 55 87]\n", " [ 56 88]\n", - " [ 57 89]\n", - " [ 58 90]\n", + " [ 56 89]\n", + " [ 57 90]\n", " [ 58 91]\n", - " [ 59 92]\n", - " [ 60 93]\n", + " [ 58 92]\n", + " [ 59 93]\n", " [ 60 94]\n", - " [ 61 95]\n", - " [ 62 96]\n", + " [ 60 95]\n", + " [ 61 96]\n", " [ 62 97]\n", - " [ 63 98]\n", - " [ 64 99]\n", + " [ 62 98]\n", + " [ 63 99]\n", " [ 64 100]\n", - " [ 65 101]\n", - " [ 66 102]\n", + " [ 64 101]\n", + " [ 65 102]\n", " [ 66 103]\n", - " [ 67 104]\n", - " [ 68 105]\n", + " [ 66 104]\n", + " [ 67 105]\n", " [ 68 106]\n", - " [ 69 107]\n", - " [ 70 108]\n", + " [ 68 107]\n", + " [ 69 108]\n", " [ 70 109]\n", - " [ 71 110]\n", - " [ 72 111]\n", + " [ 70 110]\n", + " [ 71 111]\n", " [ 72 112]\n", - " [ 73 113]\n", - " [ 74 114]\n", + " [ 72 113]\n", + " [ 73 114]\n", " [ 74 115]\n", - " [ 75 116]\n", - " [ 76 117]\n", + " [ 74 116]\n", + " [ 75 117]\n", " [ 76 118]\n", - " [ 77 119]\n", - " [ 78 120]\n", + " [ 76 119]\n", + " [ 77 120]\n", " [ 78 121]\n", - " [ 79 122]\n", - " [ 80 123]\n", + " [ 78 122]\n", + " [ 79 123]\n", " [ 80 124]\n", - " [ 81 125]\n", - " [ 82 126]\n", + " [ 80 125]\n", + " [ 81 126]\n", " [ 82 127]\n", - " [ 83 128]\n", - " [ 84 129]\n", + " [ 82 128]\n", + " [ 83 129]\n", " [ 84 130]\n", - " [ 85 131]\n", - " [ 86 132]\n", + " [ 84 131]\n", + " [ 85 132]\n", " [ 86 133]\n", - " [ 87 134]\n", - " [ 88 135]\n", + " [ 86 134]\n", + " [ 87 135]\n", " [ 88 136]\n", - " [ 89 137]\n", - " [ 90 138]\n", + " [ 88 137]\n", + " [ 89 138]\n", " [ 90 139]\n", - " [ 91 140]\n", - " [ 92 141]\n", + " [ 90 140]\n", + " [ 91 141]\n", " [ 92 142]\n", - " [ 93 143]\n", - " [ 94 144]\n", + " [ 92 143]\n", + " [ 93 144]\n", " [ 94 145]\n", - " [ 95 146]\n", - " [ 96 147]\n", + " [ 94 146]\n", + " [ 95 147]\n", " [ 96 148]\n", - " [ 97 149]\n", - " [ 98 150]\n", + " [ 96 149]\n", + " [ 97 150]\n", " [ 98 151]\n", - " [ 99 152]\n", - " [100 153]\n", + " [ 98 152]\n", + " [ 99 153]\n", " [100 154]\n", - " [101 155]\n", - " [102 156]\n", + " [100 155]\n", + " [101 156]\n", " [102 157]\n", - " [103 158]\n", - " [104 159]\n", + " [102 158]\n", + " [103 159]\n", " [104 160]\n", - " [105 161]\n", - " [106 162]\n", + " [104 161]\n", + " [105 162]\n", " [106 163]\n", - " [107 164]\n", - " [108 165]\n", + " [106 164]\n", + " [107 165]\n", " [108 166]\n", - " [109 167]\n", - " [110 168]\n", + " [108 167]\n", + " [109 168]\n", " [110 169]\n", - " [111 170]\n", - " [112 171]\n", + " [110 170]\n", + " [111 171]\n", " [112 172]\n", - " [113 173]\n", + " [112 173]\n", " [113 174]\n", - " [114 175]\n", - " [115 176]\n", + " [113 175]\n", + " [114 176]\n", " [115 177]\n", - " [116 178]\n", - " [117 179]\n", + " [115 178]\n", + " [116 179]\n", " [117 180]\n", - " [118 181]\n", - " [119 182]\n", + " [117 181]\n", + " [118 182]\n", " [119 183]\n", - " [120 184]\n", - " [121 185]\n", + " [119 184]\n", + " [120 185]\n", " [121 186]\n", - " [122 187]\n", - " [123 188]\n", + " [121 187]\n", + " [122 188]\n", " [123 189]\n", - " [124 190]\n", - " [125 191]\n", + " [123 190]\n", + " [124 191]\n", " [125 192]\n", - " [126 193]\n", - " [127 194]\n", + " [125 193]\n", + " [126 194]\n", " [127 195]\n", - " [128 196]\n", - " [129 197]\n", + " [127 196]\n", + " [128 197]\n", " [129 198]\n", - " [130 199]\n", - " [131 200]\n", + " [129 199]\n", + " [130 200]\n", " [131 201]\n", - " [132 202]\n", - " [133 203]\n", + " [131 202]\n", + " [132 203]\n", " [133 204]\n", - " [134 205]\n", - " [135 206]\n", + " [133 205]\n", + " [134 206]\n", " [135 207]\n", - " [136 208]\n", - " [137 209]\n", + " [135 208]\n", + " [136 209]\n", " [137 210]\n", - " [138 211]\n", - " [139 212]\n", + " [137 211]\n", + " [138 212]\n", " [139 213]\n", - " [140 214]\n", - " [141 215]\n", + " [139 214]\n", + " [140 215]\n", " [141 216]\n", - " [142 217]\n", - " [143 218]\n", + " [141 217]\n", + " [142 218]\n", " [143 219]\n", - " [144 220]\n", - " [145 221]\n", + " [143 220]\n", + " [144 221]\n", " [145 222]\n", - " [146 223]\n", - " [147 224]\n", + " [145 223]\n", + " [146 224]\n", " [147 225]\n", - " [148 226]\n", - " [149 227]\n", + " [147 226]\n", + " [148 227]\n", " [149 228]\n", - " [150 229]\n", - " [151 230]\n", + " [149 229]\n", + " [150 230]\n", " [151 231]\n", - " [152 232]\n", - " [153 233]\n", + " [151 232]\n", + " [152 233]\n", " [153 234]\n", - " [154 235]\n", - " [155 236]\n", + " [153 235]\n", + " [154 236]\n", " [155 237]\n", - " [156 238]\n", - " [157 239]\n", + " [155 238]\n", + " [156 239]\n", " [157 240]\n", - " [158 241]\n", - " [159 242]\n", + " [157 241]\n", + " [158 242]\n", " [159 243]\n", - " [160 244]\n", - " [161 245]\n", + " [159 244]\n", + " [160 245]\n", " [161 246]\n", - " [162 247]\n", - " [163 248]\n", + " [161 247]\n", + " [162 248]\n", " [163 249]\n", - " [164 250]\n", - " [165 251]\n", + " [163 250]\n", + " [164 251]\n", " [165 252]\n", - " [166 253]\n", - " [167 254]\n", + " [165 253]\n", + " [166 254]\n", " [167 255]\n", - " [168 256]\n", - " [169 257]\n", + " [167 256]\n", + " [168 257]\n", " [169 258]\n", - " [170 259]\n", - " [171 260]\n", + " [169 259]\n", + " [170 260]\n", " [171 261]\n", - " [172 262]\n", - " [173 263]\n", + " [171 262]\n", + " [172 263]\n", " [173 264]\n", - " [174 265]\n", - " [175 266]\n", + " [173 265]\n", + " [174 266]\n", " [175 267]\n", - " [176 268]\n", - " [177 269]\n", + " [175 268]\n", + " [176 269]\n", " [177 270]\n", - " [178 271]\n", - " [179 272]\n", + " [177 271]\n", + " [178 272]\n", " [179 273]\n", - " [180 274]\n", - " [181 275]\n", + " [179 274]\n", + " [180 275]\n", " [181 276]\n", - " [182 277]\n", - " [183 278]\n", + " [181 277]\n", + " [182 278]\n", " [183 279]\n", - " [184 280]\n", - " [185 281]\n", + " [183 280]\n", + " [184 281]\n", " [185 282]\n", - " [186 283]\n", - " [187 284]\n", + " [185 283]\n", + " [186 284]\n", " [187 285]\n", - " [188 286]\n", - " [189 287]\n", + " [187 286]\n", + " [188 287]\n", " [189 288]\n", - " [190 289]\n", - " [191 290]\n", + " [189 289]\n", + " [190 290]\n", " [191 291]\n", - " [192 292]\n", - " [193 293]\n", + " [191 292]\n", + " [192 293]\n", " [193 294]\n", - " [194 295]\n", - " [195 296]\n", + " [193 295]\n", + " [194 296]\n", " [195 297]\n", - " [196 298]\n", - " [197 299]\n", + " [195 298]\n", + " [196 299]\n", " [197 300]\n", - " [198 301]\n", - " [199 302]\n", + " [197 301]\n", + " [198 302]\n", " [199 303]\n", - " [200 304]\n", - " [201 305]\n", + " [199 304]\n", + " [200 305]\n", " [201 306]\n", - " [202 307]\n", - " [203 308]\n", + " [201 307]\n", + " [202 308]\n", " [203 309]\n", - " [204 310]\n", - " [205 311]\n", + " [203 310]\n", + " [204 311]\n", " [205 312]\n", - " [206 313]\n", - " [207 314]\n", + " [205 313]\n", + " [206 314]\n", " [207 315]\n", - " [208 316]\n", - " [209 317]\n", + " [207 316]\n", + " [208 317]\n", " [209 318]\n", - " [210 319]\n", - " [211 320]\n", + " [209 319]\n", + " [210 320]\n", " [211 321]\n", - " [212 322]\n", - " [213 323]\n", + " [211 322]\n", + " [212 323]\n", " [213 324]\n", - " [214 325]\n", - " [215 326]\n", + " [213 325]\n", + " [214 326]\n", " [215 327]\n", - " [216 328]\n", - " [217 329]\n", + " [215 328]\n", + " [216 329]\n", " [217 330]\n", - " [218 331]\n", - " [219 332]\n", + " [217 331]\n", + " [218 332]\n", " [219 333]\n", - " [220 334]\n", - " [221 335]\n", + " [219 334]\n", + " [220 335]\n", " [221 336]\n", - " [222 337]\n", - " [223 338]\n", + " [221 337]\n", + " [222 338]\n", " [223 339]\n", - " [224 340]\n", - " [225 341]\n", + " [223 340]\n", + " [224 341]\n", " [225 342]\n", - " [226 343]\n", - " [227 344]\n", + " [225 343]\n", + " [226 344]\n", " [227 345]\n", - " [228 346]\n", - " [229 347]\n", + " [227 346]\n", + " [228 347]\n", " [229 348]\n", - " [230 349]\n", - " [231 350]\n", + " [229 349]\n", + " [230 350]\n", " [231 351]\n", - " [232 352]\n", - " [233 353]\n", + " [231 352]\n", + " [232 353]\n", " [233 354]\n", - " [234 355]\n", - " [235 356]\n", + " [233 355]\n", + " [234 356]\n", " [235 357]\n", - " [236 358]\n", + " [235 358]\n", " [236 359]\n", - " [237 360]\n", + " [236 360]\n", + " [237 361]\n", " [238 361]]\n", "[[121.5345976 25.06380626]\n", + " [121.53645833 25.06392703]\n", " [121.540625 25.06419745]\n", " [121.54479167 25.06446788]\n", - " [121.54895833 25.06473831]\n", " [121.54984717 25.06479599]\n", " [121.54980816 25.06433647]\n", + " [121.54895833 25.06377145]\n", " [121.553125 25.06654173]\n", " [121.55729167 25.069312 ]\n", " [121.56145833 25.07208227]\n", @@ -1770,67 +1725,67 @@ " [123.03229167 26.04998929]\n", " [123.03645833 26.05275956]\n", " [123.04052582 26.05546389]]\n", - "[0. 0.60969336 0.42147202 0.4214711 0.08990819 0.05105464\n", - " 0.41433103 0.52048315 0.52047558 0.52046801 0.52046044 0.52045287\n", - " 0.52044529 0.52043772 0.52043014 0.52042257 0.52041499 0.52040742\n", - " 0.52039984 0.52039226 0.52038468 0.5203771 0.52036952 0.52036194\n", - " 0.52035436 0.52034678 0.5203392 0.52033161 0.52032403 0.52031644\n", - " 0.52030886 0.52030127 0.52029368 0.5202861 0.52027851 0.52027092\n", - " 0.52026333 0.52025574 0.52024814 0.52024055 0.52023296 0.52022537\n", - " 0.52021777 0.52021018 0.52020258 0.52019498 0.52018739 0.52017979\n", - " 0.52017219 0.52016459 0.52015699 0.52014939 0.52014179 0.52013418\n", - " 0.52012658 0.52011898 0.52011137 0.52010377 0.52009616 0.52008855\n", - " 0.52008095 0.52007334 0.52006573 0.52005812 0.52005051 0.5200429\n", - " 0.52003528 0.52002767 0.52002006 0.52001244 0.52000483 0.51999721\n", - " 0.5199896 0.51998198 0.51997436 0.51996674 0.51995913 0.51995151\n", - " 0.51994389 0.51993626 0.51992864 0.51992102 0.5199134 0.51990577\n", - " 0.51989815 0.51989052 0.51988289 0.51987527 0.51986764 0.51986001\n", - " 0.51985238 0.51984475 0.51983712 0.51982949 0.51982186 0.51981422\n", - " 0.51980659 0.51979896 0.51979132 0.51978369 0.51977605 0.51976841\n", - " 0.51976077 0.51975314 0.5197455 0.51973786 0.51973022 0.51972257\n", - " 0.51971493 0.51970729 0.51969965 0.519692 0.51968436 0.51967671\n", - " 0.51966906 0.51966142 0.51965377 0.51964612 0.51963847 0.51963082\n", - " 0.51962317 0.51961552 0.51960786 0.51960021 0.51959256 0.5195849\n", - " 0.51957725 0.51956959 0.51956194 0.51955428 0.51954662 0.51953896\n", - " 0.5195313 0.51952364 0.51951598 0.51950832 0.51950066 0.51949299\n", - " 0.51948533 0.51947766 0.51947 0.51946233 0.51945467 0.519447\n", - " 0.51943933 0.51943166 0.51942399 0.51941632 0.51940865 0.51940098\n", - " 0.51939331 0.51938563 0.51937796 0.51937029 0.51936261 0.51935493\n", - " 0.51934726 0.51933958 0.5193319 0.51932422 0.51931654 0.51930886\n", - " 0.51930118 0.5192935 0.51928582 0.51927813 0.51927045 0.51926276\n", - " 0.51925508 0.51924739 0.51923971 0.51923202 0.51922433 0.51921664\n", - " 0.51920895 0.51920126 0.51919357 0.51918588 0.51917819 0.51917049\n", - " 0.5191628 0.5191551 0.51914741 0.51913971 0.51913201 0.51912432\n", - " 0.51911662 0.51910892 0.51910122 0.51909352 0.51908582 0.51907812\n", - " 0.51907041 0.51906271 0.51905501 0.5190473 0.5190396 0.51903189\n", - " 0.51902418 0.51901647 0.51900877 0.51900106 0.51899335 0.51898564\n", - " 0.51897792 0.51897021 0.5189625 0.51895479 0.51894707 0.51893936\n", - " 0.51893164 0.51892393 0.51891621 0.51890849 0.51890077 0.51889305\n", - " 0.51888533 0.51887761 0.51886989 0.51886217 0.51885445 0.51884672\n", - " 0.518839 0.51883127 0.51882355 0.51881582 0.51880809 0.51880037\n", - " 0.51879264 0.51878491 0.51877718 0.51876945 0.51876172 0.51875399\n", - " 0.51874625 0.51873852 0.51873078 0.51872305 0.51871531 0.51870758\n", - " 0.51869984 0.5186921 0.51868436 0.51867663 0.51866889 0.51866114\n", - " 0.5186534 0.51864566 0.51863792 0.51863017 0.51862243 0.51861469\n", - " 0.51860694 0.51859919 0.51859145 0.5185837 0.51857595 0.5185682\n", - " 0.51856045 0.5185527 0.51854495 0.5185372 0.51852944 0.51852169\n", - " 0.51851394 0.51850618 0.51849842 0.51849067 0.51848291 0.51847515\n", - " 0.51846739 0.51845964 0.51845188 0.51844411 0.51843635 0.51842859\n", - " 0.51842083 0.51841307 0.5184053 0.51839754 0.51838977 0.518382\n", - " 0.51837424 0.51836647 0.5183587 0.51835093 0.51834316 0.51833539\n", - " 0.51832762 0.51831985 0.51831207 0.5183043 0.51829653 0.51828875\n", - " 0.51828098 0.5182732 0.51826542 0.51825764 0.51824987 0.51824209\n", - " 0.51823431 0.51822653 0.51821874 0.51821096 0.51820318 0.5181954\n", - " 0.51818761 0.51817983 0.51817204 0.51816425 0.51815647 0.51814868\n", - " 0.51814089 0.5181331 0.51812531 0.51811752 0.51810973 0.51810194\n", - " 0.51809414 0.51808635 0.51807856 0.51807076 0.51806297 0.51805517\n", - " 0.51804737 0.51803957 0.51803178 0.51802398 0.51801618 0.51800838\n", - " 0.51800057 0.51799277 0.51798497 0.51797717 0.51796936 0.51796156\n", - " 0.51795375 0.51794594 0.51793814 0.51793033 0.51792252 0.51791471\n", - " 0.5179069 0.51789909 0.51789128 0.51788347 0.51787566 0.51786784\n", - " 0.51786003 0.51785221 0.5178444 0.51783658 0.51782876 0.51782095\n", - " 0.51781313 0.51780531 0.51779749 0.51778967 0.51778185 0.51777402\n", - " 0.5177662 0.51775838 0.51775055 0.50541871]\n" + "[0. 0.18822043 0.42147294 0.42147202 0.51137929 0.05105464\n", + " 0.10615969 0.52049072 0.52048315 0.52047558 0.52046801 0.52046044\n", + " 0.52045287 0.52044529 0.52043772 0.52043014 0.52042257 0.52041499\n", + " 0.52040742 0.52039984 0.52039226 0.52038468 0.5203771 0.52036952\n", + " 0.52036194 0.52035436 0.52034678 0.5203392 0.52033161 0.52032403\n", + " 0.52031644 0.52030886 0.52030127 0.52029368 0.5202861 0.52027851\n", + " 0.52027092 0.52026333 0.52025574 0.52024814 0.52024055 0.52023296\n", + " 0.52022537 0.52021777 0.52021018 0.52020258 0.52019498 0.52018739\n", + " 0.52017979 0.52017219 0.52016459 0.52015699 0.52014939 0.52014179\n", + " 0.52013418 0.52012658 0.52011898 0.52011137 0.52010377 0.52009616\n", + " 0.52008855 0.52008095 0.52007334 0.52006573 0.52005812 0.52005051\n", + " 0.5200429 0.52003528 0.52002767 0.52002006 0.52001244 0.52000483\n", + " 0.51999721 0.5199896 0.51998198 0.51997436 0.51996674 0.51995913\n", + " 0.51995151 0.51994389 0.51993626 0.51992864 0.51992102 0.5199134\n", + " 0.51990577 0.51989815 0.51989052 0.51988289 0.51987527 0.51986764\n", + " 0.51986001 0.51985238 0.51984475 0.51983712 0.51982949 0.51982186\n", + " 0.51981422 0.51980659 0.51979896 0.51979132 0.51978369 0.51977605\n", + " 0.51976841 0.51976077 0.51975314 0.5197455 0.51973786 0.51973022\n", + " 0.51972257 0.51971493 0.51970729 0.51969965 0.519692 0.51968436\n", + " 0.51967671 0.51966906 0.51966142 0.51965377 0.51964612 0.51963847\n", + " 0.51963082 0.51962317 0.51961552 0.51960786 0.51960021 0.51959256\n", + " 0.5195849 0.51957725 0.51956959 0.51956194 0.51955428 0.51954662\n", + " 0.51953896 0.5195313 0.51952364 0.51951598 0.51950832 0.51950066\n", + " 0.51949299 0.51948533 0.51947766 0.51947 0.51946233 0.51945467\n", + " 0.519447 0.51943933 0.51943166 0.51942399 0.51941632 0.51940865\n", + " 0.51940098 0.51939331 0.51938563 0.51937796 0.51937029 0.51936261\n", + " 0.51935493 0.51934726 0.51933958 0.5193319 0.51932422 0.51931654\n", + " 0.51930886 0.51930118 0.5192935 0.51928582 0.51927813 0.51927045\n", + " 0.51926276 0.51925508 0.51924739 0.51923971 0.51923202 0.51922433\n", + " 0.51921664 0.51920895 0.51920126 0.51919357 0.51918588 0.51917819\n", + " 0.51917049 0.5191628 0.5191551 0.51914741 0.51913971 0.51913201\n", + " 0.51912432 0.51911662 0.51910892 0.51910122 0.51909352 0.51908582\n", + " 0.51907812 0.51907041 0.51906271 0.51905501 0.5190473 0.5190396\n", + " 0.51903189 0.51902418 0.51901647 0.51900877 0.51900106 0.51899335\n", + " 0.51898564 0.51897792 0.51897021 0.5189625 0.51895479 0.51894707\n", + " 0.51893936 0.51893164 0.51892393 0.51891621 0.51890849 0.51890077\n", + " 0.51889305 0.51888533 0.51887761 0.51886989 0.51886217 0.51885445\n", + " 0.51884672 0.518839 0.51883127 0.51882355 0.51881582 0.51880809\n", + " 0.51880037 0.51879264 0.51878491 0.51877718 0.51876945 0.51876172\n", + " 0.51875399 0.51874625 0.51873852 0.51873078 0.51872305 0.51871531\n", + " 0.51870758 0.51869984 0.5186921 0.51868436 0.51867663 0.51866889\n", + " 0.51866114 0.5186534 0.51864566 0.51863792 0.51863017 0.51862243\n", + " 0.51861469 0.51860694 0.51859919 0.51859145 0.5185837 0.51857595\n", + " 0.5185682 0.51856045 0.5185527 0.51854495 0.5185372 0.51852944\n", + " 0.51852169 0.51851394 0.51850618 0.51849842 0.51849067 0.51848291\n", + " 0.51847515 0.51846739 0.51845964 0.51845188 0.51844411 0.51843635\n", + " 0.51842859 0.51842083 0.51841307 0.5184053 0.51839754 0.51838977\n", + " 0.518382 0.51837424 0.51836647 0.5183587 0.51835093 0.51834316\n", + " 0.51833539 0.51832762 0.51831985 0.51831207 0.5183043 0.51829653\n", + " 0.51828875 0.51828098 0.5182732 0.51826542 0.51825764 0.51824987\n", + " 0.51824209 0.51823431 0.51822653 0.51821874 0.51821096 0.51820318\n", + " 0.5181954 0.51818761 0.51817983 0.51817204 0.51816425 0.51815647\n", + " 0.51814868 0.51814089 0.5181331 0.51812531 0.51811752 0.51810973\n", + " 0.51810194 0.51809414 0.51808635 0.51807856 0.51807076 0.51806297\n", + " 0.51805517 0.51804737 0.51803957 0.51803178 0.51802398 0.51801618\n", + " 0.51800838 0.51800057 0.51799277 0.51798497 0.51797717 0.51796936\n", + " 0.51796156 0.51795375 0.51794594 0.51793814 0.51793033 0.51792252\n", + " 0.51791471 0.5179069 0.51789909 0.51789128 0.51788347 0.51787566\n", + " 0.51786784 0.51786003 0.51785221 0.5178444 0.51783658 0.51782876\n", + " 0.51782095 0.51781313 0.51780531 0.51779749 0.51778967 0.51778185\n", + " 0.51777402 0.5177662 0.51775838 0.51775055 0.50541871]\n" ] } ], @@ -1991,42 +1946,43 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(239, 362)\n", - "(array([ 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 4, 4,\n", - " 5, 6, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12, 13,\n", - " 14, 14, 15, 16, 16, 17, 18, 18, 19, 20, 20, 21, 22,\n", - " 22, 23, 24, 24, 25, 26, 26, 27, 28, 28, 29, 30, 30,\n", - " 31, 32, 32, 33, 34, 34, 35, 36, 36, 37, 38, 38, 39,\n", - " 40, 40, 41, 42, 42, 43, 44, 44, 45, 46, 46, 47, 48,\n", - " 48, 49, 50, 50, 51, 52, 52, 53, 54, 54, 55, 56, 56,\n", - " 57, 58, 58, 59, 60, 60, 61, 62, 62, 63, 64, 64, 65,\n", - " 66, 66, 67, 68, 68, 69, 70, 70, 71, 72, 72, 73, 74,\n", - " 74, 75, 76, 76, 77, 78, 78, 79, 80, 80, 81, 82, 82,\n", - " 83, 84, 84, 85, 86, 86, 87, 88, 88, 89, 90, 90, 91,\n", - " 92, 92, 93, 94, 94, 95, 96, 96, 97, 98, 98, 99, 100,\n", - " 100, 101, 102, 102, 103, 104, 104, 105, 106, 106, 107, 108, 108,\n", - " 109, 110, 110, 111, 112, 112, 113, 113, 114, 115, 115, 116, 117,\n", - " 117, 118, 119, 119, 120, 121, 121, 122, 123, 123, 124, 125, 125,\n", - " 126, 127, 127, 128, 129, 129, 130, 131, 131, 132, 133, 133, 134,\n", - " 135, 135, 136, 137, 137, 138, 139, 139, 140, 141, 141, 142, 143,\n", - " 143, 144, 145, 145, 146, 147, 147, 148, 149, 149, 150, 151, 151,\n", - " 152, 153, 153, 154, 155, 155, 156, 157, 157, 158, 159, 159, 160,\n", - " 161, 161, 162, 163, 163, 164, 165, 165, 166, 167, 167, 168, 169,\n", - " 169, 170, 171, 171, 172, 173, 173, 174, 175, 175, 176, 177, 177,\n", - " 178, 179, 179, 180, 181, 181, 182, 183, 183, 184, 185, 185, 186,\n", - " 187, 187, 188, 189, 189, 190, 191, 191, 192, 193, 193, 194, 195,\n", - " 195, 196, 197, 197, 198, 199, 199, 200, 201, 201, 202, 203, 203,\n", - " 204, 205, 205, 206, 207, 207, 208, 209, 209, 210, 211, 211, 212,\n", - " 213, 213, 214, 215, 215, 216, 217, 217, 218, 219, 219, 220, 221,\n", - " 221, 222, 223, 223, 224, 225, 225, 226, 227, 227, 228, 229, 229,\n", - " 230, 231, 231, 232, 233, 233, 234, 235, 235, 236, 236, 237, 238]), array([ 0, 1, 2, 3, 3, 3, 4, 5, 6, 7, 8, 9, 10,\n", + "(240, 363)\n", + "(array([ 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 3, 4,\n", + " 4, 5, 6, 6, 7, 8, 8, 9, 10, 10, 11, 12, 12,\n", + " 13, 14, 14, 15, 16, 16, 17, 18, 18, 19, 20, 20, 21,\n", + " 22, 22, 23, 24, 24, 25, 26, 26, 27, 28, 28, 29, 30,\n", + " 30, 31, 32, 32, 33, 34, 34, 35, 36, 36, 37, 38, 38,\n", + " 39, 40, 40, 41, 42, 42, 43, 44, 44, 45, 46, 46, 47,\n", + " 48, 48, 49, 50, 50, 51, 52, 52, 53, 54, 54, 55, 56,\n", + " 56, 57, 58, 58, 59, 60, 60, 61, 62, 62, 63, 64, 64,\n", + " 65, 66, 66, 67, 68, 68, 69, 70, 70, 71, 72, 72, 73,\n", + " 74, 74, 75, 76, 76, 77, 78, 78, 79, 80, 80, 81, 82,\n", + " 82, 83, 84, 84, 85, 86, 86, 87, 88, 88, 89, 90, 90,\n", + " 91, 92, 92, 93, 94, 94, 95, 96, 96, 97, 98, 98, 99,\n", + " 100, 100, 101, 102, 102, 103, 104, 104, 105, 106, 106, 107, 108,\n", + " 108, 109, 110, 110, 111, 112, 112, 113, 113, 114, 115, 115, 116,\n", + " 117, 117, 118, 119, 119, 120, 121, 121, 122, 123, 123, 124, 125,\n", + " 125, 126, 127, 127, 128, 129, 129, 130, 131, 131, 132, 133, 133,\n", + " 134, 135, 135, 136, 137, 137, 138, 139, 139, 140, 141, 141, 142,\n", + " 143, 143, 144, 145, 145, 146, 147, 147, 148, 149, 149, 150, 151,\n", + " 151, 152, 153, 153, 154, 155, 155, 156, 157, 157, 158, 159, 159,\n", + " 160, 161, 161, 162, 163, 163, 164, 165, 165, 166, 167, 167, 168,\n", + " 169, 169, 170, 171, 171, 172, 173, 173, 174, 175, 175, 176, 177,\n", + " 177, 178, 179, 179, 180, 181, 181, 182, 183, 183, 184, 185, 185,\n", + " 186, 187, 187, 188, 189, 189, 190, 191, 191, 192, 193, 193, 194,\n", + " 195, 195, 196, 197, 197, 198, 199, 199, 200, 201, 201, 202, 203,\n", + " 203, 204, 205, 205, 206, 207, 207, 208, 209, 209, 210, 211, 211,\n", + " 212, 213, 213, 214, 215, 215, 216, 217, 217, 218, 219, 219, 220,\n", + " 221, 221, 222, 223, 223, 224, 225, 225, 226, 227, 227, 228, 229,\n", + " 229, 230, 231, 231, 232, 233, 233, 234, 235, 235, 236, 236, 237,\n", + " 238]), array([ 0, 1, 2, 3, 3, 3, 4, 5, 6, 7, 8, 9, 10,\n", " 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,\n", " 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,\n", " 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,\n", @@ -2053,34 +2009,36 @@ " 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,\n", " 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,\n", " 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\n", - " 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361]))\n", - "Get index of points, time: 0.018686294555664062 sec\n", - "[ 7 7 5 3 3 3 3 2 7 7 13 31 38 51\n", - " 116 124 171 285 213 217 227 154 172 188 126 247 277 269\n", - " 216 203 184 214 171 181 225 279 280 214 116 86 144 135\n", - " 13 -19 -35 -39 -43 -39 -42 -53 -62 -57 -61 -66 -65 -87\n", - " -87 -89 -90 -90 -98 -99 -96 -97 -98 -104 -111 -121 -117 -115\n", - " -114 -125 -136 -155 -157 -162 -151 -142 -139 -134 -137 -141 -155 -153\n", - " -154 -157 -157 -155 -161 -164 -165 -165 -160 -159 -157 -157 -155 -159\n", - " -165 -165 -173 -179 -179 -182 -190 -194 -200 -211 -211 -213 -214 -214\n", - " -199 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199\n", - " -199 -199 -199 -199 -199 -199 -199 -198 -197 -197 -196 -195 -194 -194\n", - " -194 -194 -194 -194 -195 -196 -198 -200 -201 -200 -203 -204 -205 -206\n", - " -208 -206 -207 -205 -202 -203 -200 -196 -198 -200 -199 -205 -211 -208\n", - " -213 -216 -215 -216 -215 -210 -209 -201 -198 -191 -186 -186 -182 -184\n", - " -186 -187 -187 -187 -187 -187 -189 -185 -186 -186 -181 -176 -176 -171\n", - " -166 -166 -163 -163 -165 -163 -161 -161 -158 -155 -156 -152 -153 -153\n", - " -151 -149 -151 -152 -151 -151 -153 -158 -164 -160 -154 -154 -150 -122\n", - " -125 -142 -144 -144 -139 -135 -136 -134 -132 -132 -131 -132 -133 -132\n", - " -130 -131 -124 -129 -126 -128 -129 -129 -127 -125 -125 -123 -121 -121\n", - " -119 -119 -120 -121 -124 -116 -115 -121 -121 -115 -115 -115 -115 -115\n", - " -115 -115 -115 -115 -115 -116 -117 -117 -116 -116 -116 -116 -116 -115\n", - " -116 -116 -115 -114 -114 -113 -112 -112 -112 -113 -113 -112 -110 -110\n", - " -110 -109 -109 -109 -110 -110 -110 -110 -111 -111 -112 -112 -113 -113\n", - " -114 -115 -115 -115 -115 -115 -115 -114 -113 -113 -112 -111 -110 -110\n", - " -109 -109 -108 -108 -108 -107 -104 -104 -103 -102 -101 -100 -100 -100\n", - " -100 -100 -100 -100 -100 -100 -100 -100 -100 -100 -100 -100 -100 -100\n", - " -100 -99 -100 -100 -100 -100 -100 -98 -101 -101 -102 -102 -102 -102]\n" + " 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,\n", + " 361]))\n", + "Get index of points, time: 62.418522119522095 sec\n", + "[ 10 11 10 5 5 5 7 5 5 3 1 12 18 20\n", + " 46 68 73 101 220 153 171 158 107 111 158 108 184 222\n", + " 267 188 199 181 198 187 148 184 253 256 217 157 76 99\n", + " 109 38 -7 -13 -20 -42 -46 -47 -51 -52 -49 -55 -60 -59\n", + " -66 -81 -81 -89 -93 -98 -126 -104 -93 -95 -105 -121 -127 -119\n", + " -117 -111 -112 -108 -113 -148 -135 -138 -136 -133 -133 -136 -140 -147\n", + " -154 -153 -157 -158 -158 -156 -153 -154 -153 -154 -155 -155 -155 -156\n", + " -159 -162 -163 -168 -172 -173 -178 -179 -183 -187 -198 -198 -204 -205\n", + " -202 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199 -199\n", + " -199 -199 -199 -199 -199 -199 -199 -199 -198 -197 -197 -196 -196 -195\n", + " -194 -193 -194 -194 -194 -195 -196 -198 -200 -202 -201 -204 -206 -207\n", + " -209 -209 -208 -210 -209 -207 -208 -206 -201 -203 -201 -201 -207 -215\n", + " -212 -218 -219 -220 -221 -216 -215 -213 -207 -204 -197 -190 -190 -186\n", + " -185 -187 -190 -192 -192 -192 -192 -194 -191 -187 -187 -185 -181 -180\n", + " -176 -171 -171 -167 -164 -166 -167 -166 -166 -164 -161 -162 -159 -154\n", + " -154 -154 -153 -156 -157 -157 -157 -159 -159 -167 -171 -168 -168 -162\n", + " -156 -161 -135 -139 -140 -145 -142 -143 -138 -135 -135 -134 -133 -134\n", + " -134 -131 -133 -133 -129 -130 -131 -129 -129 -129 -128 -128 -127 -125\n", + " -125 -124 -122 -120 -119 -118 -118 -117 -115 -116 -116 -116 -116 -116\n", + " -116 -116 -116 -116 -116 -116 -116 -117 -118 -117 -117 -117 -117 -117\n", + " -117 -115 -116 -116 -116 -116 -116 -114 -114 -113 -113 -113 -113 -112\n", + " -112 -111 -110 -110 -109 -110 -109 -110 -112 -110 -111 -111 -111 -112\n", + " -113 -114 -114 -115 -115 -115 -115 -115 -114 -113 -113 -113 -112 -111\n", + " -110 -109 -109 -109 -108 -108 -107 -106 -106 -104 -103 -103 -101 -100\n", + " -100 -100 -100 -100 -100 -97 -100 -100 -100 -100 -100 -100 -100 -100\n", + " -99 -100 -100 -100 -100 -100 -100 -100 -100 -99 -99 -101 -101 -101\n", + " -102]\n" ] } ], @@ -2131,56 +2089,48 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Pandas time: 0.001234292984008789 sec\n", + "Pandas time: 0.01806473731994629 sec\n", " longitude latitude z\n", - "0 121.534598 25.063806 7\n", - "1 121.540625 25.064197 7\n", - "2 121.544792 25.064468 5\n", - "3 121.548958 25.064738 3\n", - "4 121.549847 25.064796 3\n", + "0 121.534598 25.063806 10\n", + "1 121.536458 25.063927 11\n", + "2 121.540625 25.064197 10\n", + "3 121.544792 25.064468 5\n", + "4 121.549847 25.064796 5\n", ".. ... ... ...\n", - "359 123.023958 26.044449 -101\n", - "360 123.028125 26.047219 -102\n", - "361 123.032292 26.049989 -102\n", - "362 123.036458 26.052760 -102\n", - "363 123.040526 26.055464 -102\n", + "360 123.023958 26.044449 -99\n", + "361 123.028125 26.047219 -101\n", + "362 123.032292 26.049989 -101\n", + "363 123.036458 26.052760 -101\n", + "364 123.040526 26.055464 -102\n", "\n", - "[364 rows x 3 columns]\n", - "Polars time: 0.0002620220184326172 sec\n", - "shape: (364, 3)\n", + "[365 rows x 3 columns]\n", + "Polars time: 0.10485339164733887 sec\n", + "shape: (365, 3)\n", "┌────────────┬───────────┬──────┐\n", "│ longitude ┆ latitude ┆ z │\n", "│ --- ┆ --- ┆ --- │\n", "│ f64 ┆ f64 ┆ i64 │\n", "╞════════════╪═══════════╪══════╡\n", - "│ 121.534598 ┆ 25.063806 ┆ 7 │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", - "│ 121.540625 ┆ 25.064197 ┆ 7 │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", + "│ 121.534598 ┆ 25.063806 ┆ 10 │\n", + "│ 121.536458 ┆ 25.063927 ┆ 11 │\n", + "│ 121.540625 ┆ 25.064197 ┆ 10 │\n", "│ 121.544792 ┆ 25.064468 ┆ 5 │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", - "│ 121.548958 ┆ 25.064738 ┆ 3 │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", "│ ... ┆ ... ┆ ... │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", - "│ 123.028125 ┆ 26.047219 ┆ -102 │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", - "│ 123.032292 ┆ 26.049989 ┆ -102 │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", - "│ 123.036458 ┆ 26.05276 ┆ -102 │\n", - "├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤\n", + "│ 123.028125 ┆ 26.047219 ┆ -101 │\n", + "│ 123.032292 ┆ 26.049989 ┆ -101 │\n", + "│ 123.036458 ┆ 26.05276 ┆ -101 │\n", "│ 123.040526 ┆ 26.055464 ┆ -102 │\n", "└────────────┴───────────┴──────┘\n", - "Output Pandas time: 0.002108335494995117 sec\n", - "Output Polars time: 0.0013206005096435547 sec\n", - "\n" + "Output Pandas time: 0.004413604736328125 sec\n", + "Output Polars time: 0.04501008987426758 sec\n", + "\n" ] } ], diff --git a/zprofile02_crosszero.ipynb b/dev/zprofile02_crosszero.ipynb similarity index 100% rename from zprofile02_crosszero.ipynb rename to dev/zprofile02_crosszero.ipynb diff --git a/gebco_app.py b/gebco_app.py index c3f0fa1..e3ef689 100644 --- a/gebco_app.py +++ b/gebco_app.py @@ -10,6 +10,7 @@ from fastapi.responses import JSONResponse from fastapi.openapi.docs import get_swagger_ui_html from fastapi.openapi.utils import get_openapi +from contextlib import asynccontextmanager from typing import Optional #, Union #from pydantic import BaseModel, ValidationError, HttpUrl, validator import requests #, httpx @@ -17,7 +18,7 @@ # import orjson # from loggerConfig import logger # from models import zprofSchema -from xmeridian import * +from src.xmeridian import * import dask from multiprocessing.pool import Pool @@ -31,7 +32,8 @@ def generate_custom_openapi(): title="ODB API for GEBCO Bathymetry", version="1.0.0", description="Z-profile (and distances) between longitude/latitude points with 15-arcsec resolutions.\n" + - "Data source: GEBCO Compilation Group (2022) GEBCO_2022 Grid (doi:10.5285/e0f0bb80-ab44-2739-e053-6c86abc0289c)", + #"Data source: GEBCO Compilation Group (2022) GEBCO_2022 Grid (doi:10.5285/e0f0bb80-ab44-2739-e053-6c86abc0289c)", + "Data source: GEBCO Compilation Group (2023) GEBCO 2023 Grid (doi:10.5285/f98b053b-0cbc-6c23-e053-6c86abc0af7b)", routes=app.routes, ) openapi_schema["servers"] = [ @@ -42,7 +44,26 @@ def generate_custom_openapi(): app.openapi_schema = openapi_schema return app.openapi_schema -app = FastAPI(docs_url=None) + +# @app.on_event("startup") +# async def startup(): +@asynccontextmanager +async def lifespan(app: FastAPI): + + #if 'ds' in kwargs: + # ds = kwargs['ds'] + #else: + global ds + # logger.info + ds = xr.open_zarr( + #'data/GEBCO_2022_sub_ice_topo.zarr', chunks='auto', group='gebco', + 'data/GEBCO_2023_sub_ice_topo.zarr', chunks='auto', + decode_cf=False, decode_times=False) + yield + ds.close() + + +app = FastAPI(docs_url=None, lifespan=lifespan) @app.get("/gebco/openapi.json", include_in_schema=False) async def custom_openapi(): @@ -66,17 +87,6 @@ async def custom_swagger_ui_html(): subsetFlag = True -@app.on_event("startup") -async def startup(): - #if 'ds' in kwargs: - # ds = kwargs['ds'] - #else: - global ds - # logger.info - ds = xr.open_zarr( - 'GEBCO_2022_sub_ice_topo.zarr', chunks='auto', group='gebco', - decode_cf=False, decode_times=False) - # @app.on_event("shutdown") # def release_dataset(): # global ds diff --git a/read_gebco_raw01.ipynb b/read_gebco_raw01.ipynb deleted file mode 100644 index b523534..0000000 --- a/read_gebco_raw01.ipynb +++ /dev/null @@ -1,1917 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exe time: 0.004761219024658203 sec\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (lon: 86400, lat: 43200)\n",
-       "Coordinates:\n",
-       "  * lon        (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
-       "  * lat        (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n",
-       "Data variables:\n",
-       "    crs        |S1 ...\n",
-       "    elevation  (lat, lon) int16 dask.array<chunksize=(43200, 86400), meta=np.ndarray>\n",
-       "Attributes: (12/36)\n",
-       "    title:                           The GEBCO_2022 Grid - a continuous terra...\n",
-       "    summary:                         The GEBCO_2022 Grid is a continuous, glo...\n",
-       "    keywords:                        BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n",
-       "    Conventions:                     CF-1.6, ACDD-1.3\n",
-       "    id:                              DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
-       "    naming_authority:                https://dx.doi.org\n",
-       "    ...                              ...\n",
-       "    geospatial_vertical_units:       meters\n",
-       "    geospatial_vertical_resolution:  1.0\n",
-       "    geospatial_vertical_positive:    up\n",
-       "    identifier_product_doi:          DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
-       "    references:                      DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
-       "    node_offset:                     1.0
" - ], - "text/plain": [ - "\n", - "Dimensions: (lon: 86400, lat: 43200)\n", - "Coordinates:\n", - " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", - " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", - "Data variables:\n", - " crs |S1 ...\n", - " elevation (lat, lon) int16 dask.array\n", - "Attributes: (12/36)\n", - " title: The GEBCO_2022 Grid - a continuous terra...\n", - " summary: The GEBCO_2022 Grid is a continuous, glo...\n", - " keywords: BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n", - " Conventions: CF-1.6, ACDD-1.3\n", - " id: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " naming_authority: https://dx.doi.org\n", - " ... ...\n", - " geospatial_vertical_units: meters\n", - " geospatial_vertical_resolution: 1.0\n", - " geospatial_vertical_positive: up\n", - " identifier_product_doi: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " node_offset: 1.0" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import xarray as xr\n", - "import time\n", - "st = time.time()\n", - "#xr.open_mfdataset('~/R/gebco/*.nc', parallel=True)\n", - "ds = xr.open_mfdataset(\n", - " 'GEBCO_2022_sub_ice_topo.nc', chunks={0: 60, 1: 60}, \n", - " decode_cf=False, decode_times=False) #.load()\n", - "et = time.time()\n", - "print('Exe time: ', et-st, 'sec')\n", - "ds" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "112\n" - ] - }, - { - "data": { - "text/plain": [ - "6.9522857666015625" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "print(sys.getsizeof(ds))\n", - "ds['elevation'].nbytes/(1024 ** 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "larger-chunk read time: 0.0073223114013671875 sec\n", - "112\n", - "smaller-chunk read time: 0.0045816898345947266 sec\n", - "112\n" - ] - }, - { - "data": { - "text/plain": [ - "6.9522857666015625" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "st = time.time()\n", - "#larger chunk size\n", - "ds2 = xr.open_mfdataset(\n", - " 'GEBCO_2022_sub_ice_topo.nc', chunks={0: 120, 1: 120}, \n", - " decode_cf=False, decode_times=False) #.load()\n", - "et = time.time()\n", - "print('larger-chunk read time: ', et-st, 'sec')\n", - "print(sys.getsizeof(ds2))\n", - "ds2['elevation'].nbytes/(1024 ** 3)\n", - "\n", - "st = time.time()\n", - "#smaller chunk size\n", - "ds3 = xr.open_mfdataset(\n", - " 'GEBCO_2022_sub_ice_topo.nc', chunks={0: 30, 1: 30}, \n", - " decode_cf=False, decode_times=False) #.load()\n", - "et = time.time()\n", - "print('smaller-chunk read time: ', et-st, 'sec')\n", - "print(sys.getsizeof(ds2))\n", - "ds2['elevation'].nbytes/(1024 ** 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-3949\n", - "-4278\n", - "-4819\n", - "-4766\n", - "-3729\n", - "-3714\n", - "-3739\n", - "-3677\n", - "-3813\n" - ] - } - ], - "source": [ - "print(ds.sel(lat=23.326173, lon=123.978125, method='nearest')['elevation'].values)\n", - "print(ds.sel(lat=23.317670, lon=123.973958, method='nearest')['elevation'].values)\n", - "print(ds.sel(lat=21.336378, lon=123.003125, method='nearest')['elevation'].values)\n", - "print(ds.sel(lat=21.33, lon=123.0, method='nearest')['elevation'].values)\n", - "print(ds[\"elevation\"].values[27200,72956]) #this is correct value (got depth = -3729)\n", - "print(ds[\"elevation\"].values[27200,72957])\n", - "print(ds[\"elevation\"].values[27200,72955])\n", - "print(ds[\"elevation\"].values[27201,72956])\n", - "print(ds[\"elevation\"].values[27199,72956]) #But we got -3813, this is: after subset got a latitude offset 1? why (in zprofile01.ipynb correct it)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Slicing time for chunk-60: 0.0011551380157470703 sec\n", - "Slicing time for larger chunk: 0.0008370876312255859 sec\n", - "Exe time for smaller chunk: 0.000701904296875 sec\n" - ] - } - ], - "source": [ - "#The following try different subsetting and index methods\n", - "st = time.time()\n", - "ds_s1 = ds.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", - "ds_s1.close() #try if it can close\n", - "et = time.time()\n", - "print('Slicing time for chunk-60: ', et-st, 'sec')\n", - "\n", - "st = time.time()\n", - "ds_s2 = ds2.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", - "ds_s2.close() #try if it can close\n", - "et = time.time()\n", - "print('Slicing time for larger chunk: ', et-st, 'sec')\n", - "\n", - "st = time.time()\n", - "ds_s3 = ds3.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", - "ds_s3.close() #try if it can close\n", - "et = time.time()\n", - "print('Exe time for smaller chunk: ', et-st, 'sec')" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.1062154769897461" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ds_s1['elevation'].nbytes/(1024 ** 3)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (lon: 7200, lat: 7920)\n",
-       "Coordinates:\n",
-       "  * lon        (lon) float64 105.0 105.0 105.0 105.0 ... 135.0 135.0 135.0 135.0\n",
-       "  * lat        (lat) float64 2.002 2.006 2.01 2.015 ... 34.99 34.99 34.99 35.0\n",
-       "Data variables:\n",
-       "    crs        |S1 ...\n",
-       "    elevation  (lat, lon) int16 dask.array<chunksize=(7920, 7200), meta=np.ndarray>\n",
-       "Attributes: (12/36)\n",
-       "    title:                           The GEBCO_2022 Grid - a continuous terra...\n",
-       "    summary:                         The GEBCO_2022 Grid is a continuous, glo...\n",
-       "    keywords:                        BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n",
-       "    Conventions:                     CF-1.6, ACDD-1.3\n",
-       "    id:                              DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
-       "    naming_authority:                https://dx.doi.org\n",
-       "    ...                              ...\n",
-       "    geospatial_vertical_units:       meters\n",
-       "    geospatial_vertical_resolution:  1.0\n",
-       "    geospatial_vertical_positive:    up\n",
-       "    identifier_product_doi:          DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
-       "    references:                      DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
-       "    node_offset:                     1.0
" - ], - "text/plain": [ - "\n", - "Dimensions: (lon: 7200, lat: 7920)\n", - "Coordinates:\n", - " * lon (lon) float64 105.0 105.0 105.0 105.0 ... 135.0 135.0 135.0 135.0\n", - " * lat (lat) float64 2.002 2.006 2.01 2.015 ... 34.99 34.99 34.99 35.0\n", - "Data variables:\n", - " crs |S1 ...\n", - " elevation (lat, lon) int16 dask.array\n", - "Attributes: (12/36)\n", - " title: The GEBCO_2022 Grid - a continuous terra...\n", - " summary: The GEBCO_2022 Grid is a continuous, glo...\n", - " keywords: BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n", - " Conventions: CF-1.6, ACDD-1.3\n", - " id: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " naming_authority: https://dx.doi.org\n", - " ... ...\n", - " geospatial_vertical_units: meters\n", - " geospatial_vertical_resolution: 1.0\n", - " geospatial_vertical_positive: up\n", - " identifier_product_doi: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " node_offset: 1.0" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "#da1 = getattr(ds_s1, 'elevation')\n", - "#da1\n", - "#https://www.programcreek.com/python/example/123571/xarray.decode_cf\n", - "#da1.attrs['_Unsigned']='false'\n", - "ds_s1\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#da1" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'ds_s1' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m/tmp/ipykernel_1649730/530195383.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mst\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mst1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mds_s1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0misel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mslice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1010\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mslice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2010\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mxt1\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mst1\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'elevation'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0met\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Exe time: '\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0met\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mst\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'sec'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mNameError\u001b[0m: name 'ds_s1' is not defined" - ] - } - ], - "source": [ - "st = time.time()\n", - "st1 = ds_s1.isel(lon=slice(1000, 1010), lat=slice(2000, 2010))\n", - "xt1 = st1['elevation'].values\n", - "et = time.time()\n", - "print('Exe time: ', et-st, 'sec')\n", - "print(xt1)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(10, 10)\n", - "3.1 Get index of point by two subsetting time: 0.0030269622802734375 sec\n", - "[[3 4]\n", - " [1 2]]\n", - "(array([3, 1]), array([4, 2]))\n", - "\n", - "Dimensions: (lon: 10, lat: 10)\n", - "Coordinates:\n", - " * lon (lon) float64 109.2 109.2 109.2 109.2 ... 109.2 109.2 109.2 109.2\n", - " * lat (lat) float64 10.34 10.34 10.34 10.35 ... 10.36 10.36 10.37 10.37\n", - "Data variables:\n", - " crs |S1 ...\n", - " elevation (lat, lon) int16 dask.array\n", - "Attributes: (12/36)\n", - " title: The GEBCO_2022 Grid - a continuous terra...\n", - " summary: The GEBCO_2022 Grid is a continuous, glo...\n", - " keywords: BATHYMETRY/SEAFLOOR TOPOGRAPHY, DIGITAL ...\n", - " Conventions: CF-1.6, ACDD-1.3\n", - " id: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " naming_authority: https://dx.doi.org\n", - " ... ...\n", - " geospatial_vertical_units: meters\n", - " geospatial_vertical_resolution: 1.0\n", - " geospatial_vertical_positive: up\n", - " identifier_product_doi: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " node_offset: 1.0\n", - "3.2 Get index of point by numpy ix_ time: 0.003170490264892578 sec\n", - "[-117, -119]\n", - "[-117 -119]\n" - ] - } - ], - "source": [ - "import numpy as np\n", - "print(st1[\"elevation\"].shape)\n", - "st = time.time()\n", - "pt1 = [st1[\"elevation\"].values[3,4], st1[\"elevation\"].values[1,2]]\n", - "et = time.time()\n", - "print('3.1 Get index of point by two subsetting time: ', et-st, 'sec')\n", - "\n", - "st = time.time()\n", - "#pt2 = st1[\"elevation\"].values[np.ix_([3,4],[1,2])]\n", - "idx_arr = np.array([[3,4],[1,2]])\n", - "print(idx_arr)\n", - "print(tuple(idx_arr.T))\n", - "#https://stackoverflow.com/questions/43034563/numpy-array-of-multiple-indices-replace-with-a-different-matrix\n", - "pt2=st1['elevation'].values[tuple(idx_arr.T)]\n", - "et = time.time()\n", - "print('3.2 Get index of point by numpy ix_ time: ', et-st, 'sec')\n", - "print(pt1)\n", - "print(pt2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#slow\n", - "x = xr.DataArray([-45,-44.95833,-44,-43.95822], dims=['longitude'])\n", - "y = xr.DataArray([35,35.004167,36,36.004168], dims=['latitude'])\n", - "st = time.time()\n", - "#ds_s2 = ds.sel(lon=x, lat=y, method='nearest') \n", - "et = time.time()\n", - "#print('Exe time: ', et-st, 'sec')\n", - "#print(ds_s2) \n", - "#print(ds_s2['elevation'].values)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#https://stackoverflow.com/questions/58706834/angled-slice-in-xarray\n", - "startLat = 35.0\n", - "startLon = -45.0\n", - "endLat = 36.0\n", - "endLon = -43.0\n", - "n = 3600/15 #15 arc-second\n", - "# not work, need another dimension to project\n", - "#x = xr.DataArray(np.linspace(startLon,endLon,n), dims='z')\n", - "#y = xr.DataArray(np.linspace(startLat,endLat,n), dims='z')\n", - "#st = time.time()\n", - "#ds_s3 = ds.interp(lon=x, lat=y, method='linear')\n", - "#et = time.time()\n", - "#print('Exe time: ', et-st, 'sec')\n", - "#print(ds_s3) \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import orjson\n", - "import json\n", - "st = time.time()\n", - "jt1 = orjson.dumps(xt1.tolist(), option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)\n", - "et = time.time()\n", - "print('4.1 Convert JSON by orjson time: ', et-st, 'sec')\n", - "st = time.time()\n", - "jt2 = json.dumps(xt1.tolist())\n", - "et = time.time()\n", - "print('4.2 Convert JSON by json.dump time: ', et-st, 'sec')\n", - "\n", - "print(jt1)\n", - "print(jt2)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "ds.close()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import zarr\n", - "import dask" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "#compressor = zarr.Blosc(cname='zstd', clevel=3, shuffle=2)\n", - "dask.config.set(scheduler='single-threaded')\n", - "#da = getattr(ds, 'elevation')\n", - "#https://www.programcreek.com/python/example/123571/xarray.decode_cf\n", - "#da.attrs['_Unsigned']='false'\n", - "ds\n", - "ds.to_zarr('GEBCO_2022_sub_ice_topo.zarr', mode='w',\n", - " #encoding={\"elevation\": {\"_Unsigned\": \"false\"}},\n", - " group='gebco') ##compute=False, , encoding={'gebbco': {'compressor': compressor}})\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Exe time: 0.004856586456298828 sec\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:    (lat: 43200, lon: 86400)\n",
-       "Coordinates:\n",
-       "  * lat        (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n",
-       "  * lon        (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
-       "Data variables:\n",
-       "    crs        |S1 ...\n",
-       "    elevation  (lat, lon) int16 dask.array<chunksize=(675, 2700), meta=np.ndarray>\n",
-       "Attributes: (12/36)\n",
-       "    Conventions:                     CF-1.6, ACDD-1.3\n",
-       "    comment:                         The data in the GEBCO_2022 Grid should n...\n",
-       "    creator_email:                   gdacc@seabed2030.org\n",
-       "    creator_name:                    GEBCO through the Nippon Foundation-GEBC...\n",
-       "    creator_type:                    International organisation\n",
-       "    creator_url:                     https://www.gebco.net\n",
-       "    ...                              ...\n",
-       "    node_offset:                     1.0\n",
-       "    project:                         Nippon Foundation - GEBCO Seabed2030 Pro...\n",
-       "    references:                      DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n",
-       "    source:                          The GEBCO_2022 Grid is the latest global...\n",
-       "    summary:                         The GEBCO_2022 Grid is a continuous, glo...\n",
-       "    title:                           The GEBCO_2022 Grid - a continuous terra...
" - ], - "text/plain": [ - "\n", - "Dimensions: (lat: 43200, lon: 86400)\n", - "Coordinates:\n", - " * lat (lat) float64 -90.0 -89.99 -89.99 -89.99 ... 89.99 89.99 90.0\n", - " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", - "Data variables:\n", - " crs |S1 ...\n", - " elevation (lat, lon) int16 dask.array\n", - "Attributes: (12/36)\n", - " Conventions: CF-1.6, ACDD-1.3\n", - " comment: The data in the GEBCO_2022 Grid should n...\n", - " creator_email: gdacc@seabed2030.org\n", - " creator_name: GEBCO through the Nippon Foundation-GEBC...\n", - " creator_type: International organisation\n", - " creator_url: https://www.gebco.net\n", - " ... ...\n", - " node_offset: 1.0\n", - " project: Nippon Foundation - GEBCO Seabed2030 Pro...\n", - " references: DOI: 10.5285/e0f0bb80-ab44-2739-e053-6c8...\n", - " source: The GEBCO_2022 Grid is the latest global...\n", - " summary: The GEBCO_2022 Grid is a continuous, glo...\n", - " title: The GEBCO_2022 Grid - a continuous terra..." - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "st = time.time()\n", - "dz = xr.open_zarr(\n", - " 'GEBCO_2022_sub_ice_topo.zarr', chunks='auto', \n", - " group='gebco', decode_cf=False, decode_times=False)\n", - "\n", - "et = time.time()\n", - "print('Exe time: ', et-st, 'sec')\n", - "dz" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(sys.getsizeof(dz))\n", - "dz['elevation'].nbytes/(1024 ** 3)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "st = time.time()\n", - "dz_s1 = dz.sel(lon=slice(105, 135), lat=slice(2, 35)) \n", - "dz_s1.close() #try if it can close\n", - "zt1 = dz_s1.isel(lon=slice(1000, 1010), lat=slice(2000, 2010))\n", - "xz1 = zt1['elevation'].values\n", - "et = time.time()\n", - "print('Exe time: ', et-st, 'sec')\n", - "print(xz1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "st = time.time()\n", - "jz1 = orjson.dumps(xz1.tolist(), option=orjson.OPT_NAIVE_UTC | orjson.OPT_SERIALIZE_NUMPY)\n", - "et = time.time()\n", - "print('4.1z Convert JSON by orjson time: ', et-st, 'sec')\n", - "print(jz1)\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.8.10 ('py39')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.10" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "e4b16f993b66de7f38f135ed21ea7c985362ee20cd8e4dede1c122c7165d5297" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/requirements.txt b/requirements.txt index 4f258a1..dc48194 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,11 @@ -dask==2023.8.0 -fastapi==0.101.0 -geopy==2.3.0 +dask==2023.11.0 +fastapi==0.104.1 +geopy==2.4.1 gunicorn==21.2.0 -numpy==1.25.2 -polars==0.18.13 +numpy==1.26.2 +polars==0.19.17 Requests==2.31.0 -uvicorn==0.23.2 -xarray==2023.07.0 -zarr==2.16.0 +setuptools==68.2.2 +uvicorn==0.24.0.post1 +xarray==2023.11.0 +zarr==2.16.1 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..b658385 --- /dev/null +++ b/setup.py @@ -0,0 +1,4 @@ +from setuptools import setup, find_packages + +setup(name='src', version='1.0', packages=find_packages()) + diff --git a/src.egg-info/PKG-INFO b/src.egg-info/PKG-INFO new file mode 100644 index 0000000..fb2b9c6 --- /dev/null +++ b/src.egg-info/PKG-INFO @@ -0,0 +1,3 @@ +Metadata-Version: 2.1 +Name: src +Version: 1.0 diff --git a/src.egg-info/SOURCES.txt b/src.egg-info/SOURCES.txt new file mode 100644 index 0000000..385458e --- /dev/null +++ b/src.egg-info/SOURCES.txt @@ -0,0 +1,19 @@ +.gitignore +README.md +change_log.md +gebco_app.py +requirements.txt +setup.py +conf/ecosystem.config.js +conf/gebco_v1.json +conf/simu.sh +simu/Hidy_zseg_123E98_23N33_123_21N33.csv +simu/gebco_xy_123E98_23N33_123_21N33.csv +simu/gebco_z_123E98_23N33_123_21N33.csv +simu/gebco_zseg_123E98_23N33_123_21N33.csv +src/__init__.py +src/xmeridian.py +src.egg-info/PKG-INFO +src.egg-info/SOURCES.txt +src.egg-info/dependency_links.txt +src.egg-info/top_level.txt \ No newline at end of file diff --git a/src.egg-info/dependency_links.txt b/src.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/src.egg-info/top_level.txt b/src.egg-info/top_level.txt new file mode 100644 index 0000000..85de9cf --- /dev/null +++ b/src.egg-info/top_level.txt @@ -0,0 +1 @@ +src diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/xmeridian.py b/src/xmeridian.py similarity index 100% rename from xmeridian.py rename to src/xmeridian.py