diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..39906eb7 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,60 @@ +--- + +name: Test + +on: + push: + pull_request: + schedule: + - cron: '9 0 * * 1' + +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: [3.8, 3.9, '3.10', 3.11, 3.12, 3.13, 3.14, pypy3.9] + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: python -m pip install --upgrade pip tox + - name: Run tox + run: tox -e "$(echo py${{ matrix.python-version }} | sed -e 's/[.]//g;s/pypypy/pypy/')" --skip-missing-interpreters false + tox_job: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + tox_job: [docs, flake8, mypy, headers] + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.13 + - name: Install dependencies + run: python -m pip install --upgrade pip tox + - name: Run tox ${{ matrix.tox_job }} + run: tox -e ${{ matrix.tox_job }} --skip-missing-interpreters false + CodeQL: + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: python + - name: Build + uses: github/codeql-action/autobuild@v2 + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 diff --git a/.gitignore b/.gitignore index bc90af02..77e8d2c6 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,10 @@ __pycache__ # / /.coverage +/.mypy_cache +/.ruff_cache /.tox +/.venv /build /coverage /dist diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c0f779b0..00000000 --- a/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -language: python -os: linux -dist: xenial -cache: pip -python: - - 2.7 - - 3.4 - - 3.5 - - 3.6 - - 3.7 - - 3.8 - - pypy -jobs: - include: - - python: 2.6 - dist: trusty - - python: pypy3 - dist: bionic - - python: 3.6 - env: TOXENV=flake8 - - python: 3.6 - env: TOXENV=docs -install: pip install tox -script: tox -e "${TOXENV:-$(echo py$TRAVIS_PYTHON_VERSION | tr -d . | sed -e 's/pypypy/pypy/')}" --skip-missing-interpreters false diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..f6ba7a3f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,160 @@ +Contributing to python-stdnum +============================= + +This document describes general guidelines for contributing new formats or +other enhancement to python-stdnum. + + +Adding number formats +--------------------- + +Basically any number or code that has some validation mechanism available or +some common formatting is eligible for inclusion into this library. If the +only specification of the number is "it consists of 6 digits" implementing +validation may not be that useful. + +Contributions of new formats or requests to implement validation for a format +should include the following: + +* The format name and short description. +* References to (official) sources that describe the format. +* A one or two paragraph description containing more details of the number + (e.g. purpose and issuer and possibly format information that might be + useful to end users). +* If available, a link to an (official) validation service for the number, + reference implementations or similar sources that allow validating the + correctness of the implementation. +* A set of around 20 to 100 "real" valid numbers for testing (more is better + during development but only around 100 will be retained for regression + testing). +* If the validation depends on some (online) list of formats, structures or + parts of the identifier (e.g. a list of region codes that are part of the + number) a way to easily update the registry information should be + available. + + +Code contributions +------------------ + +Improvements to python-stdnum are most welcome. Integrating contributions +will be done on a best-effort basis and can be made easier if the following +are considered: + +* Ideally contributions are made as GitHub pull requests, but contributions + by email (privately or through the python-stdnum-users mailing list) can + also be considered. +* Submitted contributions will often be reformatted and sometimes + restructured for consistency with other parts. +* Contributions will be acknowledged in the release notes. +* Contributions should add or update a copyright statement if you feel the + contribution is significant. +* All contribution should be made with compatible applicable copyright. +* It is not needed to modify the NEWS, README.md or files under docs for new + formats; these files will be updated on release. +* Marking valid numbers as invalid should be avoided and are much worse than + marking invalid numbers as valid. Since the primary use case for + python-stdnum is to validate entered data having an implementation that + results in "computer says no" should be avoided. +* Number format implementations should include links to sources of + information: generally useful links (e.g. more details about the number + itself) should be in the module docstring, if it relates more to the + implementation (e.g. pointer to reference implementation, online API + documentation or similar) a comment in the code is better +* Country-specific numbers and codes go in a country or region package (e.g. + stdnum.eu.vat or stdnum.nl.bsn) while global numbers go in the toplevel + name space (e.g. stdnum.isbn). +* All code should be well tested and achieve 100% code coverage. +* Existing code structure conventions (e.g. see README for interface) should + be followed. +* Git commit messages should follow the usual 7 rules. +* Declarative or functional constructs are preferred over an iterative + approach, e.g.:: + + s = sum(int(c) for c in number) + + over:: + + s = 0 + for c in number: + s += int(c) + + +Testing +------- + +Tests can be run with `tox`. Some basic code style tests can be run with `tox +-e flake8` and most other targets run the test suite with various supported +Python interpreters. + +Module implementations have a couple of smaller test cases that also serve as +basic documentation of the happy flow. + +More extensive tests are available, per module, in the tests directory. These +tests (also doctests) cover more corner cases and should include a set of +valid numbers that demonstrate that the module works correctly for real +numbers. + +The normal tests should never require online sources for execution. All +functions that deal with online lookups (e.g. the EU VIES service for VAT +validation) should only be tested using conditional unittests. + + +Finding test numbers +-------------------- + +Some company numbers are commonly published on a company's website contact +page (e.g. VAT or other registration numbers, bank account numbers). Doing a +web search limited to a country and some key words generally turn up a lot of +pages with this information. + +Another approach is to search for spreadsheet-type documents with some +keywords that match the number. This sometimes turns up lists of companies +(also occasionally works for personal identifiers). + +For information that is displayed on ID cards or passports it is sometimes +useful to do an image search. + +For dealing with numbers that point to individuals it is important to: + +* Only keep the data that is needed to test the implementation. +* Ensure that no actual other data relation to a person or other personal + information is kept or can be inferred from the kept data. +* The presence of a number in the test set should not provide any information + about the person (other than that there is a person with the number or + information that is present in the number itself). + +Sometimes numbers are part of a data leak. If this data is used to pick a few +sample numbers from the selection should be random and the leak should not be +identifiable from the picked numbers. For example, if the leaked numbers +pertain only to people with a certain medical condition, membership of some +organisation or other specific property the leaked data should not be used. + + +Reverse engineering +------------------- + +Sometimes a number format clearly has a check digit but the algorithm is not +publicly documented. It is sometimes possible to reverse engineer the used +check digit algorithm from a large set of numbers. + +For example, given numbers that, apart from the check digit, only differ in +one digit will often expose the weights used. This works reasonably well if +the algorithm uses modulo 11 is over a weighted sums over the digits. + +See https://github.com/arthurdejong/python-stdnum/pull/203#issuecomment-623188812 + + +Registries +---------- + +Some numbers or parts of numbers use validation base on a registry of known +good prefixes, ranges or formats. It is only useful to fully base validation +on these registries if the update frequency to these registries is very low. + +If there is a registry that is used (a list of known values, ranges or +otherwise) the downloaded information should be stored in a data file (see +the stdnum.numdb module). Only the minimal amount of data should be kept (for +validation or identification). + +The data files should be able to be created and updated using a script in the +`update` directory. diff --git a/COPYING b/COPYING index 5ab7695a..f6683e74 100644 --- a/COPYING +++ b/COPYING @@ -1,8 +1,8 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -10,7 +10,7 @@ as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] - Preamble + Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public @@ -112,7 +112,7 @@ modification follow. Pay close attention to the difference between a former contains code derived from the library, whereas the latter must be combined with the library in order to run. - GNU LESSER GENERAL PUBLIC LICENSE + GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other @@ -146,7 +146,7 @@ such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. - + 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an @@ -432,7 +432,7 @@ decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - NO WARRANTY + NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. @@ -455,7 +455,7 @@ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS + END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries @@ -484,8 +484,7 @@ convey the exclusion of warranty; and each file should have at least the Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + License along with this library; if not, see . Also add information on how to contact you by electronic and paper mail. @@ -496,9 +495,7 @@ necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. - , 1 April 1990 - Ty Coon, President of Vice + , 1 April 1990 + Moe Ghoul, President of Vice That's all there is to it! - - diff --git a/ChangeLog b/ChangeLog index 130c4586..a546b744 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,2228 @@ +2026-01-04 Arthur de Jong + + * [e7e900a] .github/workflows/test.yml, setup.py, tox.ini: Add + support for Python 3.14 + +2026-01-04 Arthur de Jong + + * [97d8cae] stdnum/sn/ninea.py: URL escape the underscore because + it confuses Sphinx + +2026-01-04 Arthur de Jong + + * [6070c60] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cn/loc.dat, stdnum/cz/banks.dat, stdnum/gs1_ai.dat, + stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat, + stdnum/nz/banks.dat, stdnum/oui.dat: Update database files + +2026-01-04 Arthur de Jong + + * [a7fd300] update/at_postleitzahl.py, update/be_banks.py, + update/cfi.py, update/cn_loc.py, update/cz_banks.py, + update/do_whitelists.py, update/gs1_ai.py, update/iban.py, + update/imsi.py, update/isbn.py, update/isil.py, update/nz_banks.py: + Consistently pass a user agent for update scripts + + The scourge of AI bots is forcing more and more sites to block + bots that don't set particular user agents. + +2026-01-04 Arthur de Jong + + * [e7afc61] update/be_banks.py: Update download URL of Belgian + bank numbers + + This also changes the handling to prefer the English name over + other names and handles another variant of not-applicable values. + +2026-01-04 Arthur de Jong + + * [d332ee1] stdnum/sn/ninea.py, tests/test_sn_ninea.doctest: + Add check digit validation to Senegal NINEA + +2023-02-12 Leandro Regueiro + + * [dd22123] stdnum/sn/__init__.py, stdnum/sn/ninea.py, + tests/test_sn_ninea.doctest: Add support for Senegal TIN + + Closes https://github.com/arthurdejong/python-stdnum/pull/395 + Closes https://github.com/arthurdejong/python-stdnum/issues/357 + +2026-01-03 Arthur de Jong + + * [d3ec3bd] stdnum/br/cnpj.py: Support new format for Brazilian CNPJ + + The new format allows letters as well as numbers to identify + companies. + + Closes https://github.com/arthurdejong/python-stdnum/issues/484 + +2025-02-27 dotbit1 <68584562+dotbit1@users.noreply.github.com> + + * [cd94bf1] stdnum/ro/onrc.py, tests/test_ro_onrc.doctest: Support + the new Romanian ONRC format + + Closes https://github.com/arthurdejong/python-stdnum/pull/465 + +2026-01-03 Arthur de Jong + + * [293136b] stdnum/lv/pvn.py: Support Latvian personal codes issued + after 2017 + + These numbers no longer embed a birth date in the format. + + Closes https://github.com/arthurdejong/python-stdnum/issues/486 + +2023-12-08 Cédric Krier + + * [a906a1e] stdnum/eu/excise.py, stdnum/fr/__init__.py, + stdnum/fr/accise.py, tests/test_fr_accise.doctest: Add accise - + the French number for excise + + Closes https://github.com/arthurdejong/python-stdnum/pull/424 + +2023-12-08 Cédric Krier + + * [1a254d9] stdnum/eu/excise.py, tests/test_eu_excise.doctest: + Add European Excise Number + + Closes https://github.com/arthurdejong/python-stdnum/pull/424 + +2025-09-28 Cédric Krier + + * [d534b3c] stdnum/be/ogm_vcs.py: Add Belgian OGM-VCS + + Closes https://github.com/arthurdejong/python-stdnum/pull/487 + +2025-10-14 KathrinM + + * [2cf475c] stdnum/eu/nace.py, stdnum/eu/nace20.dat, + stdnum/eu/nace21.dat, tests/test_eu_nace.doctest: Add support + for nace revision 2.1 + + This makes revision 2.1 the default but still allows validating + against version 2.0 using the revision argument. + + Closes https://github.com/arthurdejong/python-stdnum/pull/490 + +2025-12-19 Tuukka Tolvanen + + * [acda255] stdnum/de/leitweg.py, tests/test_de_leitweg.doctest: + Add DE Leitweg-ID + + Closes https://github.com/arthurdejong/python-stdnum/pull/491 + +2025-12-16 Arthur de Jong + + * [c7a7fd1] .github/workflows/test.yml: Run flake8 with Python 3.13 + + Python version 3.14 no longer works. + +2025-10-26 Arthur de Jong + + * [7a9b852] stdnum/ro/cnp.py: Mark more Romanian CNP county codes + as valid + + According to + https://ro.wikipedia.org/wiki/Carte_de_identitate_rom%C3%A2neasc%C4%83#Seriile_c%C4%83r%C8%9Bilor_de_identitate_(%C3%AEn_modelele_emise_%C3%AEnainte_de_2021) + 70 is used to represent any registration, regardless of county + but while multiple documents claim 80-83 are also valid it is + unclear what they represent. + + Closes https://github.com/arthurdejong/python-stdnum/issues/489 + +2025-10-26 Arthur de Jong + + * [7ca9b6c] stdnum/be/vat.py, tests/test_be_vat.doctest: Validate + first digit of Belgian VAT number + + Thanks to antonio-ginestar find pointing this out. + + Closes https://github.com/arthurdejong/python-stdnum/issues/488 + +2022-09-17 Leandro Regueiro + + * [a1fdd5d] stdnum/az/__init__.py, stdnum/az/voen.py, + tests/test_az_voen.doctest: Add support for Azerbaijan TIN + + Thanks to Adam Handke for finding the weights for the check + digit algorithm. + + Closes https://github.com/arthurdejong/python-stdnum/issues/200 + CLoses https://github.com/arthurdejong/python-stdnum/pull/329 + +2025-08-08 Fabien MICHEL + + * [e741318] stdnum/fr/rcs.py, tests/test_fr_rcs.doctest: Add French + RCS number + + Closes https://github.com/arthurdejong/python-stdnum/pull/481 + +2025-08-08 Fabien MICHEL + + * [ca80cc4] stdnum/fr/siren.py: Add fr.siren.format() function + +2025-08-08 Fabien MICHEL + + * [b3a42a1] stdnum/fr/tva.py, tests/test_fr_tva.doctest: Add + fr.tva.to_siren() function + + The function can convert a French VAT number to a SIREN. + + Closes https://github.com/arthurdejong/python-stdnum/pull/480 + +2025-08-14 Arthur de Jong + + * [843bbec] stdnum/bic.py, tests/test_bic.doctest: Add validation + of country code in BIC + + Closes https://github.com/arthurdejong/python-stdnum/issues/482 + +2025-06-05 Joni Saarinen + + * [deb0db1] stdnum/ee/__init__.py: Add personal id and business + id alias for Estonia + + Closes https://github.com/arthurdejong/python-stdnum/pull/476 + +2025-05-10 Luca + + * [1773a91] stdnum/mz/__init__.py, stdnum/mz/nuit.py, + tests/test_mz_nuit.doctest: Add support for Mozambique TIN + + Closes https://github.com/arthurdejong/python-stdnum/issues/360 + Closes https://github.com/arthurdejong/python-stdnum/pull/392 + Closes https://github.com/arthurdejong/python-stdnum/pull/473 + +2025-06-01 Arthur de Jong + + * [5ef6ade] stdnum/numdb.py: Use broader type ignore for + pkg_resources import + + Apparently mypy changed for classifying the problem from + import-untyped to import-not-found. + +2025-05-25 Arthur de Jong + + * [0e64cf6] stdnum/cn/loc.dat, stdnum/cn/ric.py, + tests/test_cn_ric.doctest, update/cn_loc.py: Download Chinise + location codes from Wikipedia + + The list on GitHub is missing historical information and also + appears to no longer be updated. This changes the birth place + lookup to take the birth year into account to determine whether + a county was assigned at the time. + + Closes https://github.com/arthurdejong/python-stdnum/issues/442 + +2025-05-18 Arthur de Jong + + * [210b9ce] stdnum/gs1_128.py, stdnum/gs1_ai.dat, + tests/test_gs1_128.doctest, update/gs1_ai.py: Fix handling of + decimals in Application Identifiers + + This fixes the handling of GS1-128 Application Identifiers with + decimal types. Previously, with some 4 digit decimal application + identifiers the number of decimals were incorrectly considered + part of the value instead of the application identifier. + + For example (310)5033333 is not correct but it should be evaluated + as (3105)033333 (application identifier 3105 and value 0.33333). + + Closes https://github.com/arthurdejong/python-stdnum/issues/471 + +2025-05-17 Arthur de Jong + + * [d66998e] ChangeLog, NEWS, stdnum/__init__.py: Get files ready + for 2.1 release + +2025-05-17 Arthur de Jong + + * [a753ebf] stdnum/at/postleitzahl.dat, stdnum/cn/loc.dat, + stdnum/gs1_ai.dat, stdnum/imsi.dat, stdnum/isbn.dat, + stdnum/my/bp.dat, stdnum/nz/banks.dat, stdnum/oui.dat, + update/my_bp.py: Update database files + + This also updates the URLs for the National Registration Department + of Malaysia. + +2025-05-14 Cédric Krier + + * [972b42d] setup.py: Define minimal Python version in setup.py + + Closes https://github.com/arthurdejong/python-stdnum/issues/474 + Closes https://github.com/arthurdejong/python-stdnum/pull/475 + Fixes 3542c06 + +2025-05-05 Luca + + * [8b78f78] stdnum/jp/in_.py: Remove superfluous modulus operation + + Closes https://github.com/arthurdejong/python-stdnum/pull/470 + +2025-05-05 Arthur de Jong + + * [ad4af91] ChangeLog, NEWS, README.md, docs/conf.py, + docs/index.rst, docs/stdnum.be.eid.rst, docs/stdnum.be.ssn.rst, + docs/stdnum.es.cae.rst, docs/stdnum.id.nik.rst, + docs/stdnum.isni.rst, docs/stdnum.jp.in_.rst, + docs/stdnum.nl.identiteitskaartnummer.rst, docs/stdnum.ru.ogrn.rst, + stdnum/__init__.py: Get files ready for 2.0 release + +2025-05-05 Arthur de Jong + + * [f2967d3] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cfi.dat, stdnum/cn/loc.dat, stdnum/cz/banks.dat, + stdnum/gs1_ai.dat, stdnum/iban.dat, stdnum/imsi.dat, + stdnum/isbn.dat, stdnum/isil.dat, stdnum/my/bp.dat, + stdnum/nz/banks.dat, stdnum/oui.dat, tests/test_gs1_128.doctest, + tox.ini: Update database files + + This also updates the GS1-128 tests because a previously unused + AI is now in use. This also adds the updating of the Czech bank + numbers to tox. + +2025-05-05 Arthur de Jong + + * [c118723] update/at_postleitzahl.py: Remove duplicate Austrian + post offices + +2025-05-05 Arthur de Jong + + * [1a87baf] update/my_bp.crt, update/my_bp.py: Drop custom + certificates for www.jpn.gov.my + + The certificate chain for www.jpn.gov.my seems to have been fixed. + +2025-05-05 Arthur de Jong + + * [44575a1] update/iban.py: Allow reading IBAN registry from the + command line + + It seems that the Swift website currently uses TLS fingerprinting + to block downloads of the IBAN registry except in certain browsers. + + It also fixes an idiosyncrasy in the IBAN registry iteself where + the Norwegian BBAN format string was not correct. + +2025-05-05 Arthur de Jong + + * [44c2355] update/gs1_ai.py: Fix the downloading of GS1 application + identifiers + + The URL changed and the embedded JSON also slightly changed. + +2025-05-05 Arthur de Jong + + * [01e87f9] update/cn_loc.py, update/gs1_ai.py: Fix datetime + related deprecation warnings in update scripts + +2025-05-05 Arthur de Jong + + * [37320ea] update/be_banks.py, update/requirements.txt: Fix the + downloading of Belgian bank identifiers + + The site switched from XLS to XLSX files. + +2025-05-05 Arthur de Jong + + * [98b4fa0] stdnum/util.py, update/cfi.py, update/isil.py, + update/my_bp.py: Always pass regex flags as keyword argument + + In particular with re.sub() it got confused with the count + positional argument. + + Fixes a9039c1 + +2025-05-05 Arthur de Jong + + * [6e8c783] stdnum/cr/cpj.py, stdnum/fr/nir.py, stdnum/si/maticna.py: + Switch some URLs to HTTPS + +2022-09-04 Leandro Regueiro + + * [497bb11] stdnum/th/__init__.py: Add VAT alias for Thailand + TIN number + + Based on + https://github.com/arthurdejong/python-stdnum/issues/118#issuecomment-920521305 + Closes https://github.com/arthurdejong/python-stdnum/pull/314 + +2025-05-05 Arthur de Jong + + * [bfac07b] stdnum/ua/edrpou.py: Fix typo + + Fixes b7b2af8 + +2025-04-04 Luca Sicurello + + * [fca47b0] stdnum/jp/in_.py: Add Japanese Individual Number + +2025-03-13 David Salvisberg + + * [0e857fb] .github/workflows/test.yml, .gitignore, docs/index.rst, + setup.cfg, setup.py, stdnum/__init__.py, stdnum/ad/__init__.py, + stdnum/ad/nrt.py, stdnum/al/__init__.py, stdnum/al/nipt.py, + stdnum/ar/__init__.py, stdnum/ar/cbu.py, stdnum/ar/cuit.py, + stdnum/ar/dni.py, stdnum/at/__init__.py, stdnum/at/businessid.py, + stdnum/at/postleitzahl.py, stdnum/at/tin.py, stdnum/at/uid.py, + stdnum/at/vnr.py, stdnum/au/__init__.py, stdnum/au/abn.py, + stdnum/au/acn.py, stdnum/au/tfn.py, stdnum/be/__init__.py, + stdnum/be/bis.py, stdnum/be/eid.py, stdnum/be/iban.py, + stdnum/be/nn.py, stdnum/be/ssn.py, stdnum/be/vat.py, + stdnum/bg/egn.py, stdnum/bg/pnf.py, stdnum/bg/vat.py, + stdnum/bic.py, stdnum/bitcoin.py, stdnum/br/__init__.py, + stdnum/br/cnpj.py, stdnum/br/cpf.py, stdnum/by/__init__.py, + stdnum/by/unp.py, stdnum/ca/__init__.py, stdnum/ca/bc_phn.py, + stdnum/ca/bn.py, stdnum/ca/sin.py, stdnum/casrn.py, stdnum/cfi.py, + stdnum/ch/esr.py, stdnum/ch/ssn.py, stdnum/ch/uid.py, + stdnum/ch/vat.py, stdnum/cl/__init__.py, stdnum/cl/rut.py, + stdnum/cn/__init__.py, stdnum/cn/ric.py, stdnum/cn/uscc.py, + stdnum/co/__init__.py, stdnum/co/nit.py, stdnum/cr/__init__.py, + stdnum/cr/cpf.py, stdnum/cr/cpj.py, stdnum/cr/cr.py, + stdnum/cu/ni.py, stdnum/cusip.py, stdnum/cy/vat.py, + stdnum/cz/__init__.py, stdnum/cz/bankaccount.py, + stdnum/cz/dic.py, stdnum/cz/rc.py, stdnum/damm.py, + stdnum/de/__init__.py, stdnum/de/handelsregisternummer.py, + stdnum/de/idnr.py, stdnum/de/stnr.py, stdnum/de/vat.py, + stdnum/de/wkn.py, stdnum/dk/__init__.py, stdnum/dk/cpr.py, + stdnum/dk/cvr.py, stdnum/do/__init__.py, stdnum/do/cedula.py, + stdnum/do/ncf.py, stdnum/do/rnc.py, stdnum/dz/__init__.py, + stdnum/dz/nif.py, stdnum/ean.py, stdnum/ec/__init__.py, + stdnum/ec/ci.py, stdnum/ec/ruc.py, stdnum/ee/__init__.py, + stdnum/ee/ik.py, stdnum/ee/kmkr.py, stdnum/ee/registrikood.py, + stdnum/eg/__init__.py, stdnum/eg/tn.py, stdnum/es/__init__.py, + stdnum/es/cae.py, stdnum/es/ccc.py, stdnum/es/cif.py, + stdnum/es/cups.py, stdnum/es/dni.py, stdnum/es/iban.py, + stdnum/es/nie.py, stdnum/es/nif.py, stdnum/es/postal_code.py, + stdnum/es/referenciacatastral.py, stdnum/eu/at_02.py, + stdnum/eu/banknote.py, stdnum/eu/ecnumber.py, stdnum/eu/eic.py, + stdnum/eu/nace.py, stdnum/eu/oss.py, stdnum/eu/vat.py, + stdnum/exceptions.py, stdnum/fi/__init__.py, stdnum/fi/alv.py, + stdnum/fi/associationid.py, stdnum/fi/hetu.py, + stdnum/fi/veronumero.py, stdnum/fi/ytunnus.py, + stdnum/figi.py, stdnum/fo/__init__.py, stdnum/fo/vn.py, + stdnum/fr/__init__.py, stdnum/fr/nif.py, stdnum/fr/nir.py, + stdnum/fr/siren.py, stdnum/fr/siret.py, stdnum/fr/tva.py, + stdnum/gb/nhs.py, stdnum/gb/sedol.py, stdnum/gb/upn.py, + stdnum/gb/utr.py, stdnum/gb/vat.py, stdnum/gh/__init__.py, + stdnum/gh/tin.py, stdnum/gn/__init__.py, stdnum/gn/nifp.py, + stdnum/gr/amka.py, stdnum/gr/vat.py, stdnum/grid.py, + stdnum/gs1_128.py, stdnum/gt/__init__.py, stdnum/gt/nit.py, + stdnum/hr/__init__.py, stdnum/hr/oib.py, stdnum/hu/__init__.py, + stdnum/hu/anum.py, stdnum/iban.py, stdnum/id/__init__.py, + stdnum/id/nik.py, stdnum/id/npwp.py, stdnum/ie/pps.py, + stdnum/ie/vat.py, stdnum/il/__init__.py, stdnum/il/hp.py, + stdnum/il/idnr.py, stdnum/imei.py, stdnum/imo.py, stdnum/imsi.py, + stdnum/in_/__init__.py, stdnum/in_/aadhaar.py, stdnum/in_/epic.py, + stdnum/in_/gstin.py, stdnum/in_/pan.py, stdnum/in_/vid.py, + stdnum/is_/__init__.py, stdnum/is_/kennitala.py, stdnum/is_/vsk.py, + stdnum/isan.py, stdnum/isbn.py, stdnum/isil.py, stdnum/isin.py, + stdnum/ismn.py, stdnum/isni.py, stdnum/iso11649.py, + stdnum/iso6346.py, stdnum/iso7064/mod_11_10.py, + stdnum/iso7064/mod_11_2.py, stdnum/iso7064/mod_37_2.py, + stdnum/iso7064/mod_37_36.py, stdnum/iso7064/mod_97_10.py, + stdnum/isrc.py, stdnum/issn.py, stdnum/it/__init__.py, + stdnum/it/aic.py, stdnum/it/codicefiscale.py, stdnum/it/iva.py, + stdnum/jp/__init__.py, stdnum/jp/cn.py, stdnum/ke/__init__.py, + stdnum/ke/pin.py, stdnum/kr/__init__.py, stdnum/kr/brn.py, + stdnum/kr/rrn.py, stdnum/lei.py, stdnum/li/peid.py, + stdnum/lt/__init__.py, stdnum/lt/asmens.py, + stdnum/lt/pvm.py, stdnum/lu/__init__.py, stdnum/lu/tva.py, + stdnum/luhn.py, stdnum/lv/__init__.py, stdnum/lv/pvn.py, + stdnum/ma/__init__.py, stdnum/ma/ice.py, stdnum/mac.py, + stdnum/mc/__init__.py, stdnum/mc/tva.py, stdnum/md/idno.py, + stdnum/me/__init__.py, stdnum/me/iban.py, stdnum/me/pib.py, + stdnum/meid.py, stdnum/mk/__init__.py, stdnum/mk/edb.py, + stdnum/mt/vat.py, stdnum/mu/nid.py, stdnum/mx/__init__.py, + stdnum/mx/curp.py, stdnum/mx/rfc.py, stdnum/my/nric.py, + stdnum/nl/__init__.py, stdnum/nl/brin.py, stdnum/nl/bsn.py, + stdnum/nl/btw.py, stdnum/nl/identiteitskaartnummer.py, + stdnum/nl/onderwijsnummer.py, stdnum/nl/postcode.py, + stdnum/no/__init__.py, stdnum/no/fodselsnummer.py, + stdnum/no/iban.py, stdnum/no/kontonr.py, stdnum/no/mva.py, + stdnum/no/orgnr.py, stdnum/numdb.py, stdnum/nz/__init__.py, + stdnum/nz/bankaccount.py, stdnum/nz/ird.py, stdnum/pe/__init__.py, + stdnum/pe/cui.py, stdnum/pe/ruc.py, stdnum/pk/cnic.py, + stdnum/pl/__init__.py, stdnum/pl/nip.py, stdnum/pl/pesel.py, + stdnum/pl/regon.py, stdnum/pt/__init__.py, stdnum/pt/cc.py, + stdnum/pt/nif.py, stdnum/py.typed, stdnum/py/__init__.py, + stdnum/py/ruc.py, stdnum/ro/__init__.py, stdnum/ro/cf.py, + stdnum/ro/cnp.py, stdnum/ro/cui.py, stdnum/ro/onrc.py, + stdnum/rs/__init__.py, stdnum/rs/pib.py, stdnum/ru/__init__.py, + stdnum/ru/inn.py, stdnum/ru/ogrn.py, stdnum/se/__init__.py, + stdnum/se/orgnr.py, stdnum/se/personnummer.py, + stdnum/se/postnummer.py, stdnum/se/vat.py, + stdnum/sg/__init__.py, stdnum/sg/uen.py, stdnum/si/__init__.py, + stdnum/si/ddv.py, stdnum/si/emso.py, stdnum/si/maticna.py, + stdnum/sk/__init__.py, stdnum/sk/dph.py, stdnum/sk/rc.py, + stdnum/sm/__init__.py, stdnum/sm/coe.py, stdnum/sv/__init__.py, + stdnum/sv/nit.py, stdnum/th/moa.py, stdnum/th/pin.py, + stdnum/th/tin.py, stdnum/tn/__init__.py, stdnum/tn/mf.py, + stdnum/tr/__init__.py, stdnum/tr/tckimlik.py, stdnum/tr/vkn.py, + stdnum/tw/__init__.py, stdnum/tw/ubn.py, stdnum/ua/edrpou.py, + stdnum/ua/rntrc.py, stdnum/us/atin.py, stdnum/us/ein.py, + stdnum/us/itin.py, stdnum/us/ptin.py, stdnum/us/rtn.py, + stdnum/us/ssn.py, stdnum/us/tin.py, stdnum/util.py, + stdnum/uy/__init__.py, stdnum/uy/rut.py, stdnum/vatin.py, + stdnum/ve/__init__.py, stdnum/ve/rif.py, stdnum/verhoeff.py, + stdnum/vn/__init__.py, stdnum/vn/mst.py, stdnum/za/idnr.py, + stdnum/za/tin.py, tests/test_by_unp.py, tests/test_ch_uid.py, + tests/test_de_handelsregisternummer.py, tests/test_do_cedula.py, + tests/test_do_ncf.py, tests/test_do_rnc.py, tests/test_eu_vat.py, + tox.ini: Add type hints + + Closes https://github.com/arthurdejong/python-stdnum/pull/467 + Closes https://github.com/arthurdejong/python-stdnum/issues/433 + +2025-04-21 Arthur de Jong + + * [bc689fd] stdnum/do/cedula.py: Add missing verify argument to + Cedula check_dgii() + +2025-03-13 David Salvisberg + + * [8283dbb] stdnum/be/bis.py, stdnum/be/nn.py, stdnum/be/ssn.py, + stdnum/de/handelsregisternummer.py, stdnum/do/ncf.py, + stdnum/do/rnc.py, stdnum/eu/vat.py, stdnum/pk/cnic.py, + stdnum/util.py: Explicity return None + + As per PEP 8. + + See https://peps.python.org/pep-0008/ + +2025-03-13 David Salvisberg + + * [6b9bbe2] stdnum/be/iban.py, stdnum/be/nn.py, + stdnum/cz/bankaccount.py, stdnum/es/cups.py, stdnum/gs1_128.py, + stdnum/pk/cnic.py, stdnum/vatin.py, stdnum/verhoeff.py, + tests/test_be_iban.doctest: Small code cleanups + +2025-04-21 Arthur de Jong + + * [3542c06] .github/workflows/test.yml, setup.py, tox.ini: Drop + support for Python 3.6 and 3.7 + + Sadly GitHub has dropped the ability to run tests with these + versions of Python. + +2025-03-27 Arthur de Jong + + * [ae0d86c] tests/test_do_cedula.py, tests/test_do_rnc.py: Ignore + test failures from www.dgii.gov.do + + There was a change in the SOAP service and there is a new + URL. However, the API has changed and seems to require + authentication. + + We ignore test failures for now but unless a solution is found + the DGII validation will be removed. + + See: https://github.com/arthurdejong/python-stdnum/pull/462 See: + https://github.com/arthurdejong/python-stdnum/issues/461 + +2025-03-27 Arthur de Jong + + * [dcd7fa6] tests/test_do_rnc.py: Drop more Python 2.7 compatibility + code + +2025-03-27 Arthur de Jong + + * [852515c] stdnum/cz/rc.py, tests/test_cz_rc.doctest: Fix Czech + Rodné číslo check digit validation + + It seems that a small minority of numbers assigned + with a checksum of 10 are still valid and expected + to have a check digit value of 0. According to + https://www.domzo13.cz/sw/evok/help/born_numbers.html this + practice even happended (but less frequently) after 1985. + + Closes https://github.com/arthurdejong/python-stdnum/issues/468 + +2025-02-16 Arthur de Jong + + * [fc766bc] .github/workflows/test.yml, setup.py, tox.ini: Add + support for Python 3.13 + +2024-12-10 nvmbrasserie + + * [1386f67] stdnum/ru/ogrn.py, tests/test_ru_ogrn.doctest: Add + Russian ОГРН + + Closes https://github.com/arthurdejong/python-stdnum/pull/459 + +2024-07-04 Quique Porta + + * [8519221] stdnum/es/cae.py, tests/test_es_cae.doctest: Add + Spanish CAE Number + + Closes https://github.com/arthurdejong/python-stdnum/pull/446 + +2025-02-15 Arthur de Jong + + * [0f94ca6] stdnum/ec/ruc.py, tests/test_ec_ruc.doctest: Support + Ecuador public RUC with juridical format + + It seems that numbers with a format used for juridical RUCs have + been issued to companies. + + Closes https://github.com/arthurdejong/python-stdnum/issues/457 + +2025-02-15 Arthur de Jong + + * [928a09d] stdnum/isni.py: Add International Standard Name + Identifier + + Closes https://github.com/arthurdejong/python-stdnum/issues/463 + +2025-01-11 Arthur de Jong + + * [2b92075] .github/workflows/test.yml, README.md, + online_check/stdnum.wsgi, setup.cfg, setup.py, stdnum/by/unp.py, + stdnum/de/handelsregisternummer.py, stdnum/do/ncf.py, + stdnum/eg/tn.py, stdnum/es/referenciacatastral.py, + stdnum/eu/nace.py, stdnum/imsi.py, + stdnum/mac.py, stdnum/meid.py, stdnum/mk/edb.py, + stdnum/mx/curp.py, stdnum/mx/rfc.py, stdnum/util.py, + tests/test_by_unp.doctest, tests/test_cn_ric.doctest, + tests/test_de_handelsregisternummer.doctest, + tests/test_de_stnr.doctest, tests/test_eg_tn.doctest, + tests/test_es_referenciacatastral.doctest, tests/test_isan.doctest, + tests/test_mac.doctest, tests/test_mk_edb.doctest, + tests/test_my_nric.doctest, tests/test_robustness.doctest, + tests/test_util.doctest, tox.ini: Drop Python 2 support + + This deprecates the stdnum.util.to_unicode() function because + we no longer have to deal with bytestrings. + +2024-11-17 Arthur de Jong + + * [0218601] stdnum/uy/rut.py, tests/test_uy_rut.doctest: Allow + Uruguay RUT number starting with 22 + +2024-09-30 Victor Sordoillet + + * [bcd5018] stdnum/isrc.py, tests/test_isrc.doctest: Add missing + music industry ISRC country codes + + Closes https://github.com/arthurdejong/python-stdnum/pull/455 + Closes https://github.com/arthurdejong/python-stdnum/issues/454 + +2024-10-11 Arthur de Jong + + * [020f1df] .github/workflows/test.yml: Use older Github runner + for Python 3.7 tests + +2024-10-11 Arthur de Jong + + * [051e63f] tests/test_verhoeff.doctest: Add more tests for + Verhoeff implementation + + See https://github.com/arthurdejong/python-stdnum/issues/456 + +2024-09-21 Arthur de Jong + + * [dc850d6] tox.ini: Ignore deprecation warnings in flake8 target + + This silences a ton of ast deprecation warnings that we can't + fix in python-stdnum anyway. + +2024-09-15 Arthur de Jong + + * [0ceb2b9] stdnum/util.py: Ensure get_soap_client() caches + with verify + + This fixes the get_soap_client() function to cache SOAP clients + taking the verify argument into account. + + Fixes 3fcebb2 + +2024-07-25 Jeff Horemans + + * [6c2873c] stdnum/be/eid.py: Add Belgian eID card number + + Closes https://github.com/arthurdejong/python-stdnum/pull/448 + +2024-07-25 Jeff Horemans + + * [56036d0] stdnum/nl/identiteitskaartnummer.py: Add Dutch + identiteitskaartnummer + + Closes https://github.com/arthurdejong/python-stdnum/pull/449 + +2024-09-14 Arthur de Jong + + * [3fcebb2] setup.py, stdnum/by/unp.py, stdnum/ch/uid.py, + stdnum/de/handelsregisternummer.py, stdnum/do/ncf.py, + stdnum/do/rnc.py, stdnum/eu/vat.py, stdnum/tr/tckimlik.py, + stdnum/util.py: Customise certificate validation for web services + + This adds a `verify` argument to all functions that use network + services for lookups. The option is used to configure how + certificate validation works, the same as in the requests library. + + For SOAP requests this is implemented properly when using the + Zeep library. The implementations using Suds and PySimpleSOAP + have been updated on a best-effort basis but their use has been + deprecated because they do not seem to work in practice in a + lot of cases already. + + Related to https://github.com/arthurdejong/python-stdnum/issues/452 + Related to https://github.com/arthurdejong/python-stdnum/pull/453 + +2024-07-04 Joris Makauskis + + * [6cbb9bc] stdnum/util.py: Fix zeep client timeout parameter + + The timeout parameter of the zeep transport class is not + responsable for POST/GET timeouts. The operational_timeout + parameter should be used for that. + + See https://github.com/mvantellingen/python-zeep/issues/140 + + Closes https://github.com/arthurdejong/python-stdnum/issues/444 + Closes https://github.com/arthurdejong/python-stdnum/pull/445 + +2023-07-04 Jeff Horemans + + * [af3a728] stdnum/be/ssn.py, tests/test_be_ssn.doctest: Add + Belgian SSN number + + Closes https://github.com/arthurdejong/python-stdnum/pull/438 + +2024-07-15 Arthur de Jong + + * [0da257c] online_check/stdnum.wsgi: Replace use of deprecated + inspect.getargspec() + + Use the inspect.signature() function instead. The + inspect.getargspec() function was removed in Python 3.11. + +2024-06-23 Arthur de Jong + + * [e951dac] stdnum/id/npwp.py, tests/test_id_npwp.doctest: Support + 16 digit Indonesian NPWP numbers + + The Indonesian NPWP is being switched from 15 to 16 digits. The + number is now the NIK for Indonesian citizens and the old format + with a leading 0 for others (organisations and non-citizens). + + See + https://www.grantthornton.co.id/insights/global-insights1/updates-regarding-the-format-of-indonesian-tax-id-numbers/ + + Closes https://github.com/arthurdejong/python-stdnum/issues/432 + +2024-05-17 Jeff Horemans + + * [1da003f] stdnum/ch/uid.py: Adjust Swiss uid module to accept + numbers without CHE prefix + + Closes https://github.com/arthurdejong/python-stdnum/pull/437 + Closes https://github.com/arthurdejong/python-stdnum/issues/423 + +2024-05-21 petr.prikryl + + * [91959bd] stdnum/cz/banks.dat: Update Czech database files + + Closes https://github.com/arthurdejong/python-stdnum/pull/439 + Closes https://github.com/arthurdejong/python-stdnum/pull/435 + +2024-05-31 Olly Middleton + + * [58ecb03] stdnum/ie/pps.py, tests/test_ie_pps.doctest: Update + Irish PPS validator to support new numbers + + See https://www.charteredaccountants.ie/News/b-range-pps-numbers + + Closes https://github.com/arthurdejong/python-stdnum/issues/440 + Closes https://github.com/arthurdejong/python-stdnum/pull/441 + +2024-06-13 vanderkoort + + * [fb4d792] NEWS: Fix a typo + + Closes https://github.com/arthurdejong/python-stdnum/pull/443 + +2024-05-19 Arthur de Jong + + * [5aeaeff] stdnum/id/loc.dat, stdnum/id/nik.py: Add support for + Indonesian NIK + +2024-05-19 Arthur de Jong + + * [0690996] .github/workflows/test.yml, setup.py, tox.ini: Drop + support for Python 3.5 + + We don't have an easy way to test with Python 3.5 any more. + +2024-03-17 Arthur de Jong + + * [201d4d1] ChangeLog, NEWS, README.md, docs/conf.py, docs/index.rst, + docs/stdnum.ca.bc_phn.rst, docs/stdnum.eu.ecnumber.rst, + docs/stdnum.in_.vid.rst, stdnum/__init__.py: Get files ready + for 1.20 release + +2024-03-17 Arthur de Jong + + * [b454d3a] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cn/loc.dat, stdnum/gs1_128.py, stdnum/gs1_ai.dat, + stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat, + stdnum/nz/banks.dat, stdnum/oui.dat, tests/test_be_iban.doctest, + update/gs1_ai.py: Update database files + + The Belgian bpost bank no longer has a registration and a few + bank account numbers in the tests that used that bank were removed. + + Also updates the update/gs1_ai.py script to handle the new format + of the data published by GS1. Also update the GS1-128 module to + handle some different date formats. + + The Pakistan entry was kept in the stdnum/iban.dat file because + the PDF version of the IBAN Registry still contains the country. + + fix db + +2024-03-17 Arthur de Jong + + * [97dbced] tox.ini: Add update-dat tox target for convenient data + file updating + +2024-03-17 Arthur de Jong + + * [26fd25b] setup.cfg, update/cfi.py, update/nz_banks.py, + update/requirements.txt: Switch to using openpyxl for parsing + XLSX files + + The xlrd has dropped support for parsing XLSX files. We still + use xlrd for update/be_banks.py because they use the classic + XLS format and openpyxl does not support that format. + +2024-03-17 Arthur de Jong + + * [9230604] stdnum/za/idnr.py: Use HTTPS in URLs where possible + +2024-02-27 Atul Deolekar + + * [7cba469] stdnum/in_/vid.py: Add Indian virtual identity number + + Closes https://github.com/arthurdejong/python-stdnum/pull/428 + +2024-03-17 Arthur de Jong + + * [bb20121] stdnum/ua/edrpou.py, tests/test_ua_edrpou.doctest: + Fix Ukrainian EDRPOU check digit calculation + + This fixes the case where the weighted sum woud be 10 which + should result in a check digit of 0. + + Closes https://github.com/arthurdejong/python-stdnum/issues/429 + +2023-12-15 Kevin Dagostino + + * [9c7c669] stdnum/fr/nif.py: Imporve French NIF validation + (checksum) + + The last 3 digits are a checksum. % 511 + https://ec.europa.eu/taxation_customs/tin/specs/FS-TIN%20Algorithms-Public.docx + + Closes https://github.com/arthurdejong/python-stdnum/pull/426 + +2024-02-03 Arthur de Jong + + * [1e412ee] stdnum/vatin.py, tests/test_vatin.doctest: Fix vatin + number compacting for "EU" VAT numbers + + Thanks Davide Walder for finding this. + + Closes https://github.com/arthurdejong/python-stdnum/issues/427 + +2023-11-19 Daniel Weber + + * [2535bbf] stdnum/eu/ecnumber.py, tests/test_eu_ecnumber.doctest: + Add European Community (EC) Number + + Closes https://github.com/arthurdejong/python-stdnum/pull/422 + +2023-10-20 Ömer Boratav + + * [2478483] stdnum/ca/bc_phn.py: Add British Columbia PHN + + Closes https://github.com/arthurdejong/python-stdnum/pull/421 + +2023-11-12 Arthur de Jong + + * [58d6283] stdnum/ro/cf.py, tests/test_eu_vat.doctest: Ensure EU + VAT numbers don't accept duplicate country codes + +2023-11-12 Arthur de Jong + + * [1a5db1f] stdnum/de/vat.py: Fix typo (thanks Александр + Кизеев) + +2023-10-02 Arthur de Jong + + * [352bbcb] .github/workflows/test.yml, setup.py, tox.ini: Add + support for Python 3.12 + +2023-08-20 Arthur de Jong + + * [fa455fc] ChangeLog, NEWS, README.md, docs/index.rst, + docs/stdnum.be.bis.rst, docs/stdnum.eg.tn.rst, + docs/stdnum.es.postal_code.rst, docs/stdnum.eu.oss.rst, + docs/stdnum.gn.nifp.rst, docs/stdnum.si.maticna.rst, + stdnum/__init__.py: Get files ready for 1.19 release + +2023-08-20 Arthur de Jong + + * [3191b4c] MANIFEST.in: Ensure all files are included in source + archive + + Fixes b1dc313 Fixes 90044e2 + +2023-08-20 Arthur de Jong + + * [3947a54] stdnum/by/portal.nalog.gov.by.crt, stdnum/by/unp.py: + Remove obsolete intermediate certificate + + The portal.nalog.gov.by web no longer has an incomplete + certificate chain. + +2023-08-20 Arthur de Jong + + * [7761e42] stdnum/numdb.py: Use importlib.resource in place of + deprecated pkg_resources + + Closes https://github.com/arthurdejong/python-stdnum/issues/412 + Closes https://github.com/arthurdejong/python-stdnum/pull/413 + +2023-08-20 Arthur de Jong + + * [f6edcc5] tests/test_do_rnc.py: Avoid the deprecated + assertRegexpMatches function + +2023-08-20 Arthur de Jong + + * [895f092] setup.cfg: Rename license_file option in setup.cfg + + It seems the old option wasn't working with all versions of + setuptools anyway. + + See + https://setuptools.pypa.io/en/latest/userguide/declarative_config.html + +2023-08-20 Arthur de Jong + + * [3126f96] stdnum/by/unp.py, tests/test_by_unp.py: Update Belarusian + UNP online check + + The API for the online check for Belarusian UNP numbers at + https://www.portal.nalog.gov.by/grp/getData has changed some + small details of the API. + +2023-08-20 Arthur de Jong + + * [88d1dca] tests/test_de_handelsregisternummer.py: Replace test + number for German company registry + + The number seems to be no longer valid breaking the online tests. + +2023-08-20 Arthur de Jong + + * [6e56f3c] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cn/loc.dat, stdnum/gs1_ai.dat, stdnum/iban.dat, + stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat, + stdnum/nz/banks.dat, stdnum/oui.dat, tests/test_be_iban.doctest, + update/oui.py: Update database files + + This also modifies the OUI update script because the website + has changed to HTTPS and is sometimes very slow. + + The Belgian Commerzbank no longer has a registration and a bank + account number in the tests used that bank. + +2023-08-20 Arthur de Jong + + * [0aa0b85] update/eu_nace.py: Remove EU NACE update script + + The website that publishes the NACE catalogue has changed and + a complete re-write of the script would be necessary. The data + file hasn't changed since 2017 so is also unlikely to change + until it is going to be replaced by NACE rev. 2.1 in 2025. + + See https://ec.europa.eu/eurostat/web/nace + + The NACE rev 2 specification can now be found here: + https://showvoc.op.europa.eu/#/datasets/ESTAT_Statistical_Classification_of_Economic_Activities_in_the_European_Community_Rev._2/data + + The NACE rev 2.1 specification can now be found here: + https://showvoc.op.europa.eu/#/datasets/ESTAT_Statistical_Classification_of_Economic_Activities_in_the_European_Community_Rev._2.1._%28NACE_2.1%29/data + + In both cases a ZIP file with RDF metadata can be downloaded + (but the web applciation also exposes some simpler JSON APIs). + +2023-08-13 Arthur de Jong + + * [f58e08d] stdnum/eu/oss.py, stdnum/eu/vat.py, + tests/test_eu_oss.doctest, tests/test_eu_vat.doctest: Validate + European VAT numbers with EU or IM prefix + + Closes https://github.com/arthurdejong/python-stdnum/pull/417 + +2023-06-30 Blaž Bregar + + * [d0f4c1a] stdnum/si/__init__.py, stdnum/si/maticna.py, + tests/test_si_maticna.doctest: Add Slovenian Corporate Registration + Number + + Closes https://github.com/arthurdejong/python-stdnum/pull/414 + +2023-08-06 Arthur de Jong + + * [b8ee830] .github/workflows/test.yml, scripts/check_headers.py, + tox.ini: Extend license check to file header check + + This also checks that the file name referenced in the file header + is correct. + +2023-08-06 Arthur de Jong + + * [ef49f49] stdnum/be/bis.py, stdnum/be/nn.py, + stdnum/de/stnr.py, stdnum/dz/nif.py, stdnum/fi/alv.py, + stdnum/gb/utr.py, stdnum/hr/oib.py, stdnum/md/idno.py, + stdnum/pl/regon.py, stdnum/py/ruc.py, stdnum/sk/dph.py, + stdnum/tn/mf.py, stdnum/ua/edrpou.py, stdnum/ua/rntrc.py, + stdnum/vn/mst.py, stdnum/za/idnr.py, tests/test_al_nipt.doctest, + tests/test_gb_sedol.doctest, tests/test_iso6346.doctest, + tests/test_iso7064.doctest, tests/test_th_moa.doctest, + tests/test_tn_mf.doctest, tests/test_ve_rif.doctest: Fix file + headers + + This improves consistency across files and fixes some files that + had an incorrect file name reference. + +2023-07-30 Arthur de Jong + + * [3848318] stdnum/ca/sin.py: Validate first digit of Canadian SIN + + See + http://www.straightlineinternational.com/docs/vaildating_canadian_sin.pdf + See + https://lists.arthurdejong.org/python-stdnum-users/2023/msg00000.html + +2023-06-20 Jeff Horemans + + * [be33a80] stdnum/be/bis.py, stdnum/be/nn.py, + tests/test_be_bis.doctest, tests/test_be_nn.doctest: Add Belgian + BIS Number + + Closes https://github.com/arthurdejong/python-stdnum/pull/418 + +2023-06-19 Arthur de Jong + + * [8ce4a47] .github/workflows/test.yml: Run Python 2.7 tests in + a container for GitHub Actions + + See https://github.com/actions/setup-python/issues/672 + +2023-06-13 Jeff Horemans + + * [311fd56] stdnum/be/nn.py, tests/test_be_nn.doctest: Handle + (partially) unknown birthdate of Belgian National Number + + This adds documentation for the special cases regarding birth + dates embedded in the number, allows for date parts to be unknown + and adds functions for getting the year and month. + + Closes https://github.com/arthurdejong/python-stdnum/pull/416 + +2023-06-01 Chales Horn + + * [7d3ddab] stdnum/isbn.py, stdnum/issn.py: Minor ISSN and ISBN + documentation fixes + + Fix a comment that claimed incorrect ISSN length and use slightly + more consistent terminology around check digits in ISSN and ISBN. + + Closes https://github.com/arthurdejong/python-stdnum/pull/415 + +2023-05-12 Arthur de Jong + + * [90044e2] .github/workflows/test.yml, + scripts/check_license_headers.py, tox.ini: Add automated checking + for correct license header + +2023-01-28 Leandro Regueiro + + * [62d15e9] stdnum/gn/__init__.py, stdnum/gn/nifp.py, + tests/test_gn_nifp.doctest: Add support for Guinea TIN + + Closes https://github.com/arthurdejong/python-stdnum/issues/384 + Closes https://github.com/arthurdejong/python-stdnum/pull/386 + +2023-02-24 Victor + + * [96abcfe] stdnum/es/postal_code.py: Add Spanish postcode validator + + Closes https://github.com/arthurdejong/python-stdnum/pull/401 + +2023-02-13 mjturt + + * [36858cc] stdnum/fi/hetu.py, tests/test_fi_hetu.doctest: Add + support for Finland HETU new century indicating signs + + More information at + https://dvv.fi/en/reform-of-personal-identity-code + + Cloess https://github.com/arthurdejong/python-stdnum/pull/396 + +2023-01-05 Jeff Horemans + + * [42d2792] stdnum/be/nn.py, tests/test_be_nn.doctest: Add + functionality to get gender from Belgian National Number + + This also extends the documentation for the number. + + Closes https://github.com/arthurdejong/python-stdnum/pull/347/files + +2023-03-06 RaduBorzea <101399404+RaduBorzea@users.noreply.github.com> + + * [cf14a9f] stdnum/ro/cnp.py: Add get_county() function to + Romanian CNP + + This also validates the county part of the number. + + Closes https://github.com/arthurdejong/python-stdnum/pull/407 + +2023-03-19 Arthur de Jong + + * [a8b6573] docs/conf.py, setup.cfg, tox.ini: Ensure flake8 is + run on all Python files + + This also fixes code style fixes in the Sphinx configuration file. + +2023-03-18 Arthur de Jong + + * [7af50b7] .github/workflows/test.yml, setup.py, tox.ini: Add + support for Python 3.11 + +2023-03-18 Arthur de Jong + + * [8498b37] stdnum/gs1_128.py: Fix date formatting on PyPy 2.7 + + The original way of calling strftime was likely an artifact of + Python 2.6 support. + + Fixes 7e84c05 + +2023-03-18 Arthur de Jong + + * [7e84c05] stdnum/gs1_128.py, stdnum/gs1_ai.dat, + tests/test_gs1_128.doctest, update/gs1_ai.py: Extend date parsing + in GS1-128 + + Some new AIs have new date formats or have changed the way + optional components of formats are defined. + +2023-03-09 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [bf1bdfe] stdnum/iban.dat: Update IBAN database file + + Closes https://github.com/arthurdejong/python-stdnum/pull/409 + +2023-03-18 Arthur de Jong + + * [a09a7ce] stdnum/al/nipt.py, tests/test_al_nipt.doctest: Fix + Albanian tax number validation + + This extends the description of the Albanian NIPT (NUIS) number + with information on the structure of the number. The first + character was previously limited between J and L but this letter + indicates a decade and the number is also used for individuals + to where it indicates a birth date. + + Thanks Julien Launois for pointing this out. + + Source: + https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Albania-TIN.pdf + + Fixes 3db826c Closes + https://github.com/arthurdejong/python-stdnum/pull/402 + +2023-03-13 Ali-Akber Saifee + + * [031a249] stdnum/sg/uen.py: Fix typo in UEN docstring + +2023-01-02 Arthur de Jong + + * [cf22705] online_check/stdnum.wsgi, tox.ini: Extend number + properties to show in online check + + This also ensures that flake8 is run on the WSGI script. + +2022-10-09 Leandro Regueiro + + * [6d366e3] stdnum/eg/__init__.py, stdnum/eg/tn.py, + tests/test_eg_tn.doctest: Add support for Egypt TIN + + This also convertis Arabic digits to ASCII digits. + + Closes https://github.com/arthurdejong/python-stdnum/issues/225 + Closes https://github.com/arthurdejong/python-stdnum/pull/334 + +2022-12-30 Arthur de Jong + + * [b1dc313] CONTRIBUTING.md, docs/contributing.rst, docs/index.rst: + Add initial CONTRIBUTING.md file + + Initial description of the information needed for adding new + number formats and some coding and testing guidelines. + +2022-12-05 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [df894c3] stdnum/ch/uid.py, stdnum/gh/tin.py: Fix typos found + by codespell + + Closes https://github.com/arthurdejong/python-stdnum/pull/344 + +2022-12-12 Arthur de Jong + + * [4f8155c] .github/workflows/test.yml: Run Python 3.5 and 3.6 + GitHub tests on older Ubuntu + + The ubuntu-latest now points to ubuntu-22.04 instead of + ubuntu-20.04 before. + + This also switches the PyPy version to test with to 3.9. + +2022-11-29 valeriko + + * [74d854f] stdnum/ee/ik.py: Fix a typo + + Clocses https://github.com/arthurdejong/python-stdnum/pull/341 + +2022-11-28 Arthur de Jong + + * [7a91a98] tox.ini: Avoid newer flake8 + + The new 6.0.0 contains a number of backwards incompatible changes + for which plugins need to be updated and configuration needs to + be updated. + + Sadly the maintainer no longer accepts contributions or discussion + See https://github.com/PyCQA/flake8/issues/1760 + +2022-11-13 Arthur de Jong + + * [60a90ed] ChangeLog, NEWS, README.md, docs/index.rst, + docs/stdnum.be.nn.rst, docs/stdnum.cfi.rst, + docs/stdnum.cz.bankaccount.rst, docs/stdnum.dz.nif.rst, + docs/stdnum.fo.vn.rst, docs/stdnum.gh.tin.rst, + docs/stdnum.ke.pin.rst, docs/stdnum.ma.ice.rst, + docs/stdnum.me.pib.rst, docs/stdnum.mk.edb.rst, + docs/stdnum.pk.cnic.rst, docs/stdnum.si.emso.rst, + docs/stdnum.tn.mf.rst, stdnum/__init__.py, stdnum/gh/tin.py, + tox.ini: Get files ready for 1.18 release + +2022-11-13 Arthur de Jong + + * [31b2694] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cn/loc.dat, stdnum/eu/nace.dat, stdnum/gs1_ai.dat, + stdnum/imsi.dat, stdnum/isbn.dat, stdnum/nz/banks.dat, + stdnum/oui.dat: Update database files + +2022-11-13 Arthur de Jong + + * [f691bf7] stdnum/de/handelsregisternummer.py, + tests/test_de_handelsregisternummer.py: Update German + OffeneRegister lookup data format + + It appears that the data structure at OffeneRegister has changed + which requires a different query. Data is returned in a different + structure. + +2022-11-13 Arthur de Jong + + * [5cdef0d] update/cn_loc.py: Increase timeout for CN Open Data + download + + It seems that raw.githubusercontent.com can be extremely slow. + +2022-11-13 Arthur de Jong + + * [580d6e0] update/my_bp.py: Pick up custom certificate from + script path + + This ensures that the script can be run from any directory. + + Fixes c4ad714 + +2022-09-06 Leandro Regueiro + + * [7348c7a] tests/test_vatin.doctest: vatin: Add a few more tests + for is_valid + + See https://github.com/arthurdejong/python-stdnum/pull/316 + +2022-11-13 Arthur de Jong + + * [fa62ea3] stdnum/pk/__init__.py, stdnum/pk/cnic.py, + tests/test_pk_cnic.doctest: Add Pakistani ID card number + + Based on the implementation provided by Quantum Novice (Syed + Haseeb Shah). + + Closes https://github.com/arthurdejong/python-stdnum/pull/306 + Closes https://github.com/arthurdejong/python-stdnum/issues/304 + +2022-10-16 Blaž Bregar + + * [feccaff] stdnum/si/__init__.py, stdnum/si/emso.py, + tests/test_si_emso.doctest: Add support for Slovenian EMŠO + (Unique Master Citizen Number) + + Closes https://github.com/arthurdejong/python-stdnum/pull/338 + +2022-11-12 Arthur de Jong + + * [74cc981] stdnum/cz/bankaccount.py, stdnum/nz/bankaccount.py, + tox.ini, update/iban.py: Ensure we always run flake8-bugbear + + This assumes that we no longer use Python 2.7 for running the + flake8 tests any more. + +2022-11-12 Arthur de Jong + + * [a03ac04] stdnum/cz/bankaccount.py, + stdnum/es/referenciacatastral.py, stdnum/lei.py, stdnum/nl/bsn.py: + Use HTTPS in URLs where possible + +2022-10-23 Leandro Regueiro + + * [8e76cd2] stdnum/cr/cpf.py: Pad with zeroes in a more readable + manner + + Closes https://github.com/arthurdejong/python-stdnum/pull/340 + +2022-11-12 Arthur de Jong + + * [45f098b] stdnum/exceptions.py: Make all exceptions inherit + from ValueError + + All the validation exceptions (subclasses of ValidationError) + are raised when a number is provided with an inappropriate value. + +2022-11-12 Arthur de Jong + + * [a218032] stdnum/ch/uid.py, tests/test_ch_uid.py: Add a check_uid() + function to the stdnum.ch.uid module + + This function can be used to performa a lookup of organisation + information by the Swiss Federal Statistical Office web service. + + Related to https://github.com/arthurdejong/python-stdnum/issues/336 + +2022-11-12 Arthur de Jong + + * [1364e19] stdnum/cusip.py, tests/test_cusip.doctest: Support + "I" and "O" in CUSIP number + + It is unclear why these letters were considered invalid at the + time of the implementation. + + This also reduces the test set a bit while still covering + most cases. + + Closes https://github.com/arthurdejong/python-stdnum/issues/337 + +2022-10-23 Arthur de Jong + + * [f972894] online_check/stdnum.wsgi: Switch to escape() from html + + The function was removed from the cgi module in Python 3.8. + +2022-10-23 Arthur de Jong + + * [c5d3bf4] online_check/stdnum.wsgi: Switch to parse_qs() from + urllib.parse + + The function was removed from the cgi module in Python 3.8. + +2022-10-19 Arthur de Jong + + * [8b5b07a] stdnum/casrn.py: Remove unused import + + Fixes 09d595b + +2022-10-19 Arthur de Jong + + * [09d595b] stdnum/casrn.py: Improve validation of CAS Registry + Number + + This ensures that a leading 0 is treated as invalid. + +2022-10-19 Arthur de Jong + + * [7c2153e] stdnum/cas.py: Remove duplicate CAS Registry Number + + The recently added stdnum.cas module was already available as + teh stdnum.casrn module. + + Reverts acb6934 + +2022-10-19 Arthur de Jong + + * [1003033] tests/test_no_fodselsnummer.doctest: Update + Fødselsnummer test case for date in future + + The future was now. This problem was pushed forwards to October + 2039. + +2022-10-15 Arthur de Jong + + * [1636045] tox.ini: Support running tests with PyPy 2.7 + + This also applies the fix from cfc80c8 from Python 2.7 to PyPy. + +2022-09-11 Leandro Regueiro + + * [7be2291] stdnum/gh/__init__.py, stdnum/gh/tin.py, + tests/test_gh_tin.doctest: Add support for Ghana TIN + + Closes https://github.com/arthurdejong/python-stdnum/pull/326 + Closes https://github.com/arthurdejong/python-stdnum/issues/262 + +2022-10-15 Arthur de Jong + + * [acb6934] stdnum/cas.py: Add CAS Registry Number + +2022-09-18 Leandro Regueiro + + * [2b6e087] stdnum/me/__init__.py, stdnum/me/pib.py, + tests/test_me_pib.doctest: Add support for Montenegro TIN + + Closes https://github.com/arthurdejong/python-stdnum/pull/331 + Closes https://github.com/arthurdejong/python-stdnum/issues/223 + +2022-09-10 Leandro Regueiro + + * [fbe094c] stdnum/fo/__init__.py, stdnum/fo/vn.py, + tests/test_fo_vn.doctest: Add Faroe Islands V-number + + Closes https://github.com/arthurdejong/python-stdnum/pull/323 + Closes https://github.com/arthurdejong/python-stdnum/issues/219 + +2022-09-17 Leandro Regueiro + + * [a261a93] stdnum/mk/__init__.py, stdnum/mk/edb.py, + tests/test_mk_edb.doctest: Add North Macedonian ЕДБ + + Note that this is implementation is mostly based + on unofficial sources describing the format, + which match the hundreds of examples found online. + https://forum.it.mk/threads/modularna-kontrola-na-embg-edb-dbs-itn.15663/?__cf_chl_tk=Op2PaEIauip6Z.ZjvhP897O8gRVAwe5CDAVTpjx1sEo-1663498930-0-gaNycGzNCRE#post-187048 + + Also note that the algorithm for the check digit was tested on + all found examples, and it doesn't work for all of them, despite + those failing examples don't seem to be valid according to the + official online search. + + Closes https://github.com/arthurdejong/python-stdnum/pull/330 + Closes https://github.com/arthurdejong/python-stdnum/issues/222 + +2022-09-23 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [eff3f52] stdnum/cn/ric.py, stdnum/ma/ice.py: Fix a couple typos + found by codespell + + Closes https://github.com/arthurdejong/python-stdnum/pull/333 + +2022-09-04 Leandro Regueiro + + * [31709fc] stdnum/dz/__init__.py, stdnum/dz/nif.py, + tests/test_dz_nif.doctest: Add Algerian NIF number + + This currently only checks the length and whether it only + contains digits because little could be found on the structure + of the number of whether there are any check digits. + + Closes https://github.com/arthurdejong/python-stdnum/pull/313 + Closes https://github.com/arthurdejong/python-stdnum/issues/307 + +2022-09-03 Leandro Regueiro + + * [2907676] stdnum/ma/__init__.py, stdnum/ma/ice.py, + tests/test_ma_ice.doctest: Add support for Morocco TIN + + Closes https://github.com/arthurdejong/python-stdnum/issues/226 + Closes https://github.com/arthurdejong/python-stdnum/pull/312 + +2022-08-08 Leandro Regueiro + + * [d70549a] stdnum/ke/__init__.py, stdnum/ke/pin.py, + tests/test_ke_pin.doctest: Add Kenyan TIN + + Closes https://github.com/arthurdejong/python-stdnum/issues/300 + Closes https://github.com/arthurdejong/python-stdnum/pull/310 + +2022-09-06 Leandro Regueiro + + * [dd70cd5] stdnum/tn/__init__.py, stdnum/tn/mf.py, + tests/test_tn_mf.doctest: Add support for Tunisia TIN + + Closes https://github.com/arthurdejong/python-stdnum/pull/317 + Closes https://github.com/arthurdejong/python-stdnum/issues/309 + +2022-08-15 Arthur de Jong + + * [e40c827] tests/test_eu_vat.py: Update EU VAT Vies test with + new number + + The number used before was apparently no longer valid. + +2022-08-15 Arthur de Jong + + * [5bcc460] stdnum/de/handelsregisternummer.py: Fix German + OffeneRegister company registry URL + +2022-08-15 Arthur de Jong + + * [ee9dfdf] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cfi.dat, stdnum/cn/loc.dat, stdnum/eu/nace.dat, + stdnum/gs1_ai.dat, stdnum/iban.dat, stdnum/imsi.dat, + stdnum/isbn.dat, stdnum/isil.dat, stdnum/my/bp.dat, + stdnum/nz/banks.dat, stdnum/oui.dat: Update database files + +2022-08-15 Arthur de Jong + + * [6b39c3d] update/nz_banks.py: Do not print trailing space + +2022-08-15 Arthur de Jong + + * [e901ac7] update/my_bp.py: Ignore invalid downloaded country codes + + The page currently lists a country without a country code (is + listed as "-"). This also ensures that lists of country codes + are handled consistently. + +2022-08-15 Arthur de Jong + + * [2cf78c2] update/imsi.py: Update names of Wikipedia pages with + IMSI codes + +2022-08-15 Arthur de Jong + + * [975d508] update/at_postleitzahl.py, update/be_banks.py, + update/cfi.py, update/cn_loc.py, update/cz_banks.py, + update/do_whitelists.py, update/eu_nace.py, update/gs1_ai.py, + update/iban.py, update/imsi.py, update/isbn.py, update/isil.py, + update/my_bp.py, update/nz_banks.py, update/oui.py: Provide a + timeout to all download scripts + +2022-08-15 Arthur de Jong + + * [ed37a6a] stdnum/isil.py, update/isil.py: Update ISIL download URL + +2022-08-13 Christian Clauss + + * [8aa6b5e] .github/workflows/test.yml: Remove redundant steps + with tox_job + + This also switches the other Tox jobs to use the latest Python + 3.x interpreter. + + Closes https://github.com/arthurdejong/python-stdnum/pull/305 + +2022-08-03 Romuald R + + * [ce9322c] stdnum/de/handelsregisternummer.py, + tests/test_de_handelsregisternummer.doctest: Add extra court + alias for german Handelsregisternummer + + Charlottenburg (Berlin) is a valid court representation for Berlin + (Charlottenburg). + + See + https://www.northdata.com/VRB+Service+GmbH,+Berlin/Amtsgericht+Charlottenburg+%28Berlin%29+HRB+103587+B + + Closes https://github.com/arthurdejong/python-stdnum/pull/298 + +2022-08-15 Arthur de Jong + + * [eae1dd2] stdnum/ch/esr.py, stdnum/il/idnr.py, stdnum/isin.py, + stdnum/nl/bsn.py, stdnum/no/kontonr.py, stdnum/nz/ird.py, + stdnum/ro/cui.py: Use str.zfill() for padding leading zeros + +2022-06-08 petr.prikryl + + * [c5595c7] stdnum/cz/bankaccount.py, stdnum/cz/banks.dat, + tests/test_cz_bankaccount.doctest, update/cz_banks.py: Add Czech + bank account numbers + + Closes https://github.com/arthurdejong/python-stdnum/issues/295 + Closes https://github.com/arthurdejong/python-stdnum/pull/296 + +2022-08-06 vovavili <64227274+vovavili@users.noreply.github.com> + + * [4d4a0b3] stdnum/isin.py: Fix small typo + + Improper inflection of plurals. + + Closes https://github.com/arthurdejong/python-stdnum/pull/299 + +2022-08-13 Arthur de Jong + + * [7ee0563] setup.cfg, stdnum/ad/nrt.py, stdnum/cr/cpj.py, + stdnum/eu/nace.py, stdnum/id/npwp.py, stdnum/il/hp.py, + stdnum/it/aic.py, stdnum/li/peid.py, stdnum/nz/ird.py, + stdnum/sg/uen.py, stdnum/sv/nit.py, stdnum/za/tin.py, + update/eu_nace.py: Put long line flake8 ignores in files instead + of globally + + We have some long URLs in the code (mostly in docstrings) and + wrapping them does not improve readability (and is difficult + in docstrings) so the E501 ignore is now put inside each file + instead of globally. + + Closes https://github.com/arthurdejong/python-stdnum/pull/302 + +2022-08-13 Arthur de Jong + + * [351be74] .github/workflows/test.yml, setup.py, tox.ini: Add + support for Python 3.10 + +2022-08-08 Christian Clauss + + * [b36c0d6] .github/workflows/test.yml: Upgrade GitHub Actions + + Update checkout to v3 (no relevant changes) and setup-python to v4 + (changes the names for pypy versions). + +2022-08-12 Arthur de Jong + + * [9f79691] stdnum/it/iva.py, update/iban.py: Fix flake8 error + + This stops using not as a function and hopefully also makes the + logic clearer. + +2022-07-04 Arthur de Jong + + * [a280d53] .github/workflows/test.yml: Upgrade to CodeQL Action v2 + + https://github.blog/changelog/2022-04-27-code-scanning-deprecation-of-codeql-action-v1/ + +2022-04-09 Arthur de Jong + + * [8a28e38] setup.cfg, tox.ini: Switch from nose to pytest + + Nose hasn't seen a release since 2015 and sadly doesn't work + with Python 3.10. + + See https://github.com/nose-devs/nose/issues/1099 + +2022-05-09 Arthur de Jong + + * [e831d07] setup.cfg: Ignore flake8 complaining about print + statements + + It seems that flake8 now uses T201 instead of T001 for this check. + +2022-04-08 Alexis de Lattre + + * [7d81eac] stdnum/gs1_128.py, tests/test_gs1_128.doctest: Support + parsing dates without a day in GS1-128 + + Date such as '(17)260400' is now properly interpreted as April + 30th 2026. + + Closes https://github.com/arthurdejong/python-stdnum/pull/294 + +2022-02-05 Cédric Krier + + * [bda2a9c] stdnum/be/nn.py, tests/test_be_nn.doctest: Compute + birth date from Belgian National Number + + Closes https://github.com/arthurdejong/python-stdnum/pull/288 + +2022-03-21 Arthur de Jong + + * [e2a2774] stdnum/iso7064/mod_97_10.py, tests/test_iso7064.doctest: + Return check digits in 02-98 range for ISO 7064 Mod 97, 10 + + There are some valid ranges for check digits within ISO 7064 + Mod 97, 10 that all result in a valid checksum. This changes the + calculated check digits to be in the range from 02 to 98 as is + specified for use in IBAN. + + See + https://en.wikipedia.org/wiki/International_Bank_Account_Number#Generating_IBAN_check_digits + + Closes https://github.com/arthurdejong/python-stdnum/pull/289 + +2022-03-07 Cédric Krier + + * [73f5e3a] stdnum/fr/siret.py, tests/test_fr_siret.doctest: + Support special validation of La Post SIRET + + See + https://fr.wikipedia.org/wiki/Système_d'identification_du_répertoire_des_établissements#Exceptions_pour_le_groupe_La_Poste + + Closes https://github.com/arthurdejong/python-stdnum/pull/293 + Closes https://github.com/arthurdejong/python-stdnum/issues/291 + +2022-02-14 Arthur de Jong + + * [27c7c74] stdnum/cfi.py, tests/test_cfi.doctest: Fix Python 2.7 + compatibility of the tests + + Fixes a9039c1 + +2022-02-14 Arthur de Jong + + * [cfc80c8] tox.ini: Support running tests with Python 2.7 + + When using recent versions of virtualenv this ensures that + older versions of pip and setuptools will be used inside the + virtualenvs that are created by tox. + +2022-02-13 Arthur de Jong + + * [a9039c1] stdnum/cfi.dat, stdnum/cfi.py, tests/test_cfi.doctest, + update/cfi.py: Add Classification of Financial Instruments + + This implements parsing of ISO 10962 CFI codes based on the + published description of the structure of these numbers. + + Closes https://github.com/arthurdejong/python-stdnum/issues/283 + +2022-02-13 Arthur de Jong + + * [219ff54] stdnum/numdb.py, tests/numdb-test.dat: Fix problem in + numdb with missing sub-properties + + If a numdb data file line contains multiple values or ranges + the sub-ranges were only applied to the last value in the range. + +2022-02-13 Arthur de Jong + + * [fd32e61] setup.py: Also ensure that embedded certificates + are shipped + +2022-01-09 Arthur de Jong + + * [02dec52] stdnum/mx/curp.py: Fix disabling check digit validation + of Mexican CURP + + The validation functions supported an optional parameter to + disable check digit validation in the number that didn't actually + affect validation and was most likely accidentally copied from + the RFC module. + + Fixes 50874a9 Closes + https://github.com/arthurdejong/python-stdnum/issues/285 + +2021-11-29 Cédric Krier + + * [dcf4730] stdnum/be/__init__.py, stdnum/be/nn.py: Add Belgian + National Number + + Closes https://github.com/arthurdejong/python-stdnum/pull/284 + +2021-10-03 Arthur de Jong + + * [50650a9] ChangeLog, NEWS, README.md, docs/index.rst, + docs/stdnum.in_.epic.rst, docs/stdnum.in_.gstin.rst, + docs/stdnum.isrc.rst, docs/stdnum.pt.cc.rst, + docs/stdnum.se.postnummer.rst, docs/stdnum.th.moa.rst, + docs/stdnum.th.pin.rst, docs/stdnum.th.tin.rst, stdnum/__init__.py: + Get files ready for 1.17 release + +2021-10-03 Arthur de Jong + + * [0779d6a] stdnum/kr/brn.py, tests/test_kr_brn.py: Remove South + Korean BRN online check + + The Korea Fair Trade Commission website now requires solving + a CAPTCHA before submitting the request so this is no longer + possible. + +2021-10-03 Arthur de Jong + + * [61ebc9c] stdnum/no/orgnr.py: Add documentation for Norwegian + Organisasjonsnummer + +2021-10-03 Arthur de Jong + + * [9da63a4] tests/test_do_cedula.py: Update Cedula online test value + + Apparently the previously whitelisted value is no longer recognised + as a valid value by the DGII service. + +2021-10-03 Arthur de Jong + + * [25c30d7] stdnum/by/portal.nalog.gov.by.crt: Update Let's Encrypt + R3 intermediate certificate + + The portal.nalog.gov.by web site serves an incomplete certificate + chain and the certificate chain was changed. + +2021-10-03 Arthur de Jong + + * [3406c24] MANIFEST.in, README.md, docs/index.rst, setup.py, + update/numlist.py: Rename README to README.md + + Mostly to please GitHub. + + See https://github.com/arthurdejong/python-stdnum/issues/280 + +2021-10-03 Arthur de Jong + + * [d5cba0a] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cn/loc.dat, stdnum/eu/nace.dat, stdnum/gs1_ai.dat, + stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat, stdnum/isil.dat, + stdnum/nz/banks.dat, stdnum/oui.dat, update/gs1_ai.py: Update + database files + +2021-09-30 Gaurav Chauhan <71322586+vairag22@users.noreply.github.com> + + * [26a7e7b] stdnum/in_/__init__.py, stdnum/in_/gstin.py: Add Indian + GSTIN (VAT number) + + Closes https://github.com/arthurdejong/python-stdnum/pull/279 + +2021-09-30 Gaurav Chauhan <71322586+vairag22@users.noreply.github.com> + + * [ca560cd] stdnum/in_/epic.py: Add Indian EPIC number (Voter + ID number) + + Closes https://github.com/arthurdejong/python-stdnum/pull/279 + +2021-09-30 Gaurav Chauhan <71322586+vairag22@users.noreply.github.com> + + * [fc56388] stdnum/in_/aadhaar.py, stdnum/in_/pan.py: Improve + validation and docstrings of Indian numbers + + This ensures that an Aadhaar cannot be a palindrome and checks the + serial part of the PAN to not be all zeros. It also updates some + descriptions of PAN holder types and renames the card_holder_type + to just holder_type. + + Closes https://github.com/arthurdejong/python-stdnum/pull/279 + +2021-09-19 Arthur de Jong + + * [1a0e613] stdnum/ec/ruc.py, tests/test_ec_ruc.doctest: Fix + detection of natural RUC values + + A natural RUC is the CI plus an establishment number. Both the + natural RUC and the public RUC can have a third digit with the + value 6. + + Closes https://github.com/arthurdejong/python-stdnum/issues/267 + +2021-08-20 michele + + * [8071444] stdnum/se/__init__.py, stdnum/se/postnummer.py, + tests/test_se_postnummer.doctest: Add swedish postcode validator + + Closes https://github.com/arthurdejong/python-stdnum/pull/271 + +2021-02-21 Piruin Panichphol + + * [424e408] stdnum/th/__init__.py, stdnum/th/moa.py, + stdnum/th/pin.py, stdnum/th/tin.py, tests/test_th_moa.doctest, + tests/test_th_pin.doctest, tests/test_th_tin.doctest: Add support + for Thai Numbers + + - TIN Taxpayer Identification Number - PIN Personal Identification + Number - MOA Memorandum of Association Number + + Closes https://github.com/arthurdejong/python-stdnum/issues/118 + Closes https://github.com/arthurdejong/python-stdnum/pull/255 + +2021-03-10 Nuno André + + * [36d723c] stdnum/isrc.py, tests/test_isrc.doctest: Add ISRC + (International Standard Recording Code) + + Closes https://github.com/arthurdejong/python-stdnum/pull/261 + +2021-08-07 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [48bfd84] stdnum/ad/nrt.py, stdnum/bitcoin.py, stdnum/do/ncf.py, + stdnum/isbn.py, stdnum/util.py, stdnum/vn/mst.py, + tests/test_cusip.doctest, tests/test_de_idnr.doctest, + update/be_banks.py, update/imsi.py, update/isil.py, + update/numlist.py: Fix typos found by codespell + + Closes https://github.com/arthurdejong/python-stdnum/pull/269 + +2021-08-07 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [dcdb5c9] stdnum/exceptions.py: Explicilty define exported + exceptions + + LGTM alert: Import pollutes the enclosing namespace + See: https://lgtm.com/rules/3980091/ Closes + https://github.com/arthurdejong/python-stdnum/pull/270 + +2021-08-07 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [abda037] stdnum/no/fodselsnummer.py: Simplify range checking + in Norwegian birth numbers + + LGTM alert: Test is always true See: https://lgtm.com/rules/900073/ + Closes https://github.com/arthurdejong/python-stdnum/pull/270 + +2021-08-07 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [c69b4f6] update/be_banks.py: Fix handling of empty worksheet + in Belgian bank download + + LGTM alert: Call to next() in a generator + See: https://lgtm.com/rules/11000086/ Closes + https://github.com/arthurdejong/python-stdnum/pull/270 + +2021-06-09 David Vaz + + * [4516748] stdnum/pt/cc.py, tests/test_pt_cc.doctest: Add CC + (Número de Cartão de Cidadão, Portuguese Identity number) + + Closes https://github.com/arthurdejong/python-stdnum/pull/265 + +2021-06-10 FRANK ROBERTO CHAVEZ SOSA <1085268@est.intec.edu.do> + + * [4c51860] stdnum/do/ncf.py: Add new e-CF types to Dominican + Republic NCF + +2021-01-18 Andres Rodriguez + + * [48e6502] stdnum/do/ncf.py: Fix parsing of empty fields in + DGII checking + +2020-12-11 Cristopher Ortega + + * [2b452b6] stdnum/do/ncf.py, tests/test_do_ncf.py: Add ENCF + validation support for Dominican Republic NCF + + Closes https://github.com/arthurdejong/python-stdnum/pull/248 + +2021-06-09 Dimitri Papadopoulos +<3234522+DimitriPapadopoulos@users.noreply.github.com> + + * [eeaf665] stdnum/fr/nif.py: Improve French NIF validation + + Closes https://github.com/arthurdejong/python-stdnum/pull/266 + +2021-07-12 Arthur de Jong + + * [e2a95fc] .github/workflows/test.yml: Configure CodeQL code + scanning + +2021-07-18 Arthur de Jong + + * [175b1e5] stdnum/exceptions.py: Ignore N818 because our exceptions + are not named error + +2021-04-11 Arthur de Jong + + * [38c368d] stdnum/numdb.py, tests/numdb-test.dat: Only process + the shortest matches in the numdb module + + This ensures that matching numbers is done consistently when + the numdb database file has conflicting information about the + length of numbers. + + This also refactors the _find() function to be simpler and + reduces the number of recursive calls that have to be done. + + The tests have been re-formatted to use pprint to make it easier + to spot differences if any of the tests fail (instead of just + saying expected True, got False). + + Closes https://github.com/arthurdejong/python-stdnum/issues/257 + +2021-04-11 Arthur de Jong + + * [b7901d6] update/imsi.py: Stop non-operational MNCs from confusing + IMSI dataset + + This only includes data from non-operational (status "Not + operational" according to Wikipedia) Mobile Network Code operators + in the generated data file if they would not confuse the lookup + of operational numbers. + + This avoid problems when the "030" to "039" non-operational ranges + conflicting with the "03" operational range. This ensures that + only the "03" value is kept. For historical completeness we keep + the other non-operational values. + + Closes https://github.com/arthurdejong/python-stdnum/issues/257 + +2021-03-03 Jakub Wilk + + * [7e69090] docs/index.rst: Fix typo + + Closes https://github.com/arthurdejong/python-stdnum/pull/258 + +2021-03-21 Arthur de Jong + + * [5785afb] .github/workflows/test.yml, .travis.yml: Replace Travis + with GitHub actions + +2021-03-21 Arthur de Jong + + * [7c0bb84] .travis.yml, setup.py, tox.ini: Drop support for Python + 2.6 and 3.4 + + It is increasingly difficult to test with these versions of + Python and everybody should have upgraded to a more recent + version long ago. + +2021-02-06 Arthur de Jong + + * [075d85e] ChangeLog, NEWS, stdnum/__init__.py: Get files ready + for 1.16 release + +2021-02-06 Arthur de Jong + + * [fad3064] stdnum/by/portal.nalog.gov.by.crt: Add Let's Encrypt + R3 intermediate certificate + + The portal.nalog.gov.by web site serves an incomplete certificate + chain and the intermediate certificate was changed. + +2021-02-06 Arthur de Jong + + * [8c4ec55] stdnum/be/banks.dat, stdnum/cn/loc.dat, + stdnum/eu/nace.dat, stdnum/gs1_ai.dat, stdnum/imsi.dat, + stdnum/isbn.dat, stdnum/nz/banks.dat, stdnum/oui.dat: Update + database files + +2021-02-06 Arthur de Jong + + * [fe34e15] stdnum/kr/rrn.py, stdnum/pe/ruc.py, stdnum/ua/edrpou.py: + Use HTTPS in URLs where possible + +2021-01-24 Arthur de Jong + + * [407a02f] stdnum/at/postleitzahl.dat, update/at_postleitzahl.py: + Switch postal code download to Austrian open-data portal + + This simplifies the process of downloading Austrian + postal codes by downloading a JSON blob instead from + https://www.data.gv.at/katalog/dataset/f76ed887-00d6-450f-a158-9f8b1cbbeebf + + This filters the list to only use addressable (adressierbar) + postal codes because it matches the previous list. + + Thanks Bernd Schlapsi for providing the pointer. + + Closes https://github.com/arthurdejong/python-stdnum/issues/235 + +2021-01-21 Alexis de Lattre + + * [53f13b4] stdnum/vatin.py, tests/test_vatin.doctest: Add support + for XI VAT numbers in vatin + + Closes https://github.com/arthurdejong/python-stdnum/pull/251 + +2021-01-21 Arthur de Jong + + * [b93d695] stdnum/eu/vat.py, stdnum/gb/vat.py, + tests/test_eu_vat.doctest: Support xi country code for Northern + Ireland + + While Great Brittain is no longer an EU member state some GB VAT + numbers are still valid if the company meets certain requirements. + + See + https://www.gov.uk/government/publications/accounting-for-vat-on-goods-moving-between-great-britain-and-northern-ireland-from-1-january-2021/check-when-you-are-trading-under-the-northern-ireland-protocol-if-you-are-vat-registered-business + + Closes https://github.com/arthurdejong/python-stdnum/issues/250 + +2021-01-11 Arthur de Jong + + * [6b7f209] ChangeLog, NEWS, README, docs/conf.py, docs/index.rst, + docs/stdnum.li.peid.rst, docs/stdnum.ro.cui.rst, + docs/stdnum.ua.edrpou.rst, docs/stdnum.ua.rntrc.rst, + stdnum/__init__.py, tox.ini: Get files ready for 1.15 release + +2021-01-11 Arthur de Jong + + * [755eee7] .travis.yml: Simplify Travis matrix + + This also ensures that supported Python interpreters are output + in order. + +2021-01-10 Arthur de Jong + + * [a0c62ee] stdnum/at/postleitzahl.dat, stdnum/be/banks.dat, + stdnum/cn/loc.dat, stdnum/eu/nace.dat, stdnum/gs1_ai.dat, + stdnum/iban.dat, stdnum/imsi.dat, stdnum/isbn.dat, + stdnum/my/bp.dat, stdnum/nz/banks.dat, stdnum/oui.dat, + update/at_postleitzahl.py, update/my_bp.py, update/nz_banks.py: + Update database files + +2021-01-10 Arthur de Jong + + * [df0623b] stdnum/by/unp.py, stdnum/do/ncf.py, stdnum/imsi.py, + stdnum/isbn.py, stdnum/meid.py, tox.ini: Drop pinning of isort + now flake8-isort has been fixed + + This changes a few inline imports in the code to pass with the + new isort. + + Reverts 291b831 + +2021-01-10 Arthur de Jong + + * [b202eee] stdnum/my/nric.py: Fix typo + +2021-01-10 Arthur de Jong + + * [7e86331] setup.py: Add project URLs for PyPI + +2020-10-25 Leandro Regueiro + + * [126496c] stdnum/ua/rntrc.py, tests/test_ua_rntrc.doctest: + Add support for Ukraine РНОКПП number + + Closes https://github.com/arthurdejong/python-stdnum/pull/242 + Closes https://github.com/arthurdejong/python-stdnum/issues/117 + +2020-10-25 Leandro Regueiro + + * [b7b2af8] stdnum/ua/__init__.py, stdnum/ua/edrpou.py, + tests/test_ua_edrpou.doctest: Add support for Ukraine ЄДРПОУ + number + + Closes https://github.com/arthurdejong/python-stdnum/pull/242 + Closes https://github.com/arthurdejong/python-stdnum/issues/117 + +2021-01-04 Viggo de Vries + + * [0427b01] stdnum/eu/vat.py, tests/test_eu_vat.doctest, + tests/test_gb_vat.doctest: Remove GB from EU member states + + Closes https://github.com/arthurdejong/python-stdnum/pull/246 + +2021-01-10 Arthur de Jong + + * [2f2c742] .travis.yml, setup.py, tox.ini: Add support for + Python 3.9 + + This switches Travis tests to bionic by default. + +2021-01-10 Arthur de Jong + + * [2046f51] stdnum/damm.py, stdnum/eu/at_02.py, stdnum/gs1_128.py, + stdnum/iso7064/mod_11_10.py, stdnum/iso7064/mod_11_2.py, + stdnum/iso7064/mod_37_2.py, stdnum/iso7064/mod_37_36.py, + stdnum/iso7064/mod_97_10.py, stdnum/luhn.py, stdnum/util.py, + stdnum/verhoeff.py: Fix flake8 blind except Exception error + +2021-01-04 Viggo de Vries + + * [cc3a970] stdnum/au/__init__.py: Use ABN as Australian VAT number + + See https://www.ato.gov.au/Business/GST/Tax-invoices/ + + Closes https://github.com/arthurdejong/python-stdnum/pull/246 + +2021-01-02 Arthur de Jong + + * [c74e322] stdnum/vatin.py, tests/test_vatin.doctest: Support + VAT numbers that are only valid with country prefix + + The Swish VAT number has the CH prefix embedded as a required + part of the number. This ensures that the international VAT + number module also supports that. + + Closes https://github.com/arthurdejong/python-stdnum/issues/245 + Fixes ff188bd + +2020-10-27 Matthias Schmid, M.Sc + + * [5082af4] stdnum/li/__init__.py, stdnum/li/peid.py, + tests/test_li_peid.doctest: Add Liechtenstein + Personenidentifikationsnummer + + Closes https://github.com/arthurdejong/python-stdnum/pull/241 + Closes https://github.com/arthurdejong/python-stdnum/issues/125 + +2020-10-02 Jonas Geuens + + * [3a592e4] stdnum/be/vat.py, tests/test_be_vat.doctest: Expanded + validation for BE VAT numbers + + Specifically invalidated all-zero numbers + + Closes https://github.com/arthurdejong/python-stdnum/pull/240 + +2020-11-01 Arthur de Jong + + * [c5eb2d8] stdnum/eu/vat.py, stdnum/ro/cf.py, + tests/test_eu_vat.doctest: Retain RO prefix in Romanian VAT numbers + + This does not strip the RO prefix from Romanian VAT numbers to be + able to keep the distinction between a CUI/CIF that is registered + for VAT (which commonly has the RO prefix) and those that don't. + + Closes https://github.com/arthurdejong/python-stdnum/issues/231 + +2020-11-01 Arthur de Jong + + * [1f6c77f] stdnum/ro/cnp.py, stdnum/ro/onrc.py: Minor updates + +2020-11-01 Arthur de Jong + + * [e0417f6] stdnum/ro/cf.py, stdnum/ro/cui.py: Add Romanian + CUI/CIF number + + This module separates the validation of numbers assigned to + companies (CUI or CIF) of those assigned to natural persons (CNP). + +2020-09-19 Arthur de Jong + + * [19d3f70] stdnum/eu/vat.py: Make list of EU member states list + of public API + + This provides stdnum.eu.vat.MEMBER_STATES. Note that Greece is + listed with a country code of "gr" while the prefix used in VAT + numbers is "el". + + Closes https://github.com/arthurdejong/python-stdnum/issues/238 + +2020-09-04 Arthur de Jong + + * [992dc20] online_check/check.js, + online_check/jquery-1.7.1.js, online_check/jquery-1.7.1.min.js, + online_check/jquery-3.5.1.js, online_check/jquery-3.5.1.min.js, + online_check/jquery-3.5.1.min.map, online_check/template.html: + Upgrade jQuery to 3.5.1 + + This also runs eslint over check.js and fixes an issue from + the upgrade. + +2020-08-09 Arthur de Jong + + * [3373938] ChangeLog, NEWS, README, docs/index.rst, + docs/stdnum.by.unp.rst, docs/stdnum.cn.uscc.rst, + docs/stdnum.gb.utr.rst, docs/stdnum.gs1_128.rst, + docs/stdnum.id.npwp.rst, docs/stdnum.il.hp.rst, + docs/stdnum.it.aic.rst, docs/stdnum.kr.brn.rst, + docs/stdnum.ro.onrc.rst, docs/stdnum.sg.uen.rst, + docs/stdnum.sv.nit.rst, docs/stdnum.tw.ubn.rst, + docs/stdnum.vatin.rst, docs/stdnum.vn.mst.rst, + docs/stdnum.za.idnr.rst, stdnum/__init__.py: Get files ready + for 1.14 release + 2020-08-09 Arthur de Jong * [40fcc24] stdnum/be/banks.dat, stdnum/cn/loc.dat, diff --git a/MANIFEST.in b/MANIFEST.in index ac3b4245..b718eaf2 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,6 @@ -include README NEWS ChangeLog COPYING *.py tox.ini +include README.md CONTRIBUTING.md NEWS ChangeLog COPYING *.py tox.ini recursive-include tests *.doctest *.dat *.py recursive-include docs *.rst *.py recursive-include online_check * recursive-include update README requirements.txt *.py +recursive-include scripts *.py diff --git a/NEWS b/NEWS index ccd5d8a6..8eb60b3a 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,233 @@ +changes from 2.1 to 2.2 +----------------------- + +* Add modules for the following number formats: + + - VÖEN (Vergi ödəyicisinin eyniləşdirmə nömrəsi, Azerbaijan tax number) + (thanks Leandro Regueiro) + - Belgian OGM-VCS + (thanks Cédric Krier) + - Leitweg-ID, a buyer reference or routing identifier for electronic invoices + (thanks Tuukka Tolvanen) + - European Excise Number (thanks Cédric Krier) + - n° d'accise (French number to identify taxpayers of excise taxes) + (thanks Cédric Krier) + - RCS (French trade registration number for commercial companies) + (thanks Fabien MICHEL) + - NUIT (Número Único de Identificação Tributaria, Mozambique tax number) + (thanks Luca and Leandro Regueiro) + - NINEA (Numéro d'Identification Nationale des Entreprises et Associations, Senegal tax number) + (thanks Leandro Regueiro) + +* Fix handling of decimals in Application Identifiers (thanks zipus) +* Update list of valid Chinese counties (thanks 电子旅人 and Luca) +* Mark more Romanian CNP county codes as valid (thanks luella-s) +* Support Latvian personal codes issued after 2017 (thanks José Luis López Pino) +* Provide aliases for Estonian numbers (thanks Joni Saarinen) +* Add validation of country code in BIC (thanks Luuk Gubbels) +* Add function to convert a French VAT number into a SIREN (thanks Fabien MICHEL) +* Add a function to format a French SIREN (thanks Fabien MICHEL) +* Add extra validation of Belgian VAT numbers (thanks Antonio Ginestar) +* Add support for nace revision 2.1 (thanks KathrinM) +* Support the new Romanian ONRC format (thanks dotbit1) +* Support new format for Brazilian CNPJ (thanks Cloves Oliveira) + + +changes from 2.0 to 2.1 +----------------------- + +* Add python_requires to setup.py to avoid installation with older Python versions + (thanks Cédric Krier) +* Remove superfluous modulus operation in Japanese Individual Number + (thanks Luca Sicurello) + + +changes from 1.20 to 2.0 +------------------------ + +* Only support Python 3.8 and newer (drop Python 2 support so major version bump) +* Include type hints for mypy (thanks David Salvisberg) + +* Add modules for the following number formats: + + - eID Number (Belgian electronic Identity Card Number) (thanks Jeff Horemans) + - SSN, INSZ, NISS (Belgian social security number) (thanks Jeff Horemans) + - CAE (Código de Actividad y Establecimiento, Spanish activity establishment code) + (thanks Quique Porta) + - NIK (Nomor Induk Kependudukan, Indonesian identity number) + - ISNI (International Standard Name Identifier) (thanks Henning Kage) + - IN (個人番号, kojin bangō, Japanese Individual Number) (thanks Luca Sicurello) + - Identiteitskaartnummer, Paspoortnummer (the Dutch passport number) + (thanks Jeff Horemans) + - ОГРН, OGRN, PSRN, ОГРНИП, OGRNIP (Russian Primary State Registration Number) + (thanks Ivan Stavropoltsev) + +* Fix Czech RČ check digit validation (thanks Jan Chaloupecky) +* Support Ecuador public RUC with juridical format (thanks Leandro) +* Allow Uruguay RUT numbers starting with 22 +* Add missing music industry ISRC country codes (thanks Victor Sordoillet) +* Support 16 digit Indonesian NPWP numbers (thanks Chris Smola) +* Adjust Swiss uid module to accept numbers without CHE prefix (thanks Jeff Horemans) +* Update Irish PPS validator to support new numbers (thanks Olly Middleton) +* Add missing vat alias for Thailand VAT number (thanks Leandro Regueiro) +* Add more tests for the Verhoeff implementation +* Ensure that certificate verification can be configured using the verify + argument when using web services +* The check_dgii() and search_dgii() functions from the Dominican Republic Cedula + and RNC modules no longer work due to a change in the DGII online web service +* Various small code cleanups (thanks David Salvisberg) +* Various small fixes to update scripts +* The stdnum.util.to_unicode() function is now deprecated and will be removed + in an upcoming release + + +changes from 1.19 to 1.20 +------------------------- + +* Add modules for the following number formats: + - BC PHN (British Columbia Personal Health Number) (thanks Ömer Boratav) + - EC Number (European Community number) (thanks Daniel Weber) + - VID (Indian personal virtual identity number) (thanks Atul Deolekar) + +* Fix typo in German Umsatzsteur Identifikationnummer (thanks Александр Кизеев) +* Ensure EU VAT numbers don't accept duplicate country codes +* Fix vatin number compacting for "EU" VAT numbers (thanks Davide Walder) +* Add check digit validation to French NIF (thanks Kevin Dagostino) +* Fix Ukrainian EDRPOU check digit calculation (thanks sector119) + + +changes from 1.18 to 1.19 +------------------------- + +* Add modules for the following number formats: + + - Tax Registration Number (الرقم الضريبي, Egypt tax number) (thanks Leandro Regueiro) + - Postcode (the Spanish postal code) (thanks Víctor) + - NIFp (Numéro d'Identification Fiscale Permanent, Guinea tax number) + (thanks Leandro Regueiro) + - BIS (Belgian BIS number) (thanks Jeff Horemans) + - Matična številka poslovnega registra (Corporate Registration Number) (thanks Blaž Bregar) + - OSS (European VAT on e-Commerce - One Stop Shop) (thanks Sergi Almacellas Abellana) + +* Extend the validation of the Albanian NIPT (NUIS) number (thanks Julien Launois) +* Support different date formats in parsing GS1-128 application identifiers +* Add get_county() function to Romanian CNP (thanks RaduBorzea) +* Add functionality to get gender from Belgian National Number (thanks Jeff Horemans) +* Add support for Finland HETU new century indicating signs (thanks Maks Turtiainen) +* Add functionality to get (partial) birth date from Belgian National Number + (thanks Jeff Horemans) +* Extend validation of Canadian SIN (thanks Marcel Lecker) +* Fix Belarusian UNP online validation +* Various typo and documentation fixes (thanks valeriko, Dimitri Papadopoulos, + Ali-Akber Saifee and Chales Horn) +* Add contribution information to documentation +* Test suite improvements (including checking file headers) + + +changes from 1.17 to 1.18 +------------------------- + +* Add modules for the following number formats: + + - NN, NISS (Belgian national number) (thanks Cédric Krier) + - CFI (ISO 10962 Classification of Financial Instruments) + - Czech bank account number (thanks Petr Přikryl) + - NIF, sometimes N.I.F. (Numéro d'Identification Fiscale, Algeria tax number) + (thanks Leandro Regueiro) + - V-number (Vinnutal, Faroe Islands tax number) (thanks Leandro Regueiro) + - TIN (Taxpayer Identification Number, Ghana tax number) (thanks Leandro Regueiro) + - PIN (Personal Identification Number, Kenya tax number) (thanks Leandro Regueiro) + - ICE (Identifiant Commun de l’Entreprise, التعريف الموحد للمقاولة, Morocco tax number) + (thanks Leandro Regueiro) + - PIB (Poreski Identifikacioni Broj, Montenegro tax number) (thanks Leandro Regueiro) + - ЕДБ (Едниствен Даночен Број, North Macedonia tax number) (thanks Leandro Regueiro) + - CNIC number (Pakistani Computerised National Identity Card number) + (thanks Syed Haseeb Shah) + - Enotna matična številka občana (Unique Master Citizen Number) + (thanks Blaž Bregar) + - MF (Matricule Fiscal, Tunisia tax number) (thanks Leandro Regueiro) + +* Fix disabling check digit validation of Mexican CURP (thanks guyskk) +* Support special validation of La Post SIRET (thanks BIGBen99 and Cédric Krier) +* Fix support for "I" and "O" in CUSIP number (thanks Thomas Kavanagh) +* Calculate ISO 7064 Mod 97, 10 check digits in the range 02-98 for IBAN + (thanks David Svenson) +* Fix German OffeneRegister lookups (change of URL and of data structure) +* Add extra court alias for Berlin in German Handelsregisternummer (thanks Romuald R) +* Ensure certificate for the Belarus VAT number check_nalog() lookup is included +* Support parsing incomplete dates in GS1-128 (thanks Alexis de Lattre) +* Improve validation of CAS Registry Number +* Typo fixes (thanks Vladimir and Dimitri Papadopoulos) +* Add a check_uid() function to the stdnum.ch.uid module +* All validation exceptions should now inherit from ValueError +* Switch from nose to pytest as test runner + + +changes from 1.16 to 1.17 +------------------------- + +* Add modules for the following number formats: + + - EPIC (Electoral Photo Identity Card, Indian Voter ID) + (thanks Gaurav Chauhan) + - GSTIN (Goods and Services Tax identification number, Indian VAT number) + (thanks Gaurav Chauhan) + - ISRC (International Standard Recording Code) (thanks Nuno André) + - CC (Número de Cartão de Cidadão, Portuguese Identity number) + (thanks David Vaz) + - Postcode (the Swedish postal code) (thanks Michele Ciccozzi) + - MOA (Thailand Memorandum of Association Number) (thanks Piruin Panichphol) + - PIN (Thailand Personal Identification Number) (thanks Piruin Panichphol) + - TIN (Thailand Taxpayer Identification Number) (thanks Piruin Panichphol) + +* Add ENCF validation support for Dominican Republic NCF + (thanks Cristopher Ortega) +* Add new e-CF types to Dominican Republic NCF (thanks Frank Roberto Chavez Sosa) +* Improve French NIF validation (thanks Dimitri Papadopoulos) +* Drop support for Python 2.6 and 3.4 +* Fix parsing of empty fields in Dominican Republic DGII checking + (thanks Andres Rodriguez) +* Fix handling of empty worksheet in Belgian bank download + (thanks Dimitri Papadopoulos) +* Fix detection of natural RUC values (thanks Victor Rodriguez) +* Fix Belarus VAT number online lookup again +* Fixes for problems with loading IMSI data from Wikipedia and dealing with + inconsistencies +* Remove South Korean BRN Fair Trade Commission website check due to CAPTCHA +* Various code and documentation improvements (thanks Dimitri Papadopoulos and Gaurav Chauhan) + + +changes from 1.15 to 1.16 +------------------------- + +* Support XI country code for Northern Ireland VAT numbers + (thanks Alexis de Lattre) +* Switch data source for Austrian postal codes + (thanks Bernd Schlapsi) +* Fix Belarus VAT number online lookup + + +changes from 1.14 to 1.15 +------------------------- + +* Add modules for the following number formats: + + - CUI or CIF (Codul Unic de Înregistrare, Romanian company identifier) + - PEID (Liechtenstein tax code for individuals and entities) + (thanks Matthias Schmid) + - ЄДРПОУ, EDRPOU (Identifier for enterprises and organizations in Ukraine) + (thanks Leandro Regueiro) + - РНОКПП, RNTRC (Individual taxpayer registration number in Ukraine) + (thanks Leandro Regueiro) + +* Make list of EU member states part of public API +* Retain RO prefix in Romanian VAT numbers +* Support international VAT numbers that are only valid with country prefix +* Expanded validation for Belgian VAT numbers +* Use ABN as Australian VAT number +* Remove GB from EU member states + + changes from 1.13 to 1.14 ------------------------- @@ -323,7 +553,7 @@ changes from 1.1 to 1.2 - VAT, MWST, TVA, IVA, TPV (Mehrwertsteuernummer, the Swiss VAT number) - CUSIP number (financial security identification number) - Wertpapierkennnummer (German securities identification code) - - Isikukood (Estonian Personcal ID number) + - Isikukood (Estonian Personal ID number) - Finnish Association Identifier - Y-tunnus (Finnish business identifier) - SEDOL number (Stock Exchange Daily Official List number) diff --git a/README b/README.md similarity index 79% rename from README rename to README.md index b472833f..75bc4fbd 100644 --- a/README +++ b/README.md @@ -16,7 +16,7 @@ Available formats Currently this package supports the following formats: * NRT (Número de Registre Tributari, Andorra tax number) - * NIPT (Numri i Identifikimit për Personin e Tatueshëm, Albanian VAT number) + * NIPT, NUIS (Numri i Identifikimit për Personin e Tatueshëm, Albanian tax number) * CBU (Clave Bancaria Uniforme, Argentine bank account number) * CUIT (Código Único de Identificación Tributaria, Argentinian tax number) * DNI (Documento Nacional de Identidad, Argentinian national identity nr.) @@ -28,7 +28,13 @@ Currently this package supports the following formats: * ABN (Australian Business Number) * ACN (Australian Company Number) * TFN (Australian Tax File Number) + * VÖEN (Vergi ödəyicisinin eyniləşdirmə nömrəsi, Azerbaijan tax number) + * BIS (Belgian BIS number) + * eID Number (Belgian electronic Identity Card Number) * Belgian IBAN (International Bank Account Number) + * NN, NISS, RRN (Belgian national number) + * Belgian OGM-VCS + * SSN, INSZ, NISS (Belgian social security number) * BTW, TVA, NWSt, ondernemingsnummer (Belgian enterprise number) * EGN (ЕГН, Единен граждански номер, Bulgarian personal identity codes) * PNF (ЛНЧ, Личен номер на чужденец, Bulgarian number of a foreigner) @@ -38,9 +44,11 @@ Currently this package supports the following formats: * CNPJ (Cadastro Nacional da Pessoa Jurídica, Brazilian company identifier) * CPF (Cadastro de Pessoas Físicas, Brazilian national identifier) * УНП, UNP (Учетный номер плательщика, the Belarus VAT number) + * BC PHN (British Columbia Personal Health Number) * BN (Canadian Business Number) * SIN (Canadian Social Insurance Number) * CAS RN (Chemical Abstracts Service Registry Number) + * CFI (ISO 10962 Classification of Financial Instruments) * ESR, ISR, QR-reference (reference number on Swiss payment slips) * Swiss social security number ("Sozialversicherungsnummer") * UID (Unternehmens-Identifikationsnummer, Swiss business identifier) @@ -55,10 +63,12 @@ Currently this package supports the following formats: * NI (Número de identidad, Cuban identity card numbers) * CUSIP number (financial security identification number) * Αριθμός Εγγραφής Φ.Π.Α. (Cypriot VAT number) + * Czech bank account number * DIČ (Daňové identifikační číslo, Czech VAT number) * RČ (Rodné číslo, the Czech birth number) * Handelsregisternummer (German company register number) * IdNr (Steuerliche Identifikationsnummer, German personal tax number) + * Leitweg-ID, a buyer reference or routing identifier for electronic invoices * St.-Nr. (Steuernummer, German tax number) * Ust ID Nr. (Umsatzsteur Identifikationnummer, German VAT number) * Wertpapierkennnummer (German securities identification code) @@ -67,12 +77,15 @@ Currently this package supports the following formats: * Cedula (Dominican Republic national identification number) * NCF (Números de Comprobante Fiscal, Dominican Republic receipt number) * RNC (Registro Nacional del Contribuyente, Dominican Republic tax number) + * NIF, sometimes N.I.F. (Numéro d'Identification Fiscale, Algeria tax number) * EAN (International Article Number) * CI (Cédula de identidad, Ecuadorian personal identity code) * RUC (Registro Único de Contribuyentes, Ecuadorian company tax number) - * Isikukood (Estonian Personcal ID number) + * Isikukood (Estonian Personal ID number) * KMKR (Käibemaksukohuslase, Estonian VAT number) * Registrikood (Estonian organisation registration code) + * Tax Registration Number (الرقم الضريبي, Egypt tax number) + * CAE (Código de Actividad y Establecimiento, Spanish activity establishment code) * CCC (Código Cuenta Corriente, Spanish Bank Account Code) * CIF (Código de Identificación Fiscal, Spanish company tax number) * CUPS (Código Unificado de Punto de Suministro, Spanish meter point number) @@ -80,11 +93,15 @@ Currently this package supports the following formats: * Spanish IBAN (International Bank Account Number) * NIE (Número de Identificación de Extranjero, Spanish foreigner number) * NIF (Número de Identificación Fiscal, Spanish VAT number) + * Postcode (the Spanish postal code) * Referencia Catastral (Spanish real estate property id) * SEPA Identifier of the Creditor (AT-02) * Euro banknote serial numbers + * EC Number (European Community number) * EIC (European Energy Identification Code) + * European Excise Number * NACE (classification for businesses in the European Union) + * OSS (European VAT on e-Commerce - One Stop Shop) * VAT (European Union VAT number) * ALV nro (Arvonlisäveronumero, Finnish VAT number) * Finnish Association Identifier @@ -92,8 +109,11 @@ Currently this package supports the following formats: * Veronumero (Finnish individual tax number) * Y-tunnus (Finnish business identifier) * FIGI (Financial Instrument Global Identifier) + * V-number (Vinnutal, Faroe Islands tax number) + * n° d'accise (French number to identify taxpayers of excise taxes) * NIF (Numéro d'Immatriculation Fiscale, French tax identification number) * NIR (French personal identification number) + * RCS (French trade registration number for commercial companies) * SIREN (a French company identification number) * SIRET (a French company establishment identification number) * n° TVA (taxe sur la valeur ajoutée, French VAT number) @@ -102,6 +122,8 @@ Currently this package supports the following formats: * UPN (English Unique Pupil Number) * UTR (United Kingdom Unique Taxpayer Reference) * VAT (United Kingdom (and Isle of Man) VAT registration number) + * TIN (Taxpayer Identification Number, Ghana tax number) + * NIFp (Numéro d'Identification Fiscale Permanent, Guinea tax number) * AMKA (Αριθμός Μητρώου Κοινωνικής Ασφάλισης, Greek social security number) * FPA, ΦΠΑ, ΑΦΜ (Αριθμός Φορολογικού Μητρώου, the Greek VAT number) * GRid (Global Release Identifier) @@ -110,6 +132,7 @@ Currently this package supports the following formats: * OIB (Osobni identifikacijski broj, Croatian identification number) * ANUM (Közösségi adószám, Hungarian VAT number) * IBAN (International Bank Account Number) + * NIK (Nomor Induk Kependudukan, Indonesian identity number) * NPWP (Nomor Pokok Wajib Pajak, Indonesian VAT Number) * PPS No (Personal Public Service Number, Irish personal number) * VAT (Irish tax reference number) @@ -118,8 +141,11 @@ Currently this package supports the following formats: * IMEI (International Mobile Equipment Identity) * IMO number (International Maritime Organization number) * IMSI (International Mobile Subscriber Identity) - * Aadhaar (Indian digital resident personal identity number) + * Aadhaar (Indian personal identity number) + * EPIC (Electoral Photo Identity Card, Indian Voter ID) + * GSTIN (Goods and Services Tax identification number, Indian VAT number) * PAN (Permanent Account Number, Indian income tax identifier) + * VID (Indian personal virtual identity number) * Kennitala (Icelandic personal and organisation identity code) * VSK number (Virðisaukaskattsnúmer, Icelandic VAT number) * ISAN (International Standard Audiovisual Number) @@ -127,33 +153,43 @@ Currently this package supports the following formats: * ISIL (International Standard Identifier for Libraries) * ISIN (International Securities Identification Number) * ISMN (International Standard Music Number) + * ISNI (International Standard Name Identifier) * ISO 11649 (Structured Creditor Reference) * ISO 6346 (International standard for container identification) + * ISRC (International Standard Recording Code) * ISSN (International Standard Serial Number) * AIC (Italian code for identification of drugs) * Codice Fiscale (Italian tax code for individuals) * Partita IVA (Italian VAT number) * CN (法人番号, hōjin bangō, Japanese Corporate Number) + * IN (個人番号, kojin bangō, Japanese Individual Number) + * PIN (Personal Identification Number, Kenya tax number) * BRN (사업자 등록 번호, South Korea Business Registration Number) * RRN (South Korean resident registration number) * LEI (Legal Entity Identifier) + * PEID (Liechtenstein tax code for individuals and entities) * Asmens kodas (Lithuanian, personal numbers) * PVM (Pridėtinės vertės mokestis mokėtojo kodas, Lithuanian VAT number) * TVA (taxe sur la valeur ajoutée, Luxembourgian VAT number) * PVN (Pievienotās vērtības nodokļa, Latvian VAT number) + * ICE (Identifiant Commun de l’Entreprise, التعريف الموحد للمقاولة, Morocco tax number) * MAC address (Media Access Control address) * n° TVA (taxe sur la valeur ajoutée, Monacan VAT number) * IDNO (Moldavian company identification number) * Montenegro IBAN (International Bank Account Number) + * PIB (Poreski Identifikacioni Broj, Montenegro tax number) * MEID (Mobile Equipment Identifier) + * ЕДБ (Едниствен Даночен Број, North Macedonia tax number) * VAT (Maltese VAT number) * ID number (Mauritian national identifier) * CURP (Clave Única de Registro de Población, Mexican personal ID) * RFC (Registro Federal de Contribuyentes, Mexican tax number) * NRIC No. (Malaysian National Registration Identity Card Number) + * NUIT (Número Único de Identificação Tributaria, Mozambique tax number) * BRIN number (the Dutch school identification number) * BSN (Burgerservicenummer, the Dutch citizen identification number) * Btw-identificatienummer (Omzetbelastingnummer, the Dutch VAT number) + * Identiteitskaartnummer, Paspoortnummer (the Dutch passport number) * Onderwijsnummer (the Dutch student identification number) * Postcode (the Dutch postal code) * Fødselsnummer (Norwegian birth number, the national identity number) @@ -165,28 +201,42 @@ Currently this package supports the following formats: * IRD number (New Zealand Inland Revenue Department (Te Tari Tāke) number) * CUI (Cédula Única de Identidad, Peruvian identity number) * RUC (Registro Único de Contribuyentes, Peruvian company tax number) + * CNIC number (Pakistani Computerised National Identity Card number) * NIP (Numer Identyfikacji Podatkowej, Polish VAT number) * PESEL (Polish national identification number) * REGON (Rejestr Gospodarki Narodowej, Polish register of economic units) + * CC (Número de Cartão de Cidadão, Portuguese Identity number) * NIF (Número de identificação fiscal, Portuguese VAT number) * RUC number (Registro Único de Contribuyentes, Paraguay tax number) * CF (Cod de înregistrare în scopuri de TVA, Romanian VAT number) * CNP (Cod Numeric Personal, Romanian Numerical Personal Code) + * CUI or CIF (Codul Unic de Înregistrare, Romanian company identifier) * ONRC (Ordine din Registrul Comerţului, Romanian Trade Register identifier) * PIB (Poreski Identifikacioni Broj, Serbian tax identification number) * ИНН (Идентификационный номер налогоплательщика, Russian tax identifier) + * ОГРН, OGRN, PSRN, ОГРНИП, OGRNIP (Russian Primary State Registration Number) * Orgnr (Organisationsnummer, Swedish company number) * Personnummer (Swedish personal identity number) + * Postcode (the Swedish postal code) * VAT (Moms, Mervärdesskatt, Swedish VAT number) * UEN (Singapore's Unique Entity Number) * ID za DDV (Davčna številka, Slovenian VAT number) + * Enotna matična številka občana (Unique Master Citizen Number) + * Matična številka poslovnega registra (Corporate Registration Number) * IČ DPH (IČ pre daň z pridanej hodnoty, Slovak VAT number) * RČ (Rodné číslo, the Slovak birth number) * COE (Codice operatore economico, San Marino national tax number) + * NINEA (Numéro d'Identification Nationale des Entreprises et Associations, Senegal tax number) * NIT (Número de Identificación Tributaria, El Salvador tax number) + * MOA (Thailand Memorandum of Association Number) + * PIN (Thailand Personal Identification Number) + * TIN (Thailand Taxpayer Identification Number) + * MF (Matricule Fiscal, Tunisia tax number) * T.C. Kimlik No. (Turkish personal identification number) * VKN (Vergi Kimlik Numarası, Turkish tax identification number) * UBN (Unified Business Number, 統一編號, Taiwanese tax number) + * ЄДРПОУ, EDRPOU (Identifier for enterprises and organizations in Ukraine) + * РНОКПП, RNTRC (Individual taxpayer registration number in Ukraine) * ATIN (U.S. Adoption Taxpayer Identification Number) * EIN (U.S. Employer Identification Number) * ITIN (U.S. Individual Taxpayer Identification Number) @@ -249,13 +299,12 @@ Requirements ------------ The modules should not require any external Python modules and should be pure -Python. The modules are developed and tested with Python 2.7 and 3.6 but may -also work with older versions of Python. +Python. The modules are developed and tested with Python 3 versions (see `setup.py`). Copyright --------- -Copyright (C) 2010-2020 Arthur de Jong and others +Copyright (C) 2010-2026 Arthur de Jong and others This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -268,9 +317,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . Feedback and bug reports ------------------------ diff --git a/docs/conf.py b/docs/conf.py index 6c8e4a24..d37c1cbe 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -11,25 +11,18 @@ # All configuration values have a default; values that are commented out # serve to show the default. -import sys, os +"""python-stdnum documentation build configuration.""" import stdnum -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('..')) # -- General configuration ----------------------------------------------------- -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ - 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', - 'sphinx.ext.coverage', 'sphinx.ext.autosummary' + 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo', + 'sphinx.ext.coverage', 'sphinx.ext.autosummary', ] # Add any paths that contain templates here, relative to this directory. @@ -46,7 +39,7 @@ # General information about the project. project = u'python-stdnum' -copyright = u'2013-2019, Arthur de Jong' +copyright = u'2013-2026, Arthur de Jong' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -57,43 +50,21 @@ # The full version, including alpha/beta/rc tags. release = version -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_*', '.svn', '.git'] -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. -modindex_common_prefix = ['stdnum.', ] +modindex_common_prefix = ['stdnum.'] # Automatically generate stub pages for autosummary entries. autosummary_generate = True +# Autosummary overwrites existing files by generated stub pages. +autosummary_generate_overwrite = False # -- Options for HTML output --------------------------------------------------- @@ -101,79 +72,13 @@ # a list of builtin themes. html_theme = 'default' -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] - # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. html_last_updated_fmt = '%Y-%m-%d' -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - # If true, links to the reST sources are added to the pages. html_show_sourcelink = False -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Suffix for generated links to HTML files. -#html_link_suffix = '' - # Output file base name for HTML help builder. htmlhelp_basename = 'python-stdnumdoc' @@ -184,10 +89,7 @@ # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'python-stdnum', u'python-stdnum Documentation', - [u'Arthur de Jong'], 1) + [u'Arthur de Jong'], 1), ] -# If true, show URL addresses after external links. -#man_show_urls = False - intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} diff --git a/docs/contributing.rst b/docs/contributing.rst new file mode 100644 index 00000000..58977a88 --- /dev/null +++ b/docs/contributing.rst @@ -0,0 +1 @@ +.. include:: ../CONTRIBUTING.md diff --git a/docs/index.rst b/docs/index.rst index 959e7817..7cb0b702 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,6 +1,6 @@ .. module:: stdnum -.. include:: ../README +.. include:: ../README.md :end-before: Available formats @@ -9,7 +9,7 @@ Common Interface Most of the number format modules implement the following functions: -.. function:: module.validate(number) +.. function:: module.validate(number: str) -> str Validate the number and return a compact, consistent representation of the number or code. If the validation fails, @@ -19,7 +19,7 @@ Most of the number format modules implement the following functions: :raises ValidationError: When the specified number is invalid :returns: str -- A compact (canonical) representation of the number -.. function:: module.is_valid(number) +.. function:: module.is_valid(number: str) -> bool Return either ``True`` or ``False`` depending on whether the passed number is in any supported and valid form and passes all embedded checks of the @@ -27,7 +27,7 @@ Most of the number format modules implement the following functions: :returns: bool -- ``True`` if validated, ``False`` otherwise -.. function:: module.compact(number) +.. function:: module.compact(number: str) -> str Return a compact representation of the number or code. This function generally does not do validation but may raise exceptions for wildly @@ -35,7 +35,7 @@ Most of the number format modules implement the following functions: :returns: str -- The compacted number -.. function:: module.format(number) +.. function:: module.format(number: str) -> str Return a formatted version of the number in the preferred format. This function generally expects to be passed a valid number or code and @@ -45,7 +45,7 @@ Most of the number format modules implement the following functions: The check digit modules generally also provide the following functions: -.. function:: module.checksum(number) +.. function:: module.checksum(number: str) -> int Calculate the checksum over the provided number. This is generally a number that can be used to determine whether the provided number is @@ -53,7 +53,7 @@ The check digit modules generally also provide the following functions: :returns: int -- A numeric checksum over the number -.. function:: module.calc_check_digit(number) +.. function:: module.calc_check_digit(number: str) -> str Calculate the check digit that should be added to the number to make it valid. @@ -92,7 +92,7 @@ Helper functions and modules may have multiple) * ``'personalid'`` for generic personal identifiers (some countries may have multiple, especially for tax purposes) - * ``'postcal_code'`` for address postal codes + * ``'postal_code'`` for address postal codes Generic check digit algorithms @@ -126,7 +126,13 @@ Available formats au.abn au.acn au.tfn + az.voen + be.bis + be.eid be.iban + be.nn + be.ogm_vcs + be.ssn be.vat bg.egn bg.pnf @@ -136,9 +142,11 @@ Available formats br.cnpj br.cpf by.unp + ca.bc_phn ca.bn ca.sin casrn + cfi ch.esr ch.ssn ch.uid @@ -153,10 +161,12 @@ Available formats cu.ni cusip cy.vat + cz.bankaccount cz.dic cz.rc de.handelsregisternummer de.idnr + de.leitweg de.stnr de.vat de.wkn @@ -165,12 +175,15 @@ Available formats do.cedula do.ncf do.rnc + dz.nif ean ec.ci ec.ruc ee.ik ee.kmkr ee.registrikood + eg.tn + es.cae es.ccc es.cif es.cups @@ -178,11 +191,15 @@ Available formats es.iban es.nie es.nif + es.postal_code es.referenciacatastral eu.at_02 eu.banknote + eu.ecnumber eu.eic + eu.excise eu.nace + eu.oss eu.vat fi.alv fi.associationid @@ -190,8 +207,11 @@ Available formats fi.veronumero fi.ytunnus figi + fo.vn + fr.accise fr.nif fr.nir + fr.rcs fr.siren fr.siret fr.tva @@ -200,6 +220,8 @@ Available formats gb.upn gb.utr gb.vat + gh.tin + gn.nifp gr.amka gr.vat grid @@ -208,6 +230,7 @@ Available formats hr.oib hu.anum iban + id.nik id.npwp ie.pps ie.vat @@ -217,7 +240,10 @@ Available formats imo imsi in_.aadhaar + in_.epic + in_.gstin in_.pan + in_.vid is_.kennitala is_.vsk isan @@ -225,33 +251,43 @@ Available formats isil isin ismn + isni iso11649 iso6346 + isrc issn it.aic it.codicefiscale it.iva jp.cn + jp.in_ + ke.pin kr.brn kr.rrn lei + li.peid lt.asmens lt.pvm lu.tva lv.pvn + ma.ice mac mc.tva md.idno me.iban + me.pib meid + mk.edb mt.vat mu.nid mx.curp mx.rfc my.nric + mz.nuit nl.brin nl.bsn nl.btw + nl.identiteitskaartnummer nl.onderwijsnummer nl.postcode no.fodselsnummer @@ -263,28 +299,42 @@ Available formats nz.ird pe.cui pe.ruc + pk.cnic pl.nip pl.pesel pl.regon + pt.cc pt.nif py.ruc ro.cf ro.cnp + ro.cui ro.onrc rs.pib ru.inn + ru.ogrn se.orgnr se.personnummer + se.postnummer se.vat sg.uen si.ddv + si.emso + si.maticna sk.dph sk.rc sm.coe + sn.ninea sv.nit + th.moa + th.pin + th.tin + tn.mf tr.tckimlik tr.vkn tw.ubn + ua.edrpou + ua.rntrc us.atin us.ein us.itin @@ -307,3 +357,12 @@ Changes in python-stdnum :maxdepth: 2 changes + + +Contributing to python-stdnum +----------------------------- + +.. toctree:: + :maxdepth: 2 + + contributing diff --git a/docs/stdnum.az.voen.rst b/docs/stdnum.az.voen.rst new file mode 100644 index 00000000..8c303dd3 --- /dev/null +++ b/docs/stdnum.az.voen.rst @@ -0,0 +1,5 @@ +stdnum.az.voen +============== + +.. automodule:: stdnum.az.voen + :members: \ No newline at end of file diff --git a/docs/stdnum.be.bis.rst b/docs/stdnum.be.bis.rst new file mode 100644 index 00000000..916faf4c --- /dev/null +++ b/docs/stdnum.be.bis.rst @@ -0,0 +1,5 @@ +stdnum.be.bis +============= + +.. automodule:: stdnum.be.bis + :members: \ No newline at end of file diff --git a/docs/stdnum.be.eid.rst b/docs/stdnum.be.eid.rst new file mode 100644 index 00000000..2bcedf5f --- /dev/null +++ b/docs/stdnum.be.eid.rst @@ -0,0 +1,5 @@ +stdnum.be.eid +============= + +.. automodule:: stdnum.be.eid + :members: \ No newline at end of file diff --git a/docs/stdnum.be.nn.rst b/docs/stdnum.be.nn.rst new file mode 100644 index 00000000..1937b8b7 --- /dev/null +++ b/docs/stdnum.be.nn.rst @@ -0,0 +1,5 @@ +stdnum.be.nn +============ + +.. automodule:: stdnum.be.nn + :members: \ No newline at end of file diff --git a/docs/stdnum.be.ogm_vcs.rst b/docs/stdnum.be.ogm_vcs.rst new file mode 100644 index 00000000..efb1854e --- /dev/null +++ b/docs/stdnum.be.ogm_vcs.rst @@ -0,0 +1,5 @@ +stdnum.be.ogm_vcs +================= + +.. automodule:: stdnum.be.ogm_vcs + :members: \ No newline at end of file diff --git a/docs/stdnum.be.ssn.rst b/docs/stdnum.be.ssn.rst new file mode 100644 index 00000000..3cf31865 --- /dev/null +++ b/docs/stdnum.be.ssn.rst @@ -0,0 +1,5 @@ +stdnum.be.ssn +============= + +.. automodule:: stdnum.be.ssn + :members: \ No newline at end of file diff --git a/docs/stdnum.ca.bc_phn.rst b/docs/stdnum.ca.bc_phn.rst new file mode 100644 index 00000000..1299ee4d --- /dev/null +++ b/docs/stdnum.ca.bc_phn.rst @@ -0,0 +1,5 @@ +stdnum.ca.bc_phn +================ + +.. automodule:: stdnum.ca.bc_phn + :members: \ No newline at end of file diff --git a/docs/stdnum.cfi.rst b/docs/stdnum.cfi.rst new file mode 100644 index 00000000..bc4be164 --- /dev/null +++ b/docs/stdnum.cfi.rst @@ -0,0 +1,5 @@ +stdnum.cfi +========== + +.. automodule:: stdnum.cfi + :members: \ No newline at end of file diff --git a/docs/stdnum.cz.bankaccount.rst b/docs/stdnum.cz.bankaccount.rst new file mode 100644 index 00000000..64ed9d56 --- /dev/null +++ b/docs/stdnum.cz.bankaccount.rst @@ -0,0 +1,5 @@ +stdnum.cz.bankaccount +===================== + +.. automodule:: stdnum.cz.bankaccount + :members: \ No newline at end of file diff --git a/docs/stdnum.de.leitweg.rst b/docs/stdnum.de.leitweg.rst new file mode 100644 index 00000000..747e1016 --- /dev/null +++ b/docs/stdnum.de.leitweg.rst @@ -0,0 +1,5 @@ +stdnum.de.leitweg +================= + +.. automodule:: stdnum.de.leitweg + :members: \ No newline at end of file diff --git a/docs/stdnum.dz.nif.rst b/docs/stdnum.dz.nif.rst new file mode 100644 index 00000000..845b47d6 --- /dev/null +++ b/docs/stdnum.dz.nif.rst @@ -0,0 +1,5 @@ +stdnum.dz.nif +============= + +.. automodule:: stdnum.dz.nif + :members: \ No newline at end of file diff --git a/docs/stdnum.eg.tn.rst b/docs/stdnum.eg.tn.rst new file mode 100644 index 00000000..4cf97686 --- /dev/null +++ b/docs/stdnum.eg.tn.rst @@ -0,0 +1,5 @@ +stdnum.eg.tn +============ + +.. automodule:: stdnum.eg.tn + :members: \ No newline at end of file diff --git a/docs/stdnum.es.cae.rst b/docs/stdnum.es.cae.rst new file mode 100644 index 00000000..93ddd64c --- /dev/null +++ b/docs/stdnum.es.cae.rst @@ -0,0 +1,5 @@ +stdnum.es.cae +============= + +.. automodule:: stdnum.es.cae + :members: \ No newline at end of file diff --git a/docs/stdnum.es.postal_code.rst b/docs/stdnum.es.postal_code.rst new file mode 100644 index 00000000..d6c8bf61 --- /dev/null +++ b/docs/stdnum.es.postal_code.rst @@ -0,0 +1,5 @@ +stdnum.es.postal_code +===================== + +.. automodule:: stdnum.es.postal_code + :members: \ No newline at end of file diff --git a/docs/stdnum.eu.ecnumber.rst b/docs/stdnum.eu.ecnumber.rst new file mode 100644 index 00000000..f6626e6d --- /dev/null +++ b/docs/stdnum.eu.ecnumber.rst @@ -0,0 +1,5 @@ +stdnum.eu.ecnumber +================== + +.. automodule:: stdnum.eu.ecnumber + :members: \ No newline at end of file diff --git a/docs/stdnum.eu.excise.rst b/docs/stdnum.eu.excise.rst new file mode 100644 index 00000000..0bfc38fd --- /dev/null +++ b/docs/stdnum.eu.excise.rst @@ -0,0 +1,5 @@ +stdnum.eu.excise +================ + +.. automodule:: stdnum.eu.excise + :members: \ No newline at end of file diff --git a/docs/stdnum.eu.oss.rst b/docs/stdnum.eu.oss.rst new file mode 100644 index 00000000..8f4b004b --- /dev/null +++ b/docs/stdnum.eu.oss.rst @@ -0,0 +1,5 @@ +stdnum.eu.oss +============= + +.. automodule:: stdnum.eu.oss + :members: \ No newline at end of file diff --git a/docs/stdnum.fo.vn.rst b/docs/stdnum.fo.vn.rst new file mode 100644 index 00000000..74730ee7 --- /dev/null +++ b/docs/stdnum.fo.vn.rst @@ -0,0 +1,5 @@ +stdnum.fo.vn +============ + +.. automodule:: stdnum.fo.vn + :members: \ No newline at end of file diff --git a/docs/stdnum.fr.accise.rst b/docs/stdnum.fr.accise.rst new file mode 100644 index 00000000..3c5b93db --- /dev/null +++ b/docs/stdnum.fr.accise.rst @@ -0,0 +1,5 @@ +stdnum.fr.accise +================ + +.. automodule:: stdnum.fr.accise + :members: \ No newline at end of file diff --git a/docs/stdnum.fr.rcs.rst b/docs/stdnum.fr.rcs.rst new file mode 100644 index 00000000..a77f27b9 --- /dev/null +++ b/docs/stdnum.fr.rcs.rst @@ -0,0 +1,5 @@ +stdnum.fr.rcs +============= + +.. automodule:: stdnum.fr.rcs + :members: \ No newline at end of file diff --git a/docs/stdnum.gh.tin.rst b/docs/stdnum.gh.tin.rst new file mode 100644 index 00000000..fe8aaf5d --- /dev/null +++ b/docs/stdnum.gh.tin.rst @@ -0,0 +1,5 @@ +stdnum.gh.tin +============= + +.. automodule:: stdnum.gh.tin + :members: \ No newline at end of file diff --git a/docs/stdnum.gn.nifp.rst b/docs/stdnum.gn.nifp.rst new file mode 100644 index 00000000..0361b779 --- /dev/null +++ b/docs/stdnum.gn.nifp.rst @@ -0,0 +1,5 @@ +stdnum.gn.nifp +============== + +.. automodule:: stdnum.gn.nifp + :members: \ No newline at end of file diff --git a/docs/stdnum.id.nik.rst b/docs/stdnum.id.nik.rst new file mode 100644 index 00000000..ca388859 --- /dev/null +++ b/docs/stdnum.id.nik.rst @@ -0,0 +1,5 @@ +stdnum.id.nik +============= + +.. automodule:: stdnum.id.nik + :members: \ No newline at end of file diff --git a/docs/stdnum.in_.epic.rst b/docs/stdnum.in_.epic.rst new file mode 100644 index 00000000..d7e3e901 --- /dev/null +++ b/docs/stdnum.in_.epic.rst @@ -0,0 +1,5 @@ +stdnum.in\_.epic +================ + +.. automodule:: stdnum.in_.epic + :members: \ No newline at end of file diff --git a/docs/stdnum.in_.gstin.rst b/docs/stdnum.in_.gstin.rst new file mode 100644 index 00000000..d0871072 --- /dev/null +++ b/docs/stdnum.in_.gstin.rst @@ -0,0 +1,5 @@ +stdnum.in\_.gstin +================= + +.. automodule:: stdnum.in_.gstin + :members: \ No newline at end of file diff --git a/docs/stdnum.in_.vid.rst b/docs/stdnum.in_.vid.rst new file mode 100644 index 00000000..602124c4 --- /dev/null +++ b/docs/stdnum.in_.vid.rst @@ -0,0 +1,5 @@ +stdnum.in\_.vid +=============== + +.. automodule:: stdnum.in_.vid + :members: \ No newline at end of file diff --git a/docs/stdnum.isni.rst b/docs/stdnum.isni.rst new file mode 100644 index 00000000..fd9ab985 --- /dev/null +++ b/docs/stdnum.isni.rst @@ -0,0 +1,5 @@ +stdnum.isni +=========== + +.. automodule:: stdnum.isni + :members: \ No newline at end of file diff --git a/docs/stdnum.isrc.rst b/docs/stdnum.isrc.rst new file mode 100644 index 00000000..e9c8f63d --- /dev/null +++ b/docs/stdnum.isrc.rst @@ -0,0 +1,5 @@ +stdnum.isrc +=========== + +.. automodule:: stdnum.isrc + :members: \ No newline at end of file diff --git a/docs/stdnum.jp.in_.rst b/docs/stdnum.jp.in_.rst new file mode 100644 index 00000000..7957124f --- /dev/null +++ b/docs/stdnum.jp.in_.rst @@ -0,0 +1,5 @@ +stdnum.jp.in_ +============= + +.. automodule:: stdnum.jp.in_ + :members: \ No newline at end of file diff --git a/docs/stdnum.ke.pin.rst b/docs/stdnum.ke.pin.rst new file mode 100644 index 00000000..bd47baf7 --- /dev/null +++ b/docs/stdnum.ke.pin.rst @@ -0,0 +1,5 @@ +stdnum.ke.pin +============= + +.. automodule:: stdnum.ke.pin + :members: \ No newline at end of file diff --git a/docs/stdnum.li.peid.rst b/docs/stdnum.li.peid.rst new file mode 100644 index 00000000..70ec351f --- /dev/null +++ b/docs/stdnum.li.peid.rst @@ -0,0 +1,5 @@ +stdnum.li.peid +============== + +.. automodule:: stdnum.li.peid + :members: diff --git a/docs/stdnum.ma.ice.rst b/docs/stdnum.ma.ice.rst new file mode 100644 index 00000000..32ef626c --- /dev/null +++ b/docs/stdnum.ma.ice.rst @@ -0,0 +1,5 @@ +stdnum.ma.ice +============= + +.. automodule:: stdnum.ma.ice + :members: \ No newline at end of file diff --git a/docs/stdnum.me.pib.rst b/docs/stdnum.me.pib.rst new file mode 100644 index 00000000..b713647c --- /dev/null +++ b/docs/stdnum.me.pib.rst @@ -0,0 +1,5 @@ +stdnum.me.pib +============= + +.. automodule:: stdnum.me.pib + :members: \ No newline at end of file diff --git a/docs/stdnum.mk.edb.rst b/docs/stdnum.mk.edb.rst new file mode 100644 index 00000000..bff1a283 --- /dev/null +++ b/docs/stdnum.mk.edb.rst @@ -0,0 +1,5 @@ +stdnum.mk.edb +============= + +.. automodule:: stdnum.mk.edb + :members: \ No newline at end of file diff --git a/docs/stdnum.mz.nuit.rst b/docs/stdnum.mz.nuit.rst new file mode 100644 index 00000000..8fd5d05f --- /dev/null +++ b/docs/stdnum.mz.nuit.rst @@ -0,0 +1,5 @@ +stdnum.mz.nuit +============== + +.. automodule:: stdnum.mz.nuit + :members: \ No newline at end of file diff --git a/docs/stdnum.nl.identiteitskaartnummer.rst b/docs/stdnum.nl.identiteitskaartnummer.rst new file mode 100644 index 00000000..782416d0 --- /dev/null +++ b/docs/stdnum.nl.identiteitskaartnummer.rst @@ -0,0 +1,5 @@ +stdnum.nl.identiteitskaartnummer +================================ + +.. automodule:: stdnum.nl.identiteitskaartnummer + :members: \ No newline at end of file diff --git a/docs/stdnum.pk.cnic.rst b/docs/stdnum.pk.cnic.rst new file mode 100644 index 00000000..c3a191b2 --- /dev/null +++ b/docs/stdnum.pk.cnic.rst @@ -0,0 +1,5 @@ +stdnum.pk.cnic +============== + +.. automodule:: stdnum.pk.cnic + :members: \ No newline at end of file diff --git a/docs/stdnum.pt.cc.rst b/docs/stdnum.pt.cc.rst new file mode 100644 index 00000000..954c9a99 --- /dev/null +++ b/docs/stdnum.pt.cc.rst @@ -0,0 +1,5 @@ +stdnum.pt.cc +============ + +.. automodule:: stdnum.pt.cc + :members: \ No newline at end of file diff --git a/docs/stdnum.ro.cui.rst b/docs/stdnum.ro.cui.rst new file mode 100644 index 00000000..e46aa91c --- /dev/null +++ b/docs/stdnum.ro.cui.rst @@ -0,0 +1,5 @@ +stdnum.ro.cui +============= + +.. automodule:: stdnum.ro.cui + :members: diff --git a/docs/stdnum.ru.ogrn.rst b/docs/stdnum.ru.ogrn.rst new file mode 100644 index 00000000..aee48283 --- /dev/null +++ b/docs/stdnum.ru.ogrn.rst @@ -0,0 +1,5 @@ +stdnum.ru.ogrn +============== + +.. automodule:: stdnum.ru.ogrn + :members: \ No newline at end of file diff --git a/docs/stdnum.se.postnummer.rst b/docs/stdnum.se.postnummer.rst new file mode 100644 index 00000000..025aeaf3 --- /dev/null +++ b/docs/stdnum.se.postnummer.rst @@ -0,0 +1,5 @@ +stdnum.se.postnummer +==================== + +.. automodule:: stdnum.se.postnummer + :members: \ No newline at end of file diff --git a/docs/stdnum.si.emso.rst b/docs/stdnum.si.emso.rst new file mode 100644 index 00000000..e4cd833a --- /dev/null +++ b/docs/stdnum.si.emso.rst @@ -0,0 +1,5 @@ +stdnum.si.emso +============== + +.. automodule:: stdnum.si.emso + :members: \ No newline at end of file diff --git a/docs/stdnum.si.maticna.rst b/docs/stdnum.si.maticna.rst new file mode 100644 index 00000000..5a9de042 --- /dev/null +++ b/docs/stdnum.si.maticna.rst @@ -0,0 +1,5 @@ +stdnum.si.maticna +================= + +.. automodule:: stdnum.si.maticna + :members: \ No newline at end of file diff --git a/docs/stdnum.sn.ninea.rst b/docs/stdnum.sn.ninea.rst new file mode 100644 index 00000000..087fd3bb --- /dev/null +++ b/docs/stdnum.sn.ninea.rst @@ -0,0 +1,5 @@ +stdnum.sn.ninea +=============== + +.. automodule:: stdnum.sn.ninea + :members: \ No newline at end of file diff --git a/docs/stdnum.th.moa.rst b/docs/stdnum.th.moa.rst new file mode 100644 index 00000000..7377b73c --- /dev/null +++ b/docs/stdnum.th.moa.rst @@ -0,0 +1,5 @@ +stdnum.th.moa +============= + +.. automodule:: stdnum.th.moa + :members: \ No newline at end of file diff --git a/docs/stdnum.th.pin.rst b/docs/stdnum.th.pin.rst new file mode 100644 index 00000000..40c21e63 --- /dev/null +++ b/docs/stdnum.th.pin.rst @@ -0,0 +1,5 @@ +stdnum.th.pin +============= + +.. automodule:: stdnum.th.pin + :members: \ No newline at end of file diff --git a/docs/stdnum.th.tin.rst b/docs/stdnum.th.tin.rst new file mode 100644 index 00000000..c889ec2a --- /dev/null +++ b/docs/stdnum.th.tin.rst @@ -0,0 +1,5 @@ +stdnum.th.tin +============= + +.. automodule:: stdnum.th.tin + :members: \ No newline at end of file diff --git a/docs/stdnum.tn.mf.rst b/docs/stdnum.tn.mf.rst new file mode 100644 index 00000000..781d0b94 --- /dev/null +++ b/docs/stdnum.tn.mf.rst @@ -0,0 +1,5 @@ +stdnum.tn.mf +============ + +.. automodule:: stdnum.tn.mf + :members: \ No newline at end of file diff --git a/docs/stdnum.ua.edrpou.rst b/docs/stdnum.ua.edrpou.rst new file mode 100644 index 00000000..88c5c5db --- /dev/null +++ b/docs/stdnum.ua.edrpou.rst @@ -0,0 +1,5 @@ +stdnum.ua.edrpou +================ + +.. automodule:: stdnum.ua.edrpou + :members: diff --git a/docs/stdnum.ua.rntrc.rst b/docs/stdnum.ua.rntrc.rst new file mode 100644 index 00000000..89e92a6a --- /dev/null +++ b/docs/stdnum.ua.rntrc.rst @@ -0,0 +1,5 @@ +stdnum.ua.rntrc +=============== + +.. automodule:: stdnum.ua.rntrc + :members: diff --git a/online_check/check.js b/online_check/check.js index 69019564..68d16652 100644 --- a/online_check/check.js +++ b/online_check/check.js @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public - # License along with this library; if not, write to the Free Software - # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - # 02110-1301 USA + # License along with this library; if not, see . */ $(document).ready(function () { diff --git a/online_check/stdnum.wsgi b/online_check/stdnum.wsgi index 2909c941..f95ce7cd 100755 --- a/online_check/stdnum.wsgi +++ b/online_check/stdnum.wsgi @@ -1,6 +1,6 @@ # stdnum.wsgi - simple WSGI application to check numbers # -# Copyright (C) 2017-2020 Arthur de Jong. +# Copyright (C) 2017-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,25 +13,25 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Simple WSGI application to check numbers.""" -import cgi +import datetime +import html import inspect import json import os import re import sys +import urllib.parse sys.stdout = sys.stderr sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'python-stdnum')) -from stdnum.util import ( - get_module_description, get_module_name, get_number_modules, to_unicode) +from stdnum.util import ( # noqa: E402,I001 (import after changes to sys.path) + get_module_description, get_module_name, get_number_modules) _template = None @@ -40,16 +40,18 @@ _template = None def get_conversions(module, number): """Return the possible conversions for the number.""" for name, func in inspect.getmembers(module, inspect.isfunction): - if name.startswith('to_'): - args, varargs, varkw, defaults = inspect.getargspec(func) - if defaults: - args = args[:-len(defaults)] + if name.startswith('to_') or name.startswith('get_'): + signature = inspect.signature(func) + args = [p.name for p in signature.parameters.values() if p.default == p.empty] if args == ['number'] and not name.endswith('binary'): try: + prop = name.split('_', 1)[1].replace('_', ' ') conversion = func(number) - if conversion != number: - yield (name[3:], to_unicode(conversion)) - except Exception: + if isinstance(conversion, datetime.date): + yield (prop, conversion.strftime('%Y-%m-%d')) + elif conversion != number: + yield (prop, conversion) + except Exception: # noqa: B902 (catch anything that goes wrong) pass @@ -62,14 +64,14 @@ def info(module, number): compact=compactfn(number), valid=module.is_valid(number), module=module.__name__.split('.', 1)[1], - name=to_unicode(get_module_name(module)), - description=to_unicode(get_module_description(module)), + name=get_module_name(module), + description=get_module_description(module), conversions=dict(get_conversions(module, number))) def format(data): """Return an HTML snippet describing the number.""" - description = cgi.escape(data['description']).replace('\n\n', '
\n') + description = html.escape(data['description']).replace('\n\n', '
\n') description = re.sub( r'^[*] (.*)$', r'
  • \1
', description, flags=re.MULTILINE) @@ -79,10 +81,10 @@ def format(data): description, flags=re.IGNORECASE + re.UNICODE) for name, conversion in data.get('conversions', {}).items(): description += '\n
%s: %s' % ( - cgi.escape(name), cgi.escape(conversion)) + html.escape(name), html.escape(conversion)) return '
  • %s: %s

    %s

  • ' % ( - cgi.escape(data['number']), - cgi.escape(data['name']), + html.escape(data['number']), + html.escape(data['name']), description) @@ -94,14 +96,14 @@ def application(environ, start_response): basedir = os.path.join( environ['DOCUMENT_ROOT'], os.path.dirname(environ['SCRIPT_NAME']).strip('/')) - _template = to_unicode(open(os.path.join(basedir, 'template.html'), 'rt').read()) + _template = open(os.path.join(basedir, 'template.html'), 'rb').read().decode('utf-8') is_ajax = environ.get( 'HTTP_X_REQUESTED_WITH', '').lower() == 'xmlhttprequest' - parameters = cgi.parse_qs(environ.get('QUERY_STRING', '')) + parameters = urllib.parse.parse_qs(environ.get('QUERY_STRING', '')) results = [] number = '' if 'number' in parameters: - number = to_unicode(parameters['number'][0]) + number = parameters['number'][0] results = [ info(module, number) for module in get_number_modules() @@ -115,5 +117,5 @@ def application(environ, start_response): ('Content-Type', 'text/html; charset=utf-8'), ('Vary', 'X-Requested-With')]) return [(_template % dict( - value=cgi.escape(number, True), + value=html.escape(number, True), results=u'\n'.join(format(data) for data in results))).encode('utf-8')] diff --git a/scripts/check_headers.py b/scripts/check_headers.py new file mode 100755 index 00000000..f1f19a14 --- /dev/null +++ b/scripts/check_headers.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python3 + +# check_headers.py - check that all source files have licensing information +# +# Copyright (C) 2023 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""This script checks that all source files have licensing information.""" + +import glob +import os +import re +import sys +import textwrap + + +# Regext to match the first line +identification_re = re.compile( + r'^(#!/usr/bin/env python3?\s+|/\*\s+)?' + r'(# coding: utf-8\s+)?' + r'(\s?#\s+)?' + r'(?P[^ :]+) - ', re.MULTILINE) + +# Regex to match standard license blurb +license_re = re.compile(textwrap.dedent(r''' + [# ]*This library is free software; you can redistribute it and/or + [# ]*modify it under the terms of the GNU Lesser General Public + [# ]*License as published by the Free Software Foundation; either + [# ]*version 2.1 of the License, or .at your option. any later version. + [# ]* + [# ]*This library is distributed in the hope that it will be useful, + [# ]*but WITHOUT ANY WARRANTY; without even the implied warranty of + [# ]*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + [# ]*Lesser General Public License for more details. + [# ]* + [# ]*You should have received a copy of the GNU Lesser General Public + [# ]*License along with this library; if not, see . + ''').strip(), re.MULTILINE) + + +def get_file_header(filename): + """Read the file header from the file.""" + with open(filename, 'rt') as f: + # Only read the first 2048 bytes to avoid loading too much and the + # license information should be in the first part anyway. + return f.read(2048) + + +if __name__ == '__main__': + files_to_check = ( + glob.glob('*.py') + + glob.glob('stdnum/**/*.py', recursive=True) + + glob.glob('tests/**/*.doctest', recursive=True) + + glob.glob('scripts/*', recursive=True) + + glob.glob('update/**/*.py', recursive=True) + + glob.glob('online_check/*.wsgi', recursive=True) + + glob.glob('online_check/check.js', recursive=True) + ) + + # Look for files with incorrect first lines or license + fail = False + for filename in sorted(files_to_check): + contents = get_file_header(filename) + m = identification_re.match(contents) + if not bool(m) or m.group('filename') not in (filename, os.path.basename(filename)): + print('%s: Incorrect file identification' % filename) + fail = True + if not bool(license_re.search(contents)): + print('%s: Incorrect license text' % filename) + fail = True + + if fail: + sys.exit(1) diff --git a/setup.cfg b/setup.cfg index da1f59ac..2bff8c77 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,30 +1,24 @@ [metadata] -license_file = COPYING +license_files = COPYING [sdist] owner=root group=root -[bdist_wheel] -universal=1 - -[nosetests] -with-doctest=true -doctest-extension=doctest -doctest-options=+IGNORE_EXCEPTION_DETAIL,+NORMALIZE_WHITESPACE -with-coverage=true -cover-branches=true -cover-package=stdnum -cover-inclusive=true -cover-erase=true -cover-html=true -cover-html-dir=coverage -cover-min-percentage=100 +[tool:pytest] +addopts = --doctest-modules --doctest-glob="*.doctest" stdnum tests --ignore=stdnum/iso9362.py --cov=stdnum --cov-report=term-missing:skip-covered --cov-report=html +doctest_optionflags = NORMALIZE_WHITESPACE IGNORE_EXCEPTION_DETAIL + +[coverage:run] +branch = true [coverage:report] fail_under=100 show_missing=true +[coverage:html] +directory = coverage + [build_sphinx] all_files = 1 @@ -32,20 +26,32 @@ all_files = 1 ignore = D205,D209,D400 # our docstrings are multi-line blobs D302 # We don't care about Unicode docstrings - E501 # ignore long lines E731 # we occasionally use lambda F403,F405 # we use * imports Q001 # we use '''...''' multi-line strings Q003 # don't force "" strings to avoid escaping quotes - T001 # we use print statements in the update scripts + T001,T201 # we use print statements in the update scripts W504 # we put the binary operator on the preceding line max-complexity = 15 max-line-length = 120 +extend-exclude = + .github + .mypy_cache + .pytest_cache + .ruff_cache + .venv + build [isort] lines_after_imports = 2 multi_line_output = 4 known_third_party = lxml + openpyxl requests xlrd + +[mypy] +python_version = 3.9 +strict = True +warn_unreachable = True diff --git a/setup.py b/setup.py index f340218a..bb95890e 100755 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ # setup.py - python-stdnum installation script # -# Copyright (C) 2010-2020 Arthur de Jong +# Copyright (C) 2010-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """python-stdnum installation script.""" @@ -36,7 +34,7 @@ base_dir = os.path.dirname(__file__) -with open(os.path.join(base_dir, 'README'), 'rb') as fp: +with open(os.path.join(base_dir, 'README.md'), 'rb') as fp: long_description = fp.read().decode('utf-8') setup( @@ -44,9 +42,14 @@ version=stdnum.__version__, description='Python module to handle standardized numbers and codes', long_description=long_description, + long_description_content_type='text/markdown', author='Arthur de Jong', author_email='arthur@arthurdejong.org', url='https://arthurdejong.org/python-stdnum/', + project_urls={ + 'Documentation': 'https://arthurdejong.org/python-stdnum/doc/', + 'GitHub': 'https://github.com/arthurdejong/python-stdnum/', + }, license='LGPL', classifiers=[ 'Development Status :: 5 - Production/Stable', @@ -57,29 +60,27 @@ 'License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)', 'Operating System :: OS Independent', 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', + 'Programming Language :: Python :: 3.13', + 'Programming Language :: Python :: 3.14', 'Programming Language :: Python :: Implementation :: PyPy', 'Topic :: Office/Business :: Financial', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: Text Processing :: General', ], packages=find_packages(), + python_requires='>=3.8', install_requires=[], - package_data={'': ['*.dat']}, + package_data={'': ['*.dat', '*.crt', 'py.typed']}, extras_require={ # The SOAP feature is only required for a number of online tests # of numbers such as the EU VAT VIES lookup, the Dominican Republic # DGII services or the Turkish T.C. Kimlik validation. - 'SOAP': ['zeep'], # recommended implementation - 'SOAP-ALT': ['suds'], # but this should also work - 'SOAP-FALLBACK': ['PySimpleSOAP'], # this is a fallback + 'SOAP': ['zeep'], }, ) diff --git a/stdnum/__init__.py b/stdnum/__init__.py index 73646fb1..44bb0301 100644 --- a/stdnum/__init__.py +++ b/stdnum/__init__.py @@ -1,7 +1,7 @@ # __init__.py - main module # coding: utf-8 # -# Copyright (C) 2010-2020 Arthur de Jong +# Copyright (C) 2010-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Parse, validate and reformat standard numbers and codes. @@ -37,10 +35,12 @@ parsing, validation, formatting or conversion functions. """ +from __future__ import annotations + from stdnum.util import get_cc_module __all__ = ('get_cc_module', '__version__') # the version number of the library -__version__ = '1.14' +__version__ = '2.2' diff --git a/stdnum/ad/__init__.py b/stdnum/ad/__init__.py index 09ccf97c..5d475e2a 100644 --- a/stdnum/ad/__init__.py +++ b/stdnum/ad/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Andorran numbers.""" +from __future__ import annotations + # Provide aliases. from stdnum.ad import nrt as vat # noqa: F401 diff --git a/stdnum/ad/nrt.py b/stdnum/ad/nrt.py index 00185c90..2d986796 100644 --- a/stdnum/ad/nrt.py +++ b/stdnum/ad/nrt.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NRT (Número de Registre Tributari, Andorra tax number). @@ -42,13 +40,15 @@ InvalidComponent: ... >>> format('D059888N') 'D-059888-N' -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -57,10 +57,10 @@ def compact(number): return clean(number, ' -.').upper().strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Andorra NRT number. - This checks the length, formatting and other contraints. It does not check + This checks the length, formatting and other constraints. It does not check for control letter. """ number = compact(number) @@ -79,7 +79,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Andorra NRT number.""" try: return bool(validate(number)) @@ -87,7 +87,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[0], number[1:-1], number[-1]]) diff --git a/stdnum/al/__init__.py b/stdnum/al/__init__.py index 25d7cd18..b36d0455 100644 --- a/stdnum/al/__init__.py +++ b/stdnum/al/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Albanian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.al import nipt as vat # noqa: F401 diff --git a/stdnum/al/nipt.py b/stdnum/al/nipt.py index 9091ac7e..11c8e8a7 100644 --- a/stdnum/al/nipt.py +++ b/stdnum/al/nipt.py @@ -1,9 +1,9 @@ -# nipt.py - functions for handling Albanian VAT numbers +# nipt.py - functions for handling Albanian tax numbers # coding: utf-8 # # Copyright (C) 2008-2011 Cédric Krier # Copyright (C) 2008-2011 B2CK -# Copyright (C) 2015 Arthur de Jong +# Copyright (C) 2015-2023 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -16,14 +16,23 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . -"""NIPT (Numri i Identifikimit për Personin e Tatueshëm, Albanian VAT number). +"""NIPT, NUIS (Numri i Identifikimit për Personin e Tatueshëm, Albanian tax number). The Albanian NIPT is a 10-digit number with the first and last character -being letters. +being letters. The number is assigned to individuals and organisations for +tax purposes. + +The first letter indicates the decade the number was assigned or date birth +date for individuals, followed by a digit for the year. The next two digits +contain the month (and gender for individuals and region for organisations) +followed by two digits for the day of the month. The remainder is a serial +followed by a check letter (check digit algorithm unknown). + +More information: + +* https://www.tatime.gov.al/eng/c/4/103/business-lifecycle >>> validate('AL J 91402501 L') 'J91402501L' @@ -39,6 +48,8 @@ InvalidFormat: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -46,10 +57,10 @@ # regular expression for matching number -_nipt_re = re.compile(r'^[JKL][0-9]{8}[A-Z]$') +_nipt_re = re.compile(r'^[A-M][0-9]{8}[A-Z]$') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' ').upper().strip() @@ -60,7 +71,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length and formatting.""" number = compact(number) @@ -71,7 +82,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/ar/__init__.py b/stdnum/ar/__init__.py index 6e99d4e9..70c04c1b 100644 --- a/stdnum/ar/__init__.py +++ b/stdnum/ar/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Argentinian numbers.""" +from __future__ import annotations + # provide aliases from stdnum.ar import cuit as vat # noqa: F401 from stdnum.ar import dni as personalid # noqa: F401 diff --git a/stdnum/ar/cbu.py b/stdnum/ar/cbu.py index 08f6f98d..6f34abaf 100644 --- a/stdnum/ar/cbu.py +++ b/stdnum/ar/cbu.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CBU (Clave Bancaria Uniforme, Argentine bank account number). @@ -39,17 +37,19 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (3, 1, 7, 9) check = sum(int(n) * weights[i % 4] @@ -57,7 +57,7 @@ def calc_check_digit(number): return str((10 - check) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid CBU.""" number = compact(number) if len(number) != 22: @@ -71,7 +71,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid CBU.""" try: return bool(validate(number)) @@ -79,7 +79,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[:8], number[8:])) diff --git a/stdnum/ar/cuit.py b/stdnum/ar/cuit.py index 89522b2d..acb98242 100644 --- a/stdnum/ar/cuit.py +++ b/stdnum/ar/cuit.py @@ -18,9 +18,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CUIT (Código Único de Identificación Tributaria, Argentinian tax number). @@ -41,17 +39,19 @@ '20-26756539-3' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2) check = sum(w * int(n) for w, n in zip(weights, number)) % 11 @@ -66,7 +66,7 @@ def calc_check_digit(number): ) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid CUIT.""" number = compact(number) if len(number) != 11: @@ -80,7 +80,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid CUIT.""" try: return bool(validate(number)) @@ -88,7 +88,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return (number[0:2] + '-' + number[2:10] + '-' + number[10:]) diff --git a/stdnum/ar/dni.py b/stdnum/ar/dni.py index f97cb7a2..fb3f820c 100644 --- a/stdnum/ar/dni.py +++ b/stdnum/ar/dni.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """DNI (Documento Nacional de Identidad, Argentinian national identity nr.). @@ -38,17 +36,19 @@ '20.123.456' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' .').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid DNI.""" number = compact(number) if not isdigits(number): @@ -58,7 +58,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid DNI.""" try: return bool(validate(number)) @@ -66,7 +66,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '.'.join((number[:-6], number[-6:-3], number[-3:])) diff --git a/stdnum/at/__init__.py b/stdnum/at/__init__.py index 3ee90adb..5cb55dcb 100644 --- a/stdnum/at/__init__.py +++ b/stdnum/at/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Austrian numbers.""" +from __future__ import annotations + # provide aliases from stdnum.at import postleitzahl as postal_code # noqa: F401 from stdnum.at import uid as vat # noqa: F401 diff --git a/stdnum/at/businessid.py b/stdnum/at/businessid.py index 04fc5644..83d94f8e 100644 --- a/stdnum/at/businessid.py +++ b/stdnum/at/businessid.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Austrian Company Register Numbers. @@ -38,6 +36,8 @@ InvalidFormat: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -47,7 +47,7 @@ _businessid_re = re.compile('^[0-9]+[a-z]$') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace. Preceding "FN" is also removed.""" @@ -57,7 +57,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid company register number. This only checks the formatting.""" number = compact(number) @@ -66,7 +66,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid company register number.""" try: return bool(validate(number)) diff --git a/stdnum/at/postleitzahl.dat b/stdnum/at/postleitzahl.dat index 47023f46..4e08d067 100644 --- a/stdnum/at/postleitzahl.dat +++ b/stdnum/at/postleitzahl.dat @@ -1,5 +1,5 @@ -# generated from PLZ_Verzeichnis_JAN20.xls downloaded from -# https://www.post.at/en/business_advertise_products_and_services_addresses_postcodes.php +# generated from https://data.rtr.at/api/v1/tables/plz.json +# version 53882 published 2025-12-03T14:17:00+01:00 1010 location="Wien" region="Wien" 1020 location="Wien" region="Wien" 1030 location="Wien" region="Wien" @@ -247,6 +247,7 @@ 2551 location="Enzesfeld-Lindabrunn" region="Niederösterreich" 2552 location="Hirtenberg" region="Niederösterreich" 2560 location="Berndorf" region="Niederösterreich" +2561 location="Hernstein" region="Niederösterreich" 2563 location="Pottenstein" region="Niederösterreich" 2564 location="Weissenbach an der Triesting" region="Niederösterreich" 2565 location="Neuhaus" region="Niederösterreich" @@ -296,6 +297,7 @@ 2811 location="Wiesmath" region="Niederösterreich" 2812 location="Hollenthon" region="Niederösterreich" 2813 location="Lichtenegg" region="Niederösterreich" +2820 location="Walpersbach" region="Niederösterreich" 2821 location="Lanzenkirchen" region="Niederösterreich" 2822 location="Bad Erlach" region="Niederösterreich" 2823 location="Pitten" region="Niederösterreich" @@ -460,9 +462,11 @@ 3384 location="Groß Sierning" region="Niederösterreich" 3385 location="Prinzersdorf" region="Niederösterreich" 3386 location="Hafnerbach" region="Niederösterreich" +3388 location="Markersdorf-Haindorf" region="Niederösterreich" 3390 location="Melk" region="Niederösterreich" -3392 location="Schönbühel an der Donau" region="Niederösterreich" +3392 location="Dunkelsteinerwald" region="Niederösterreich" 3393 location="Matzleinsdorf" region="Niederösterreich" +3394 location="Schönbühel-Aggsbach" region="Niederösterreich" 3400 location="Klosterneuburg" region="Niederösterreich" 3413 location="Hintersdorf" region="Niederösterreich" 3420 location="Kritzendorf" region="Niederösterreich" @@ -722,6 +726,7 @@ 4210 location="Gallneukirchen" region="Oberösterreich" 4211 location="Alberndorf in der Riedmark" region="Oberösterreich" 4212 location="Neumarkt im Mühlkreis" region="Oberösterreich" +4213 location="Unterweitersdorf" region="Oberösterreich" 4221 location="Steyregg" region="Oberösterreich" 4222 location="St. Georgen an der Gusen" region="Oberösterreich" 4223 location="Katsdorf" region="Oberösterreich" @@ -1040,6 +1045,7 @@ 5121 location="Ostermiething" region="Oberösterreich" 5122 location="Ach" region="Oberösterreich" 5123 location="Überackern" region="Oberösterreich" +5124 location="Haigermoos" region="Oberösterreich" 5131 location="Franking" region="Oberösterreich" 5132 location="Geretsberg" region="Oberösterreich" 5133 location="Gilgenberg am Weilhart" region="Oberösterreich" @@ -1523,6 +1529,7 @@ 7022 location="Schattendorf" region="Burgenland" 7023 location="Zemendorf" region="Burgenland" 7024 location="Hirm" region="Burgenland" +7025 location="Pöttelsdorf" region="Burgenland" 7031 location="Krensdorf" region="Burgenland" 7032 location="Sigleß" region="Burgenland" 7033 location="Pöttsching" region="Burgenland" @@ -1592,6 +1599,7 @@ 7410 location="Loipersdorf-Kitzladen" region="Burgenland" 7411 location="Markt Allhau" region="Burgenland" 7412 location="Wolfau" region="Burgenland" +7420 location="Neustift an der Lafnitz" region="Burgenland" 7421 location="Tauchen-Schaueregg" region="Steiermark" 7422 location="Riedlingsdorf" region="Burgenland" 7423 location="Pinkafeld" region="Burgenland" @@ -1633,8 +1641,13 @@ 7542 location="Gerersdorf bei Güssing" region="Burgenland" 7543 location="Kukmirn" region="Burgenland" 7544 location="Tobaj" region="Burgenland" +7545 location="Neustift bei Güssing" region="Burgenland" +7546 location="Moschendorf" region="Burgenland" +7550 location="Wörterberg" region="Burgenland" 7551 location="Stegersbach" region="Burgenland" 7552 location="Stinatz" region="Burgenland" +7553 location="Bocksdorf" region="Burgenland" +7554 location="Rohr im Burgenland" region="Burgenland" 7561 location="Heiligenkreuz im Lafnitztal" region="Burgenland" 7562 location="Eltendorf" region="Burgenland" 7563 location="Königsdorf" region="Burgenland" @@ -1697,6 +1710,7 @@ 8160 location="Weiz" region="Steiermark" 8162 location="Passail" region="Steiermark" 8163 location="Fladnitz an der Teichalm" region="Steiermark" +8164 location="Gutenberg" region="Steiermark" 8171 location="St. Kathrein am Offenegg" region="Steiermark" 8172 location="Heilbrunn" region="Steiermark" 8181 location="St. Ruprecht an der Raab" region="Steiermark" @@ -1709,6 +1723,7 @@ 8200 location="Gleisdorf" region="Steiermark" 8211 location="Ilztal" region="Steiermark" 8212 location="Pischelsdorf am Kulm" region="Steiermark" +8213 location="Gersdorf an der Feistritz" region="Steiermark" 8221 location="Hirnsdorf" region="Steiermark" 8222 location="St. Johann bei Herberstein" region="Steiermark" 8223 location="Stubenberg am See" region="Steiermark" @@ -1739,7 +1754,7 @@ 8273 location="Ebersdorf" region="Steiermark" 8274 location="Buch" region="Steiermark" 8280 location="Fürstenfeld" region="Steiermark" -8282 location="Loipersdorf bei Fürstenfeld" region="Steiermark" +8282 location="Bad Loipersdorf" region="Steiermark" 8283 location="Bad Blumau" region="Steiermark" 8291 location="Burgau" region="Steiermark" 8292 location="Neudau" region="Steiermark" @@ -1803,7 +1818,6 @@ 8461 location="Ehrenhausen" region="Steiermark" 8462 location="Gamlitz" region="Steiermark" 8463 location="Leutschach" region="Steiermark" -8471 location="Spielfeld" region="Steiermark" 8472 location="Straß in Steiermark" region="Steiermark" 8473 location="Weitersfeld an der Mur" region="Steiermark" 8480 location="Mureck" region="Steiermark" @@ -1837,7 +1851,6 @@ 8562 location="Mooskirchen" region="Steiermark" 8563 location="Ligist" region="Steiermark" 8564 location="Krottendorf-Gaisfeld" region="Steiermark" -8565 location="St. Johann ob Hohenburg" region="Steiermark" 8570 location="Voitsberg" region="Steiermark" 8572 location="Bärnbach" region="Steiermark" 8573 location="Kainach bei Voitsberg" region="Steiermark" diff --git a/stdnum/at/postleitzahl.py b/stdnum/at/postleitzahl.py index feafa843..59c49241 100644 --- a/stdnum/at/postleitzahl.py +++ b/stdnum/at/postleitzahl.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Postleitzahl (Austrian postal code). @@ -45,17 +43,19 @@ InvalidFormat: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number).strip() -def info(number): +def info(number: str) -> dict[str, str]: """Return a dictionary of data about the supplied number. This typically returns the location.""" number = compact(number) @@ -63,7 +63,7 @@ def info(number): return numdb.get('at/postleitzahl').info(number)[0][1] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid postal code.""" number = compact(number) if not isdigits(number): @@ -75,7 +75,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid postal code.""" try: return bool(validate(number)) diff --git a/stdnum/at/tin.py b/stdnum/at/tin.py index 88f0037e..1edb6da3 100644 --- a/stdnum/at/tin.py +++ b/stdnum/at/tin.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . r"""Abgabenkontonummer (Austrian tax identification number). @@ -44,17 +42,19 @@ '59-119/9013' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -./,').strip() -def _min_fa(office): +def _min_fa(office: str) -> str: """Convert the tax office name to something that we can use for comparison without running into encoding issues.""" return ''.join( @@ -62,7 +62,7 @@ def _min_fa(office): if x in 'bcdefghijklmnopqrstvwxyz') -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" number = compact(number) s = sum( @@ -71,7 +71,7 @@ def calc_check_digit(number): return str((10 - s) % 10) -def info(number): +def info(number: str) -> dict[str, str]: """Return a dictionary of data about the supplied number. This typically returns the the tax office and region.""" number = compact(number) @@ -79,7 +79,7 @@ def info(number): return numdb.get('at/fa').info(number[:2])[0][1] -def validate(number, office=None): +def validate(number: str, office: str | None = None) -> str: """Check if the number is a valid tax identification number. This checks the length and formatting. The tax office can be supplied to check that the number was issued in the specified tax office.""" @@ -93,12 +93,12 @@ def validate(number, office=None): i = info(number) if not i: raise InvalidComponent() - if office and _min_fa(i.get('office')) != _min_fa(office): + if office and _min_fa(i.get('office', '')) != _min_fa(office): raise InvalidComponent() return number -def is_valid(number, office=None): +def is_valid(number: str, office: str | None = None) -> bool: """Check if the number is a valid tax identification number. This checks the length, formatting and check digit.""" try: @@ -107,7 +107,7 @@ def is_valid(number, office=None): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '%s-%s/%s' % (number[:2], number[2:5], number[5:]) diff --git a/stdnum/at/uid.py b/stdnum/at/uid.py index 0ed537bb..07983b5b 100644 --- a/stdnum/at/uid.py +++ b/stdnum/at/uid.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """UID (Umsatzsteuer-Identifikationsnummer, Austrian VAT number). @@ -32,12 +30,14 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -./').upper().strip() @@ -46,13 +46,13 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" return str((6 - luhn.checksum(number[1:])) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -65,7 +65,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/at/vnr.py b/stdnum/at/vnr.py index 73745a03..e1a2ee6f 100644 --- a/stdnum/at/vnr.py +++ b/stdnum/at/vnr.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VNR, SVNR, VSNR (Versicherungsnummer, Austrian social security number). @@ -37,24 +35,26 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ') -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The fourth digit in the number is ignored.""" weights = (3, 7, 9, 0, 5, 8, 4, 2, 1, 6) return str(sum(w * int(n) for w, n in zip(weights, number)) % 11) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -67,7 +67,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/au/__init__.py b/stdnum/au/__init__.py index 1713e56b..eea4d7c8 100644 --- a/stdnum/au/__init__.py +++ b/stdnum/au/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Australian numbers.""" +from __future__ import annotations + # provide aliases -from stdnum.au import tfn as vat # noqa: F401 +from stdnum.au import abn as vat # noqa: F401 diff --git a/stdnum/au/abn.py b/stdnum/au/abn.py index a0d47247..e2a863cf 100644 --- a/stdnum/au/abn.py +++ b/stdnum/au/abn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ABN (Australian Business Number). @@ -39,17 +37,19 @@ '51 824 753 556' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits that should be prepended to make the number valid.""" weights = (3, 5, 7, 9, 11, 13, 15, 17, 19) @@ -57,7 +57,7 @@ def calc_check_digits(number): return str(11 + (s - 1) % 89) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ABN. This checks the length, formatting and check digit.""" number = compact(number) @@ -70,7 +70,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ABN.""" try: return bool(validate(number)) @@ -78,7 +78,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[0:2], number[2:5], number[5:8], number[8:])) diff --git a/stdnum/au/acn.py b/stdnum/au/acn.py index 77e62272..9e63c549 100644 --- a/stdnum/au/acn.py +++ b/stdnum/au/acn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ACN (Australian Company Number). @@ -41,22 +39,24 @@ '43002724334' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the checksum.""" return str((sum(int(n) * (i - 8) for i, n in enumerate(number))) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ACN. This checks the length, formatting and check digit.""" number = compact(number) @@ -69,7 +69,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ACN.""" try: return bool(validate(number)) @@ -77,13 +77,13 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[0:3], number[3:6], number[6:])) -def to_abn(number): +def to_abn(number: str) -> str: """Convert the number to an Australian Business Number (ABN).""" from stdnum.au import abn number = compact(number) diff --git a/stdnum/au/tfn.py b/stdnum/au/tfn.py index d515bac2..6fd319bb 100644 --- a/stdnum/au/tfn.py +++ b/stdnum/au/tfn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """TFN (Australian Tax File Number). @@ -42,23 +40,25 @@ '123 456 782' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (1, 4, 3, 7, 5, 8, 6, 9, 10) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid TFN. This checks the length, formatting and check digit.""" number = compact(number) @@ -71,7 +71,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid TFN.""" try: return bool(validate(number)) @@ -79,7 +79,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[0:3], number[3:6], number[6:])) diff --git a/stdnum/az/__init__.py b/stdnum/az/__init__.py new file mode 100644 index 00000000..b7415cf1 --- /dev/null +++ b/stdnum/az/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Azerbaijan numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Azerbaijan numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.az import voen as vat # noqa: F401 diff --git a/stdnum/az/voen.py b/stdnum/az/voen.py new file mode 100644 index 00000000..d8b98a3b --- /dev/null +++ b/stdnum/az/voen.py @@ -0,0 +1,89 @@ +# voen.py - functions for handling Azerbaijan VOEN numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""VÖEN (Vergi ödəyicisinin eyniləşdirmə nömrəsi, Azerbaijan tax number). + +The Vergi ödəyicisinin eyniləşdirmə nömrəsi is issued by the Azerbaijan state +tax authorities to individuals and legal entities. + +This number consists of 10 digits. The first two digits are the code for the +territorial administrative unit. The following six digits are a serial +number. The ninth digit is a check digit. The tenth digit represents the +legal status of a taxpayer: 1 for legal persons and 2 for natural persons. + +More information: + +* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Azerbaijan-TIN.pdf +* https://www.e-taxes.gov.az/ebyn/payerOrVoenChecker.jsp + +>>> validate('140 155 5071') +'1401555071' +>>> validate('140 155 5081') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('1400057424') +Traceback (most recent call last): + ... +InvalidComponent: ... +""" # noqa: E501 + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. + """ + number = clean(number, ' ') + if len(number) == 9: + number = '0' + number + return number + + +def _calc_check_digit(number: str) -> str: + """Calculate the check digit for the VÖEN.""" + weights = [4, 1, 8, 6, 2, 7, 5, 3] + return str(sum(w * int(n) for w, n in zip(weights, number)) % 11) + + +def validate(number: str) -> str: + """Check if the number is a valid Azerbaijan VÖEN number.""" + number = compact(number) + if len(number) != 10: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[-1] not in ('1', '2'): + raise InvalidComponent() + if number[-2:-1] != _calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Azerbaijan VÖEN number.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/be/__init__.py b/stdnum/be/__init__.py index 83af30b9..fb6b3575 100644 --- a/stdnum/be/__init__.py +++ b/stdnum/be/__init__.py @@ -14,11 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Belgian numbers.""" +from __future__ import annotations + # provide businessid as an alias +from stdnum.be import nn as personalid # noqa: F401 from stdnum.be import vat as businessid # noqa: F401 diff --git a/stdnum/be/banks.dat b/stdnum/be/banks.dat index 464f5f6b..fb87c22c 100644 --- a/stdnum/be/banks.dat +++ b/stdnum/be/banks.dat @@ -1,64 +1,60 @@ -# generated from current_codes.xls downloaded from -# https://www.nbb.be/doc/be/be/protocol/current_codes.xls -# version 24/07/2020 -000-000 bic="BPOTBEB1" bank="bpost bank" -001-049 bic="GEBABEBB" bank="BNP Paribas Fortis" -050-099 bic="GKCCBEBB" bank="BELFIUS BANK" -100-101 bic="NBBEBEBB203" bank="Nationale Bank van België" -102-102 bank="Uitwisselingscentrum en Verrekening (U.C.V.)" +# generated from grouped_list_current.xlsx downloaded from +# https://www.nbb.be/doc/be/be/protocol/grouped_list_current.xlsx +# version 01/01/2026. +000-049 bic="GEBABEBB" bank="BNP Paribas Fortis" +050-099 bic="GKCCBEBB" bank="BELFIUS BANQUE" +100-100 bic="NBBEBEBB203" bank="Belgische Nationalbank" +101-101 bic="NBBEBEBBHCC" bank="Belgische Nationalbank (Hauptkasse)" +102-102 bank="Centre d'Echange et de Compensation (C.E.C.)" 103-108 bic="NICABEBB" bank="Crelan" 109-110 bic="CTBKBEBX" bank="Beobank" 111-111 bic="ABERBE22" bank="Bank J. Van Breda & C°" 113-114 bic="CTBKBEBX" bank="Beobank" +115-115 bic="PAUIBE22" bank="HR Pay Solutions" +116-116 bic="ATMNBE32XXX" bank="Atlantic Money NV/SA" 119-124 bic="CTBKBEBX" bank="Beobank" 125-126 bic="CPHBBE75" bank="Banque CPH" 127-127 bic="CTBKBEBX" bank="Beobank" 129-129 bic="CTBKBEBX" bank="Beobank" +130-130 bic="DIGEBEB2" bank="Digiteal SA" 131-131 bic="CTBKBEBX" bank="Beobank" -132-132 bic="BNAGBEBB" bank="Bank Nagelmackers" +132-132 bic="BNAGBEBB" bank="Banque Nagelmackers" 133-134 bic="CTBKBEBX" bank="Beobank" 137-137 bic="GEBABEBB" bank="BNP Paribas Fortis" 140-149 bic="GEBABEBB" bank="BNP Paribas Fortis" 150-150 bic="BCMCBEBB" bank="Bancontact Payconiq Company" 171-171 bic="CPHBBE75" bank="Banque CPH" -172-173 bic="RABOBE23" bank="Coöperatieve Rabobank U.A." 175-175 bank="Systèmes Technologiques d'Echange et de Traitement - STET" -176-176 bic="BSCHBEBBRET" bank="Santander Consumer Bank" -178-179 bic="COBABEBX" bank="Commerzbank" -183-183 bic="BARBBEBB" bank="Bank of Baroda" +176-176 bic="BSCHBEBBRET" bank="Santander Consumer Finance – Succursale en Belgique/Bijkantoor in België" 185-185 bic="BBRUBEBB" bank="ING België" 189-189 bic="SMBCBEBB" bank="Sumitomo Mitsui Banking Corporation (SMBC)" 190-199 bic="CREGBEBB" bank="CBC Banque et Assurances" 200-214 bic="GEBABEBB" bank="BNP Paribas Fortis" -220-298 bic="GEBABEBB" bank="BNP Paribas Fortis" -299-299 bic="BPOTBEB1" bank="bpost bank" -300-399 bic="BBRUBEBB" bank="ING België" +220-299 bic="GEBABEBB" bank="BNP Paribas Fortis" +300-399 bic="BBRUBEBB" bank="ING Belgium" 400-499 bic="KREDBEBB" bank="KBC Bank" -500-500 bic="MTPSBEBB" bank="Moneytrans Payment Services" 501-501 bic="DHBNBEBB" bank="Demir-Halk Bank (Nederland) (DHB)" -504-504 bic="PANXBEB1" bank="PAY-NXT" +504-504 bic="PANXBEB1" bank="Unifiedpost Payments" 507-507 bic="DIERBE21" bank="Dierickx, Leys & Cie Effectenbank" -508-508 bic="PARBBEBZMDC" bank="BNP Paribas Securities Services" +508-508 bic="PARBBEBZMDC" bank="BNP Paribas SA, Belgium Branch – Securities Services business" 509-509 bic="ABNABE2AIPC" bank="ABN AMRO Bank N.V." -510-510 bic="VAPEBE22" bank="VAN DE PUT & CO Privaatbankiers" +510-510 bic="VAPEBE22" bank="VAN DE PUT & CO Private Bankers" 512-512 bic="DNIBBE21" bank="NIBC BANK" 513-513 bic="ABNABE2AIPC" bank="ABN AMRO Bank N.V." -514-514 bic="PUILBEBB" bank="Puilaetco Dewaay Private Bankers" +514-514 bic="PUILBEBB" bank="Puilaetco Branch of Quintet Private Bank SA" 515-515 bic="IRVTBEBB" bank="The Bank of New York Mellon NV/SA" 521-521 bic="FVLBBE22" bank="F. van Lanschot Bankiers" 522-522 bic="UTWBBEBB" bank="United Taiwan Bank" -523-523 bic="TRIOBEBB" bank="Triodos Bank" +523-523 bic="TRIOBEBB" bank="Banque Triodos" 524-524 bic="WAFABEBB" bank="Attijariwafa bank Europe" -525-525 bic="FVLBBE2E" bank="F. van Lanschot Bankiers" -530-530 bic="SHIZBEBB" bank="Shizuoka Bank (Europe)" -535-535 bic="FBHLBE22" bank="CREDIT EUROPE BANK NV" +525-525 bic="FVLBBE22" bank="F. van Lanschot Bankiers" 538-538 bank="Hoist Finance AB" 541-541 bic="BKIDBE22" bank="BANK OF INDIA" 546-546 bic="WAFABEBB" bank="Attijariwafa bank Europe" 548-548 bic="LOCYBEBB" bank="Lombard Odier (Europe)" -549-549 bic="CHASBEBX" bank="JP Morgan Chase Bank" -550-560 bic="GKCCBEBB" bank="BELFIUS BANK" -562-569 bic="GKCCBEBB" bank="BELFIUS BANK" +549-549 bic="CHASBEBX" bank="J.P. Morgan SE -Brussels Branch" +550-560 bic="GKCCBEBB" bank="BELFIUS BANQUE" +562-569 bic="GKCCBEBB" bank="BELFIUS BANQUE" 570-579 bic="CITIBEBX" bank="Citibank Europe Plc - Belgium Branch" 581-581 bic="MHCBBEBB" bank="Mizuho Bank Europe N.V. Brussels Branch" 583-583 bic="DEGRBEBB" bank="Banque Degroof Petercam Luxembourg" @@ -66,57 +62,60 @@ 586-586 bic="CFFRBEB1" bank="Crédit Foncier de France" 587-587 bic="BIBLBE21" bank="BinckBank" 588-588 bic="CMCIBEB1BTB" bank="Banque Transatlantique Belgium" -590-594 bic="BSCHBEBB" bank="Santander Consumer Bank" +590-594 bic="BSCHBEBB" bank="Santander Consumer Finance – Succursale en Belgique/Bijkantoor in België" 595-601 bic="CTBKBEBX" bank="Beobank" -605-605 bic="BKCHBEBB" bank="Bank of China (Luxembourg) S.A., Brussels Branch" +603-604 bic="SWNBBEB2" bank="SWAN SAS" +605-605 bic="BKCHBEBB" bank="Bank of China (Europe) SA Brussels Branch" 607-607 bic="ICBKBEBB" bank="Industrial and Commercial Bank of China (Europe)" -609-609 bank="Elavon Financial Services Designated Activity Company" 610-613 bic="DEUTBEBE" bank="Deutsche Bank AG" -624-625 bic="GKCCBEBB" bank="BELFIUS BANK" -630-631 bic="BBRUBEBB" bank="ING België" -634-636 bic="BNAGBEBB" bank="Bank Nagelmackers" -638-638 bic="GKCCBEBB" bank="BELFIUS BANK" +624-625 bic="GKCCBEBB" bank="BELFIUS BANQUE" +630-631 bic="BBRUBEBB" bank="ING Belgium" +634-636 bic="BNAGBEBB" bank="Banque Nagelmackers" +638-638 bic="GKCCBEBB" bank="BELFIUS BANQUE" 640-640 bic="ADIABE22" bank="KBC Bank N.V. Business Center Diamant" 642-642 bic="BBVABEBB" bank="Banco Bilbao Vizcaya Argentaria" -643-643 bic="BMPBBEBB" bank="Aion" +643-643 bic="BMPBBEBB" bank="UniCredit SA/NV" 644-644 bank="FCA Bank S.p.A." 645-645 bic="JVBABE22" bank="Bank J. Van Breda & C°" -646-647 bic="BNAGBEBB" bank="Bank Nagelmackers" -648-648 bic="BMPBBEBBVOD" bank="Aion" -649-649 bank="Caisse d'Epargne et de Prévoyance Hauts de France" +646-647 bic="BNAGBEBB" bank="Banque Nagelmackers" +648-648 bic="BMPBBEBBVOD" bank="UniCredit SA/NV" +649-649 bic="CEPABEB2" bank="Caisse d'Epargne et de Prévoyance Hauts de France" +650-650 bic="REVOBEB2XXX" bank="Revolut Bank UAB Belgian branch" 651-651 bic="KEYTBEBB" bank="Arkéa Direct Bank (nom commercial / commerciële naam: Keytrade Bank)" 652-652 bic="BBRUBEBB" bank="ING België" -653-653 bank="Barclays Bank Ireland Plc Brussels Branch" +653-653 bic="BARCBEBB" bank="Barclays Bank Ireland Plc Brussels Branch" 654-654 bank="Crédit foncier et communal d'Alsace et de Lorraine - Banque" -657-657 bic="GKCCBEBB" bank="BELFIUS BANK" +657-657 bic="GKCCBEBB" bank="BELFIUS BANQUE" 658-658 bic="HABBBEBB" bank="Habib Bank" 663-663 bic="BMEUBEB1" bank="BMCE Euro Services" 664-664 bic="BCDMBEBB" bank="Banque Chaabi du Maroc" -666-666 bank="WORLDLINE NV" +666-666 bank="WORLDLINE SA" 667-667 bic="CMCIBEB1CIC" bank="Crédit Industriel et Commercial - Succursale de Bruxelles" 668-668 bic="SBINBE2X" bank="State Bank of India" -669-669 bank="WORLDLINE NV" +669-669 bank="WORLDLINE SA" 670-670 bank="CNH Industrial Capital EUROPE" 671-671 bic="EURBBE99" bank="Europabank" -672-672 bic="GKCCBEBB" bank="BELFIUS BANK" +672-672 bic="GKCCBEBB" bank="BELFIUS BANQUE" 673-673 bic="BBRUBEBB" bank="ING België" 674-674 bic="ABNABE2AIDJ" bank="ABN AMRO Bank N.V." 675-675 bic="BYBBBEBB" bank="Byblos Bank Europe" 676-676 bic="DEGRBEBB" bank="Bank Degroof Petercam" -677-677 bic="CBPXBE99" bank="Compagnie de Banque Privée Quilvest" +677-677 bic="CBPXBE99" bank="Intesa Sanpaolo Wealth Management" 678-678 bic="DELEBE22" bank="Delen Private Bank" 679-679 bic="PCHQBEBB" bank="bpost" -680-680 bic="GKCCBEBB" bank="BELFIUS BANK" -682-683 bic="GKCCBEBB" bank="BELFIUS BANK" +680-680 bic="GKCCBEBB" bank="BELFIUS BANQUE" +682-683 bic="GKCCBEBB" bank="BELFIUS BANQUE" 684-684 bic="SGABBEB2" bank="Société Générale" -685-686 bic="BOFABE3X" bank="Bank of Amerika Merrill Lynch International DAC - Brussels Branch" +685-686 bic="BOFABE3X" bank="Bank of America Europe DAC - Brussels Branch" 687-687 bic="MGTCBEBE" bank="Euroclear Bank" 688-688 bic="SGABBEB2" bank="Société Générale" +689-689 bic="BOFABE3X" bank="Bank of America Europe DAC - Brussels Branch" 693-693 bic="BOTKBEBX" bank="MUFG Bank (Europe)" 694-694 bic="DEUTBEBE" bank="Deutsche Bank AG" +695-695 bic="MGTCBEBE" bank="Euroclear Bank" 696-696 bic="CRLYBEBB" bank="Crédit Agricole Corporate & Investment Bank" -698-698 bic="NATXBEB1" bank="Natixis Bank" -700-709 bic="AXABBE22" bank="AXA Bank Belgium" +699-699 bic="MGTCBEBE" bank="Euroclear Bank" +700-709 bic="AXABBE22" bank="Crelan" 719-719 bic="ABNABE2AXXX" bank="ABN AMRO Bank N.V." 722-722 bic="ABNABE2AIPC" bank="ABN AMRO Bank N.V." 725-727 bic="KREDBEBB" bank="KBC Bank" @@ -126,75 +125,72 @@ 733-741 bic="KREDBEBB" bank="KBC Bank" 742-742 bic="CREGBEBB" bank="CBC Banque et Assurances" 743-749 bic="KREDBEBB" bank="KBC Bank" -750-774 bic="AXABBE22" bank="AXA Bank Belgium" -775-799 bic="GKCCBEBB" bank="BELFIUS BANK" -800-816 bic="AXABBE22" bank="AXA Bank Belgium" +750-765 bic="AXABBE22" bank="Crelan" +772-774 bic="AXABBE22" bank="Crelan" +775-799 bic="GKCCBEBB" bank="BELFIUS BANQUE" +800-806 bic="AXABBE22" bank="Crelan" 817-817 bic="ISAEBEBB" bank="CACEIS Bank Belgian Branch" 823-823 bic="BLUXBEBB" bank="Banque de Luxembourg" 824-824 bank="ING Bank" 825-826 bic="DEUTBEBE" bank="Deutsche Bank AG" 828-828 bic="BBRUBEBB" bank="ING België" -830-839 bic="GKCCBEBB" bank="BELFIUS BANK" +830-839 bic="GKCCBEBB" bank="BELFIUS BANQUE" 840-840 bic="PRIBBEBB" bank="Edmond de Rothschild (Europe)" -844-844 bic="RABOBE22" bank="Rabobank.be" 845-845 bic="DEGRBEBB" bank="Bank Degroof Petercam" 850-853 bic="NICABEBB" bank="Crelan" 859-860 bic="NICABEBB" bank="Crelan" 862-863 bic="NICABEBB" bank="Crelan" 865-866 bic="NICABEBB" bank="Crelan" 868-868 bic="KREDBEBB" bank="KBC Bank" -871-871 bic="BNAGBEBB" bank="Bank Nagelmackers" +871-871 bic="BNAGBEBB" bank="Banque Nagelmackers" 873-873 bic="PCHQBEBB" bank="bpost" 876-876 bic="MBWMBEBB" bank="MeDirect Bank S.A." -877-879 bic="BNAGBEBB" bank="Bank Nagelmackers" +877-879 bic="BNAGBEBB" bank="Banque Nagelmackers" 880-881 bic="BBRUBEBB" bank="ING België" 883-884 bic="BBRUBEBB" bank="ING België" 887-888 bic="BBRUBEBB" bank="ING België" 890-899 bic="VDSPBE91" bank="vdk bank" +903-905 bic="TRWIBEB1" bank="Wise Europe SA" 906-906 bic="CEKVBE88" bank="Centrale Kredietverlening (C.K.V.)" +907-907 bank="Mollie B.V." 908-908 bic="CEKVBE88" bank="Centrale Kredietverlening (C.K.V.)" 910-910 bic="BBRUBEBB" bank="ING België" -911-911 bic="TUNZBEB1" bank="Ingenico Financial Solutions" -912-912 bank="Hi - Media Porte Monnaie Electronique" +911-911 bic="TUNZBEB1" bank="Worldline Financial Solutions nv/SA" 913-913 bic="EPBFBEBB" bank="EPBF" -914-914 bic="FXBBBEBB" bank="FX4BIZ" -915-915 bic="OONXBEBB" bank="Oonex" +914-914 bic="FXBBBEBB" bank="Ibanfirst" +915-915 bic="OONXBEBB" bank="Equals Money Europe SA" 916-916 bic="GOCFBEB1" bank="GOLD COMMODITIES FOREX (G.C.F.)" 917-917 bank="Buy Way Personal Finance" 920-920 bic="BBRUBEBB" bank="ING België" 922-923 bic="BBRUBEBB" bank="ING België" 924-924 bic="FMMSBEB1" bank="Fimaser" 926-926 bic="EBPBBEB1" bank="Ebury Partners Belgium" -928-928 bic="VPAYBE21" bank="VIVA Payment Services" 929-931 bic="BBRUBEBB" bank="ING België" 934-934 bic="BBRUBEBB" bank="ING België" 936-936 bic="BBRUBEBB" bank="ING België" 939-939 bic="BBRUBEBB" bank="ING België" 940-940 bic="CLIQBEB1" bank="Banque Centrale de Compensation (Clearnet)" 941-941 bic="CVMCBEBB" bank="C A Indosuez Wealth (Europe)" -942-942 bic="PUILBEBB" bank="Puilaetco Dewaay Private Bankers" -943-943 bank="CNH Industrial Financial Services SAS" -944-944 bank="J.P. Morgan Europe Ltd ." -945-945 bic="JPMGBEBB" bank="J.P. Morgan Bank Luxembourg - Brussels Branch" -946-946 bank="J.P. Morgan AG" -948-948 bank="HomeSend" -949-949 bic="HSBCBEBB" bank="HSBC France Belgian Branch" +942-942 bic="PUILBEBB" bank="Puilaetco Branch of Quintet Private Bank SA" +943-943 bank="IC Financial Services SA – Belgian Branch" +945-945 bic="JPMGBEBB" bank="J.P. Morgan SE – Brussels Branch" +948-948 bic="HOMNBEB2" bank="Mastercard Transaction Services (Europe) NV/SA" +949-949 bic="HSBCBEBB" bank="HSBC Continental Europe Belgium" 950-959 bic="CTBKBEBX" bank="Beobank" 960-960 bic="ABNABE2AIPC" bank="ABN AMRO Bank N.V." 961-961 bic="BBRUBEBB" bank="ING België" -963-963 bic="AXABBE22" bank="AXA Bank Belgium" -966-966 bic="NEECBEB2" bank="NewB" -967-967 bic="TRWIBEB1" bank="TransferWise" +963-963 bic="AXABBE22" bank="Crelan" +964-964 bic="FPEBBEB2" bank="FINANCIERE DES PAIEMENTS ELECTRONIQUES SAS - NICKEL BELGIUM" +967-967 bic="TRWIBEB1" bank="Wise Europe SA" 968-968 bic="ENIBBEBB" bank="Banque Eni" -969-969 bic="PUILBEBB" bank="Puilaetco Dewaay Private Bankers" +969-969 bic="PUILBEBB" bank="Puilaetco Branch of Quintet Private Bank SA" 971-971 bic="BBRUBEBB" bank="ING België" -973-973 bic="ARSPBE22" bank="Argenta Spaarbank (ASPA)" +973-973 bic="ARSPBE22" bank="Argenta Banque d'Epargne (ASPA)" 974-974 bic="PESOBEB1" bank="PPS EU SA" -975-975 bic="AXABBE22" bank="AXA Bank Belgium" +975-975 bic="AXABBE22" bank="Crelan" 976-976 bic="BBRUBEBB" bank="ING België" -977-977 bank="Paynovate" -978-980 bic="ARSPBE22" bank="Argenta Spaarbank (ASPA)" +977-977 bic="PAYVBEB2" bank="Paynovate" +978-980 bic="ARSPBE22" bank="Argenta Banque d'Epargne (ASPA)" 981-984 bic="PCHQBEBB" bank="bpost" -985-988 bic="BPOTBEB1" bank="bpost bank" 989-989 bank="bpost" -990-999 bank="Bpost" +990-999 bank="Numéros réservés aux paiements par chèques circulaires et assignations" diff --git a/stdnum/be/bis.py b/stdnum/be/bis.py new file mode 100644 index 00000000..5bc9f660 --- /dev/null +++ b/stdnum/be/bis.py @@ -0,0 +1,128 @@ +# bis.py - functions for handling Belgian BIS numbers +# coding: utf-8 +# +# Copyright (C) 2023 Jeff Horemans +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""BIS (Belgian BIS number). + + +The BIS number (BIS-nummer, Numéro BIS) is a unique identification number +for individuals who are not registered in the National Register, but who +still have a relationship with the Belgian government. +This includes frontier workers, persons who own property in Belgium, +persons with Belgian social security rights but who do not reside in Belgium, etc. + +The number is issued by the Belgian Crossroads Bank for Social Security (Banque +Carrefour de la sécurité sociale, Kruispuntbank voor Sociale Zekerheid) and is +constructed much in the same way as the Belgian National Number, i.e. consisting of +11 digits, encoding the person's date of birth and gender, a checksum, etc. +Other than with the national number though, the month of birth of the BIS number +is increased by 20 or 40, depending on whether the sex of the person was known +at the time or not. + + +More information: + +* https://sma-help.bosa.belgium.be/en/faq/where-can-i-find-my-bis-number#7326 +* https://www.socialsecurity.be/site_nl/employer/applics/belgianidpro/index.htm +* https://nl.wikipedia.org/wiki/Rijksregisternummer +* https://fr.wikipedia.org/wiki/Numéro_de_registre_national + +>>> compact('98.47.28-997.65') +'98472899765' +>>> validate('98 47 28 997 65') +'98472899765' +>>> validate('01 49 07 001 85') +'01490700185' +>>> validate('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('98472899765') +'98.47.28-997.65' +>>> get_birth_date('98.47.28-997.65') +datetime.date(1998, 7, 28) +>>> get_birth_year('98.47.28-997.65') +1998 +>>> get_birth_month('98.47.28-997.65') +7 +>>> get_gender('98.47.28-997.65') +'M' +""" + +from __future__ import annotations + +import datetime + +from stdnum.be import nn +from stdnum.exceptions import * +from stdnum.util import isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the number + of any valid separators and removes surrounding whitespace.""" + return nn.compact(number) + + +def validate(number: str) -> str: + """Check if the number is a valid BIS Number.""" + number = compact(number) + if not isdigits(number) or int(number) <= 0: + raise InvalidFormat() + if len(number) != 11: + raise InvalidLength() + nn._get_birth_date_parts(number) + if not 20 <= int(number[2:4]) <= 32 and not 40 <= int(number[2:4]) <= 52: + raise InvalidComponent('Month must be in 20..32 or 40..52 range') + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid BIS Number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return nn.format(number) + + +def get_birth_year(number: str) -> int | None: + """Return the year of the birth date.""" + return nn.get_birth_year(number) + + +def get_birth_month(number: str) -> int | None: + """Return the month of the birth date.""" + return nn.get_birth_month(number) + + +def get_birth_date(number: str) -> datetime.date | None: + """Return the date of birth.""" + return nn.get_birth_date(number) + + +def get_gender(number: str) -> str | None: + """Get the person's gender ('M' or 'F'), which for BIS + numbers is only known if the month was incremented with 40.""" + number = compact(number) + if int(number[2:4]) >= 40: + return nn.get_gender(number) + return None diff --git a/stdnum/be/eid.py b/stdnum/be/eid.py new file mode 100644 index 00000000..8c553ea0 --- /dev/null +++ b/stdnum/be/eid.py @@ -0,0 +1,99 @@ +# eid.py - functions for handling Belgian Identity Card Number. +# coding: utf-8 +# +# Copyright (C) 2024 Jeff Horemans +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""eID Number (Belgian electronic Identity Card Number). + +The eID is an electronic identity card (with chip), issued to Belgian citizens +over 12 years old. +The card number applies only to the card in question and should not be confused +with the Belgian National Number (Rijksregisternummer, Numéro National), +that is also included on the card. + +The card number consists of 12 digits in the form xxx-xxxxxxx-yy where +yy is a check digit calculated as the remainder of dividing xxxxxxxxxx by 97. +If the remainder is 0, the check number is set to 97. + +More information: + +* https://www.ibz.rrn.fgov.be/nl/identiteitsdocumenten/eid/ +* https://eid.belgium.be/en/what-eid +* https://www.ibz.rrn.fgov.be/fileadmin/user_upload/nl/rr/instructies/IT-lijst/IT195_Identiteitsbewijs_20240115.pdf + +>>> compact('000-0011032-71') +'000001103271' +>>> compact('591-1917064-58') +'591191706458' +>>> validate('000-0011032-71') +'000001103271' +>>> validate('591-1917064-58') +'591191706458' +>>> validate('591-2010999-97') +'591201099997' +>>> validate('000-0011032-25') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('591191706458') +'591-1917064-58' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -./').upper().strip() + + +def _calc_check_digits(number: str) -> str: + """Calculate the expected check digits for the number, calculated as + the remainder of dividing the first 10 digits of the number by 97. + If the remainder is 0, the check number is set to 97. + """ + return '%02d' % ((int(number[:10]) % 97) or 97) + + +def validate(number: str) -> str: + """Check if the number is a valid ID card number. + This checks the length, formatting and check digit.""" + number = compact(number) + if not isdigits(number) or int(number) <= 0: + raise InvalidFormat() + if len(number) != 12: + raise InvalidLength() + if _calc_check_digits(number[:-2]) != number[-2:]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Belgian ID Card number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '-'.join((number[:3], number[3:10], number[10:])) diff --git a/stdnum/be/iban.py b/stdnum/be/iban.py index ca740db3..906b7ffb 100644 --- a/stdnum/be/iban.py +++ b/stdnum/be/iban.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Belgian IBAN (International Bank Account Number). @@ -47,6 +45,8 @@ True """ +from __future__ import annotations + from stdnum import iban from stdnum.exceptions import * @@ -58,13 +58,13 @@ format = iban.format -def _calc_check_digits(number): +def _calc_check_digits(number: str) -> str: """Calculate the check digits over the provided part of the number.""" check = int(number) % 97 return '%02d' % (check or 97) -def info(number): +def info(number: str) -> dict[str, str]: """Return a dictionary of data about the supplied number. This typically returns the name of the bank and a BIC if it is valid.""" number = compact(number) @@ -72,14 +72,12 @@ def info(number): return numdb.get('be/banks').info(number[4:7])[0][1] -def to_bic(number): +def to_bic(number: str) -> str | None: """Return the BIC for the bank that this number refers to.""" - bic = info(number).get('bic') - if bic: - return str(bic) + return info(number).get('bic') -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid Belgian IBAN.""" number = iban.validate(number, check_country=False) if not number.startswith('BE'): @@ -91,7 +89,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid Belgian IBAN.""" try: return bool(validate(number)) diff --git a/stdnum/be/nn.py b/stdnum/be/nn.py new file mode 100644 index 00000000..39eafb93 --- /dev/null +++ b/stdnum/be/nn.py @@ -0,0 +1,195 @@ +# nn.py - function for handling Belgian national numbers +# coding: utf-8 +# +# Copyright (C) 2021-2022 Cédric Krier +# Copyright (C) 2023 Jeff Horemans +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""NN, NISS, RRN (Belgian national number). + +The national registration number (Rijksregisternummer, Numéro de registre +national, Nationalregisternummer) is a unique identification number of +natural persons who are registered in Belgium. + +The number consists of 11 digits and includes the person's date of birth and +gender. It encodes the date of birth in the first 6 digits in the format +YYMMDD. The following 3 digits represent a counter of people born on the same +date, seperated by sex (odd for male and even for females respectively). The +final 2 digits form a check number based on the 9 preceding digits. + +Special cases include: + +* Counter exhaustion: + When the even or uneven day counter range for a specific date of birth runs + out, (e.g. from 001 tot 997 for males), the first 2 digits will represent + the birth year as normal, while the next 4 digits (birth month and day) are + taken to be zeroes. The remaining 3 digits still represent a day counter + which will then restart. + When those ranges would run out also, the sixth digit is incremented with 1 + and the day counter will restart again. + +* Incomplete date of birth + When the exact month or day of the birth date were not known at the time of + assignment, incomplete parts are taken to be zeroes, similarly as with + counter exhaustion. + Note that a month with zeroes can thus both mean the date of birth was not + exactly known, or the person was born on a day were at least 500 persons of + the same gender got a number assigned already. + +* Unknown date of birth + When no part of the date of birth was known, a fictitious date is used + depending on the century (i.e. 1900/00/01 or 2000/00/01). + +More information: + +* https://nl.wikipedia.org/wiki/Rijksregisternummer +* https://fr.wikipedia.org/wiki/Numéro_de_registre_national +* https://www.ibz.rrn.fgov.be/fileadmin/user_upload/nl/rr/instructies/IT-lijst/IT000_Rijksregisternummer.pdf + +>>> compact('85.07.30-033 28') +'85073003328' +>>> validate('85 07 30 033 28') +'85073003328' +>>> validate('17 07 30 033 84') +'17073003384' +>>> validate('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('85073003328') +'85.07.30-033.28' +>>> get_birth_date('85.07.30-033 28') +datetime.date(1985, 7, 30) +>>> get_birth_year('85.07.30-033 28') +1985 +>>> get_birth_month('85.07.30-033 28') +7 +>>> get_gender('85.07.30-033 28') +'M' +""" + +from __future__ import annotations + +import calendar +import datetime + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the number + of any valid separators and removes surrounding whitespace.""" + number = clean(number, ' -.').strip() + return number + + +def _checksum(number: str) -> int: + """Calculate the checksum and return the detected century.""" + numbers = [number] + if int(number[:2]) + 2000 <= datetime.date.today().year: + numbers.append('2' + number) + for century, n in zip((1900, 2000), numbers): + if 97 - (int(n[:-2]) % 97) == int(n[-2:]): + return century + raise InvalidChecksum() + + +def _get_birth_date_parts(number: str) -> tuple[int | None, int | None, int | None]: + """Check if the number's encoded birth date is valid, and return the contained + birth year, month and day of month, accounting for unknown values.""" + century = _checksum(number) + + # If the fictitious dates 1900/00/01 or 2000/00/01 are detected, + # the birth date (including the year) was not known when the number + # was issued. + if number[:6] in ('000001', '002001', '004001'): + return (None, None, None) + + year = int(number[:2]) + century + month = int(number[2:4]) % 20 + day = int(number[4:6]) + # When the month is zero, it was either unknown when the number was issued, + # or the day counter ran out. In both cases, the month and day are not known + # reliably. + if month == 0: + return (year, None, None) + + # Verify range of month + if month > 12: + raise InvalidComponent('Month must be in 1..12') + + # Case when only the day of the birth date is unknown + if day == 0 or day > calendar.monthrange(year, month)[1]: + return (year, month, None) + + return (year, month, day) + + +def validate(number: str) -> str: + """Check if the number is a valid National Number.""" + number = compact(number) + if not isdigits(number) or int(number) <= 0: + raise InvalidFormat() + if len(number) != 11: + raise InvalidLength() + _get_birth_date_parts(number) + if not 0 <= int(number[2:4]) <= 12: + raise InvalidComponent('Month must be in 1..12') + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid National Number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return ( + '.'.join(number[i:i + 2] for i in range(0, 6, 2)) + + '-' + '.'.join([number[6:9], number[9:11]])) + + +def get_birth_year(number: str) -> int | None: + """Return the year of the birth date.""" + year, month, day = _get_birth_date_parts(compact(number)) + return year + + +def get_birth_month(number: str) -> int | None: + """Return the month of the birth date.""" + year, month, day = _get_birth_date_parts(compact(number)) + return month + + +def get_birth_date(number: str) -> datetime.date | None: + """Return the date of birth.""" + year, month, day = _get_birth_date_parts(compact(number)) + if year and month and day: + return datetime.date(year, month, day) + return None + + +def get_gender(number: str) -> str: + """Get the person's gender ('M' or 'F').""" + number = compact(number) + if int(number[6:9]) % 2: + return 'M' + return 'F' diff --git a/stdnum/be/ogm_vcs.py b/stdnum/be/ogm_vcs.py new file mode 100644 index 00000000..31a1dc22 --- /dev/null +++ b/stdnum/be/ogm_vcs.py @@ -0,0 +1,79 @@ +# ogm_vcs.py - functions for handling Belgian OGM-VCS +# coding: utf-8 +# +# Copyright (C) 2025 Cédric Krier +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Belgian OGM-VCS. + +The OGM-VCS is used in bank transfer as structured communication. + +* https://febelfin.be/en/publications/2023/febelfin-banking-standards-for-online-banking + +>>> validate('+++010/8068/17183+++') +'010806817183' +>>> validate('010/8068/17180') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('010806817183') +'010/8068/17183' +>>> calc_check_digits('0108068171') +'83' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the number + of any invalid separators and removes surrounding whitespace.""" + return clean(number, ' +/').strip() + + +def calc_check_digits(number: str) -> str: + """Calculate the check digit that should be added.""" + number = compact(number) + return '%02d' % ((int(number[:10]) % 97) or 97) + + +def validate(number: str) -> str: + """Check if the number is a valid OGM-VCS.""" + number = compact(number) + if not isdigits(number) or int(number) <= 0: + raise InvalidFormat() + if len(number) != 12: + raise InvalidLength() + if calc_check_digits(number) != number[-2:]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid VAT number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Format the number provided for output.""" + number = compact(number) + number = number.rjust(12, '0') + return f'{number[:3]}/{number[3:7]}/{number[7:]}' diff --git a/stdnum/be/ssn.py b/stdnum/be/ssn.py new file mode 100644 index 00000000..0166d819 --- /dev/null +++ b/stdnum/be/ssn.py @@ -0,0 +1,159 @@ +# coding: utf-8 +# ssn.py - function for handling Belgian social security numbers +# +# Copyright (C) 2023-2024 Jeff Horemans +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""SSN, INSZ, NISS (Belgian social security number). + +The Belgian social security identification number, also known as the INSZ +number (Identificatienummer van de sociale zekerheid), NISS number (Numéro +d'identification de la sécurité sociale) or ENSS number (Erkennungsnummer +der sozialen Sicherheit), is the unique identification number of a person +working in or covered for social benefits in Belgium. + +For Belgian residents, the number is identical to their Belgian National +Number (Rijksregisternummer, Numéro National). +For non-residents, the number is identical to their Belgian BIS number. + +Both numbers consists of 11 digits and encode a person's date of birth and +gender. It encodes the date of birth in the first 6 digits in the format +YYMMDD. The following 3 digits represent a counter of people born on the same +date, separated by sex (odd for male and even for females respectively). The +final 2 digits form a check number based on the 9 preceding digits. + + +More information: + +* https://www.socialsecurity.be/site_nl/employer/applics/belgianidpro/index.htm +* https://overheid.vlaanderen.be/personeel/regelgeving/insz-nummer +* https://www.ksz-bcss.fgov.be/nl/project/rijksregisterksz-registers + +>>> compact('85.07.30-033 28') +'85073003328' +>>> compact('98.47.28-997.65') +'98472899765' +>>> validate('85 07 30 033 28') +'85073003328' +>>> validate('98 47 28 997 65') +'98472899765' +>>> validate('17 07 30 033 84') +'17073003384' +>>> validate('01 49 07 001 85') +'01490700185' +>>> validate('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... + +>>> guess_type('85.07.30-033 28') +'nn' +>>> guess_type('98.47.28-997.65') +'bis' + +>>> format('85073003328') +'85.07.30-033.28' +>>> get_birth_date('85.07.30-033 28') +datetime.date(1985, 7, 30) +>>> get_birth_year('85.07.30-033 28') +1985 +>>> get_birth_month('85.07.30-033 28') +7 +>>> get_gender('85.07.30-033 28') +'M' + +>>> format('98472899765') +'98.47.28-997.65' +>>> get_birth_date('98.47.28-997.65') +datetime.date(1998, 7, 28) +>>> get_birth_year('98.47.28-997.65') +1998 +>>> get_birth_month('98.47.28-997.65') +7 +>>> get_gender('98.47.28-997.65') +'M' + +""" + +from __future__ import annotations + +import datetime + +from stdnum.be import bis, nn +from stdnum.exceptions import * + + +_ssn_modules = (nn, bis) + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return nn.compact(number) + + +def validate(number: str) -> str: + """Check if the number is a valid Belgian SSN. This searches for + the proper sub-type and validates using that.""" + try: + return bis.validate(number) + except InvalidComponent: + # Only try NN validation in case of an invalid component, + # other validation errors are shared between BIS and NN + return nn.validate(number) + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Belgian SSN number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def guess_type(number: str) -> str | None: + """Return the Belgian SSN type for which this number is valid.""" + for mod in _ssn_modules: + if mod.is_valid(number): + return mod.__name__.rsplit('.', 1)[-1] + return None + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return nn.format(number) + + +def get_birth_year(number: str) -> int | None: + """Return the year of the birth date.""" + return nn.get_birth_year(number) + + +def get_birth_month(number: str) -> int | None: + """Return the month of the birth date.""" + return nn.get_birth_month(number) + + +def get_birth_date(number: str) -> datetime.date | None: + """Return the date of birth.""" + return nn.get_birth_date(number) + + +def get_gender(number: str) -> str | None: + """Get the person's gender ('M' or 'F').""" + for mod in _ssn_modules: + if mod.is_valid(number): + return mod.get_gender(number) # type: ignore[no-any-return] + return None diff --git a/stdnum/be/vat.py b/stdnum/be/vat.py index e7bbfb93..f46a30ce 100644 --- a/stdnum/be/vat.py +++ b/stdnum/be/vat.py @@ -1,6 +1,6 @@ # vat.py - functions for handling Belgian VAT numbers # -# Copyright (C) 2012-2016 Arthur de Jong +# Copyright (C) 2012-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """BTW, TVA, NWSt, ondernemingsnummer (Belgian enterprise number). @@ -35,11 +33,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -./').upper().strip() @@ -52,25 +52,27 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" return (int(number[:-2]) + int(number[-2:])) % 97 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) - if not isdigits(number): + if not isdigits(number) or int(number) <= 0: raise InvalidFormat() if len(number) != 10: raise InvalidLength() + if not number[0] in '01': + raise InvalidComponent() if checksum(number) != 0: raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/bg/__init__.py b/stdnum/bg/__init__.py index ca12a417..e89c2e7d 100644 --- a/stdnum/bg/__init__.py +++ b/stdnum/bg/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Bulgarian numbers.""" diff --git a/stdnum/bg/egn.py b/stdnum/bg/egn.py index 9591182b..8bcecdb5 100644 --- a/stdnum/bg/egn.py +++ b/stdnum/bg/egn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """EGN (ЕГН, Единен граждански номер, Bulgarian personal identity codes). @@ -41,26 +39,28 @@ InvalidComponent: ... """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -.').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" weights = (2, 4, 8, 5, 10, 9, 7, 3, 6) return str(sum(w * int(n) for w, n in zip(weights, number)) % 11 % 10) -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) year = int(number[0:2]) + 1900 @@ -78,7 +78,7 @@ def get_birth_date(number): raise InvalidComponent() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid national identification number. This checks the length, formatting, embedded date and check digit.""" number = compact(number) @@ -95,7 +95,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid national identification number.""" try: return bool(validate(number)) diff --git a/stdnum/bg/pnf.py b/stdnum/bg/pnf.py index 9486371e..5fa0f1f6 100644 --- a/stdnum/bg/pnf.py +++ b/stdnum/bg/pnf.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PNF (ЛНЧ, Личен номер на чужденец, Bulgarian number of a foreigner). @@ -35,24 +33,26 @@ InvalidFormat: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -.').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" weights = (21, 19, 17, 13, 11, 9, 7, 3, 1) return str(sum(w * int(n) for w, n in zip(weights, number)) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid national identification number. This checks the length, formatting, embedded date and check digit.""" number = compact(number) @@ -65,7 +65,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid national identification number.""" try: return bool(validate(number)) diff --git a/stdnum/bg/vat.py b/stdnum/bg/vat.py index c3717c73..1f45198e 100644 --- a/stdnum/bg/vat.py +++ b/stdnum/bg/vat.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VAT (Идентификационен номер по ДДС, Bulgarian VAT number). @@ -34,12 +32,14 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.bg import egn, pnf from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.').upper().strip() @@ -48,7 +48,7 @@ def compact(number): return number -def calc_check_digit_legal(number): +def calc_check_digit_legal(number: str) -> str: """Calculate the check digit for legal entities. The number passed should not have the check digit included.""" check = sum((i + 1) * int(n) for i, n in enumerate(number)) % 11 @@ -57,14 +57,14 @@ def calc_check_digit_legal(number): return str(check % 10) -def calc_check_digit_other(number): +def calc_check_digit_other(number: str) -> str: """Calculate the check digit for others. The number passed should not have the check digit included.""" weights = (4, 3, 2, 7, 6, 5, 4, 3, 2) return str((11 - sum(w * int(n) for w, n in zip(weights, number))) % 11) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -84,7 +84,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/bic.py b/stdnum/bic.py index a4f2a500..7f4b69f4 100644 --- a/stdnum/bic.py +++ b/stdnum/bic.py @@ -1,7 +1,7 @@ # bic.py - functions for handling ISO 9362 Business identifier codes # # Copyright (C) 2015 Lifealike Ltd -# Copyright (C) 2017-2018 Arthur de Jong +# Copyright (C) 2017-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """BIC (ISO 9362 Business identifier codes). @@ -28,6 +26,10 @@ and a 2 character location code, optionally followed by a three character branch code. +More information: + +* https://en.wikipedia.org/wiki/ISO_9362 + >>> validate('AGRIFRPP882') 'AGRIFRPP882' >>> validate('ABNA BE 2A') @@ -47,22 +49,52 @@ """ +from __future__ import annotations + import re from stdnum.exceptions import * from stdnum.util import clean -_bic_re = re.compile(r'^[A-Z]{6}[0-9A-Z]{2}([0-9A-Z]{3})?$') - - -def compact(number): +_bic_re = re.compile(r'^[A-Z]{4}(?P[A-Z]{2})[0-9A-Z]{2}([0-9A-Z]{3})?$') + + +# Valid BIC country codes are ISO 3166-1 alpha-2 with the addition of +# XK for the Republic of Kosovo +# It seems that some of the countries included here don't currently have +# any banks with a BIC code (e.g. Antarctica, Iran, Myanmar) +_country_codes = { + 'AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', + 'AW', 'AX', 'AZ', 'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', + 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS', 'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', + 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN', 'CO', 'CR', 'CU', 'CV', + 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE', 'EG', + 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', + 'GE', 'GF', 'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', + 'GU', 'GW', 'GY', 'HK', 'HM', 'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', + 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM', 'JO', 'JP', 'KE', 'KG', 'KH', + 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC', 'LI', 'LK', + 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', + 'MK', 'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', + 'MX', 'MY', 'MZ', 'NA', 'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', + 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG', 'PH', 'PK', 'PL', 'PM', 'PN', 'PR', + 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW', 'SA', 'SB', 'SC', + 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS', + 'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', + 'TM', 'TN', 'TO', 'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', + 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'XK', 'YE', 'YT', + 'ZA', 'ZM', 'ZW', +} + + +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any surrounding whitespace.""" return clean(number, ' -').strip().upper() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid routing number. This checks the length and characters in each position.""" number = compact(number) @@ -71,10 +103,12 @@ def validate(number): match = _bic_re.search(number) if not match: raise InvalidFormat() + if match.group('country_code') not in _country_codes: + raise InvalidComponent() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid BIC.""" try: return bool(validate(number)) @@ -82,6 +116,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/bitcoin.py b/stdnum/bitcoin.py index 9e855127..4cf2bd90 100644 --- a/stdnum/bitcoin.py +++ b/stdnum/bitcoin.py @@ -13,14 +13,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Bitcoin address. A Bitcoin address is an identifier that is used as destination in a Bitcoin -transaction. It is based on a hash of the public portion of a keypair. +transaction. It is based on a hash of the public portion of a key pair. There are currently three address formats in use: @@ -42,15 +40,18 @@ InvalidChecksum: ... """ +from __future__ import annotations + import hashlib import struct +from collections.abc import Iterable from functools import reduce from stdnum.exceptions import * from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' ').strip() @@ -63,7 +64,7 @@ def compact(number): _base58_alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' -def b58decode(s): +def b58decode(s: str) -> bytes: """Decode a Base58 encoded string to a bytestring.""" value = reduce(lambda a, c: a * 58 + _base58_alphabet.index(c), s, 0) result = b'' @@ -84,18 +85,18 @@ def b58decode(s): (1 << 3, 0x3d4233dd), (1 << 4, 0x2a1462b3)) -def bech32_checksum(values): +def bech32_checksum(values: Iterable[int]) -> int: """Calculate the Bech32 checksum.""" chk = 1 for value in values: top = chk >> 25 chk = (chk & 0x1ffffff) << 5 | value - for t, v in _bech32_generator: - chk ^= v if top & t else 0 + for test, val in _bech32_generator: + chk ^= val if top & test else 0 return chk -def b32decode(data): +def b32decode(data: Iterable[int]) -> bytes: """Decode a list of Base32 values to a bytestring.""" acc, bits = 0, 0 result = b'' @@ -110,12 +111,12 @@ def b32decode(data): return result -def _expand_hrp(hrp): +def _expand_hrp(hrp: str) -> list[int]: """Convert the human-readable part to format for checksum calculation.""" return [ord(c) >> 5 for c in hrp] + [0] + [ord(c) & 31 for c in hrp] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length and check digit.""" number = compact(number) @@ -150,7 +151,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length and check digit.""" try: diff --git a/stdnum/br/__init__.py b/stdnum/br/__init__.py index 3b2d22fa..2b87a56d 100644 --- a/stdnum/br/__init__.py +++ b/stdnum/br/__init__.py @@ -14,9 +14,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Brazilian numbers.""" + +from __future__ import annotations + from stdnum.br import cnpj as vat # noqa: F401 diff --git a/stdnum/br/cnpj.py b/stdnum/br/cnpj.py index e2fbcdbe..27ed419e 100644 --- a/stdnum/br/cnpj.py +++ b/stdnum/br/cnpj.py @@ -1,7 +1,7 @@ # cnpj.py - functions for handling CNPJ numbers # coding: utf-8 # -# Copyright (C) 2015 Arthur de Jong +# Copyright (C) 2015-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,18 +14,18 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CNPJ (Cadastro Nacional da Pessoa Jurídica, Brazilian company identifier). -Numbers from the national register of legal entities have 14 digits. The -first 8 digits identify the company, the following 4 digits identify a +Numbers from the national register of legal entities have 14 alphanumeric digits. +The first 8 digits identify the company, the following 4 digits identify a business unit and the last 2 digits are check digits. >>> validate('16.727.230/0001-97') '16727230000197' +>>> validate('12. ABC.345 /01DE–35') # new format from July 2026 onwards +'12ABC34501DE35' >>> validate('16.727.230.0001-98') Traceback (most recent call last): ... @@ -38,31 +38,41 @@ '16.727.230/0001-97' """ +from __future__ import annotations + +import re + from stdnum.exceptions import * -from stdnum.util import clean, isdigits +from stdnum.util import clean + +# Minimal regex of valid characters +_cnpj_re = re.compile(r'^[\dA-Z]+$') -def compact(number): + +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" - return clean(number, ' -./').strip() + return clean(number, ' -./').strip().upper() -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the number.""" - d1 = (11 - sum(((3 - i) % 8 + 2) * int(n) - for i, n in enumerate(number[:12]))) % 11 % 10 - d2 = (11 - sum(((4 - i) % 8 + 2) * int(n) - for i, n in enumerate(number[:12])) - - 2 * d1) % 11 % 10 - return '%d%d' % (d1, d2) + number = compact(number) + values = [ord(n) - 48 for n in number[:12]] + weights = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] + d1 = (11 - sum(w * v for w, v in zip(weights, values))) % 11 % 10 + values.append(d1) + weights = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] + d2 = (11 - sum(w * v for w, v in zip(weights, values))) % 11 % 10 + return f'{d1}{d2}' -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid CNPJ. This checks the length and whether the check digits are correct.""" number = compact(number) - if not isdigits(number) or int(number) <= 0: + if not _cnpj_re.match(number) or number.startswith('000000000000'): raise InvalidFormat() if len(number) != 14: raise InvalidLength() @@ -71,7 +81,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid CNPJ.""" try: return bool(validate(number)) @@ -79,7 +89,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return (number[0:2] + '.' + number[2:5] + '.' + number[5:8] + '/' + diff --git a/stdnum/br/cpf.py b/stdnum/br/cpf.py index d0e5dbb8..9dc06610 100644 --- a/stdnum/br/cpf.py +++ b/stdnum/br/cpf.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CPF (Cadastro de Pessoas Físicas, Brazilian national identifier). @@ -42,17 +40,19 @@ '231.002.999-00' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -.').strip() -def _calc_check_digits(number): +def _calc_check_digits(number: str) -> str: """Calculate the check digits for the number.""" d1 = sum((10 - i) * int(number[i]) for i in range(9)) d1 = (11 - d1) % 11 % 10 @@ -61,7 +61,7 @@ def _calc_check_digits(number): return '%d%d' % (d1, d2) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid CPF. This checks the length and whether the check digit is correct.""" number = compact(number) @@ -74,7 +74,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid CPF.""" try: return bool(validate(number)) @@ -82,7 +82,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:3] + '.' + number[3:6] + '.' + number[6:-2] + '-' + number[-2:] diff --git a/stdnum/by/__init__.py b/stdnum/by/__init__.py index 893f3864..bcfcf006 100644 --- a/stdnum/by/__init__.py +++ b/stdnum/by/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Belarusian numbers.""" +from __future__ import annotations + # provide aliases from stdnum.by import unp as vat # noqa: F401 diff --git a/stdnum/by/portal.nalog.gov.by.crt b/stdnum/by/portal.nalog.gov.by.crt deleted file mode 100644 index edb4954e..00000000 --- a/stdnum/by/portal.nalog.gov.by.crt +++ /dev/null @@ -1,47 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow -SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT -GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF -q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 -SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 -Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA -a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj -/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T -AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG -CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv -bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k -c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw -VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC -ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz -MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu -Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF -AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo -uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ -wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu -X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG -PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 -KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow -PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD -Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O -rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq -OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b -xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw -7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD -aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV -HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG -SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 -ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr -AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz -R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 -JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo -Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- diff --git a/stdnum/by/unp.py b/stdnum/by/unp.py index 14b7a0ec..f17cc967 100644 --- a/stdnum/by/unp.py +++ b/stdnum/by/unp.py @@ -1,7 +1,7 @@ # unp.py - functions for handling Belarusian UNP numbers # coding: utf-8 # -# Copyright (C) 2020 Arthur de Jong +# Copyright (C) 2020-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """УНП, UNP (Учетный номер плательщика, the Belarus VAT number). @@ -41,32 +39,31 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * -from stdnum.util import clean, isdigits, to_unicode +from stdnum.util import clean, isdigits # Mapping of Cyrillic letters to Latin letters _cyrillic_to_latin = dict(zip( - u'АВЕКМНОРСТ', - u'ABEKMHOPCT', + 'АВЕКМНОРСТ', + 'ABEKMHOPCT', )) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' ').upper().strip() - for prefix in ('УНП', u'УНП', 'UNP', u'UNP'): - if type(number) == type(prefix) and number.startswith(prefix): + for prefix in ('УНП', 'UNP'): + if number.startswith(prefix): number = number[len(prefix):] # Replace Cyrillic letters with Latin letters - cleaned = ''.join(_cyrillic_to_latin.get(x, x) for x in to_unicode(number)) - if type(cleaned) != type(number): # pragma: no cover (Python2 only) - cleaned = cleaned.encode('utf-8') - return cleaned + return ''.join(_cyrillic_to_latin.get(x, x) for x in number) -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number.""" number = compact(number) alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -79,7 +76,7 @@ def calc_check_digit(number): return str(c) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid number. This checks the length, formatting and check digit.""" number = compact(number) @@ -96,7 +93,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid number.""" try: return bool(validate(number)) @@ -104,19 +101,27 @@ def is_valid(number): return False -def check_nalog(number, timeout=30): # pragma: no cover (not part of normal test suite) +def check_nalog( + number: str, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, str | None] | None: # pragma: no cover (not part of normal test suite) """Retrieve registration information from the portal.nalog.gov.by web site. + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. + This basically returns the JSON response from the web service as a dict. Will return ``None`` if the number is invalid or unknown. """ # this function isn't automatically tested because it would require # network access for the tests and unnecessarily load the web service - import requests - from pkg_resources import resource_filename # Since the nalog.gov.by web site currently provides an incomplete # certificate chain, we provide our own. - certificate = resource_filename(__name__, 'portal.nalog.gov.by.crt') + import requests response = requests.get( 'https://www.portal.nalog.gov.by/grp/getData', params={ @@ -124,6 +129,7 @@ def check_nalog(number, timeout=30): # pragma: no cover (not part of normal tes 'charset': 'UTF-8', 'type': 'json'}, timeout=timeout, - verify=certificate) - if response.ok: - return response.json()['ROW'] + verify=verify) + if response.ok and response.content: + return response.json()['row'] # type: ignore[no-any-return] + return None diff --git a/stdnum/ca/__init__.py b/stdnum/ca/__init__.py index 5d44d1e4..f1b06218 100644 --- a/stdnum/ca/__init__.py +++ b/stdnum/ca/__init__.py @@ -14,9 +14,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Canadian numbers.""" + +from __future__ import annotations + from stdnum.ca import bn as vat # noqa: F401 diff --git a/stdnum/ca/bc_phn.py b/stdnum/ca/bc_phn.py new file mode 100644 index 00000000..e273258d --- /dev/null +++ b/stdnum/ca/bc_phn.py @@ -0,0 +1,102 @@ +# bc_phn.py - functions for handling British Columbia Personal Health Numbers (PHNs) +# coding: utf-8 +# +# Copyright (C) 2023 Ömer Boratav +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""BC PHN (British Columbia Personal Health Number). + +A unique, numerical, lifetime identifier used in the specific identification +of an individual client or patient who has had any interaction with the +British Columbia health system. It is assigned only to and used by one person +and will not be assigned to any other person. + +The existence of a PHN does not imply eligibility for health care services in +BC or provide any indication of an individual’s benefit status. + +The PNH is a 10-digit number where the first digit is always 9, and the last +digit is a MOD-11 check digit. + +More information: + +* https://www2.gov.bc.ca/gov/content/health/health-drug-coverage/msp/bc-residents/personal-health-identification +* https://www2.gov.bc.ca/assets/gov/health/practitioner-pro/software-development-guidelines/conformance-standards/vol-4b-app-rules-client-registry.pdf + + +>>> validate('9698 658 215') +'9698658215' +>>> format('9698658215') +'9698 658 215' +>>> validate('9698648215') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('5736504210') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> validate('9736A04212') +Traceback (most recent call last): + ... +InvalidFormat: ... +""" # noqa: E501 + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, '- ').strip() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit. The number passed should not have the check + digit included.""" + weights = (2, 4, 8, 5, 10, 9, 7, 3) + s = sum((w * int(n)) % 11 for w, n in zip(weights, number)) + return str((11 - s) % 11) + + +def validate(number: str) -> str: + """Check if the number is a valid PHN. This checks the length, + formatting and check digit.""" + number = compact(number) + if len(number) != 10: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[0] != '9': + raise InvalidComponent() + if number[9] != calc_check_digit(number[1:9]): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid PHN.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return ' '.join((number[0:4], number[4:7], number[7:])) diff --git a/stdnum/ca/bn.py b/stdnum/ca/bn.py index 0345d835..bf7625dd 100644 --- a/stdnum/ca/bn.py +++ b/stdnum/ca/bn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """BN (Canadian Business Number). @@ -43,18 +41,20 @@ InvalidFormat: ... """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '- ').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid BN or BN15. This checks the length, formatting and check digit.""" number = compact(number) @@ -71,7 +71,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid BN or BN15.""" try: return bool(validate(number)) diff --git a/stdnum/ca/sin.py b/stdnum/ca/sin.py index 9d07e5be..66b72942 100644 --- a/stdnum/ca/sin.py +++ b/stdnum/ca/sin.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """SIN (Canadian Social Insurance Number). @@ -39,22 +37,28 @@ Traceback (most recent call last): ... InvalidFormat: ... +>>> validate('823456785') +Traceback (most recent call last): + ... +InvalidComponent: ... >>> format('123456782') '123-456-782' """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '- ').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid SIN. This checks the length, formatting and check digit.""" number = compact(number) @@ -62,10 +66,12 @@ def validate(number): raise InvalidLength() if not isdigits(number): raise InvalidFormat() + if number[0] in '08': + raise InvalidComponent() return luhn.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid SIN.""" try: return bool(validate(number)) @@ -73,7 +79,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join((number[0:3], number[3:6], number[6:])) diff --git a/stdnum/casrn.py b/stdnum/casrn.py index acd5d7f4..b4bdd275 100644 --- a/stdnum/casrn.py +++ b/stdnum/casrn.py @@ -1,6 +1,6 @@ # casrn.py - functions for handling CAS Registry Numbers # -# Copyright (C) 2017 Arthur de Jong +# Copyright (C) 2017-2022 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CAS RN (Chemical Abstracts Service Registry Number). @@ -32,13 +30,24 @@ Traceback (most recent call last): ... InvalidChecksum: ... +>>> validate('012770-26-2') +Traceback (most recent call last): + ... +InvalidFormat: ... """ +from __future__ import annotations + +import re + from stdnum.exceptions import * -from stdnum.util import clean, isdigits +from stdnum.util import clean -def compact(number): +_cas_re = re.compile(r'^[1-9][0-9]{1,6}-[0-9]{2}-[0-9]$') + + +def compact(number: str) -> str: """Convert the number to the minimal representation.""" number = clean(number, ' ').strip() if '-' not in number: @@ -46,7 +55,7 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number. The passed number should not have the check digit included.""" number = number.replace('-', '') @@ -54,21 +63,19 @@ def calc_check_digit(number): sum((i + 1) * int(n) for i, n in enumerate(reversed(number))) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid CAS RN.""" number = compact(number) if not 7 <= len(number) <= 12: raise InvalidLength() - if not isdigits(number[:-5]) or not isdigits(number[-4:-2]): - raise InvalidFormat() - if number[-2] != '-' or number[-5] != '-': + if not _cas_re.match(number): raise InvalidFormat() if number[-1] != calc_check_digit(number[:-1]): raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid CAS RN.""" try: return bool(validate(number)) diff --git a/stdnum/cfi.dat b/stdnum/cfi.dat new file mode 100644 index 00000000..8710909d --- /dev/null +++ b/stdnum/cfi.dat @@ -0,0 +1,1532 @@ +# generated from cfi-20210507-current.xlsx, downloaded from +# https://www.six-group.com/en/products-services/financial-information/data-standards.html +C category="CIVs" + B group="Real estate investment trust" + C v="Closed-end" + M v="Others" + O v="Open-end" + A-Z a="Closed/open-end" + G v="Accumulation funds" + I v="Income funds" + J v="Mixed funds" + A-Z a="Distribution policy" + A-Z + Q v="Shares for QI" + S v="Shares" + U v="Units" + Y v="Units for QI" + A-Z a="Security type and investor restrictions" + E group="Exchange traded funds" + C v="Closed-end" + M v="Others" + O v="Open-end" + A-Z a="Closed/open-end" + G v="Accumulation funds" + I v="Income funds" + J v="Mixed funds" + A-Z a="Distribution policy" + B v="Debt instruments" + C v="Commodities" + D v="Derivatives" + E v="Equities" + F v="Referential instruments excluding commodities" + K v="Credits" + L v="Mixed" + M v="Others" + R v="Real estate" + V v="Convertible securities" + A-Z a="Assets" + S v="Shares" + U v="Units" + A-Z a="Security type and investor restrictions" + F group="Funds of funds" + C v="Closed-end" + M v="Others" + O v="Open-end" + A-Z a="Closed/open-end" + G v="Accumulation funds" + I v="Income funds" + J v="Mixed funds" + A-Z a="Distribution policy" + B v="REITs" + E v="ETFs" + H v="Hedge funds" + I v="Standard" + M v="Others" + M v="Others" + P v="Private equity funds" + A-Z a="Type of funds" + Q v="Shares for QI" + S v="Shares" + U v="Units" + Y v="Units for QI" + A-Z a="Security type and investor restrictions" + H group="Hedge funds" + A v="Arbitrage" + D v="Directional" + E v="Event-driven" + L v="Asset-based lending" + M v="Others" + N v="Multi-strategy" + R v="Relative value" + S v="Security selection" + A-Z a="Investment strategy" + A-Z + A-Z + A-Z + I group="Standard" + C v="Closed-end" + M v="Others" + O v="Open-end" + A-Z a="Closed/open-end" + G v="Accumulation funds" + I v="Income funds" + J v="Mixed funds" + A-Z a="Distribution policy" + B v="Debt instruments" + C v="Commodities" + D v="Derivatives" + E v="Equities" + F v="Referential instruments excluding commodities" + K v="Credits" + L v="Mixed" + M v="Others" + R v="Real estate" + V v="Convertible securities" + A-Z a="Assets" + Q v="Shares for QI" + S v="Shares" + U v="Units" + Y v="Units for QI" + A-Z a="Security type and investor restrictions" + M group="Others" + A-Z + A-Z + A-Z + Q v="Shares for QI" + S v="Shares" + U v="Units" + Y v="Units for QI" + A-Z a="Security type and investor restrictions" + P group="Private equity funds" + C v="Closed-end" + M v="Others" + O v="Open-end" + A-Z a="Closed/open-end" + G v="Accumulation funds" + I v="Income funds" + J v="Mixed funds" + A-Z a="Distribution policy" + B v="Debt instruments" + C v="Commodities" + D v="Derivatives" + E v="Equities" + F v="Referential instruments excluding commodities" + K v="Credits" + L v="Mixed" + M v="Others" + R v="Real estate" + V v="Convertible securities" + A-Z a="Assets" + Q v="Shares for QI" + S v="Shares" + U v="Units" + Y v="Units for QI" + A-Z a="Security type and investor restrictions" + S group="Pension funds" + C v="Closed" + M v="Others" + O v="Open" + A-Z a="Closed/open" + B v="Balanced/conservative" + G v="Growth" + L v="Life style" + M v="Others" + A-Z a="Strategy/style" + B v="Defined contribution" + M v="Others" + R v="Defined benefit" + A-Z a="Type" + S v="Shares" + U v="Units" + A-Z a="Security type and investor restrictions" +D category="Debt instruments" + A group="Asset-backed securities" + F v="Fixed rate" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + B group="Bonds" + C v="Cash payment" + F v="Fixed rate" + K v="Payment in kind" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest or cash payment" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + C group="Convertible bonds" + F v="Fixed rate" + K v="Payment in kind" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + D group="Depositary receipts on debt instruments" + A v="Asset-backed securities" + B v="Bonds" + C v="Convertible bonds" + G v="Mortgage-backed securities" + M v="Others" + N v="Municipal bonds" + T v="Medium-term notes" + W v="Bonds with warrants attached" + Y v="Money market instruments" + A-Z a="Instrument dependency" + C v="Cash payment" + F v="Fixed rate" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest/cash payment" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + E group="Structured instruments" + A v="Discount certificate" + B v="Barrier discount certificate" + C v="Reverse convertible" + D v="Barrier reverse convertible" + E v="Express certificate" + M v="Others" + A-Z a="Type" + D v="Dividend payments" + F v="Fixed interest payments" + M v="Others" + V v="Variable interest payments" + Y v="No payments" + A-Z a="Distribution" + C v="Repayment in assets and cash" + M v="Others" + R v="Repayment in cash" + S v="Repayment in assets" + T v="Repayment in assets or cash" + A-Z a="Repayment" + B v="Baskets" + C v="Currencies" + D v="Debt instruments" + I v="Indices" + M v="Others" + N v="Interest rates" + S v="Equities" + T v="Commodities" + A-Z a="Underlying assets" + G group="Mortgage-backed securities" + F v="Fixed rate" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + M group="Others" + B v="Bank loan" + M v="Others" + P v="Promissory note" + A-Z a="Type" + A-Z + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + N group="Municipal bonds" + F v="Fixed rate" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="State guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + S group="Structured instruments" + A v="Capital protection certificate with participation" + B v="Capital protection convertible certificate" + C v="Barrier capital protection certificate" + D v="Capital protection certificate with coupons" + M v="Others" + A-Z a="Type" + D v="Dividend payments" + F v="Fixed interest payments" + M v="Others" + V v="Variable interest payments" + Y v="No payments" + A-Z a="Distribution" + F v="Fixed cash repayment" + M v="Others" + V v="Variable cash repayment" + A-Z a="Repayment" + B v="Baskets" + C v="Currencies" + D v="Debt instruments" + I v="Indices" + M v="Others" + N v="Interest rates" + S v="Equities" + T v="Commodities" + A-Z a="Underlying assets" + T group="Medium-term notes" + F v="Fixed rate" + K v="Payment in kind" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + W group="Bonds with warrants attached" + F v="Fixed rate" + K v="Payment in kind" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A v="Amortization plan" + B v="Amortization plan with call feature" + C v="Fixed maturity with put feature" + D v="Fixed maturity with put and call" + E v="Extendible" + F v="Fixed maturity" + G v="Fixed maturity with call feature" + L v="Amortization plan with put and call" + P v="Perpetual" + Q v="Perpetual with call feature" + R v="Perpetual with put feature" + T v="Amortization plan with put feature" + A-Z a="Redemption/reimbursement" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + Y group="Money market instruments" + F v="Fixed rate" + K v="Payment in kind" + V v="Variable" + Z v="Zero rate/discounted" + A-Z a="Type of interest" + C v="Supranational" + G v="Joint guarantee" + J v="Junior subordinated" + N v="Senior" + O v="Senior subordinated" + P v="Negative pledge" + Q v="Junior" + S v="Secured" + T v="Government guarantee" + U v="Unsecured/unguaranteed" + A-Z a="Guarantee or ranking" + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" +E category="Equities" + C group="Common/ordinary convertible shares" + E v="Enhanced voting" + N v="Non-voting" + R v="Restricted voting" + V v="Voting" + A-Z a="Voting right" + T v="Restrictions" + U v="Free" + A-Z a="Ownership/transfer/sales restrictions" + F v="Fully paid" + O v="Nil paid" + P v="Partly paid" + A-Z a="Payment status" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + D group="Depositary receipts on equities" + C v="Common/ordinary convertible shares" + F v="Preferred/preference convertible shares" + L v="Limited partnership units" + M v="Others" + P v="Preferred/preference shares" + S v="Common/ordinary shares" + A-Z a="Instrument dependency" + B v="Convertible" + D v="Convertible/redeemable" + N v="Perpetual" + R v="Redeemable" + A-Z a="Redemption/conversion of the underlying assets" + A v="Adjustable/variable rate income" + C v="Cumulative, fixed rate income" + D v="Dividends" + F v="Fixed rate income" + N v="Normal rate income" + P v="Participating income" + Q v="Cumulative, participating income" + U v="Auction rate income" + A-Z a="Income" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + F group="Preferred/preference convertible shares" + E v="Enhanced voting" + N v="Non-voting" + R v="Restricted voting" + V v="Voting" + A-Z a="Voting right" + A v="Redeemable/exchangeable/extendible" + C v="Redeemable/exchangeable" + E v="Extendible" + G v="Exchangeable" + N v="Perpetual" + R v="Redeemable" + T v="Redeemable/extendible" + A-Z a="Redemption" + A v="Adjustable/variable rate income" + C v="Cumulative, fixed rate income" + F v="Fixed rate income" + N v="Normal rate income" + P v="Participating income" + Q v="Cumulative, participating income" + U v="Auction rate income" + A-Z a="Income" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + L group="Limited partnership units" + E v="Enhanced voting" + N v="Non-voting" + R v="Restricted voting" + V v="Voting" + A-Z a="Voting right" + T v="Restrictions" + U v="Free" + A-Z a="Ownership/transfer/sales restrictions" + F v="Fully paid" + O v="Nil paid" + P v="Partly paid" + A-Z a="Payment status" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + M group="Others" + A-Z + A-Z + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + P group="Preferred/preference shares" + E v="Enhanced voting" + N v="Non-voting" + R v="Restricted voting" + V v="Voting" + A-Z a="Voting right" + A v="Redeemable/exchangeable/extendible" + C v="Redeemable/exchangeable" + E v="Extendible" + G v="Exchangeable" + N v="Perpetual" + R v="Redeemable" + T v="Redeemable/extendible" + A-Z a="Redemption" + A v="Adjustable/variable rate income" + C v="Cumulative, fixed rate income" + F v="Fixed rate income" + N v="Normal rate income" + P v="Participating income" + Q v="Cumulative, participating income" + U v="Auction rate income" + A-Z a="Income" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + S group="Common/ordinary shares" + E v="Enhanced voting" + N v="Non-voting" + R v="Restricted voting" + V v="Voting" + A-Z a="Voting right" + T v="Restrictions" + U v="Free" + A-Z a="Ownership/transfer/sales restrictions" + F v="Fully paid" + O v="Nil paid" + P v="Partly paid" + A-Z a="Payment status" + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + Y group="Structured instruments" + A v="Tracker certificate" + B v="Outperformance certificate" + C v="Bonus certificate" + D v="Outperformance bonus certificate" + E v="Twin-win-certificate" + M v="Others" + A-Z a="Type" + D v="Dividend payments" + M v="Others" + Y v="No payments" + A-Z a="Distribution" + E v="Elect at settlement" + F v="Cash repayment" + M v="Others" + V v="Physical repayment" + A-Z a="Repayment" + B v="Baskets" + C v="Currencies" + D v="Debt instruments" + G v="Derivatives" + I v="Indices" + M v="Others" + N v="Interest rates" + S v="Equities" + T v="Commodities" + A-Z a="Underlying assets" +F category="Futures" + C group="Commodities futures" + A v="Agriculture" + E v="Extraction resources" + H v="Generated resources" + I v="Industrial products" + M v="Others" + N v="Environmental" + P v="Polypropylene products" + S v="Services" + A-Z a="Underlying assets" + C v="Cash" + N v="Non-deliverable" + P v="Physical" + A-Z a="Delivery" + N v="Non-standardized" + S v="Standardized" + A-Z a="Standardized/non-standardized" + A-Z + F group="Financial futures" + B v="Baskets" + C v="Currencies" + D v="Debt instruments" + F v="Futures" + I v="Indices" + M v="Others" + N v="Interest rates" + O v="Options" + S v="Stock-equities" + V v="Stock dividends" + W v="Swaps" + A-Z a="Underlying assets" + C v="Cash" + N v="Non-deliverable" + P v="Physical" + A-Z a="Delivery" + N v="Non-standardized" + S v="Standardized" + A-Z a="Standardized/non-standardized" + A-Z +H category="Non-listed and complex listed options" + C group="Credit" + I v="CDS on an index" + M v="Others" + U v="CDS on a single name" + V v="CDS on an index tranche" + W v="Swaps" + A-Z a="Underlying assets" + A v="European-Call" + B v="American-Call" + C v="Bermudan-Call" + D v="European-Put" + E v="American-Put" + F v="Bermudan-Put" + G v="European-Chooser" + H v="American-Chooser" + I v="Bermudan-Chooser" + A-Z a="Option style and type" + A v="Asian" + B v="Barrier" + D v="Digital" + G v="Digital barrier" + L v="Lookback" + M v="Others" + P v="Other path dependent" + V v="Vanilla" + A-Z a="Valuation method or trigger" + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" + E group="Equity" + B v="Basket" + F v="Futures" + I v="Index" + M v="Others" + O v="Options" + R v="Forwards" + S v="Single stock" + A-Z a="Underlying assets" + A v="European-Call" + B v="American-Call" + C v="Bermudan-Call" + D v="European-Put" + E v="American-Put" + F v="Bermudan-Put" + G v="European-Chooser" + H v="American-Chooser" + I v="Bermudan-Chooser" + A-Z a="Option style and type" + A v="Asian" + B v="Barrier" + D v="Digital" + G v="Digital barrier" + L v="Lookback" + M v="Others" + P v="Other path dependent" + V v="Vanilla" + A-Z a="Valuation method or trigger" + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" + F group="Foreign exchange" + B v="Forwards – Currency Index" + C v="Futures – Currency Index" + D v="Spot – Currency Index" + E v="Volatility – Currency Index" + F v="Futures – Single Currency Pair" + M v="Others" + Q v="Forwards – Custom Basket of Currencies" + R v="Forwards – Single Currency Pair" + T v="Spot – Single Currency Pair" + U v="Futures – Custom Basket of Currencies" + V v="Volatility – Single Currency Pair" + W v="Spot – Custom Basket of Currencies" + Y v="Volatility – Custom Basket of Currencies" + A-Z a="Underlying assets" + J v="European" + K v="American" + L v="Bermudan" + A-Z a="Option style and type" + A v="Asian" + B v="Barrier" + D v="Digital" + G v="Digital barrier" + L v="Lookback" + M v="Others" + P v="Other path dependent" + V v="Vanilla" + A-Z a="Valuation method or trigger" + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" + M group="Others" + M v="Others" + P v="Commercial property" + A-Z a="Underlying assets" + A v="European-Call" + B v="American-Call" + C v="Bermudan-Call" + D v="European-Put" + E v="American-Put" + F v="Bermudan-Put" + G v="European-Chooser" + H v="American-Chooser" + I v="Bermudan-Chooser" + J v="European" + K v="American" + L v="Bermudan" + A-Z a="Option style and type" + A v="Asian" + B v="Barrier" + D v="Digital" + G v="Digital barrier" + L v="Lookback" + M v="Others" + P v="Other path dependent" + V v="Vanilla" + A-Z a="Valuation method or trigger" + A v="Auction" + C v="Cash" + E v="Elect at exercise" + N v="Non-deliverable" + P v="Physical" + A-Z a="Delivery" + R group="Rates" + A v="Basis swap" + C v="Fixed-floating swap" + D v="Fixed-fixed swap" + E v="Interest rate index" + F v="Futures" + G v="Inflation rate index" + H v="OIS" + M v="Others" + O v="Options" + R v="Forwards" + A-Z a="Underlying assets" + A v="European-Call" + B v="American-Call" + C v="Bermudan-Call" + D v="European-Put" + E v="American-Put" + F v="Bermudan-Put" + G v="European-Chooser" + H v="American-Chooser" + I v="Bermudan-Chooser" + A-Z a="Option style and type" + A v="Asian" + B v="Barrier" + C v="Cap" + D v="Digital" + F v="Floor" + G v="Digital barrier" + L v="Lookback" + M v="Others" + P v="Other path dependent" + V v="Vanilla" + A-Z a="Valuation method or trigger" + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" + T group="Commodities" + A v="Agriculture" + B v="Basket – single-commodity" + C v="Basket – multi-commodity" + F v="Futures" + G v="Freight" + H v="Index – multi-commodity" + I v="Index – single-commodity" + J v="Energy" + K v="Metals" + M v="Others" + N v="Environmental" + O v="Options" + P v="Polypropylene products" + R v="Forwards" + S v="Fertilizer" + T v="Paper" + W v="Swaps" + A-Z a="Underlying assets" + A v="European-Call" + B v="American-Call" + C v="Bermudan-Call" + D v="European-Put" + E v="American-Put" + F v="Bermudan-Put" + G v="European-Chooser" + H v="American-Chooser" + I v="Bermudan-Chooser" + A-Z a="Option style and type" + A v="Asian" + B v="Barrier" + D v="Digital" + G v="Digital barrier" + L v="Lookback" + M v="Others" + P v="Other path dependent" + V v="Vanilla" + A-Z a="Valuation method or trigger" + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" +I category="Spot" + F group="Foreign exchange" + A-Z + A-Z + A-Z + P v="Physical" + A-Z a="Delivery" + T group="Commodities" + A v="Agriculture" + J v="Energy" + K v="Metals" + M v="Others" + N v="Environmental" + P v="Polypropylene products" + S v="Fertilizer" + T v="Paper" + A-Z a="Underlying assets" + A-Z + A-Z + A-Z +J category="Forwards" + C group="Credit" + A v="Single name" + B v="Basket" + C v="CDS on a single name" + D v="CDS on an index" + G v="CDS on a basket" + I v="Index" + O v="Options" + A-Z a="Underlying assets" + A-Z + C v="CFD" + F v="Forward price of underlying instrument" + S v="Spread-bet" + A-Z a="Return or payout trigger" + C v="Cash" + P v="Physical" + A-Z a="Delivery" + E group="Equity" + B v="Basket" + F v="Futures" + I v="Index" + O v="Options" + S v="Single stock" + A-Z a="Underlying assets" + A-Z + C v="CFD" + F v="Forward price of underlying instrument" + S v="Spread-bet" + A-Z a="Return or payout trigger" + C v="Cash" + P v="Physical" + A-Z a="Delivery" + F group="Foreign exchange" + F v="Futures – Single Currency Pair" + J v="Options – Currency Index" + K v="Options – Custom Basket of Currencies" + L v="Futures – Currency Index" + N v="Futures – Custom Basket of Currencies" + O v="Options – Single Currency Pair" + R v="Forward – Single Currency Pair" + S v="Forward – Currency Index" + T v="Spot – Single Currency Pair" + U v="Spot – Currency Index" + V v="Spot – Custom Basket of Currencies" + W v="Forward – Custom Basket of Currencies" + A-Z a="Underlying assets" + A-Z + C v="CFD" + F v="Forward price of underlying instrument" + R v="Rolling spot" + S v="Spread-bet" + A-Z a="Return or payout trigger" + C v="Cash" + P v="Physical" + A-Z a="Delivery" + R group="Rates" + I v="Interest rate index" + M v="Others" + O v="Options" + A-Z a="Underlying assets" + A-Z + C v="CFD" + F v="Forward price of underlying instrument" + S v="Spread-bet" + A-Z a="Return or payout trigger" + C v="Cash" + P v="Physical" + A-Z a="Delivery" + T group="Commodities" + A v="Agriculture" + B v="Basket – single-commodity" + C v="Basket – multi-commodity" + G v="Freight" + H v="Index – multi-commodity" + I v="Index – single-commodity" + J v="Energy" + K v="Metals" + M v="Others" + N v="Environmental" + P v="Polypropylene products" + S v="Fertilizer" + T v="Paper" + A-Z a="Underlying assets" + A-Z + C v="CFD" + F v="Forward price of underlying instrument" + S v="Spread-bet" + A-Z a="Return or payout trigger" + C v="Cash" + P v="Physical" + A-Z a="Delivery" +K category="Strategies" + C group="Credit" + A-Z + A-Z + A-Z + A-Z + E group="Equity" + A-Z + A-Z + A-Z + A-Z + F group="Foreign exchange" + A-Z + A-Z + A-Z + A-Z + M group="Others" + A-Z + A-Z + A-Z + A-Z + R group="Rates" + A-Z + A-Z + A-Z + A-Z + T group="Commodities" + A-Z + A-Z + A-Z + A-Z + Y group="Mixed assets" + A-Z + A-Z + A-Z + A-Z +L category="Financing" + L group="Loan-lease" + A v="Agriculture" + B v="Baskets" + J v="Energy" + K v="Metals" + M v="Others" + N v="Environmental" + P v="Polypropylene products" + S v="Fertilizer" + T v="Paper" + A-Z a="Underlying assets" + A-Z + A-Z + C v="Cash" + P v="Physical" + A-Z a="Delivery" + R group="Repurchase agreements" + C v="Cash collateral" + G v="General collateral" + S v="Specific security collateral" + A-Z a="Underlying assets" + F v="Flexible" + N v="Overnight" + O v="Open" + T v="Term" + A-Z a="Termination" + A-Z + D v="Delivery versus payment" + H v="Hold-in-custody" + T v="Tri-party" + A-Z a="Delivery" + S group="Securities lending" + C v="Cash collateral" + D v="Certificate of deposit" + E v="Equity" + G v="Government bonds" + K v="Money market instruments" + L v="Letter of credit" + M v="Others" + P v="Corporate bonds" + T v="Convertible bonds" + W v="Warrants" + A-Z a="Underlying assets" + N v="Overnight" + O v="Open" + T v="Term" + A-Z a="Termination" + A-Z + D v="Delivery versus payment" + F v="Free of payment" + H v="Hold-in-custody" + T v="Tri-party" + A-Z a="Delivery" +M category="Others (miscellaneous)" + C group="Combined instruments" + A v="Share and warrant" + B v="Combination of bonds" + H v="Share and bond" + M v="Others" + S v="Combination of shares" + U v="Fund unit and other components" + W v="Warrant and warrant" + A-Z a="Components" + T v="Restrictions" + U v="Free" + A-Z a="Ownership/transfer/sales restrictions" + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + M group="Other assets" + E v="Escrow receipts" + I v="Insurance policies" + M v="Others" + N v="Carbon credit" + P v="Precious metal receipts" + R v="Real estate deeds" + S v="Other OTC derivative products" + T v="Trade finance instruments" + A-Z a="Further grouping" + A-Z + A-Z + A-Z +O category="Listed options" + C group="Call options" + A v="American" + B v="Bermudan" + E v="European" + A-Z a="Exercise option style" + B v="Baskets" + C v="Currencies" + D v="Debt instruments" + F v="Futures" + I v="Indices" + M v="Others" + N v="Interest rates" + O v="Options" + S v="Stock-equities" + T v="Commodities" + W v="Swaps" + A-Z a="Underlying assets" + C v="Cash" + E v="Elect at exercise" + N v="Non-deliverable" + P v="Physical" + A-Z a="Delivery" + N v="Non-standardized" + S v="Standardized" + A-Z a="Standardized/non-standardized" + M group="Others" + A-Z + A-Z + A-Z + A-Z + P group="Put options" + A v="American" + B v="Bermudan" + E v="European" + A-Z a="Exercise option style" + B v="Baskets" + C v="Currencies" + D v="Debt instruments" + F v="Futures" + I v="Indices" + M v="Others" + N v="Interest rates" + O v="Options" + S v="Stock-equities" + T v="Commodities" + W v="Swaps" + A-Z a="Underlying assets" + C v="Cash" + E v="Elect at exercise" + N v="Non-deliverable" + P v="Physical" + A-Z a="Delivery" + N v="Non-standardized" + S v="Standardized" + A-Z a="Standardized/non-standardized" +R category="Entitlement (rights)" + A group="Allotment" + A-Z + A-Z + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + D group="Depositary receipts on entitlements" + A v="Allotment" + M v="Others" + P v="Purchase rights" + S v="Subscription rights" + W v="Warrants" + A-Z a="Instrument dependency" + A-Z + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + F group="Mini-future certificates, constant leverage certificates" + B v="Baskets" + C v="Currencies" + D v="Debt instruments/interest rates" + I v="Indices" + M v="Others" + S v="Equities" + T v="Commodities" + A-Z a="Underlying assets" + M v="Others" + N v="Barrier instrument based" + T v="Barrier underlying based" + A-Z a="Barrier dependency type" + C v="Long" + M v="Others" + P v="Short" + A-Z a="Long/short" + A v="American" + B v="Bermudan" + E v="European" + M v="Others" + A-Z a="Exercise option style" + M group="Others" + A-Z + A-Z + A-Z + A-Z + P group="Purchase rights" + B v="Bonds" + C v="Common/ordinary convertible shares" + F v="Preferred/preference convertible shares" + I v="Combined instruments" + M v="Others" + P v="Preferred/preference shares" + S v="Common/ordinary shares" + A-Z a="Assets" + A-Z + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + S group="Subscription rights" + B v="Bonds" + C v="Common/ordinary convertible shares" + F v="Preferred/preference convertible shares" + I v="Combined instruments" + M v="Others" + P v="Preferred/preference shares" + S v="Common/ordinary shares" + A-Z a="Assets" + A-Z + A-Z + B v="Bearer" + M v="Others" + N v="Bearer/registered" + R v="Registered" + A-Z a="Form" + W group="Warrants" + B v="Baskets" + C v="Currencies" + D v="Debt instruments/interest rates" + I v="Indices" + M v="Others" + S v="Equities" + T v="Commodities" + A-Z a="Underlying assets" + C v="Covered warrants" + N v="Naked warrants" + T v="Traditional warrants" + A-Z a="Type" + B v="Call and put" + C v="Call" + P v="Put" + A-Z a="Call/put" + A v="American" + B v="Bermudan" + E v="European" + M v="Others" + A-Z a="Exercise option style" +S category="Swaps" + C group="Credit" + B v="Basket" + I v="Index" + M v="Others" + U v="Single name" + V v="Index tranche" + A-Z a="Underlying assets" + C v="Credit default" + M v="Others" + T v="Total return" + A-Z a="Return or payout trigger" + C v="Corporate entity" + L v="Local" + S v="Sovereign entity" + A-Z a="Underlying issuer type" + A v="Auction" + C v="Cash" + P v="Physical" + A-Z a="Delivery" + E group="Equity" + B v="Basket" + I v="Index" + M v="Others" + S v="Single stock" + A-Z a="Underlying assets" + C v="CFD" + D v="Dividend" + L v="Volatility" + M v="Others" + P v="Price" + T v="Total return" + V v="Variance" + A-Z a="Return or payout trigger" + A-Z + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" + F group="Foreign exchange" + A v="Spot-forward swap" + C v="Forward-forward swap" + M v="Others" + A-Z a="Underlying assets" + A-Z + A-Z + C v="Cash" + P v="Physical" + A-Z a="Delivery" + M group="Others" + M v="Others" + P v="Commercial property" + A-Z a="Underlying assets" + A-Z + A-Z + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" + R group="Rates" + A v="Basis swap" + C v="Fixed-floating" + D v="Fixed-fixed" + G v="Inflation swap" + H v="Overnight index swap" + M v="Others" + Z v="Zero coupon" + A-Z a="Underlying assets" + C v="Constant" + D v="Amortizing" + I v="Accreting" + Y v="Custom" + A-Z a="Notional" + C v="Cross-currency" + S v="Single currency" + A-Z a="Single or multi-currency" + D v="Deliverable" + N v="Non-deliverable" + A-Z a="Delivery" + T group="Commodities" + A v="Agriculture" + B v="Basket – single-commodity" + C v="Basket – multi-commodity" + G v="Freight" + H v="Index – multi-commodity" + I v="Index – single-commodity" + J v="Energy" + K v="Metals" + M v="Others" + N v="Environmental" + P v="Polypropylene products" + Q v="Multi-commodity" + S v="Fertilizer" + T v="Paper" + A-Z a="Underlying assets" + C v="Contract for difference" + T v="Total return" + A-Z a="Return or payout trigger" + A-Z + C v="Cash" + E v="Elect at settlement" + P v="Physical" + A-Z a="Delivery" +T category="Referential instruments" + B group="Baskets" + C v="Currencies" + D v="Debt instruments" + E v="Equities" + F v="CIVs" + I v="Indices" + M v="Others" + T v="Commodities" + A-Z a="Composition" + A-Z + A-Z + A-Z + C group="Currencies" + C v="Bullion coins" + L v="Legacy currency" + M v="Others" + N v="National currency" + A-Z a="Type" + A-Z + A-Z + A-Z + D group="Stock dividends" + C v="Common/ordinary convertible shares" + F v="Preferred/preference convertible shares" + K v="CIVs" + L v="Limited partnership units" + M v="Others" + P v="Preferred/preference shares" + S v="Common/ordinary shares" + A-Z a="Type of equity" + A-Z + A-Z + A-Z + I group="Indices" + C v="Currencies" + D v="Debt instruments" + E v="Equities" + F v="CIVs" + M v="Others" + R v="Real estate" + T v="Commodities" + A-Z a="Asset classes" + C v="Capitalization weighted" + E v="Equal weighted" + F v="Modified market capitalization weighted" + M v="Other weighting" + P v="Price weighted" + A-Z a="Weighting types" + G v="Gross total return" + M v="Others" + N v="Net total return" + P v="Price return" + A-Z a="Index return types" + A-Z + M group="Others" + A-Z + A-Z + A-Z + A-Z + R group="Interest rates" + F v="Fixed" + M v="Others" + N v="Nominal" + R v="Real" + V v="Variable" + A-Z a="Type of interest rates" + A v="Annually" + D v="Daily" + M v="Others" + N v="Monthly" + Q v="Quarterly" + S v="Semi-annually" + W v="Weekly" + A-Z a="Frequency of calculation" + A-Z + A-Z + T group="Commodities" + A v="Agriculture" + E v="Extraction resources" + H v="Generated resources" + I v="Industrial products" + M v="Others" + N v="Environmental" + P v="Polypropylene products" + S v="Services" + A-Z a="Type of commodity" + A-Z + A-Z + A-Z diff --git a/stdnum/cfi.py b/stdnum/cfi.py new file mode 100644 index 00000000..56b9b85b --- /dev/null +++ b/stdnum/cfi.py @@ -0,0 +1,100 @@ +# cfi.py - functions for handling ISIN numbers +# +# Copyright (C) 2022 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""CFI (ISO 10962 Classification of Financial Instruments). + +The CFI is a 6-character code used to classify financial instruments. It is +issued alongside an ISIN and describes category such as equity or future and +category-specific properties such as underlying asset type or payment status. + +More information: + +* https://en.wikipedia.org/wiki/ISO_10962 +* https://www.iso.org/standard/73564.html +* https://www.six-group.com/en/products-services/financial-information/data-standards.html + +>>> validate('ELNUFR') +'ELNUFR' +>>> validate('ELNUFQ') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> import json +>>> print(json.dumps(info('ELNUFR'), indent=2, sort_keys=True)) +{ + "Form": "Registered", + "Ownership/transfer/sales restrictions": "Free", + "Payment status": "Fully paid", + "Voting right": "Non-voting", + "category": "Equities", + "group": "Limited partnership units" +} +""" + +from __future__ import annotations + +from stdnum import numdb +from stdnum.exceptions import * +from stdnum.util import clean + + +# our open copy of the CFI database +_cfidb = numdb.get('cfi') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').strip().upper() + + +def info(number: str) -> dict[str, str]: + """Look up information about the number.""" + number = compact(number) + info = _cfidb.info(number) + if len(info) != 6: + raise InvalidComponent() + properties = {} + properties.update(info[0][1]) + properties.update(info[1][1]) + for nr, found in info[2:]: + if nr != 'X' and 'v' not in found: + raise InvalidComponent() + if 'v' in found: + properties[found['a']] = found['v'] + return properties + + +def validate(number: str) -> str: + """Check if the number provided is valid. This checks the length and + format.""" + number = compact(number) + if not all(x in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for x in number): + raise InvalidFormat() + if len(number) != 6: + raise InvalidLength() + info(number) + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is valid. This checks the length and + check digit.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/ch/__init__.py b/stdnum/ch/__init__.py index cea35648..72e300bc 100644 --- a/stdnum/ch/__init__.py +++ b/stdnum/ch/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Swiss numbers.""" diff --git a/stdnum/ch/esr.py b/stdnum/ch/esr.py index 862df783..eb363e15 100644 --- a/stdnum/ch/esr.py +++ b/stdnum/ch/esr.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ESR, ISR, QR-reference (reference number on Swiss payment slips). @@ -49,17 +47,19 @@ '00 00000 00000 00000 00018 78583' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separators.""" return clean(number, ' ').lstrip('0') -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for number. The number passed should not have the check digit included.""" _digits = (0, 9, 4, 6, 8, 2, 7, 1, 3, 5) @@ -69,7 +69,7 @@ def calc_check_digit(number): return str((10 - c) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ESR. This checks the length, formatting and check digit.""" number = compact(number) @@ -82,7 +82,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ESR.""" try: return bool(validate(number)) @@ -90,9 +90,8 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" - number = 27 * '0' + compact(number) - number = number[-27:] + number = compact(number).zfill(27) return number[:2] + ' ' + ' '.join( number[i:i + 5] for i in range(2, len(number), 5)) diff --git a/stdnum/ch/ssn.py b/stdnum/ch/ssn.py index a59dc4fe..131e1d4a 100644 --- a/stdnum/ch/ssn.py +++ b/stdnum/ch/ssn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Swiss social security number ("Sozialversicherungsnummer"). @@ -46,24 +44,26 @@ '756.9217.0769.85' """ +from __future__ import annotations + from stdnum import ean from stdnum.exceptions import * from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' .').strip() -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '.'.join((number[:3], number[3:7], number[7:11], number[11:])) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Swiss Sozialversicherungsnummer.""" number = compact(number) if len(number) != 13: @@ -73,7 +73,7 @@ def validate(number): return ean.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Swiss Sozialversicherungsnummer.""" try: return bool(validate(number)) diff --git a/stdnum/ch/uid.py b/stdnum/ch/uid.py index 0e5fb2c8..be2f327f 100644 --- a/stdnum/ch/uid.py +++ b/stdnum/ch/uid.py @@ -1,7 +1,7 @@ # uid.py - functions for handling Swiss business identifiers # coding: utf-8 # -# Copyright (C) 2015 Arthur de Jong +# Copyright (C) 2015-2024 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """UID (Unternehmens-Identifikationsnummer, Swiss business identifier). @@ -26,6 +24,8 @@ This module only supports the "new" format that was introduced in 2011 which completely replaced the "old" 6-digit format in 2014. +Stripped numbers without the CHE prefix are allowed and validated, +but are returned with the prefix prepended. More information: @@ -34,6 +34,8 @@ >>> validate('CHE-100.155.212') 'CHE100155212' +>>> validate('100.155.212') +'CHE100155212' >>> validate('CHE-100.155.213') Traceback (most recent call last): ... @@ -42,17 +44,27 @@ 'CHE-100.155.212' """ +from __future__ import annotations + from stdnum.exceptions import * -from stdnum.util import clean, isdigits +from stdnum.util import clean, get_soap_client, isdigits + +TYPE_CHECKING = False +if TYPE_CHECKING: # pragma: no cover (typechecking only import) + from typing import Any -def compact(number): + +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separators.""" - return clean(number, ' -.').strip().upper() + number = clean(number, ' -.').strip().upper() + if len(number) == 9 and isdigits(number): + number = 'CHE' + number + return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for organisations. The number passed should not have the check digit included.""" weights = (5, 4, 3, 2, 7, 6, 5, 4) @@ -60,7 +72,7 @@ def calc_check_digit(number): return str((11 - s) % 11) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid UID. This checks the length, formatting and check digit.""" number = compact(number) @@ -75,7 +87,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid UID.""" try: return bool(validate(number)) @@ -83,8 +95,77 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:3] + '-' + '.'.join( number[i:i + 3] for i in range(3, len(number), 3)) + + +uid_wsdl = 'https://www.uid-wse.admin.ch/V5.0/PublicServices.svc?wsdl' + + +def check_uid( + number: str, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, Any] | None: # pragma: no cover + """Look up information via the Swiss Federal Statistical Office web service. + + This uses the UID registry web service run by the the Swiss Federal + Statistical Office to provide more details on the provided number. + + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. + + Returns a dict-like object for valid numbers with the following structure:: + + { + 'organisation': { + 'organisationIdentification': { + 'uid': {'uidOrganisationIdCategorie': 'CHE', 'uidOrganisationId': 113690319}, + 'OtherOrganisationId': [ + {'organisationIdCategory': 'CH.ESTVID', 'organisationId': '052.0111.1006'}, + ], + 'organisationName': 'Staatssekretariat für Migration SEM Vermietung von Parkplätzen', + 'legalForm': '0220', + }, + 'address': [ + { + 'addressCategory': 'LEGAL', + 'street': 'Quellenweg', + 'houseNumber': '6', + 'town': 'Wabern', + 'countryIdISO2': 'CH', + }, + ], + }, + 'uidregInformation': { + 'uidregStatusEnterpriseDetail': '3', + ... + }, + 'vatRegisterInformation': { + 'vatStatus': '2', + 'vatEntryStatus': '1', + ... + }, + } + + See the following document for more details on the GetByUID return value + https://www.bfs.admin.ch/bfs/en/home/registers/enterprise-register/enterprise-identification/uid-register/uid-interfaces.html + """ + # this function isn't always tested because it would require network access + # for the tests and might unnecessarily load the web service + number = compact(number) + client = get_soap_client(uid_wsdl, timeout=timeout, verify=verify) + try: + return client.GetByUID( # type: ignore[no-any-return] + uid={'uidOrganisationIdCategorie': number[:3], 'uidOrganisationId': number[3:]}, + )[0] + except Exception: # noqa: B902 (exception type depends on SOAP client) + # Error responses by the server seem to result in exceptions raised + # by the SOAP client implementation + return None diff --git a/stdnum/ch/vat.py b/stdnum/ch/vat.py index d6501f6d..42f2fa68 100644 --- a/stdnum/ch/vat.py +++ b/stdnum/ch/vat.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VAT, MWST, TVA, IVA, TPV (Mehrwertsteuernummer, the Swiss VAT number). @@ -43,17 +41,19 @@ 'CHE-107.787.577 IVA' """ +from __future__ import annotations + from stdnum.ch import uid from stdnum.exceptions import * -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separators.""" return uid.compact(number) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -65,7 +65,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) @@ -73,7 +73,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return uid.format(number[:12]) + ' ' + number[12:] diff --git a/stdnum/cl/__init__.py b/stdnum/cl/__init__.py index f31595e6..8bdf85e9 100644 --- a/stdnum/cl/__init__.py +++ b/stdnum/cl/__init__.py @@ -14,12 +14,13 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Chilean numbers.""" +from __future__ import annotations + + # provide vat and run as an alias from stdnum.cl import rut as vat # noqa: F401, isort:skip from stdnum.cl import rut as run # noqa: F401, isort:skip diff --git a/stdnum/cl/rut.py b/stdnum/cl/rut.py index d15dba42..353be116 100644 --- a/stdnum/cl/rut.py +++ b/stdnum/cl/rut.py @@ -16,9 +16,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RUT (Rol Único Tributario, Chilean national tax number). @@ -42,11 +40,13 @@ '12.531.909-2' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.').upper().strip() @@ -55,14 +55,14 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" s = sum(int(n) * (4 + (5 - i) % 6) for i, n in enumerate(number[::-1])) return '0123456789K'[s % 11] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid RUT. This checks the length, formatting and check digit.""" number = compact(number) @@ -75,7 +75,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid RUT.""" try: return bool(validate(number)) @@ -83,7 +83,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return (number[:-7] + '.' + number[-7:-4] + '.' + diff --git a/stdnum/cn/__init__.py b/stdnum/cn/__init__.py index 93a6f5e4..d5b67a8d 100644 --- a/stdnum/cn/__init__.py +++ b/stdnum/cn/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of China (PRC) numbers.""" +from __future__ import annotations + # Provide vat as an alias. from stdnum.cn import uscc as vat # noqa: F401 diff --git a/stdnum/cn/loc.dat b/stdnum/cn/loc.dat index 8ae03e5d..fbd0c548 100644 --- a/stdnum/cn/loc.dat +++ b/stdnum/cn/loc.dat @@ -1,3380 +1,6928 @@ -# generated from National Bureau of Statistics of the People's -# Republic of China, downloaded from https://github.com/cn/GB2260 -# 2020-08-09 15:08:26.469948 -110101 county="东城区" prefecture="市辖区" province="北京市" -110102 county="西城区" prefecture="市辖区" province="北京市" -110103 county="崇文区" prefecture="市辖区" province="北京市" -110104 county="宣武区" prefecture="市辖区" province="北京市" -110105 county="朝阳区" prefecture="市辖区" province="北京市" -110106 county="丰台区" prefecture="市辖区" province="北京市" -110107 county="石景山区" prefecture="市辖区" province="北京市" -110108 county="海淀区" prefecture="市辖区" province="北京市" -110109 county="门头沟区" prefecture="市辖区" province="北京市" -110111 county="房山区" prefecture="市辖区" province="北京市" -110112 county="通州区" prefecture="市辖区" province="北京市" -110113 county="顺义区" prefecture="市辖区" province="北京市" -110114 county="昌平区" prefecture="市辖区" province="北京市" -110115 county="大兴区" prefecture="市辖区" province="北京市" -110116 county="怀柔区" prefecture="市辖区" province="北京市" -110117 county="平谷区" prefecture="市辖区" province="北京市" -110228 county="密云县" prefecture="县" province="北京市" -110229 county="延庆县" prefecture="县" province="北京市" -120101 county="和平区" prefecture="市辖区" province="天津市" -120102 county="河东区" prefecture="市辖区" province="天津市" -120103 county="河西区" prefecture="市辖区" province="天津市" -120104 county="南开区" prefecture="市辖区" province="天津市" -120105 county="河北区" prefecture="市辖区" province="天津市" -120106 county="红桥区" prefecture="市辖区" province="天津市" -120107 county="塘沽区" prefecture="市辖区" province="天津市" -120108 county="汉沽区" prefecture="市辖区" province="天津市" -120109 county="大港区" prefecture="市辖区" province="天津市" -120110 county="东丽区" prefecture="市辖区" province="天津市" -120111 county="西青区" prefecture="市辖区" province="天津市" -120112 county="津南区" prefecture="市辖区" province="天津市" -120113 county="北辰区" prefecture="市辖区" province="天津市" -120114 county="武清区" prefecture="市辖区" province="天津市" -120115 county="宝坻区" prefecture="市辖区" province="天津市" -120116 county="滨海新区" prefecture="市辖区" province="天津市" -120221 county="宁河县" prefecture="县" province="天津市" -120223 county="静海县" prefecture="县" province="天津市" -120225 county="蓟县" prefecture="县" province="天津市" -130101 county="市辖区" prefecture="石家庄市" province="河北省" -130102 county="长安区" prefecture="石家庄市" province="河北省" -130103 county="桥东区" prefecture="石家庄市" province="河北省" -130104 county="桥西区" prefecture="石家庄市" province="河北省" -130105 county="新华区" prefecture="石家庄市" province="河北省" -130107 county="井陉矿区" prefecture="石家庄市" province="河北省" -130108 county="裕华区" prefecture="石家庄市" province="河北省" -130109 county="藁城区" prefecture="石家庄市" province="河北省" -130110 county="鹿泉区" prefecture="石家庄市" province="河北省" -130111 county="栾城区" prefecture="石家庄市" province="河北省" -130121 county="井陉县" prefecture="石家庄市" province="河北省" -130123 county="正定县" prefecture="石家庄市" province="河北省" -130124 county="栾城县" prefecture="石家庄市" province="河北省" -130125 county="行唐县" prefecture="石家庄市" province="河北省" -130126 county="灵寿县" prefecture="石家庄市" province="河北省" -130127 county="高邑县" prefecture="石家庄市" province="河北省" -130128 county="深泽县" prefecture="石家庄市" province="河北省" -130129 county="赞皇县" prefecture="石家庄市" province="河北省" -130130 county="无极县" prefecture="石家庄市" province="河北省" -130131 county="平山县" prefecture="石家庄市" province="河北省" -130132 county="元氏县" prefecture="石家庄市" province="河北省" -130133 county="赵县" prefecture="石家庄市" province="河北省" -130181 county="辛集市" prefecture="石家庄市" province="河北省" -130182 county="藁城市" prefecture="石家庄市" province="河北省" -130183 county="晋州市" prefecture="石家庄市" province="河北省" -130184 county="新乐市" prefecture="石家庄市" province="河北省" -130185 county="鹿泉市" prefecture="石家庄市" province="河北省" -130201 county="市辖区" prefecture="唐山市" province="河北省" -130202 county="路南区" prefecture="唐山市" province="河北省" -130203 county="路北区" prefecture="唐山市" province="河北省" -130204 county="古冶区" prefecture="唐山市" province="河北省" -130205 county="开平区" prefecture="唐山市" province="河北省" -130207 county="丰南区" prefecture="唐山市" province="河北省" -130208 county="丰润区" prefecture="唐山市" province="河北省" -130209 county="曹妃甸区" prefecture="唐山市" province="河北省" -130223 county="滦县" prefecture="唐山市" province="河北省" -130224 county="滦南县" prefecture="唐山市" province="河北省" -130225 county="乐亭县" prefecture="唐山市" province="河北省" -130227 county="迁西县" prefecture="唐山市" province="河北省" -130229 county="玉田县" prefecture="唐山市" province="河北省" -130230 county="唐海县" prefecture="唐山市" province="河北省" -130281 county="遵化市" prefecture="唐山市" province="河北省" -130283 county="迁安市" prefecture="唐山市" province="河北省" -130301 county="市辖区" prefecture="秦皇岛市" province="河北省" -130302 county="海港区" prefecture="秦皇岛市" province="河北省" -130303 county="山海关区" prefecture="秦皇岛市" province="河北省" -130304 county="北戴河区" prefecture="秦皇岛市" province="河北省" -130321 county="青龙满族自治县" prefecture="秦皇岛市" province="河北省" -130322 county="昌黎县" prefecture="秦皇岛市" province="河北省" -130323 county="抚宁县" prefecture="秦皇岛市" province="河北省" -130324 county="卢龙县" prefecture="秦皇岛市" province="河北省" -130401 county="市辖区" prefecture="邯郸市" province="河北省" -130402 county="邯山区" prefecture="邯郸市" province="河北省" -130403 county="丛台区" prefecture="邯郸市" province="河北省" -130404 county="复兴区" prefecture="邯郸市" province="河北省" -130406 county="峰峰矿区" prefecture="邯郸市" province="河北省" -130421 county="邯郸县" prefecture="邯郸市" province="河北省" -130423 county="临漳县" prefecture="邯郸市" province="河北省" -130424 county="成安县" prefecture="邯郸市" province="河北省" -130425 county="大名县" prefecture="邯郸市" province="河北省" -130426 county="涉县" prefecture="邯郸市" province="河北省" -130427 county="磁县" prefecture="邯郸市" province="河北省" -130428 county="肥乡县" prefecture="邯郸市" province="河北省" -130429 county="永年县" prefecture="邯郸市" province="河北省" -130430 county="邱县" prefecture="邯郸市" province="河北省" -130431 county="鸡泽县" prefecture="邯郸市" province="河北省" -130432 county="广平县" prefecture="邯郸市" province="河北省" -130433 county="馆陶县" prefecture="邯郸市" province="河北省" -130434 county="魏县" prefecture="邯郸市" province="河北省" -130435 county="曲周县" prefecture="邯郸市" province="河北省" -130481 county="武安市" prefecture="邯郸市" province="河北省" -130501 county="市辖区" prefecture="邢台市" province="河北省" -130502 county="桥东区" prefecture="邢台市" province="河北省" -130503 county="桥西区" prefecture="邢台市" province="河北省" -130521 county="邢台县" prefecture="邢台市" province="河北省" -130522 county="临城县" prefecture="邢台市" province="河北省" -130523 county="内丘县" prefecture="邢台市" province="河北省" -130524 county="柏乡县" prefecture="邢台市" province="河北省" -130525 county="隆尧县" prefecture="邢台市" province="河北省" -130526 county="任县" prefecture="邢台市" province="河北省" -130527 county="南和县" prefecture="邢台市" province="河北省" -130528 county="宁晋县" prefecture="邢台市" province="河北省" -130529 county="巨鹿县" prefecture="邢台市" province="河北省" -130530 county="新河县" prefecture="邢台市" province="河北省" -130531 county="广宗县" prefecture="邢台市" province="河北省" -130532 county="平乡县" prefecture="邢台市" province="河北省" -130533 county="威县" prefecture="邢台市" province="河北省" -130534 county="清河县" prefecture="邢台市" province="河北省" -130535 county="临西县" prefecture="邢台市" province="河北省" -130581 county="南宫市" prefecture="邢台市" province="河北省" -130582 county="沙河市" prefecture="邢台市" province="河北省" -130601 county="市辖区" prefecture="保定市" province="河北省" -130602 county="新市区" prefecture="保定市" province="河北省" -130603 county="北市区" prefecture="保定市" province="河北省" -130604 county="南市区" prefecture="保定市" province="河北省" -130621 county="满城县" prefecture="保定市" province="河北省" -130622 county="清苑县" prefecture="保定市" province="河北省" -130623 county="涞水县" prefecture="保定市" province="河北省" -130624 county="阜平县" prefecture="保定市" province="河北省" -130625 county="徐水县" prefecture="保定市" province="河北省" -130626 county="定兴县" prefecture="保定市" province="河北省" -130627 county="唐县" prefecture="保定市" province="河北省" -130628 county="高阳县" prefecture="保定市" province="河北省" -130629 county="容城县" prefecture="保定市" province="河北省" -130630 county="涞源县" prefecture="保定市" province="河北省" -130631 county="望都县" prefecture="保定市" province="河北省" -130632 county="安新县" prefecture="保定市" province="河北省" -130633 county="易县" prefecture="保定市" province="河北省" -130634 county="曲阳县" prefecture="保定市" province="河北省" -130635 county="蠡县" prefecture="保定市" province="河北省" -130636 county="顺平县" prefecture="保定市" province="河北省" -130637 county="博野县" prefecture="保定市" province="河北省" -130638 county="雄县" prefecture="保定市" province="河北省" -130681 county="涿州市" prefecture="保定市" province="河北省" -130682 county="定州市" prefecture="保定市" province="河北省" -130683 county="安国市" prefecture="保定市" province="河北省" -130684 county="高碑店市" prefecture="保定市" province="河北省" -130701 county="市辖区" prefecture="张家口市" province="河北省" -130702 county="桥东区" prefecture="张家口市" province="河北省" -130703 county="桥西区" prefecture="张家口市" province="河北省" -130705 county="宣化区" prefecture="张家口市" province="河北省" -130706 county="下花园区" prefecture="张家口市" province="河北省" -130721 county="宣化县" prefecture="张家口市" province="河北省" -130722 county="张北县" prefecture="张家口市" province="河北省" -130723 county="康保县" prefecture="张家口市" province="河北省" -130724 county="沽源县" prefecture="张家口市" province="河北省" -130725 county="尚义县" prefecture="张家口市" province="河北省" -130726 county="蔚县" prefecture="张家口市" province="河北省" -130727 county="阳原县" prefecture="张家口市" province="河北省" -130728 county="怀安县" prefecture="张家口市" province="河北省" -130729 county="万全县" prefecture="张家口市" province="河北省" -130730 county="怀来县" prefecture="张家口市" province="河北省" -130731 county="涿鹿县" prefecture="张家口市" province="河北省" -130732 county="赤城县" prefecture="张家口市" province="河北省" -130733 county="崇礼县" prefecture="张家口市" province="河北省" -130801 county="市辖区" prefecture="承德市" province="河北省" -130802 county="双桥区" prefecture="承德市" province="河北省" -130803 county="双滦区" prefecture="承德市" province="河北省" -130804 county="鹰手营子矿区" prefecture="承德市" province="河北省" -130821 county="承德县" prefecture="承德市" province="河北省" -130822 county="兴隆县" prefecture="承德市" province="河北省" -130823 county="平泉县" prefecture="承德市" province="河北省" -130824 county="滦平县" prefecture="承德市" province="河北省" -130825 county="隆化县" prefecture="承德市" province="河北省" -130826 county="丰宁满族自治县" prefecture="承德市" province="河北省" -130827 county="宽城满族自治县" prefecture="承德市" province="河北省" -130828 county="围场满族蒙古族自治县" prefecture="承德市" province="河北省" -130901 county="市辖区" prefecture="沧州市" province="河北省" -130902 county="新华区" prefecture="沧州市" province="河北省" -130903 county="运河区" prefecture="沧州市" province="河北省" -130921 county="沧县" prefecture="沧州市" province="河北省" -130922 county="青县" prefecture="沧州市" province="河北省" -130923 county="东光县" prefecture="沧州市" province="河北省" -130924 county="海兴县" prefecture="沧州市" province="河北省" -130925 county="盐山县" prefecture="沧州市" province="河北省" -130926 county="肃宁县" prefecture="沧州市" province="河北省" -130927 county="南皮县" prefecture="沧州市" province="河北省" -130928 county="吴桥县" prefecture="沧州市" province="河北省" -130929 county="献县" prefecture="沧州市" province="河北省" -130930 county="孟村回族自治县" prefecture="沧州市" province="河北省" -130981 county="泊头市" prefecture="沧州市" province="河北省" -130982 county="任丘市" prefecture="沧州市" province="河北省" -130983 county="黄骅市" prefecture="沧州市" province="河北省" -130984 county="河间市" prefecture="沧州市" province="河北省" -131001 county="市辖区" prefecture="廊坊市" province="河北省" -131002 county="安次区" prefecture="廊坊市" province="河北省" -131003 county="广阳区" prefecture="廊坊市" province="河北省" -131022 county="固安县" prefecture="廊坊市" province="河北省" -131023 county="永清县" prefecture="廊坊市" province="河北省" -131024 county="香河县" prefecture="廊坊市" province="河北省" -131025 county="大城县" prefecture="廊坊市" province="河北省" -131026 county="文安县" prefecture="廊坊市" province="河北省" -131028 county="大厂回族自治县" prefecture="廊坊市" province="河北省" -131081 county="霸州市" prefecture="廊坊市" province="河北省" -131082 county="三河市" prefecture="廊坊市" province="河北省" -131101 county="市辖区" prefecture="衡水市" province="河北省" -131102 county="桃城区" prefecture="衡水市" province="河北省" -131121 county="枣强县" prefecture="衡水市" province="河北省" -131122 county="武邑县" prefecture="衡水市" province="河北省" -131123 county="武强县" prefecture="衡水市" province="河北省" -131124 county="饶阳县" prefecture="衡水市" province="河北省" -131125 county="安平县" prefecture="衡水市" province="河北省" -131126 county="故城县" prefecture="衡水市" province="河北省" -131127 county="景县" prefecture="衡水市" province="河北省" -131128 county="阜城县" prefecture="衡水市" province="河北省" -131181 county="冀州市" prefecture="衡水市" province="河北省" -131182 county="深州市" prefecture="衡水市" province="河北省" -140101 county="市辖区" prefecture="太原市" province="山西省" -140105 county="小店区" prefecture="太原市" province="山西省" -140106 county="迎泽区" prefecture="太原市" province="山西省" -140107 county="杏花岭区" prefecture="太原市" province="山西省" -140108 county="尖草坪区" prefecture="太原市" province="山西省" -140109 county="万柏林区" prefecture="太原市" province="山西省" -140110 county="晋源区" prefecture="太原市" province="山西省" -140121 county="清徐县" prefecture="太原市" province="山西省" -140122 county="阳曲县" prefecture="太原市" province="山西省" -140123 county="娄烦县" prefecture="太原市" province="山西省" -140181 county="古交市" prefecture="太原市" province="山西省" -140201 county="市辖区" prefecture="大同市" province="山西省" -140202 county="城区" prefecture="大同市" province="山西省" -140203 county="矿区" prefecture="大同市" province="山西省" -140211 county="南郊区" prefecture="大同市" province="山西省" -140212 county="新荣区" prefecture="大同市" province="山西省" -140221 county="阳高县" prefecture="大同市" province="山西省" -140222 county="天镇县" prefecture="大同市" province="山西省" -140223 county="广灵县" prefecture="大同市" province="山西省" -140224 county="灵丘县" prefecture="大同市" province="山西省" -140225 county="浑源县" prefecture="大同市" province="山西省" -140226 county="左云县" prefecture="大同市" province="山西省" -140227 county="大同县" prefecture="大同市" province="山西省" -140301 county="市辖区" prefecture="阳泉市" province="山西省" -140302 county="城区" prefecture="阳泉市" province="山西省" -140303 county="矿区" prefecture="阳泉市" province="山西省" -140311 county="郊区" prefecture="阳泉市" province="山西省" -140321 county="平定县" prefecture="阳泉市" province="山西省" -140322 county="盂县" prefecture="阳泉市" province="山西省" -140401 county="市辖区" prefecture="长治市" province="山西省" -140402 county="城区" prefecture="长治市" province="山西省" -140411 county="郊区" prefecture="长治市" province="山西省" -140421 county="长治县" prefecture="长治市" province="山西省" -140423 county="襄垣县" prefecture="长治市" province="山西省" -140424 county="屯留县" prefecture="长治市" province="山西省" -140425 county="平顺县" prefecture="长治市" province="山西省" -140426 county="黎城县" prefecture="长治市" province="山西省" -140427 county="壶关县" prefecture="长治市" province="山西省" -140428 county="长子县" prefecture="长治市" province="山西省" -140429 county="武乡县" prefecture="长治市" province="山西省" -140430 county="沁县" prefecture="长治市" province="山西省" -140431 county="沁源县" prefecture="长治市" province="山西省" -140481 county="潞城市" prefecture="长治市" province="山西省" -140501 county="市辖区" prefecture="晋城市" province="山西省" -140502 county="城区" prefecture="晋城市" province="山西省" -140521 county="沁水县" prefecture="晋城市" province="山西省" -140522 county="阳城县" prefecture="晋城市" province="山西省" -140524 county="陵川县" prefecture="晋城市" province="山西省" -140525 county="泽州县" prefecture="晋城市" province="山西省" -140581 county="高平市" prefecture="晋城市" province="山西省" -140601 county="市辖区" prefecture="朔州市" province="山西省" -140602 county="朔城区" prefecture="朔州市" province="山西省" -140603 county="平鲁区" prefecture="朔州市" province="山西省" -140621 county="山阴县" prefecture="朔州市" province="山西省" -140622 county="应县" prefecture="朔州市" province="山西省" -140623 county="右玉县" prefecture="朔州市" province="山西省" -140624 county="怀仁县" prefecture="朔州市" province="山西省" -140701 county="市辖区" prefecture="晋中市" province="山西省" -140702 county="榆次区" prefecture="晋中市" province="山西省" -140721 county="榆社县" prefecture="晋中市" province="山西省" -140722 county="左权县" prefecture="晋中市" province="山西省" -140723 county="和顺县" prefecture="晋中市" province="山西省" -140724 county="昔阳县" prefecture="晋中市" province="山西省" -140725 county="寿阳县" prefecture="晋中市" province="山西省" -140726 county="太谷县" prefecture="晋中市" province="山西省" -140727 county="祁县" prefecture="晋中市" province="山西省" -140728 county="平遥县" prefecture="晋中市" province="山西省" -140729 county="灵石县" prefecture="晋中市" province="山西省" -140781 county="介休市" prefecture="晋中市" province="山西省" -140801 county="市辖区" prefecture="运城市" province="山西省" -140802 county="盐湖区" prefecture="运城市" province="山西省" -140821 county="临猗县" prefecture="运城市" province="山西省" -140822 county="万荣县" prefecture="运城市" province="山西省" -140823 county="闻喜县" prefecture="运城市" province="山西省" -140824 county="稷山县" prefecture="运城市" province="山西省" -140825 county="新绛县" prefecture="运城市" province="山西省" -140826 county="绛县" prefecture="运城市" province="山西省" -140827 county="垣曲县" prefecture="运城市" province="山西省" -140828 county="夏县" prefecture="运城市" province="山西省" -140829 county="平陆县" prefecture="运城市" province="山西省" -140830 county="芮城县" prefecture="运城市" province="山西省" -140881 county="永济市" prefecture="运城市" province="山西省" -140882 county="河津市" prefecture="运城市" province="山西省" -140901 county="市辖区" prefecture="忻州市" province="山西省" -140902 county="忻府区" prefecture="忻州市" province="山西省" -140921 county="定襄县" prefecture="忻州市" province="山西省" -140922 county="五台县" prefecture="忻州市" province="山西省" -140923 county="代县" prefecture="忻州市" province="山西省" -140924 county="繁峙县" prefecture="忻州市" province="山西省" -140925 county="宁武县" prefecture="忻州市" province="山西省" -140926 county="静乐县" prefecture="忻州市" province="山西省" -140927 county="神池县" prefecture="忻州市" province="山西省" -140928 county="五寨县" prefecture="忻州市" province="山西省" -140929 county="岢岚县" prefecture="忻州市" province="山西省" -140930 county="河曲县" prefecture="忻州市" province="山西省" -140931 county="保德县" prefecture="忻州市" province="山西省" -140932 county="偏关县" prefecture="忻州市" province="山西省" -140981 county="原平市" prefecture="忻州市" province="山西省" -141001 county="市辖区" prefecture="临汾市" province="山西省" -141002 county="尧都区" prefecture="临汾市" province="山西省" -141021 county="曲沃县" prefecture="临汾市" province="山西省" -141022 county="翼城县" prefecture="临汾市" province="山西省" -141023 county="襄汾县" prefecture="临汾市" province="山西省" -141024 county="洪洞县" prefecture="临汾市" province="山西省" -141025 county="古县" prefecture="临汾市" province="山西省" -141026 county="安泽县" prefecture="临汾市" province="山西省" -141027 county="浮山县" prefecture="临汾市" province="山西省" -141028 county="吉县" prefecture="临汾市" province="山西省" -141029 county="乡宁县" prefecture="临汾市" province="山西省" -141030 county="大宁县" prefecture="临汾市" province="山西省" -141031 county="隰县" prefecture="临汾市" province="山西省" -141032 county="永和县" prefecture="临汾市" province="山西省" -141033 county="蒲县" prefecture="临汾市" province="山西省" -141034 county="汾西县" prefecture="临汾市" province="山西省" -141081 county="侯马市" prefecture="临汾市" province="山西省" -141082 county="霍州市" prefecture="临汾市" province="山西省" -141101 county="市辖区" prefecture="吕梁市" province="山西省" -141102 county="离石区" prefecture="吕梁市" province="山西省" -141121 county="文水县" prefecture="吕梁市" province="山西省" -141122 county="交城县" prefecture="吕梁市" province="山西省" -141123 county="兴县" prefecture="吕梁市" province="山西省" -141124 county="临县" prefecture="吕梁市" province="山西省" -141125 county="柳林县" prefecture="吕梁市" province="山西省" -141126 county="石楼县" prefecture="吕梁市" province="山西省" -141127 county="岚县" prefecture="吕梁市" province="山西省" -141128 county="方山县" prefecture="吕梁市" province="山西省" -141129 county="中阳县" prefecture="吕梁市" province="山西省" -141130 county="交口县" prefecture="吕梁市" province="山西省" -141181 county="孝义市" prefecture="吕梁市" province="山西省" -141182 county="汾阳市" prefecture="吕梁市" province="山西省" -142301 county="孝义市" prefecture="吕梁地区" province="山西省" -142302 county="离石市" prefecture="吕梁地区" province="山西省" -142303 county="汾阳市" prefecture="吕梁地区" province="山西省" -142322 county="文水县" prefecture="吕梁地区" province="山西省" -142323 county="交城县" prefecture="吕梁地区" province="山西省" -142325 county="兴县" prefecture="吕梁地区" province="山西省" -142326 county="临县" prefecture="吕梁地区" province="山西省" -142327 county="柳林县" prefecture="吕梁地区" province="山西省" -142328 county="石楼县" prefecture="吕梁地区" province="山西省" -142329 county="岚县" prefecture="吕梁地区" province="山西省" -142330 county="方山县" prefecture="吕梁地区" province="山西省" -142332 county="中阳县" prefecture="吕梁地区" province="山西省" -142333 county="交口县" prefecture="吕梁地区" province="山西省" -150101 county="市辖区" prefecture="呼和浩特市" province="内蒙古自治区" -150102 county="新城区" prefecture="呼和浩特市" province="内蒙古自治区" -150103 county="回民区" prefecture="呼和浩特市" province="内蒙古自治区" -150104 county="玉泉区" prefecture="呼和浩特市" province="内蒙古自治区" -150105 county="赛罕区" prefecture="呼和浩特市" province="内蒙古自治区" -150121 county="土默特左旗" prefecture="呼和浩特市" province="内蒙古自治区" -150122 county="托克托县" prefecture="呼和浩特市" province="内蒙古自治区" -150123 county="和林格尔县" prefecture="呼和浩特市" province="内蒙古自治区" -150124 county="清水河县" prefecture="呼和浩特市" province="内蒙古自治区" -150125 county="武川县" prefecture="呼和浩特市" province="内蒙古自治区" -150201 county="市辖区" prefecture="包头市" province="内蒙古自治区" -150202 county="东河区" prefecture="包头市" province="内蒙古自治区" -150203 county="昆都仑区" prefecture="包头市" province="内蒙古自治区" -150204 county="青山区" prefecture="包头市" province="内蒙古自治区" -150205 county="石拐区" prefecture="包头市" province="内蒙古自治区" -150206 county="白云鄂博矿区" prefecture="包头市" province="内蒙古自治区" -150207 county="九原区" prefecture="包头市" province="内蒙古自治区" -150221 county="土默特右旗" prefecture="包头市" province="内蒙古自治区" -150222 county="固阳县" prefecture="包头市" province="内蒙古自治区" -150223 county="达尔罕茂明安联合旗" prefecture="包头市" province="内蒙古自治区" -150301 county="市辖区" prefecture="乌海市" province="内蒙古自治区" -150302 county="海勃湾区" prefecture="乌海市" province="内蒙古自治区" -150303 county="海南区" prefecture="乌海市" province="内蒙古自治区" -150304 county="乌达区" prefecture="乌海市" province="内蒙古自治区" -150401 county="市辖区" prefecture="赤峰市" province="内蒙古自治区" -150402 county="红山区" prefecture="赤峰市" province="内蒙古自治区" -150403 county="元宝山区" prefecture="赤峰市" province="内蒙古自治区" -150404 county="松山区" prefecture="赤峰市" province="内蒙古自治区" -150421 county="阿鲁科尔沁旗" prefecture="赤峰市" province="内蒙古自治区" -150422 county="巴林左旗" prefecture="赤峰市" province="内蒙古自治区" -150423 county="巴林右旗" prefecture="赤峰市" province="内蒙古自治区" -150424 county="林西县" prefecture="赤峰市" province="内蒙古自治区" -150425 county="克什克腾旗" prefecture="赤峰市" province="内蒙古自治区" -150426 county="翁牛特旗" prefecture="赤峰市" province="内蒙古自治区" -150428 county="喀喇沁旗" prefecture="赤峰市" province="内蒙古自治区" -150429 county="宁城县" prefecture="赤峰市" province="内蒙古自治区" -150430 county="敖汉旗" prefecture="赤峰市" province="内蒙古自治区" -150501 county="市辖区" prefecture="通辽市" province="内蒙古自治区" -150502 county="科尔沁区" prefecture="通辽市" province="内蒙古自治区" -150521 county="科尔沁左翼中旗" prefecture="通辽市" province="内蒙古自治区" -150522 county="科尔沁左翼后旗" prefecture="通辽市" province="内蒙古自治区" -150523 county="开鲁县" prefecture="通辽市" province="内蒙古自治区" -150524 county="库伦旗" prefecture="通辽市" province="内蒙古自治区" -150525 county="奈曼旗" prefecture="通辽市" province="内蒙古自治区" -150526 county="扎鲁特旗" prefecture="通辽市" province="内蒙古自治区" -150581 county="霍林郭勒市" prefecture="通辽市" province="内蒙古自治区" -150601 county="市辖区" prefecture="鄂尔多斯市" province="内蒙古自治区" -150602 county="东胜区" prefecture="鄂尔多斯市" province="内蒙古自治区" -150621 county="达拉特旗" prefecture="鄂尔多斯市" province="内蒙古自治区" -150622 county="准格尔旗" prefecture="鄂尔多斯市" province="内蒙古自治区" -150623 county="鄂托克前旗" prefecture="鄂尔多斯市" province="内蒙古自治区" -150624 county="鄂托克旗" prefecture="鄂尔多斯市" province="内蒙古自治区" -150625 county="杭锦旗" prefecture="鄂尔多斯市" province="内蒙古自治区" -150626 county="乌审旗" prefecture="鄂尔多斯市" province="内蒙古自治区" -150627 county="伊金霍洛旗" prefecture="鄂尔多斯市" province="内蒙古自治区" -150701 county="市辖区" prefecture="呼伦贝尔市" province="内蒙古自治区" -150702 county="海拉尔区" prefecture="呼伦贝尔市" province="内蒙古自治区" -150703 county="扎赉诺尔区" prefecture="呼伦贝尔市" province="内蒙古自治区" -150721 county="阿荣旗" prefecture="呼伦贝尔市" province="内蒙古自治区" -150722 county="莫力达瓦达斡尔族自治旗" prefecture="呼伦贝尔市" province="内蒙古自治区" -150723 county="鄂伦春自治旗" prefecture="呼伦贝尔市" province="内蒙古自治区" -150724 county="鄂温克族自治旗" prefecture="呼伦贝尔市" province="内蒙古自治区" -150725 county="陈巴尔虎旗" prefecture="呼伦贝尔市" province="内蒙古自治区" -150726 county="新巴尔虎左旗" prefecture="呼伦贝尔市" province="内蒙古自治区" -150727 county="新巴尔虎右旗" prefecture="呼伦贝尔市" province="内蒙古自治区" -150781 county="满洲里市" prefecture="呼伦贝尔市" province="内蒙古自治区" -150782 county="牙克石市" prefecture="呼伦贝尔市" province="内蒙古自治区" -150783 county="扎兰屯市" prefecture="呼伦贝尔市" province="内蒙古自治区" -150784 county="额尔古纳市" prefecture="呼伦贝尔市" province="内蒙古自治区" -150785 county="根河市" prefecture="呼伦贝尔市" province="内蒙古自治区" -150801 county="市辖区" prefecture="巴彦淖尔市" province="内蒙古自治区" -150802 county="临河区" prefecture="巴彦淖尔市" province="内蒙古自治区" -150821 county="五原县" prefecture="巴彦淖尔市" province="内蒙古自治区" -150822 county="磴口县" prefecture="巴彦淖尔市" province="内蒙古自治区" -150823 county="乌拉特前旗" prefecture="巴彦淖尔市" province="内蒙古自治区" -150824 county="乌拉特中旗" prefecture="巴彦淖尔市" province="内蒙古自治区" -150825 county="乌拉特后旗" prefecture="巴彦淖尔市" province="内蒙古自治区" -150826 county="杭锦后旗" prefecture="巴彦淖尔市" province="内蒙古自治区" -150901 county="市辖区" prefecture="乌兰察布市" province="内蒙古自治区" -150902 county="集宁区" prefecture="乌兰察布市" province="内蒙古自治区" -150921 county="卓资县" prefecture="乌兰察布市" province="内蒙古自治区" -150922 county="化德县" prefecture="乌兰察布市" province="内蒙古自治区" -150923 county="商都县" prefecture="乌兰察布市" province="内蒙古自治区" -150924 county="兴和县" prefecture="乌兰察布市" province="内蒙古自治区" -150925 county="凉城县" prefecture="乌兰察布市" province="内蒙古自治区" -150926 county="察哈尔右翼前旗" prefecture="乌兰察布市" province="内蒙古自治区" -150927 county="察哈尔右翼中旗" prefecture="乌兰察布市" province="内蒙古自治区" -150928 county="察哈尔右翼后旗" prefecture="乌兰察布市" province="内蒙古自治区" -150929 county="四子王旗" prefecture="乌兰察布市" province="内蒙古自治区" -150981 county="丰镇市" prefecture="乌兰察布市" province="内蒙古自治区" -152201 county="乌兰浩特市" prefecture="兴安盟" province="内蒙古自治区" -152202 county="阿尔山市" prefecture="兴安盟" province="内蒙古自治区" -152221 county="科尔沁右翼前旗" prefecture="兴安盟" province="内蒙古自治区" -152222 county="科尔沁右翼中旗" prefecture="兴安盟" province="内蒙古自治区" -152223 county="扎赉特旗" prefecture="兴安盟" province="内蒙古自治区" -152224 county="突泉县" prefecture="兴安盟" province="内蒙古自治区" -152501 county="二连浩特市" prefecture="锡林郭勒盟" province="内蒙古自治区" -152502 county="锡林浩特市" prefecture="锡林郭勒盟" province="内蒙古自治区" -152522 county="阿巴嘎旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152523 county="苏尼特左旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152524 county="苏尼特右旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152525 county="东乌珠穆沁旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152526 county="西乌珠穆沁旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152527 county="太仆寺旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152528 county="镶黄旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152529 county="正镶白旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152530 county="正蓝旗" prefecture="锡林郭勒盟" province="内蒙古自治区" -152531 county="多伦县" prefecture="锡林郭勒盟" province="内蒙古自治区" -152601 county="集宁市" prefecture="乌兰察布盟" province="内蒙古自治区" -152602 county="丰镇市" prefecture="乌兰察布盟" province="内蒙古自治区" -152624 county="卓资县" prefecture="乌兰察布盟" province="内蒙古自治区" -152625 county="化德县" prefecture="乌兰察布盟" province="内蒙古自治区" -152626 county="商都县" prefecture="乌兰察布盟" province="内蒙古自治区" -152627 county="兴和县" prefecture="乌兰察布盟" province="内蒙古自治区" -152629 county="凉城县" prefecture="乌兰察布盟" province="内蒙古自治区" -152630 county="察哈尔右翼前旗" prefecture="乌兰察布盟" province="内蒙古自治区" -152631 county="察哈尔右翼中旗" prefecture="乌兰察布盟" province="内蒙古自治区" -152632 county="察哈尔右翼后旗" prefecture="乌兰察布盟" province="内蒙古自治区" -152634 county="四子王旗" prefecture="乌兰察布盟" province="内蒙古自治区" -152801 county="临河市" prefecture="巴彦淖尔盟" province="内蒙古自治区" -152822 county="五原县" prefecture="巴彦淖尔盟" province="内蒙古自治区" -152823 county="磴口县" prefecture="巴彦淖尔盟" province="内蒙古自治区" -152824 county="乌拉特前旗" prefecture="巴彦淖尔盟" province="内蒙古自治区" -152825 county="乌拉特中旗" prefecture="巴彦淖尔盟" province="内蒙古自治区" -152826 county="乌拉特后旗" prefecture="巴彦淖尔盟" province="内蒙古自治区" -152827 county="杭锦后旗" prefecture="巴彦淖尔盟" province="内蒙古自治区" -152921 county="阿拉善左旗" prefecture="阿拉善盟" province="内蒙古自治区" -152922 county="阿拉善右旗" prefecture="阿拉善盟" province="内蒙古自治区" -152923 county="额济纳旗" prefecture="阿拉善盟" province="内蒙古自治区" -210101 county="市辖区" prefecture="沈阳市" province="辽宁省" -210102 county="和平区" prefecture="沈阳市" province="辽宁省" -210103 county="沈河区" prefecture="沈阳市" province="辽宁省" -210104 county="大东区" prefecture="沈阳市" province="辽宁省" -210105 county="皇姑区" prefecture="沈阳市" province="辽宁省" -210106 county="铁西区" prefecture="沈阳市" province="辽宁省" -210111 county="苏家屯区" prefecture="沈阳市" province="辽宁省" -210112 county="浑南区" prefecture="沈阳市" province="辽宁省" -210113 county="沈北新区" prefecture="沈阳市" province="辽宁省" -210114 county="于洪区" prefecture="沈阳市" province="辽宁省" -210122 county="辽中县" prefecture="沈阳市" province="辽宁省" -210123 county="康平县" prefecture="沈阳市" province="辽宁省" -210124 county="法库县" prefecture="沈阳市" province="辽宁省" -210181 county="新民市" prefecture="沈阳市" province="辽宁省" -210201 county="市辖区" prefecture="大连市" province="辽宁省" -210202 county="中山区" prefecture="大连市" province="辽宁省" -210203 county="西岗区" prefecture="大连市" province="辽宁省" -210204 county="沙河口区" prefecture="大连市" province="辽宁省" -210211 county="甘井子区" prefecture="大连市" province="辽宁省" -210212 county="旅顺口区" prefecture="大连市" province="辽宁省" -210213 county="金州区" prefecture="大连市" province="辽宁省" -210224 county="长海县" prefecture="大连市" province="辽宁省" -210281 county="瓦房店市" prefecture="大连市" province="辽宁省" -210282 county="普兰店市" prefecture="大连市" province="辽宁省" -210283 county="庄河市" prefecture="大连市" province="辽宁省" -210301 county="市辖区" prefecture="鞍山市" province="辽宁省" -210302 county="铁东区" prefecture="鞍山市" province="辽宁省" -210303 county="铁西区" prefecture="鞍山市" province="辽宁省" -210304 county="立山区" prefecture="鞍山市" province="辽宁省" -210311 county="千山区" prefecture="鞍山市" province="辽宁省" -210321 county="台安县" prefecture="鞍山市" province="辽宁省" -210323 county="岫岩满族自治县" prefecture="鞍山市" province="辽宁省" -210381 county="海城市" prefecture="鞍山市" province="辽宁省" -210401 county="市辖区" prefecture="抚顺市" province="辽宁省" -210402 county="新抚区" prefecture="抚顺市" province="辽宁省" -210403 county="东洲区" prefecture="抚顺市" province="辽宁省" -210404 county="望花区" prefecture="抚顺市" province="辽宁省" -210411 county="顺城区" prefecture="抚顺市" province="辽宁省" -210421 county="抚顺县" prefecture="抚顺市" province="辽宁省" -210422 county="新宾满族自治县" prefecture="抚顺市" province="辽宁省" -210423 county="清原满族自治县" prefecture="抚顺市" province="辽宁省" -210501 county="市辖区" prefecture="本溪市" province="辽宁省" -210502 county="平山区" prefecture="本溪市" province="辽宁省" -210503 county="溪湖区" prefecture="本溪市" province="辽宁省" -210504 county="明山区" prefecture="本溪市" province="辽宁省" -210505 county="南芬区" prefecture="本溪市" province="辽宁省" -210521 county="本溪满族自治县" prefecture="本溪市" province="辽宁省" -210522 county="桓仁满族自治县" prefecture="本溪市" province="辽宁省" -210601 county="市辖区" prefecture="丹东市" province="辽宁省" -210602 county="元宝区" prefecture="丹东市" province="辽宁省" -210603 county="振兴区" prefecture="丹东市" province="辽宁省" -210604 county="振安区" prefecture="丹东市" province="辽宁省" -210624 county="宽甸满族自治县" prefecture="丹东市" province="辽宁省" -210681 county="东港市" prefecture="丹东市" province="辽宁省" -210682 county="凤城市" prefecture="丹东市" province="辽宁省" -210701 county="市辖区" prefecture="锦州市" province="辽宁省" -210702 county="古塔区" prefecture="锦州市" province="辽宁省" -210703 county="凌河区" prefecture="锦州市" province="辽宁省" -210711 county="太和区" prefecture="锦州市" province="辽宁省" -210726 county="黑山县" prefecture="锦州市" province="辽宁省" -210727 county="义县" prefecture="锦州市" province="辽宁省" -210781 county="凌海市" prefecture="锦州市" province="辽宁省" -210782 county="北镇市" prefecture="锦州市" province="辽宁省" -210801 county="市辖区" prefecture="营口市" province="辽宁省" -210802 county="站前区" prefecture="营口市" province="辽宁省" -210803 county="西市区" prefecture="营口市" province="辽宁省" -210804 county="鲅鱼圈区" prefecture="营口市" province="辽宁省" -210811 county="老边区" prefecture="营口市" province="辽宁省" -210881 county="盖州市" prefecture="营口市" province="辽宁省" -210882 county="大石桥市" prefecture="营口市" province="辽宁省" -210901 county="市辖区" prefecture="阜新市" province="辽宁省" -210902 county="海州区" prefecture="阜新市" province="辽宁省" -210903 county="新邱区" prefecture="阜新市" province="辽宁省" -210904 county="太平区" prefecture="阜新市" province="辽宁省" -210905 county="清河门区" prefecture="阜新市" province="辽宁省" -210911 county="细河区" prefecture="阜新市" province="辽宁省" -210921 county="阜新蒙古族自治县" prefecture="阜新市" province="辽宁省" -210922 county="彰武县" prefecture="阜新市" province="辽宁省" -211001 county="市辖区" prefecture="辽阳市" province="辽宁省" -211002 county="白塔区" prefecture="辽阳市" province="辽宁省" -211003 county="文圣区" prefecture="辽阳市" province="辽宁省" -211004 county="宏伟区" prefecture="辽阳市" province="辽宁省" -211005 county="弓长岭区" prefecture="辽阳市" province="辽宁省" -211011 county="太子河区" prefecture="辽阳市" province="辽宁省" -211021 county="辽阳县" prefecture="辽阳市" province="辽宁省" -211081 county="灯塔市" prefecture="辽阳市" province="辽宁省" -211101 county="市辖区" prefecture="盘锦市" province="辽宁省" -211102 county="双台子区" prefecture="盘锦市" province="辽宁省" -211103 county="兴隆台区" prefecture="盘锦市" province="辽宁省" -211121 county="大洼县" prefecture="盘锦市" province="辽宁省" -211122 county="盘山县" prefecture="盘锦市" province="辽宁省" -211201 county="市辖区" prefecture="铁岭市" province="辽宁省" -211202 county="银州区" prefecture="铁岭市" province="辽宁省" -211204 county="清河区" prefecture="铁岭市" province="辽宁省" -211221 county="铁岭县" prefecture="铁岭市" province="辽宁省" -211223 county="西丰县" prefecture="铁岭市" province="辽宁省" -211224 county="昌图县" prefecture="铁岭市" province="辽宁省" -211281 county="调兵山市" prefecture="铁岭市" province="辽宁省" -211282 county="开原市" prefecture="铁岭市" province="辽宁省" -211301 county="市辖区" prefecture="朝阳市" province="辽宁省" -211302 county="双塔区" prefecture="朝阳市" province="辽宁省" -211303 county="龙城区" prefecture="朝阳市" province="辽宁省" -211321 county="朝阳县" prefecture="朝阳市" province="辽宁省" -211322 county="建平县" prefecture="朝阳市" province="辽宁省" -211324 county="喀喇沁左翼蒙古族自治县" prefecture="朝阳市" province="辽宁省" -211381 county="北票市" prefecture="朝阳市" province="辽宁省" -211382 county="凌源市" prefecture="朝阳市" province="辽宁省" -211401 county="市辖区" prefecture="葫芦岛市" province="辽宁省" -211402 county="连山区" prefecture="葫芦岛市" province="辽宁省" -211403 county="龙港区" prefecture="葫芦岛市" province="辽宁省" -211404 county="南票区" prefecture="葫芦岛市" province="辽宁省" -211421 county="绥中县" prefecture="葫芦岛市" province="辽宁省" -211422 county="建昌县" prefecture="葫芦岛市" province="辽宁省" -211481 county="兴城市" prefecture="葫芦岛市" province="辽宁省" -220101 county="市辖区" prefecture="长春市" province="吉林省" -220102 county="南关区" prefecture="长春市" province="吉林省" -220103 county="宽城区" prefecture="长春市" province="吉林省" -220104 county="朝阳区" prefecture="长春市" province="吉林省" -220105 county="二道区" prefecture="长春市" province="吉林省" -220106 county="绿园区" prefecture="长春市" province="吉林省" -220112 county="双阳区" prefecture="长春市" province="吉林省" -220113 county="九台区" prefecture="长春市" province="吉林省" -220122 county="农安县" prefecture="长春市" province="吉林省" -220181 county="九台市" prefecture="长春市" province="吉林省" -220182 county="榆树市" prefecture="长春市" province="吉林省" -220183 county="德惠市" prefecture="长春市" province="吉林省" -220201 county="市辖区" prefecture="吉林市" province="吉林省" -220202 county="昌邑区" prefecture="吉林市" province="吉林省" -220203 county="龙潭区" prefecture="吉林市" province="吉林省" -220204 county="船营区" prefecture="吉林市" province="吉林省" -220211 county="丰满区" prefecture="吉林市" province="吉林省" -220221 county="永吉县" prefecture="吉林市" province="吉林省" -220281 county="蛟河市" prefecture="吉林市" province="吉林省" -220282 county="桦甸市" prefecture="吉林市" province="吉林省" -220283 county="舒兰市" prefecture="吉林市" province="吉林省" -220284 county="磐石市" prefecture="吉林市" province="吉林省" -220301 county="市辖区" prefecture="四平市" province="吉林省" -220302 county="铁西区" prefecture="四平市" province="吉林省" -220303 county="铁东区" prefecture="四平市" province="吉林省" -220322 county="梨树县" prefecture="四平市" province="吉林省" -220323 county="伊通满族自治县" prefecture="四平市" province="吉林省" -220381 county="公主岭市" prefecture="四平市" province="吉林省" -220382 county="双辽市" prefecture="四平市" province="吉林省" -220401 county="市辖区" prefecture="辽源市" province="吉林省" -220402 county="龙山区" prefecture="辽源市" province="吉林省" -220403 county="西安区" prefecture="辽源市" province="吉林省" -220421 county="东丰县" prefecture="辽源市" province="吉林省" -220422 county="东辽县" prefecture="辽源市" province="吉林省" -220501 county="市辖区" prefecture="通化市" province="吉林省" -220502 county="东昌区" prefecture="通化市" province="吉林省" -220503 county="二道江区" prefecture="通化市" province="吉林省" -220521 county="通化县" prefecture="通化市" province="吉林省" -220523 county="辉南县" prefecture="通化市" province="吉林省" -220524 county="柳河县" prefecture="通化市" province="吉林省" -220581 county="梅河口市" prefecture="通化市" province="吉林省" -220582 county="集安市" prefecture="通化市" province="吉林省" -220601 county="市辖区" prefecture="白山市" province="吉林省" -220602 county="浑江区" prefecture="白山市" province="吉林省" -220604 county="江源区" prefecture="白山市" province="吉林省" -220605 county="江源区" prefecture="白山市" province="吉林省" -220621 county="抚松县" prefecture="白山市" province="吉林省" -220622 county="靖宇县" prefecture="白山市" province="吉林省" -220623 county="长白朝鲜族自治县" prefecture="白山市" province="吉林省" -220625 county="江源县" prefecture="白山市" province="吉林省" -220681 county="临江市" prefecture="白山市" province="吉林省" -220701 county="市辖区" prefecture="松原市" province="吉林省" -220702 county="宁江区" prefecture="松原市" province="吉林省" -220721 county="前郭尔罗斯蒙古族自治县" prefecture="松原市" province="吉林省" -220722 county="长岭县" prefecture="松原市" province="吉林省" -220723 county="乾安县" prefecture="松原市" province="吉林省" -220724 county="扶余县" prefecture="松原市" province="吉林省" -220781 county="扶余市" prefecture="松原市" province="吉林省" -220801 county="市辖区" prefecture="白城市" province="吉林省" -220802 county="洮北区" prefecture="白城市" province="吉林省" -220821 county="镇赉县" prefecture="白城市" province="吉林省" -220822 county="通榆县" prefecture="白城市" province="吉林省" -220881 county="洮南市" prefecture="白城市" province="吉林省" -220882 county="大安市" prefecture="白城市" province="吉林省" -222401 county="延吉市" prefecture="延边朝鲜族自治州" province="吉林省" -222402 county="图们市" prefecture="延边朝鲜族自治州" province="吉林省" -222403 county="敦化市" prefecture="延边朝鲜族自治州" province="吉林省" -222404 county="珲春市" prefecture="延边朝鲜族自治州" province="吉林省" -222405 county="龙井市" prefecture="延边朝鲜族自治州" province="吉林省" -222406 county="和龙市" prefecture="延边朝鲜族自治州" province="吉林省" -222424 county="汪清县" prefecture="延边朝鲜族自治州" province="吉林省" -222426 county="安图县" prefecture="延边朝鲜族自治州" province="吉林省" -230101 county="市辖区" prefecture="哈尔滨市" province="黑龙江省" -230102 county="道里区" prefecture="哈尔滨市" province="黑龙江省" -230103 county="南岗区" prefecture="哈尔滨市" province="黑龙江省" -230104 county="道外区" prefecture="哈尔滨市" province="黑龙江省" -230105 county="太平区" prefecture="哈尔滨市" province="黑龙江省" -230106 county="香坊区" prefecture="哈尔滨市" province="黑龙江省" -230107 county="动力区" prefecture="哈尔滨市" province="黑龙江省" -230108 county="平房区" prefecture="哈尔滨市" province="黑龙江省" -230109 county="松北区" prefecture="哈尔滨市" province="黑龙江省" -230110 county="香坊区" prefecture="哈尔滨市" province="黑龙江省" -230111 county="呼兰区" prefecture="哈尔滨市" province="黑龙江省" -230112 county="阿城区" prefecture="哈尔滨市" province="黑龙江省" -230121 county="呼兰县" prefecture="哈尔滨市" province="黑龙江省" -230123 county="依兰县" prefecture="哈尔滨市" province="黑龙江省" -230124 county="方正县" prefecture="哈尔滨市" province="黑龙江省" -230125 county="宾县" prefecture="哈尔滨市" province="黑龙江省" -230126 county="巴彦县" prefecture="哈尔滨市" province="黑龙江省" -230127 county="木兰县" prefecture="哈尔滨市" province="黑龙江省" -230128 county="通河县" prefecture="哈尔滨市" province="黑龙江省" -230129 county="延寿县" prefecture="哈尔滨市" province="黑龙江省" -230181 county="阿城市" prefecture="哈尔滨市" province="黑龙江省" -230182 county="双城市" prefecture="哈尔滨市" province="黑龙江省" -230183 county="尚志市" prefecture="哈尔滨市" province="黑龙江省" -230184 county="五常市" prefecture="哈尔滨市" province="黑龙江省" -230201 county="市辖区" prefecture="齐齐哈尔市" province="黑龙江省" -230202 county="龙沙区" prefecture="齐齐哈尔市" province="黑龙江省" -230203 county="建华区" prefecture="齐齐哈尔市" province="黑龙江省" -230204 county="铁锋区" prefecture="齐齐哈尔市" province="黑龙江省" -230205 county="昂昂溪区" prefecture="齐齐哈尔市" province="黑龙江省" -230206 county="富拉尔基区" prefecture="齐齐哈尔市" province="黑龙江省" -230207 county="碾子山区" prefecture="齐齐哈尔市" province="黑龙江省" -230208 county="梅里斯达斡尔族区" prefecture="齐齐哈尔市" province="黑龙江省" -230221 county="龙江县" prefecture="齐齐哈尔市" province="黑龙江省" -230223 county="依安县" prefecture="齐齐哈尔市" province="黑龙江省" -230224 county="泰来县" prefecture="齐齐哈尔市" province="黑龙江省" -230225 county="甘南县" prefecture="齐齐哈尔市" province="黑龙江省" -230227 county="富裕县" prefecture="齐齐哈尔市" province="黑龙江省" -230229 county="克山县" prefecture="齐齐哈尔市" province="黑龙江省" -230230 county="克东县" prefecture="齐齐哈尔市" province="黑龙江省" -230231 county="拜泉县" prefecture="齐齐哈尔市" province="黑龙江省" -230281 county="讷河市" prefecture="齐齐哈尔市" province="黑龙江省" -230301 county="市辖区" prefecture="鸡西市" province="黑龙江省" -230302 county="鸡冠区" prefecture="鸡西市" province="黑龙江省" -230303 county="恒山区" prefecture="鸡西市" province="黑龙江省" -230304 county="滴道区" prefecture="鸡西市" province="黑龙江省" -230305 county="梨树区" prefecture="鸡西市" province="黑龙江省" -230306 county="城子河区" prefecture="鸡西市" province="黑龙江省" -230307 county="麻山区" prefecture="鸡西市" province="黑龙江省" -230321 county="鸡东县" prefecture="鸡西市" province="黑龙江省" -230381 county="虎林市" prefecture="鸡西市" province="黑龙江省" -230382 county="密山市" prefecture="鸡西市" province="黑龙江省" -230401 county="市辖区" prefecture="鹤岗市" province="黑龙江省" -230402 county="向阳区" prefecture="鹤岗市" province="黑龙江省" -230403 county="工农区" prefecture="鹤岗市" province="黑龙江省" -230404 county="南山区" prefecture="鹤岗市" province="黑龙江省" -230405 county="兴安区" prefecture="鹤岗市" province="黑龙江省" -230406 county="东山区" prefecture="鹤岗市" province="黑龙江省" -230407 county="兴山区" prefecture="鹤岗市" province="黑龙江省" -230421 county="萝北县" prefecture="鹤岗市" province="黑龙江省" -230422 county="绥滨县" prefecture="鹤岗市" province="黑龙江省" -230501 county="市辖区" prefecture="双鸭山市" province="黑龙江省" -230502 county="尖山区" prefecture="双鸭山市" province="黑龙江省" -230503 county="岭东区" prefecture="双鸭山市" province="黑龙江省" -230505 county="四方台区" prefecture="双鸭山市" province="黑龙江省" -230506 county="宝山区" prefecture="双鸭山市" province="黑龙江省" -230521 county="集贤县" prefecture="双鸭山市" province="黑龙江省" -230522 county="友谊县" prefecture="双鸭山市" province="黑龙江省" -230523 county="宝清县" prefecture="双鸭山市" province="黑龙江省" -230524 county="饶河县" prefecture="双鸭山市" province="黑龙江省" -230601 county="市辖区" prefecture="大庆市" province="黑龙江省" -230602 county="萨尔图区" prefecture="大庆市" province="黑龙江省" -230603 county="龙凤区" prefecture="大庆市" province="黑龙江省" -230604 county="让胡路区" prefecture="大庆市" province="黑龙江省" -230605 county="红岗区" prefecture="大庆市" province="黑龙江省" -230606 county="大同区" prefecture="大庆市" province="黑龙江省" -230621 county="肇州县" prefecture="大庆市" province="黑龙江省" -230622 county="肇源县" prefecture="大庆市" province="黑龙江省" -230623 county="林甸县" prefecture="大庆市" province="黑龙江省" -230624 county="杜尔伯特蒙古族自治县" prefecture="大庆市" province="黑龙江省" -230701 county="市辖区" prefecture="伊春市" province="黑龙江省" -230702 county="伊春区" prefecture="伊春市" province="黑龙江省" -230703 county="南岔区" prefecture="伊春市" province="黑龙江省" -230704 county="友好区" prefecture="伊春市" province="黑龙江省" -230705 county="西林区" prefecture="伊春市" province="黑龙江省" -230706 county="翠峦区" prefecture="伊春市" province="黑龙江省" -230707 county="新青区" prefecture="伊春市" province="黑龙江省" -230708 county="美溪区" prefecture="伊春市" province="黑龙江省" -230709 county="金山屯区" prefecture="伊春市" province="黑龙江省" -230710 county="五营区" prefecture="伊春市" province="黑龙江省" -230711 county="乌马河区" prefecture="伊春市" province="黑龙江省" -230712 county="汤旺河区" prefecture="伊春市" province="黑龙江省" -230713 county="带岭区" prefecture="伊春市" province="黑龙江省" -230714 county="乌伊岭区" prefecture="伊春市" province="黑龙江省" -230715 county="红星区" prefecture="伊春市" province="黑龙江省" -230716 county="上甘岭区" prefecture="伊春市" province="黑龙江省" -230722 county="嘉荫县" prefecture="伊春市" province="黑龙江省" -230781 county="铁力市" prefecture="伊春市" province="黑龙江省" -230801 county="市辖区" prefecture="佳木斯市" province="黑龙江省" -230802 county="永红区" prefecture="佳木斯市" province="黑龙江省" -230803 county="向阳区" prefecture="佳木斯市" province="黑龙江省" -230804 county="前进区" prefecture="佳木斯市" province="黑龙江省" -230805 county="东风区" prefecture="佳木斯市" province="黑龙江省" -230811 county="郊区" prefecture="佳木斯市" province="黑龙江省" -230822 county="桦南县" prefecture="佳木斯市" province="黑龙江省" -230826 county="桦川县" prefecture="佳木斯市" province="黑龙江省" -230828 county="汤原县" prefecture="佳木斯市" province="黑龙江省" -230833 county="抚远县" prefecture="佳木斯市" province="黑龙江省" -230881 county="同江市" prefecture="佳木斯市" province="黑龙江省" -230882 county="富锦市" prefecture="佳木斯市" province="黑龙江省" -230901 county="市辖区" prefecture="七台河市" province="黑龙江省" -230902 county="新兴区" prefecture="七台河市" province="黑龙江省" -230903 county="桃山区" prefecture="七台河市" province="黑龙江省" -230904 county="茄子河区" prefecture="七台河市" province="黑龙江省" -230921 county="勃利县" prefecture="七台河市" province="黑龙江省" -231001 county="市辖区" prefecture="牡丹江市" province="黑龙江省" -231002 county="东安区" prefecture="牡丹江市" province="黑龙江省" -231003 county="阳明区" prefecture="牡丹江市" province="黑龙江省" -231004 county="爱民区" prefecture="牡丹江市" province="黑龙江省" -231005 county="西安区" prefecture="牡丹江市" province="黑龙江省" -231024 county="东宁县" prefecture="牡丹江市" province="黑龙江省" -231025 county="林口县" prefecture="牡丹江市" province="黑龙江省" -231081 county="绥芬河市" prefecture="牡丹江市" province="黑龙江省" -231083 county="海林市" prefecture="牡丹江市" province="黑龙江省" -231084 county="宁安市" prefecture="牡丹江市" province="黑龙江省" -231085 county="穆棱市" prefecture="牡丹江市" province="黑龙江省" -231101 county="市辖区" prefecture="黑河市" province="黑龙江省" -231102 county="爱辉区" prefecture="黑河市" province="黑龙江省" -231121 county="嫩江县" prefecture="黑河市" province="黑龙江省" -231123 county="逊克县" prefecture="黑河市" province="黑龙江省" -231124 county="孙吴县" prefecture="黑河市" province="黑龙江省" -231181 county="北安市" prefecture="黑河市" province="黑龙江省" -231182 county="五大连池市" prefecture="黑河市" province="黑龙江省" -231201 county="市辖区" prefecture="绥化市" province="黑龙江省" -231202 county="北林区" prefecture="绥化市" province="黑龙江省" -231221 county="望奎县" prefecture="绥化市" province="黑龙江省" -231222 county="兰西县" prefecture="绥化市" province="黑龙江省" -231223 county="青冈县" prefecture="绥化市" province="黑龙江省" -231224 county="庆安县" prefecture="绥化市" province="黑龙江省" -231225 county="明水县" prefecture="绥化市" province="黑龙江省" -231226 county="绥棱县" prefecture="绥化市" province="黑龙江省" -231281 county="安达市" prefecture="绥化市" province="黑龙江省" -231282 county="肇东市" prefecture="绥化市" province="黑龙江省" -231283 county="海伦市" prefecture="绥化市" province="黑龙江省" -232701 county="加格达奇区" prefecture="大兴安岭地区" province="黑龙江省" -232702 county="松岭区" prefecture="大兴安岭地区" province="黑龙江省" -232703 county="新林区" prefecture="大兴安岭地区" province="黑龙江省" -232704 county="呼中区" prefecture="大兴安岭地区" province="黑龙江省" -232721 county="呼玛县" prefecture="大兴安岭地区" province="黑龙江省" -232722 county="塔河县" prefecture="大兴安岭地区" province="黑龙江省" -232723 county="漠河县" prefecture="大兴安岭地区" province="黑龙江省" -310101 county="黄浦区" prefecture="市辖区" province="上海市" -310103 county="卢湾区" prefecture="市辖区" province="上海市" -310104 county="徐汇区" prefecture="市辖区" province="上海市" -310105 county="长宁区" prefecture="市辖区" province="上海市" -310106 county="静安区" prefecture="市辖区" province="上海市" -310107 county="普陀区" prefecture="市辖区" province="上海市" -310108 county="闸北区" prefecture="市辖区" province="上海市" -310109 county="虹口区" prefecture="市辖区" province="上海市" -310110 county="杨浦区" prefecture="市辖区" province="上海市" -310112 county="闵行区" prefecture="市辖区" province="上海市" -310113 county="宝山区" prefecture="市辖区" province="上海市" -310114 county="嘉定区" prefecture="市辖区" province="上海市" -310115 county="浦东新区" prefecture="市辖区" province="上海市" -310116 county="金山区" prefecture="市辖区" province="上海市" -310117 county="松江区" prefecture="市辖区" province="上海市" -310118 county="青浦区" prefecture="市辖区" province="上海市" -310119 county="南汇区" prefecture="市辖区" province="上海市" -310120 county="奉贤区" prefecture="市辖区" province="上海市" -310230 county="崇明县" prefecture="县" province="上海市" -320101 county="市辖区" prefecture="南京市" province="江苏省" -320102 county="玄武区" prefecture="南京市" province="江苏省" -320103 county="白下区" prefecture="南京市" province="江苏省" -320104 county="秦淮区" prefecture="南京市" province="江苏省" -320105 county="建邺区" prefecture="南京市" province="江苏省" -320106 county="鼓楼区" prefecture="南京市" province="江苏省" -320107 county="下关区" prefecture="南京市" province="江苏省" -320111 county="浦口区" prefecture="南京市" province="江苏省" -320113 county="栖霞区" prefecture="南京市" province="江苏省" -320114 county="雨花台区" prefecture="南京市" province="江苏省" -320115 county="江宁区" prefecture="南京市" province="江苏省" -320116 county="六合区" prefecture="南京市" province="江苏省" -320117 county="溧水区" prefecture="南京市" province="江苏省" -320118 county="高淳区" prefecture="南京市" province="江苏省" -320124 county="溧水县" prefecture="南京市" province="江苏省" -320125 county="高淳县" prefecture="南京市" province="江苏省" -320201 county="市辖区" prefecture="无锡市" province="江苏省" -320202 county="崇安区" prefecture="无锡市" province="江苏省" -320203 county="南长区" prefecture="无锡市" province="江苏省" -320204 county="北塘区" prefecture="无锡市" province="江苏省" -320205 county="锡山区" prefecture="无锡市" province="江苏省" -320206 county="惠山区" prefecture="无锡市" province="江苏省" -320211 county="滨湖区" prefecture="无锡市" province="江苏省" -320281 county="江阴市" prefecture="无锡市" province="江苏省" -320282 county="宜兴市" prefecture="无锡市" province="江苏省" -320301 county="市辖区" prefecture="徐州市" province="江苏省" -320302 county="鼓楼区" prefecture="徐州市" province="江苏省" -320303 county="云龙区" prefecture="徐州市" province="江苏省" -320304 county="九里区" prefecture="徐州市" province="江苏省" -320305 county="贾汪区" prefecture="徐州市" province="江苏省" -320311 county="泉山区" prefecture="徐州市" province="江苏省" -320312 county="铜山区" prefecture="徐州市" province="江苏省" -320321 county="丰县" prefecture="徐州市" province="江苏省" -320322 county="沛县" prefecture="徐州市" province="江苏省" -320323 county="铜山县" prefecture="徐州市" province="江苏省" -320324 county="睢宁县" prefecture="徐州市" province="江苏省" -320381 county="新沂市" prefecture="徐州市" province="江苏省" -320382 county="邳州市" prefecture="徐州市" province="江苏省" -320401 county="市辖区" prefecture="常州市" province="江苏省" -320402 county="天宁区" prefecture="常州市" province="江苏省" -320404 county="钟楼区" prefecture="常州市" province="江苏省" -320405 county="戚墅堰区" prefecture="常州市" province="江苏省" -320411 county="新北区" prefecture="常州市" province="江苏省" -320412 county="武进区" prefecture="常州市" province="江苏省" -320481 county="溧阳市" prefecture="常州市" province="江苏省" -320482 county="金坛市" prefecture="常州市" province="江苏省" -320501 county="市辖区" prefecture="苏州市" province="江苏省" -320502 county="沧浪区" prefecture="苏州市" province="江苏省" -320503 county="平江区" prefecture="苏州市" province="江苏省" -320504 county="金阊区" prefecture="苏州市" province="江苏省" -320505 county="虎丘区" prefecture="苏州市" province="江苏省" -320506 county="吴中区" prefecture="苏州市" province="江苏省" -320507 county="相城区" prefecture="苏州市" province="江苏省" -320508 county="姑苏区" prefecture="苏州市" province="江苏省" -320509 county="吴江区" prefecture="苏州市" province="江苏省" -320581 county="常熟市" prefecture="苏州市" province="江苏省" -320582 county="张家港市" prefecture="苏州市" province="江苏省" -320583 county="昆山市" prefecture="苏州市" province="江苏省" -320584 county="吴江市" prefecture="苏州市" province="江苏省" -320585 county="太仓市" prefecture="苏州市" province="江苏省" -320601 county="市辖区" prefecture="南通市" province="江苏省" -320602 county="崇川区" prefecture="南通市" province="江苏省" -320611 county="港闸区" prefecture="南通市" province="江苏省" -320612 county="通州区" prefecture="南通市" province="江苏省" -320621 county="海安县" prefecture="南通市" province="江苏省" -320623 county="如东县" prefecture="南通市" province="江苏省" -320681 county="启东市" prefecture="南通市" province="江苏省" -320682 county="如皋市" prefecture="南通市" province="江苏省" -320683 county="通州市" prefecture="南通市" province="江苏省" -320684 county="海门市" prefecture="南通市" province="江苏省" -320701 county="市辖区" prefecture="连云港市" province="江苏省" -320703 county="连云区" prefecture="连云港市" province="江苏省" -320705 county="新浦区" prefecture="连云港市" province="江苏省" -320706 county="海州区" prefecture="连云港市" province="江苏省" -320707 county="赣榆区" prefecture="连云港市" province="江苏省" -320721 county="赣榆县" prefecture="连云港市" province="江苏省" -320722 county="东海县" prefecture="连云港市" province="江苏省" -320723 county="灌云县" prefecture="连云港市" province="江苏省" -320724 county="灌南县" prefecture="连云港市" province="江苏省" -320801 county="市辖区" prefecture="淮安市" province="江苏省" -320802 county="清河区" prefecture="淮安市" province="江苏省" -320803 county="淮安区" prefecture="淮安市" province="江苏省" -320804 county="淮阴区" prefecture="淮安市" province="江苏省" -320811 county="清浦区" prefecture="淮安市" province="江苏省" -320826 county="涟水县" prefecture="淮安市" province="江苏省" -320829 county="洪泽县" prefecture="淮安市" province="江苏省" -320830 county="盱眙县" prefecture="淮安市" province="江苏省" -320831 county="金湖县" prefecture="淮安市" province="江苏省" -320901 county="市辖区" prefecture="盐城市" province="江苏省" -320902 county="亭湖区" prefecture="盐城市" province="江苏省" -320903 county="盐都区" prefecture="盐城市" province="江苏省" -320921 county="响水县" prefecture="盐城市" province="江苏省" -320922 county="滨海县" prefecture="盐城市" province="江苏省" -320923 county="阜宁县" prefecture="盐城市" province="江苏省" -320924 county="射阳县" prefecture="盐城市" province="江苏省" -320925 county="建湖县" prefecture="盐城市" province="江苏省" -320928 county="盐都县" prefecture="盐城市" province="江苏省" -320981 county="东台市" prefecture="盐城市" province="江苏省" -320982 county="大丰市" prefecture="盐城市" province="江苏省" -321001 county="市辖区" prefecture="扬州市" province="江苏省" -321002 county="广陵区" prefecture="扬州市" province="江苏省" -321003 county="邗江区" prefecture="扬州市" province="江苏省" -321011 county="维扬区" prefecture="扬州市" province="江苏省" -321012 county="江都区" prefecture="扬州市" province="江苏省" -321023 county="宝应县" prefecture="扬州市" province="江苏省" -321081 county="仪征市" prefecture="扬州市" province="江苏省" -321084 county="高邮市" prefecture="扬州市" province="江苏省" -321088 county="江都市" prefecture="扬州市" province="江苏省" -321101 county="市辖区" prefecture="镇江市" province="江苏省" -321102 county="京口区" prefecture="镇江市" province="江苏省" -321111 county="润州区" prefecture="镇江市" province="江苏省" -321112 county="丹徒区" prefecture="镇江市" province="江苏省" -321181 county="丹阳市" prefecture="镇江市" province="江苏省" -321182 county="扬中市" prefecture="镇江市" province="江苏省" -321183 county="句容市" prefecture="镇江市" province="江苏省" -321201 county="市辖区" prefecture="泰州市" province="江苏省" -321202 county="海陵区" prefecture="泰州市" province="江苏省" -321203 county="高港区" prefecture="泰州市" province="江苏省" -321204 county="姜堰区" prefecture="泰州市" province="江苏省" -321281 county="兴化市" prefecture="泰州市" province="江苏省" -321282 county="靖江市" prefecture="泰州市" province="江苏省" -321283 county="泰兴市" prefecture="泰州市" province="江苏省" -321284 county="姜堰市" prefecture="泰州市" province="江苏省" -321301 county="市辖区" prefecture="宿迁市" province="江苏省" -321302 county="宿城区" prefecture="宿迁市" province="江苏省" -321311 county="宿豫区" prefecture="宿迁市" province="江苏省" -321321 county="宿豫县" prefecture="宿迁市" province="江苏省" -321322 county="沭阳县" prefecture="宿迁市" province="江苏省" -321323 county="泗阳县" prefecture="宿迁市" province="江苏省" -321324 county="泗洪县" prefecture="宿迁市" province="江苏省" -330101 county="市辖区" prefecture="杭州市" province="浙江省" -330102 county="上城区" prefecture="杭州市" province="浙江省" -330103 county="下城区" prefecture="杭州市" province="浙江省" -330104 county="江干区" prefecture="杭州市" province="浙江省" -330105 county="拱墅区" prefecture="杭州市" province="浙江省" -330106 county="西湖区" prefecture="杭州市" province="浙江省" -330108 county="滨江区" prefecture="杭州市" province="浙江省" -330109 county="萧山区" prefecture="杭州市" province="浙江省" -330110 county="余杭区" prefecture="杭州市" province="浙江省" -330122 county="桐庐县" prefecture="杭州市" province="浙江省" -330127 county="淳安县" prefecture="杭州市" province="浙江省" -330182 county="建德市" prefecture="杭州市" province="浙江省" -330183 county="富阳市" prefecture="杭州市" province="浙江省" -330185 county="临安市" prefecture="杭州市" province="浙江省" -330201 county="市辖区" prefecture="宁波市" province="浙江省" -330203 county="海曙区" prefecture="宁波市" province="浙江省" -330204 county="江东区" prefecture="宁波市" province="浙江省" -330205 county="江北区" prefecture="宁波市" province="浙江省" -330206 county="北仑区" prefecture="宁波市" province="浙江省" -330211 county="镇海区" prefecture="宁波市" province="浙江省" -330212 county="鄞州区" prefecture="宁波市" province="浙江省" -330225 county="象山县" prefecture="宁波市" province="浙江省" -330226 county="宁海县" prefecture="宁波市" province="浙江省" -330281 county="余姚市" prefecture="宁波市" province="浙江省" -330282 county="慈溪市" prefecture="宁波市" province="浙江省" -330283 county="奉化市" prefecture="宁波市" province="浙江省" -330301 county="市辖区" prefecture="温州市" province="浙江省" -330302 county="鹿城区" prefecture="温州市" province="浙江省" -330303 county="龙湾区" prefecture="温州市" province="浙江省" -330304 county="瓯海区" prefecture="温州市" province="浙江省" -330322 county="洞头县" prefecture="温州市" province="浙江省" -330324 county="永嘉县" prefecture="温州市" province="浙江省" -330326 county="平阳县" prefecture="温州市" province="浙江省" -330327 county="苍南县" prefecture="温州市" province="浙江省" -330328 county="文成县" prefecture="温州市" province="浙江省" -330329 county="泰顺县" prefecture="温州市" province="浙江省" -330381 county="瑞安市" prefecture="温州市" province="浙江省" -330382 county="乐清市" prefecture="温州市" province="浙江省" -330401 county="市辖区" prefecture="嘉兴市" province="浙江省" -330402 county="南湖区" prefecture="嘉兴市" province="浙江省" -330411 county="秀洲区" prefecture="嘉兴市" province="浙江省" -330421 county="嘉善县" prefecture="嘉兴市" province="浙江省" -330424 county="海盐县" prefecture="嘉兴市" province="浙江省" -330481 county="海宁市" prefecture="嘉兴市" province="浙江省" -330482 county="平湖市" prefecture="嘉兴市" province="浙江省" -330483 county="桐乡市" prefecture="嘉兴市" province="浙江省" -330501 county="市辖区" prefecture="湖州市" province="浙江省" -330502 county="吴兴区" prefecture="湖州市" province="浙江省" -330503 county="南浔区" prefecture="湖州市" province="浙江省" -330521 county="德清县" prefecture="湖州市" province="浙江省" -330522 county="长兴县" prefecture="湖州市" province="浙江省" -330523 county="安吉县" prefecture="湖州市" province="浙江省" -330601 county="市辖区" prefecture="绍兴市" province="浙江省" -330602 county="越城区" prefecture="绍兴市" province="浙江省" -330603 county="柯桥区" prefecture="绍兴市" province="浙江省" -330604 county="上虞区" prefecture="绍兴市" province="浙江省" -330621 county="绍兴县" prefecture="绍兴市" province="浙江省" -330624 county="新昌县" prefecture="绍兴市" province="浙江省" -330681 county="诸暨市" prefecture="绍兴市" province="浙江省" -330682 county="上虞市" prefecture="绍兴市" province="浙江省" -330683 county="嵊州市" prefecture="绍兴市" province="浙江省" -330701 county="市辖区" prefecture="金华市" province="浙江省" -330702 county="婺城区" prefecture="金华市" province="浙江省" -330703 county="金东区" prefecture="金华市" province="浙江省" -330723 county="武义县" prefecture="金华市" province="浙江省" -330726 county="浦江县" prefecture="金华市" province="浙江省" -330727 county="磐安县" prefecture="金华市" province="浙江省" -330781 county="兰溪市" prefecture="金华市" province="浙江省" -330782 county="义乌市" prefecture="金华市" province="浙江省" -330783 county="东阳市" prefecture="金华市" province="浙江省" -330784 county="永康市" prefecture="金华市" province="浙江省" -330801 county="市辖区" prefecture="衢州市" province="浙江省" -330802 county="柯城区" prefecture="衢州市" province="浙江省" -330803 county="衢江区" prefecture="衢州市" province="浙江省" -330822 county="常山县" prefecture="衢州市" province="浙江省" -330824 county="开化县" prefecture="衢州市" province="浙江省" -330825 county="龙游县" prefecture="衢州市" province="浙江省" -330881 county="江山市" prefecture="衢州市" province="浙江省" -330901 county="市辖区" prefecture="舟山市" province="浙江省" -330902 county="定海区" prefecture="舟山市" province="浙江省" -330903 county="普陀区" prefecture="舟山市" province="浙江省" -330921 county="岱山县" prefecture="舟山市" province="浙江省" -330922 county="嵊泗县" prefecture="舟山市" province="浙江省" -331001 county="市辖区" prefecture="台州市" province="浙江省" -331002 county="椒江区" prefecture="台州市" province="浙江省" -331003 county="黄岩区" prefecture="台州市" province="浙江省" -331004 county="路桥区" prefecture="台州市" province="浙江省" -331021 county="玉环县" prefecture="台州市" province="浙江省" -331022 county="三门县" prefecture="台州市" province="浙江省" -331023 county="天台县" prefecture="台州市" province="浙江省" -331024 county="仙居县" prefecture="台州市" province="浙江省" -331081 county="温岭市" prefecture="台州市" province="浙江省" -331082 county="临海市" prefecture="台州市" province="浙江省" -331101 county="市辖区" prefecture="丽水市" province="浙江省" -331102 county="莲都区" prefecture="丽水市" province="浙江省" -331121 county="青田县" prefecture="丽水市" province="浙江省" -331122 county="缙云县" prefecture="丽水市" province="浙江省" -331123 county="遂昌县" prefecture="丽水市" province="浙江省" -331124 county="松阳县" prefecture="丽水市" province="浙江省" -331125 county="云和县" prefecture="丽水市" province="浙江省" -331126 county="庆元县" prefecture="丽水市" province="浙江省" -331127 county="景宁畲族自治县" prefecture="丽水市" province="浙江省" -331181 county="龙泉市" prefecture="丽水市" province="浙江省" -340101 county="市辖区" prefecture="合肥市" province="安徽省" -340102 county="瑶海区" prefecture="合肥市" province="安徽省" -340103 county="庐阳区" prefecture="合肥市" province="安徽省" -340104 county="蜀山区" prefecture="合肥市" province="安徽省" -340111 county="包河区" prefecture="合肥市" province="安徽省" -340121 county="长丰县" prefecture="合肥市" province="安徽省" -340122 county="肥东县" prefecture="合肥市" province="安徽省" -340123 county="肥西县" prefecture="合肥市" province="安徽省" -340124 county="庐江县" prefecture="合肥市" province="安徽省" -340181 county="巢湖市" prefecture="合肥市" province="安徽省" -340201 county="市辖区" prefecture="芜湖市" province="安徽省" -340202 county="镜湖区" prefecture="芜湖市" province="安徽省" -340203 county="弋江区" prefecture="芜湖市" province="安徽省" -340204 county="新芜区" prefecture="芜湖市" province="安徽省" -340207 county="鸠江区" prefecture="芜湖市" province="安徽省" -340208 county="三山区" prefecture="芜湖市" province="安徽省" -340221 county="芜湖县" prefecture="芜湖市" province="安徽省" -340222 county="繁昌县" prefecture="芜湖市" province="安徽省" -340223 county="南陵县" prefecture="芜湖市" province="安徽省" -340225 county="无为县" prefecture="芜湖市" province="安徽省" -340301 county="市辖区" prefecture="蚌埠市" province="安徽省" -340302 county="龙子湖区" prefecture="蚌埠市" province="安徽省" -340303 county="蚌山区" prefecture="蚌埠市" province="安徽省" -340304 county="禹会区" prefecture="蚌埠市" province="安徽省" -340311 county="淮上区" prefecture="蚌埠市" province="安徽省" -340321 county="怀远县" prefecture="蚌埠市" province="安徽省" -340322 county="五河县" prefecture="蚌埠市" province="安徽省" -340323 county="固镇县" prefecture="蚌埠市" province="安徽省" -340401 county="市辖区" prefecture="淮南市" province="安徽省" -340402 county="大通区" prefecture="淮南市" province="安徽省" -340403 county="田家庵区" prefecture="淮南市" province="安徽省" -340404 county="谢家集区" prefecture="淮南市" province="安徽省" -340405 county="八公山区" prefecture="淮南市" province="安徽省" -340406 county="潘集区" prefecture="淮南市" province="安徽省" -340421 county="凤台县" prefecture="淮南市" province="安徽省" -340501 county="市辖区" prefecture="马鞍山市" province="安徽省" -340502 county="金家庄区" prefecture="马鞍山市" province="安徽省" -340503 county="花山区" prefecture="马鞍山市" province="安徽省" -340504 county="雨山区" prefecture="马鞍山市" province="安徽省" -340506 county="博望区" prefecture="马鞍山市" province="安徽省" -340521 county="当涂县" prefecture="马鞍山市" province="安徽省" -340522 county="含山县" prefecture="马鞍山市" province="安徽省" -340523 county="和县" prefecture="马鞍山市" province="安徽省" -340601 county="市辖区" prefecture="淮北市" province="安徽省" -340602 county="杜集区" prefecture="淮北市" province="安徽省" -340603 county="相山区" prefecture="淮北市" province="安徽省" -340604 county="烈山区" prefecture="淮北市" province="安徽省" -340621 county="濉溪县" prefecture="淮北市" province="安徽省" -340701 county="市辖区" prefecture="铜陵市" province="安徽省" -340702 county="铜官山区" prefecture="铜陵市" province="安徽省" -340703 county="狮子山区" prefecture="铜陵市" province="安徽省" -340711 county="郊区" prefecture="铜陵市" province="安徽省" -340721 county="铜陵县" prefecture="铜陵市" province="安徽省" -340801 county="市辖区" prefecture="安庆市" province="安徽省" -340802 county="迎江区" prefecture="安庆市" province="安徽省" -340803 county="大观区" prefecture="安庆市" province="安徽省" -340811 county="宜秀区" prefecture="安庆市" province="安徽省" -340822 county="怀宁县" prefecture="安庆市" province="安徽省" -340823 county="枞阳县" prefecture="安庆市" province="安徽省" -340824 county="潜山县" prefecture="安庆市" province="安徽省" -340825 county="太湖县" prefecture="安庆市" province="安徽省" -340826 county="宿松县" prefecture="安庆市" province="安徽省" -340827 county="望江县" prefecture="安庆市" province="安徽省" -340828 county="岳西县" prefecture="安庆市" province="安徽省" -340881 county="桐城市" prefecture="安庆市" province="安徽省" -341001 county="市辖区" prefecture="黄山市" province="安徽省" -341002 county="屯溪区" prefecture="黄山市" province="安徽省" -341003 county="黄山区" prefecture="黄山市" province="安徽省" -341004 county="徽州区" prefecture="黄山市" province="安徽省" -341021 county="歙县" prefecture="黄山市" province="安徽省" -341022 county="休宁县" prefecture="黄山市" province="安徽省" -341023 county="黟县" prefecture="黄山市" province="安徽省" -341024 county="祁门县" prefecture="黄山市" province="安徽省" -341101 county="市辖区" prefecture="滁州市" province="安徽省" -341102 county="琅琊区" prefecture="滁州市" province="安徽省" -341103 county="南谯区" prefecture="滁州市" province="安徽省" -341122 county="来安县" prefecture="滁州市" province="安徽省" -341124 county="全椒县" prefecture="滁州市" province="安徽省" -341125 county="定远县" prefecture="滁州市" province="安徽省" -341126 county="凤阳县" prefecture="滁州市" province="安徽省" -341181 county="天长市" prefecture="滁州市" province="安徽省" -341182 county="明光市" prefecture="滁州市" province="安徽省" -341201 county="市辖区" prefecture="阜阳市" province="安徽省" -341202 county="颍州区" prefecture="阜阳市" province="安徽省" -341203 county="颍东区" prefecture="阜阳市" province="安徽省" -341204 county="颍泉区" prefecture="阜阳市" province="安徽省" -341221 county="临泉县" prefecture="阜阳市" province="安徽省" -341222 county="太和县" prefecture="阜阳市" province="安徽省" -341225 county="阜南县" prefecture="阜阳市" province="安徽省" -341226 county="颍上县" prefecture="阜阳市" province="安徽省" -341282 county="界首市" prefecture="阜阳市" province="安徽省" -341301 county="市辖区" prefecture="宿州市" province="安徽省" -341302 county="埇桥区" prefecture="宿州市" province="安徽省" -341321 county="砀山县" prefecture="宿州市" province="安徽省" -341322 county="萧县" prefecture="宿州市" province="安徽省" -341323 county="灵璧县" prefecture="宿州市" province="安徽省" -341324 county="泗县" prefecture="宿州市" province="安徽省" -341401 county="市辖区" prefecture="巢湖市" province="安徽省" -341402 county="居巢区" prefecture="巢湖市" province="安徽省" -341421 county="庐江县" prefecture="巢湖市" province="安徽省" -341422 county="无为县" prefecture="巢湖市" province="安徽省" -341423 county="含山县" prefecture="巢湖市" province="安徽省" -341424 county="和县" prefecture="巢湖市" province="安徽省" -341501 county="市辖区" prefecture="六安市" province="安徽省" -341502 county="金安区" prefecture="六安市" province="安徽省" -341503 county="裕安区" prefecture="六安市" province="安徽省" -341521 county="寿县" prefecture="六安市" province="安徽省" -341522 county="霍邱县" prefecture="六安市" province="安徽省" -341523 county="舒城县" prefecture="六安市" province="安徽省" -341524 county="金寨县" prefecture="六安市" province="安徽省" -341525 county="霍山县" prefecture="六安市" province="安徽省" -341601 county="市辖区" prefecture="亳州市" province="安徽省" -341602 county="谯城区" prefecture="亳州市" province="安徽省" -341621 county="涡阳县" prefecture="亳州市" province="安徽省" -341622 county="蒙城县" prefecture="亳州市" province="安徽省" -341623 county="利辛县" prefecture="亳州市" province="安徽省" -341701 county="市辖区" prefecture="池州市" province="安徽省" -341702 county="贵池区" prefecture="池州市" province="安徽省" -341721 county="东至县" prefecture="池州市" province="安徽省" -341722 county="石台县" prefecture="池州市" province="安徽省" -341723 county="青阳县" prefecture="池州市" province="安徽省" -341801 county="市辖区" prefecture="宣城市" province="安徽省" -341802 county="宣州区" prefecture="宣城市" province="安徽省" -341821 county="郎溪县" prefecture="宣城市" province="安徽省" -341822 county="广德县" prefecture="宣城市" province="安徽省" -341823 county="泾县" prefecture="宣城市" province="安徽省" -341824 county="绩溪县" prefecture="宣城市" province="安徽省" -341825 county="旌德县" prefecture="宣城市" province="安徽省" -341881 county="宁国市" prefecture="宣城市" province="安徽省" -350101 county="市辖区" prefecture="福州市" province="福建省" -350102 county="鼓楼区" prefecture="福州市" province="福建省" -350103 county="台江区" prefecture="福州市" province="福建省" -350104 county="仓山区" prefecture="福州市" province="福建省" -350105 county="马尾区" prefecture="福州市" province="福建省" -350111 county="晋安区" prefecture="福州市" province="福建省" -350121 county="闽侯县" prefecture="福州市" province="福建省" -350122 county="连江县" prefecture="福州市" province="福建省" -350123 county="罗源县" prefecture="福州市" province="福建省" -350124 county="闽清县" prefecture="福州市" province="福建省" -350125 county="永泰县" prefecture="福州市" province="福建省" -350128 county="平潭县" prefecture="福州市" province="福建省" -350181 county="福清市" prefecture="福州市" province="福建省" -350182 county="长乐市" prefecture="福州市" province="福建省" -350201 county="市辖区" prefecture="厦门市" province="福建省" -350202 county="鼓浪屿区" prefecture="厦门市" province="福建省" -350203 county="思明区" prefecture="厦门市" province="福建省" -350204 county="开元区" prefecture="厦门市" province="福建省" -350205 county="海沧区" prefecture="厦门市" province="福建省" -350206 county="湖里区" prefecture="厦门市" province="福建省" -350211 county="集美区" prefecture="厦门市" province="福建省" -350212 county="同安区" prefecture="厦门市" province="福建省" -350213 county="翔安区" prefecture="厦门市" province="福建省" -350301 county="市辖区" prefecture="莆田市" province="福建省" -350302 county="城厢区" prefecture="莆田市" province="福建省" -350303 county="涵江区" prefecture="莆田市" province="福建省" -350304 county="荔城区" prefecture="莆田市" province="福建省" -350305 county="秀屿区" prefecture="莆田市" province="福建省" -350322 county="仙游县" prefecture="莆田市" province="福建省" -350401 county="市辖区" prefecture="三明市" province="福建省" -350402 county="梅列区" prefecture="三明市" province="福建省" -350403 county="三元区" prefecture="三明市" province="福建省" -350421 county="明溪县" prefecture="三明市" province="福建省" -350423 county="清流县" prefecture="三明市" province="福建省" -350424 county="宁化县" prefecture="三明市" province="福建省" -350425 county="大田县" prefecture="三明市" province="福建省" -350426 county="尤溪县" prefecture="三明市" province="福建省" -350427 county="沙县" prefecture="三明市" province="福建省" -350428 county="将乐县" prefecture="三明市" province="福建省" -350429 county="泰宁县" prefecture="三明市" province="福建省" -350430 county="建宁县" prefecture="三明市" province="福建省" -350481 county="永安市" prefecture="三明市" province="福建省" -350501 county="市辖区" prefecture="泉州市" province="福建省" -350502 county="鲤城区" prefecture="泉州市" province="福建省" -350503 county="丰泽区" prefecture="泉州市" province="福建省" -350504 county="洛江区" prefecture="泉州市" province="福建省" -350505 county="泉港区" prefecture="泉州市" province="福建省" -350521 county="惠安县" prefecture="泉州市" province="福建省" -350524 county="安溪县" prefecture="泉州市" province="福建省" -350525 county="永春县" prefecture="泉州市" province="福建省" -350526 county="德化县" prefecture="泉州市" province="福建省" -350527 county="金门县" prefecture="泉州市" province="福建省" -350581 county="石狮市" prefecture="泉州市" province="福建省" -350582 county="晋江市" prefecture="泉州市" province="福建省" -350583 county="南安市" prefecture="泉州市" province="福建省" -350601 county="市辖区" prefecture="漳州市" province="福建省" -350602 county="芗城区" prefecture="漳州市" province="福建省" -350603 county="龙文区" prefecture="漳州市" province="福建省" -350622 county="云霄县" prefecture="漳州市" province="福建省" -350623 county="漳浦县" prefecture="漳州市" province="福建省" -350624 county="诏安县" prefecture="漳州市" province="福建省" -350625 county="长泰县" prefecture="漳州市" province="福建省" -350626 county="东山县" prefecture="漳州市" province="福建省" -350627 county="南靖县" prefecture="漳州市" province="福建省" -350628 county="平和县" prefecture="漳州市" province="福建省" -350629 county="华安县" prefecture="漳州市" province="福建省" -350681 county="龙海市" prefecture="漳州市" province="福建省" -350701 county="市辖区" prefecture="南平市" province="福建省" -350702 county="延平区" prefecture="南平市" province="福建省" -350721 county="顺昌县" prefecture="南平市" province="福建省" -350722 county="浦城县" prefecture="南平市" province="福建省" -350723 county="光泽县" prefecture="南平市" province="福建省" -350724 county="松溪县" prefecture="南平市" province="福建省" -350725 county="政和县" prefecture="南平市" province="福建省" -350781 county="邵武市" prefecture="南平市" province="福建省" -350782 county="武夷山市" prefecture="南平市" province="福建省" -350783 county="建瓯市" prefecture="南平市" province="福建省" -350784 county="建阳市" prefecture="南平市" province="福建省" -350801 county="市辖区" prefecture="龙岩市" province="福建省" -350802 county="新罗区" prefecture="龙岩市" province="福建省" -350821 county="长汀县" prefecture="龙岩市" province="福建省" -350822 county="永定县" prefecture="龙岩市" province="福建省" -350823 county="上杭县" prefecture="龙岩市" province="福建省" -350824 county="武平县" prefecture="龙岩市" province="福建省" -350825 county="连城县" prefecture="龙岩市" province="福建省" -350881 county="漳平市" prefecture="龙岩市" province="福建省" -350901 county="市辖区" prefecture="宁德市" province="福建省" -350902 county="蕉城区" prefecture="宁德市" province="福建省" -350921 county="霞浦县" prefecture="宁德市" province="福建省" -350922 county="古田县" prefecture="宁德市" province="福建省" -350923 county="屏南县" prefecture="宁德市" province="福建省" -350924 county="寿宁县" prefecture="宁德市" province="福建省" -350925 county="周宁县" prefecture="宁德市" province="福建省" -350926 county="柘荣县" prefecture="宁德市" province="福建省" -350981 county="福安市" prefecture="宁德市" province="福建省" -350982 county="福鼎市" prefecture="宁德市" province="福建省" -360101 county="市辖区" prefecture="南昌市" province="江西省" -360102 county="东湖区" prefecture="南昌市" province="江西省" -360103 county="西湖区" prefecture="南昌市" province="江西省" -360104 county="青云谱区" prefecture="南昌市" province="江西省" -360105 county="湾里区" prefecture="南昌市" province="江西省" -360111 county="青山湖区" prefecture="南昌市" province="江西省" -360121 county="南昌县" prefecture="南昌市" province="江西省" -360122 county="新建县" prefecture="南昌市" province="江西省" -360123 county="安义县" prefecture="南昌市" province="江西省" -360124 county="进贤县" prefecture="南昌市" province="江西省" -360201 county="市辖区" prefecture="景德镇市" province="江西省" -360202 county="昌江区" prefecture="景德镇市" province="江西省" -360203 county="珠山区" prefecture="景德镇市" province="江西省" -360222 county="浮梁县" prefecture="景德镇市" province="江西省" -360281 county="乐平市" prefecture="景德镇市" province="江西省" -360301 county="市辖区" prefecture="萍乡市" province="江西省" -360302 county="安源区" prefecture="萍乡市" province="江西省" -360313 county="湘东区" prefecture="萍乡市" province="江西省" -360321 county="莲花县" prefecture="萍乡市" province="江西省" -360322 county="上栗县" prefecture="萍乡市" province="江西省" -360323 county="芦溪县" prefecture="萍乡市" province="江西省" -360401 county="市辖区" prefecture="九江市" province="江西省" -360402 county="庐山区" prefecture="九江市" province="江西省" -360403 county="浔阳区" prefecture="九江市" province="江西省" -360421 county="九江县" prefecture="九江市" province="江西省" -360423 county="武宁县" prefecture="九江市" province="江西省" -360424 county="修水县" prefecture="九江市" province="江西省" -360425 county="永修县" prefecture="九江市" province="江西省" -360426 county="德安县" prefecture="九江市" province="江西省" -360427 county="星子县" prefecture="九江市" province="江西省" -360428 county="都昌县" prefecture="九江市" province="江西省" -360429 county="湖口县" prefecture="九江市" province="江西省" -360430 county="彭泽县" prefecture="九江市" province="江西省" -360481 county="瑞昌市" prefecture="九江市" province="江西省" -360482 county="共青城市" prefecture="九江市" province="江西省" -360501 county="市辖区" prefecture="新余市" province="江西省" -360502 county="渝水区" prefecture="新余市" province="江西省" -360521 county="分宜县" prefecture="新余市" province="江西省" -360601 county="市辖区" prefecture="鹰潭市" province="江西省" -360602 county="月湖区" prefecture="鹰潭市" province="江西省" -360622 county="余江县" prefecture="鹰潭市" province="江西省" -360681 county="贵溪市" prefecture="鹰潭市" province="江西省" -360701 county="市辖区" prefecture="赣州市" province="江西省" -360702 county="章贡区" prefecture="赣州市" province="江西省" -360703 county="南康区" prefecture="赣州市" province="江西省" -360721 county="赣县" prefecture="赣州市" province="江西省" -360722 county="信丰县" prefecture="赣州市" province="江西省" -360723 county="大余县" prefecture="赣州市" province="江西省" -360724 county="上犹县" prefecture="赣州市" province="江西省" -360725 county="崇义县" prefecture="赣州市" province="江西省" -360726 county="安远县" prefecture="赣州市" province="江西省" -360727 county="龙南县" prefecture="赣州市" province="江西省" -360728 county="定南县" prefecture="赣州市" province="江西省" -360729 county="全南县" prefecture="赣州市" province="江西省" -360730 county="宁都县" prefecture="赣州市" province="江西省" -360731 county="于都县" prefecture="赣州市" province="江西省" -360732 county="兴国县" prefecture="赣州市" province="江西省" -360733 county="会昌县" prefecture="赣州市" province="江西省" -360734 county="寻乌县" prefecture="赣州市" province="江西省" -360735 county="石城县" prefecture="赣州市" province="江西省" -360781 county="瑞金市" prefecture="赣州市" province="江西省" -360782 county="南康市" prefecture="赣州市" province="江西省" -360801 county="市辖区" prefecture="吉安市" province="江西省" -360802 county="吉州区" prefecture="吉安市" province="江西省" -360803 county="青原区" prefecture="吉安市" province="江西省" -360821 county="吉安县" prefecture="吉安市" province="江西省" -360822 county="吉水县" prefecture="吉安市" province="江西省" -360823 county="峡江县" prefecture="吉安市" province="江西省" -360824 county="新干县" prefecture="吉安市" province="江西省" -360825 county="永丰县" prefecture="吉安市" province="江西省" -360826 county="泰和县" prefecture="吉安市" province="江西省" -360827 county="遂川县" prefecture="吉安市" province="江西省" -360828 county="万安县" prefecture="吉安市" province="江西省" -360829 county="安福县" prefecture="吉安市" province="江西省" -360830 county="永新县" prefecture="吉安市" province="江西省" -360881 county="井冈山市" prefecture="吉安市" province="江西省" -360901 county="市辖区" prefecture="宜春市" province="江西省" -360902 county="袁州区" prefecture="宜春市" province="江西省" -360921 county="奉新县" prefecture="宜春市" province="江西省" -360922 county="万载县" prefecture="宜春市" province="江西省" -360923 county="上高县" prefecture="宜春市" province="江西省" -360924 county="宜丰县" prefecture="宜春市" province="江西省" -360925 county="靖安县" prefecture="宜春市" province="江西省" -360926 county="铜鼓县" prefecture="宜春市" province="江西省" -360981 county="丰城市" prefecture="宜春市" province="江西省" -360982 county="樟树市" prefecture="宜春市" province="江西省" -360983 county="高安市" prefecture="宜春市" province="江西省" -361001 county="市辖区" prefecture="抚州市" province="江西省" -361002 county="临川区" prefecture="抚州市" province="江西省" -361021 county="南城县" prefecture="抚州市" province="江西省" -361022 county="黎川县" prefecture="抚州市" province="江西省" -361023 county="南丰县" prefecture="抚州市" province="江西省" -361024 county="崇仁县" prefecture="抚州市" province="江西省" -361025 county="乐安县" prefecture="抚州市" province="江西省" -361026 county="宜黄县" prefecture="抚州市" province="江西省" -361027 county="金溪县" prefecture="抚州市" province="江西省" -361028 county="资溪县" prefecture="抚州市" province="江西省" -361029 county="东乡县" prefecture="抚州市" province="江西省" -361030 county="广昌县" prefecture="抚州市" province="江西省" -361101 county="市辖区" prefecture="上饶市" province="江西省" -361102 county="信州区" prefecture="上饶市" province="江西省" -361121 county="上饶县" prefecture="上饶市" province="江西省" -361122 county="广丰县" prefecture="上饶市" province="江西省" -361123 county="玉山县" prefecture="上饶市" province="江西省" -361124 county="铅山县" prefecture="上饶市" province="江西省" -361125 county="横峰县" prefecture="上饶市" province="江西省" -361126 county="弋阳县" prefecture="上饶市" province="江西省" -361127 county="余干县" prefecture="上饶市" province="江西省" -361128 county="鄱阳县" prefecture="上饶市" province="江西省" -361129 county="万年县" prefecture="上饶市" province="江西省" -361130 county="婺源县" prefecture="上饶市" province="江西省" -361181 county="德兴市" prefecture="上饶市" province="江西省" -370101 county="市辖区" prefecture="济南市" province="山东省" -370102 county="历下区" prefecture="济南市" province="山东省" -370103 county="市中区" prefecture="济南市" province="山东省" -370104 county="槐荫区" prefecture="济南市" province="山东省" -370105 county="天桥区" prefecture="济南市" province="山东省" -370112 county="历城区" prefecture="济南市" province="山东省" -370113 county="长清区" prefecture="济南市" province="山东省" -370124 county="平阴县" prefecture="济南市" province="山东省" -370125 county="济阳县" prefecture="济南市" province="山东省" -370126 county="商河县" prefecture="济南市" province="山东省" -370181 county="章丘市" prefecture="济南市" province="山东省" -370201 county="市辖区" prefecture="青岛市" province="山东省" -370202 county="市南区" prefecture="青岛市" province="山东省" -370203 county="市北区" prefecture="青岛市" province="山东省" -370205 county="四方区" prefecture="青岛市" province="山东省" -370211 county="黄岛区" prefecture="青岛市" province="山东省" -370212 county="崂山区" prefecture="青岛市" province="山东省" -370213 county="李沧区" prefecture="青岛市" province="山东省" -370214 county="城阳区" prefecture="青岛市" province="山东省" -370281 county="胶州市" prefecture="青岛市" province="山东省" -370282 county="即墨市" prefecture="青岛市" province="山东省" -370283 county="平度市" prefecture="青岛市" province="山东省" -370284 county="胶南市" prefecture="青岛市" province="山东省" -370285 county="莱西市" prefecture="青岛市" province="山东省" -370301 county="市辖区" prefecture="淄博市" province="山东省" -370302 county="淄川区" prefecture="淄博市" province="山东省" -370303 county="张店区" prefecture="淄博市" province="山东省" -370304 county="博山区" prefecture="淄博市" province="山东省" -370305 county="临淄区" prefecture="淄博市" province="山东省" -370306 county="周村区" prefecture="淄博市" province="山东省" -370321 county="桓台县" prefecture="淄博市" province="山东省" -370322 county="高青县" prefecture="淄博市" province="山东省" -370323 county="沂源县" prefecture="淄博市" province="山东省" -370401 county="市辖区" prefecture="枣庄市" province="山东省" -370402 county="市中区" prefecture="枣庄市" province="山东省" -370403 county="薛城区" prefecture="枣庄市" province="山东省" -370404 county="峄城区" prefecture="枣庄市" province="山东省" -370405 county="台儿庄区" prefecture="枣庄市" province="山东省" -370406 county="山亭区" prefecture="枣庄市" province="山东省" -370481 county="滕州市" prefecture="枣庄市" province="山东省" -370501 county="市辖区" prefecture="东营市" province="山东省" -370502 county="东营区" prefecture="东营市" province="山东省" -370503 county="河口区" prefecture="东营市" province="山东省" -370521 county="垦利县" prefecture="东营市" province="山东省" -370522 county="利津县" prefecture="东营市" province="山东省" -370523 county="广饶县" prefecture="东营市" province="山东省" -370601 county="市辖区" prefecture="烟台市" province="山东省" -370602 county="芝罘区" prefecture="烟台市" province="山东省" -370611 county="福山区" prefecture="烟台市" province="山东省" -370612 county="牟平区" prefecture="烟台市" province="山东省" -370613 county="莱山区" prefecture="烟台市" province="山东省" -370634 county="长岛县" prefecture="烟台市" province="山东省" -370681 county="龙口市" prefecture="烟台市" province="山东省" -370682 county="莱阳市" prefecture="烟台市" province="山东省" -370683 county="莱州市" prefecture="烟台市" province="山东省" -370684 county="蓬莱市" prefecture="烟台市" province="山东省" -370685 county="招远市" prefecture="烟台市" province="山东省" -370686 county="栖霞市" prefecture="烟台市" province="山东省" -370687 county="海阳市" prefecture="烟台市" province="山东省" -370701 county="市辖区" prefecture="潍坊市" province="山东省" -370702 county="潍城区" prefecture="潍坊市" province="山东省" -370703 county="寒亭区" prefecture="潍坊市" province="山东省" -370704 county="坊子区" prefecture="潍坊市" province="山东省" -370705 county="奎文区" prefecture="潍坊市" province="山东省" -370724 county="临朐县" prefecture="潍坊市" province="山东省" -370725 county="昌乐县" prefecture="潍坊市" province="山东省" -370781 county="青州市" prefecture="潍坊市" province="山东省" -370782 county="诸城市" prefecture="潍坊市" province="山东省" -370783 county="寿光市" prefecture="潍坊市" province="山东省" -370784 county="安丘市" prefecture="潍坊市" province="山东省" -370785 county="高密市" prefecture="潍坊市" province="山东省" -370786 county="昌邑市" prefecture="潍坊市" province="山东省" -370801 county="市辖区" prefecture="济宁市" province="山东省" -370802 county="市中区" prefecture="济宁市" province="山东省" -370811 county="任城区" prefecture="济宁市" province="山东省" -370812 county="兖州区" prefecture="济宁市" province="山东省" -370826 county="微山县" prefecture="济宁市" province="山东省" -370827 county="鱼台县" prefecture="济宁市" province="山东省" -370828 county="金乡县" prefecture="济宁市" province="山东省" -370829 county="嘉祥县" prefecture="济宁市" province="山东省" -370830 county="汶上县" prefecture="济宁市" province="山东省" -370831 county="泗水县" prefecture="济宁市" province="山东省" -370832 county="梁山县" prefecture="济宁市" province="山东省" -370881 county="曲阜市" prefecture="济宁市" province="山东省" -370882 county="兖州市" prefecture="济宁市" province="山东省" -370883 county="邹城市" prefecture="济宁市" province="山东省" -370901 county="市辖区" prefecture="泰安市" province="山东省" -370902 county="泰山区" prefecture="泰安市" province="山东省" -370903 county="岱岳区" prefecture="泰安市" province="山东省" -370911 county="岱岳区" prefecture="泰安市" province="山东省" -370921 county="宁阳县" prefecture="泰安市" province="山东省" -370923 county="东平县" prefecture="泰安市" province="山东省" -370982 county="新泰市" prefecture="泰安市" province="山东省" -370983 county="肥城市" prefecture="泰安市" province="山东省" -371001 county="市辖区" prefecture="威海市" province="山东省" -371002 county="环翠区" prefecture="威海市" province="山东省" -371003 county="文登区" prefecture="威海市" province="山东省" -371081 county="文登市" prefecture="威海市" province="山东省" -371082 county="荣成市" prefecture="威海市" province="山东省" -371083 county="乳山市" prefecture="威海市" province="山东省" -371101 county="市辖区" prefecture="日照市" province="山东省" -371102 county="东港区" prefecture="日照市" province="山东省" -371103 county="岚山区" prefecture="日照市" province="山东省" -371121 county="五莲县" prefecture="日照市" province="山东省" -371122 county="莒县" prefecture="日照市" province="山东省" -371201 county="市辖区" prefecture="莱芜市" province="山东省" -371202 county="莱城区" prefecture="莱芜市" province="山东省" -371203 county="钢城区" prefecture="莱芜市" province="山东省" -371301 county="市辖区" prefecture="临沂市" province="山东省" -371302 county="兰山区" prefecture="临沂市" province="山东省" -371311 county="罗庄区" prefecture="临沂市" province="山东省" -371312 county="河东区" prefecture="临沂市" province="山东省" -371321 county="沂南县" prefecture="临沂市" province="山东省" -371322 county="郯城县" prefecture="临沂市" province="山东省" -371323 county="沂水县" prefecture="临沂市" province="山东省" -371324 county="兰陵县" prefecture="临沂市" province="山东省" -371325 county="费县" prefecture="临沂市" province="山东省" -371326 county="平邑县" prefecture="临沂市" province="山东省" -371327 county="莒南县" prefecture="临沂市" province="山东省" -371328 county="蒙阴县" prefecture="临沂市" province="山东省" -371329 county="临沭县" prefecture="临沂市" province="山东省" -371401 county="市辖区" prefecture="德州市" province="山东省" -371402 county="德城区" prefecture="德州市" province="山东省" -371403 county="陵城区" prefecture="德州市" province="山东省" -371421 county="陵县" prefecture="德州市" province="山东省" -371422 county="宁津县" prefecture="德州市" province="山东省" -371423 county="庆云县" prefecture="德州市" province="山东省" -371424 county="临邑县" prefecture="德州市" province="山东省" -371425 county="齐河县" prefecture="德州市" province="山东省" -371426 county="平原县" prefecture="德州市" province="山东省" -371427 county="夏津县" prefecture="德州市" province="山东省" -371428 county="武城县" prefecture="德州市" province="山东省" -371481 county="乐陵市" prefecture="德州市" province="山东省" -371482 county="禹城市" prefecture="德州市" province="山东省" -371501 county="市辖区" prefecture="聊城市" province="山东省" -371502 county="东昌府区" prefecture="聊城市" province="山东省" -371521 county="阳谷县" prefecture="聊城市" province="山东省" -371522 county="莘县" prefecture="聊城市" province="山东省" -371523 county="茌平县" prefecture="聊城市" province="山东省" -371524 county="东阿县" prefecture="聊城市" province="山东省" -371525 county="冠县" prefecture="聊城市" province="山东省" -371526 county="高唐县" prefecture="聊城市" province="山东省" -371581 county="临清市" prefecture="聊城市" province="山东省" -371601 county="市辖区" prefecture="滨州市" province="山东省" -371602 county="滨城区" prefecture="滨州市" province="山东省" -371603 county="沾化区" prefecture="滨州市" province="山东省" -371621 county="惠民县" prefecture="滨州市" province="山东省" -371622 county="阳信县" prefecture="滨州市" province="山东省" -371623 county="无棣县" prefecture="滨州市" province="山东省" -371624 county="沾化县" prefecture="滨州市" province="山东省" -371625 county="博兴县" prefecture="滨州市" province="山东省" -371626 county="邹平县" prefecture="滨州市" province="山东省" -371701 county="市辖区" prefecture="菏泽市" province="山东省" -371702 county="牡丹区" prefecture="菏泽市" province="山东省" -371721 county="曹县" prefecture="菏泽市" province="山东省" -371722 county="单县" prefecture="菏泽市" province="山东省" -371723 county="成武县" prefecture="菏泽市" province="山东省" -371724 county="巨野县" prefecture="菏泽市" province="山东省" -371725 county="郓城县" prefecture="菏泽市" province="山东省" -371726 county="鄄城县" prefecture="菏泽市" province="山东省" -371727 county="定陶县" prefecture="菏泽市" province="山东省" -371728 county="东明县" prefecture="菏泽市" province="山东省" -410101 county="市辖区" prefecture="郑州市" province="河南省" -410102 county="中原区" prefecture="郑州市" province="河南省" -410103 county="二七区" prefecture="郑州市" province="河南省" -410104 county="管城回族区" prefecture="郑州市" province="河南省" -410105 county="金水区" prefecture="郑州市" province="河南省" -410106 county="上街区" prefecture="郑州市" province="河南省" -410108 county="惠济区" prefecture="郑州市" province="河南省" -410122 county="中牟县" prefecture="郑州市" province="河南省" -410181 county="巩义市" prefecture="郑州市" province="河南省" -410182 county="荥阳市" prefecture="郑州市" province="河南省" -410183 county="新密市" prefecture="郑州市" province="河南省" -410184 county="新郑市" prefecture="郑州市" province="河南省" -410185 county="登封市" prefecture="郑州市" province="河南省" -410201 county="市辖区" prefecture="开封市" province="河南省" -410202 county="龙亭区" prefecture="开封市" province="河南省" -410203 county="顺河回族区" prefecture="开封市" province="河南省" -410204 county="鼓楼区" prefecture="开封市" province="河南省" -410205 county="禹王台区" prefecture="开封市" province="河南省" -410211 county="金明区" prefecture="开封市" province="河南省" -410221 county="杞县" prefecture="开封市" province="河南省" -410222 county="通许县" prefecture="开封市" province="河南省" -410223 county="尉氏县" prefecture="开封市" province="河南省" -410224 county="开封县" prefecture="开封市" province="河南省" -410225 county="兰考县" prefecture="开封市" province="河南省" -410301 county="市辖区" prefecture="洛阳市" province="河南省" -410302 county="老城区" prefecture="洛阳市" province="河南省" -410303 county="西工区" prefecture="洛阳市" province="河南省" -410304 county="瀍河回族区" prefecture="洛阳市" province="河南省" -410305 county="涧西区" prefecture="洛阳市" province="河南省" -410306 county="吉利区" prefecture="洛阳市" province="河南省" -410307 county="洛龙区" prefecture="洛阳市" province="河南省" -410311 county="洛龙区" prefecture="洛阳市" province="河南省" -410322 county="孟津县" prefecture="洛阳市" province="河南省" -410323 county="新安县" prefecture="洛阳市" province="河南省" -410324 county="栾川县" prefecture="洛阳市" province="河南省" -410325 county="嵩县" prefecture="洛阳市" province="河南省" -410326 county="汝阳县" prefecture="洛阳市" province="河南省" -410327 county="宜阳县" prefecture="洛阳市" province="河南省" -410328 county="洛宁县" prefecture="洛阳市" province="河南省" -410329 county="伊川县" prefecture="洛阳市" province="河南省" -410381 county="偃师市" prefecture="洛阳市" province="河南省" -410401 county="市辖区" prefecture="平顶山市" province="河南省" -410402 county="新华区" prefecture="平顶山市" province="河南省" -410403 county="卫东区" prefecture="平顶山市" province="河南省" -410404 county="石龙区" prefecture="平顶山市" province="河南省" -410411 county="湛河区" prefecture="平顶山市" province="河南省" -410421 county="宝丰县" prefecture="平顶山市" province="河南省" -410422 county="叶县" prefecture="平顶山市" province="河南省" -410423 county="鲁山县" prefecture="平顶山市" province="河南省" -410425 county="郏县" prefecture="平顶山市" province="河南省" -410481 county="舞钢市" prefecture="平顶山市" province="河南省" -410482 county="汝州市" prefecture="平顶山市" province="河南省" -410501 county="市辖区" prefecture="安阳市" province="河南省" -410502 county="文峰区" prefecture="安阳市" province="河南省" -410503 county="北关区" prefecture="安阳市" province="河南省" -410505 county="殷都区" prefecture="安阳市" province="河南省" -410506 county="龙安区" prefecture="安阳市" province="河南省" -410522 county="安阳县" prefecture="安阳市" province="河南省" -410523 county="汤阴县" prefecture="安阳市" province="河南省" -410526 county="滑县" prefecture="安阳市" province="河南省" -410527 county="内黄县" prefecture="安阳市" province="河南省" -410581 county="林州市" prefecture="安阳市" province="河南省" -410601 county="市辖区" prefecture="鹤壁市" province="河南省" -410602 county="鹤山区" prefecture="鹤壁市" province="河南省" -410603 county="山城区" prefecture="鹤壁市" province="河南省" -410611 county="淇滨区" prefecture="鹤壁市" province="河南省" -410621 county="浚县" prefecture="鹤壁市" province="河南省" -410622 county="淇县" prefecture="鹤壁市" province="河南省" -410701 county="市辖区" prefecture="新乡市" province="河南省" -410702 county="红旗区" prefecture="新乡市" province="河南省" -410703 county="卫滨区" prefecture="新乡市" province="河南省" -410704 county="凤泉区" prefecture="新乡市" province="河南省" -410711 county="牧野区" prefecture="新乡市" province="河南省" -410721 county="新乡县" prefecture="新乡市" province="河南省" -410724 county="获嘉县" prefecture="新乡市" province="河南省" -410725 county="原阳县" prefecture="新乡市" province="河南省" -410726 county="延津县" prefecture="新乡市" province="河南省" -410727 county="封丘县" prefecture="新乡市" province="河南省" -410728 county="长垣县" prefecture="新乡市" province="河南省" -410781 county="卫辉市" prefecture="新乡市" province="河南省" -410782 county="辉县市" prefecture="新乡市" province="河南省" -410801 county="市辖区" prefecture="焦作市" province="河南省" -410802 county="解放区" prefecture="焦作市" province="河南省" -410803 county="中站区" prefecture="焦作市" province="河南省" -410804 county="马村区" prefecture="焦作市" province="河南省" -410811 county="山阳区" prefecture="焦作市" province="河南省" -410821 county="修武县" prefecture="焦作市" province="河南省" -410822 county="博爱县" prefecture="焦作市" province="河南省" -410823 county="武陟县" prefecture="焦作市" province="河南省" -410825 county="温县" prefecture="焦作市" province="河南省" -410881 county="济源市" prefecture="焦作市" province="河南省" -410882 county="沁阳市" prefecture="焦作市" province="河南省" -410883 county="孟州市" prefecture="焦作市" province="河南省" -410901 county="市辖区" prefecture="濮阳市" province="河南省" -410902 county="华龙区" prefecture="濮阳市" province="河南省" -410922 county="清丰县" prefecture="濮阳市" province="河南省" -410923 county="南乐县" prefecture="濮阳市" province="河南省" -410926 county="范县" prefecture="濮阳市" province="河南省" -410927 county="台前县" prefecture="濮阳市" province="河南省" -410928 county="濮阳县" prefecture="濮阳市" province="河南省" -411001 county="市辖区" prefecture="许昌市" province="河南省" -411002 county="魏都区" prefecture="许昌市" province="河南省" -411023 county="许昌县" prefecture="许昌市" province="河南省" -411024 county="鄢陵县" prefecture="许昌市" province="河南省" -411025 county="襄城县" prefecture="许昌市" province="河南省" -411081 county="禹州市" prefecture="许昌市" province="河南省" -411082 county="长葛市" prefecture="许昌市" province="河南省" -411101 county="市辖区" prefecture="漯河市" province="河南省" -411102 county="源汇区" prefecture="漯河市" province="河南省" -411103 county="郾城区" prefecture="漯河市" province="河南省" -411104 county="召陵区" prefecture="漯河市" province="河南省" -411121 county="舞阳县" prefecture="漯河市" province="河南省" -411122 county="临颍县" prefecture="漯河市" province="河南省" -411123 county="郾城县" prefecture="漯河市" province="河南省" -411201 county="市辖区" prefecture="三门峡市" province="河南省" -411202 county="湖滨区" prefecture="三门峡市" province="河南省" -411221 county="渑池县" prefecture="三门峡市" province="河南省" -411222 county="陕县" prefecture="三门峡市" province="河南省" -411224 county="卢氏县" prefecture="三门峡市" province="河南省" -411281 county="义马市" prefecture="三门峡市" province="河南省" -411282 county="灵宝市" prefecture="三门峡市" province="河南省" -411301 county="市辖区" prefecture="南阳市" province="河南省" -411302 county="宛城区" prefecture="南阳市" province="河南省" -411303 county="卧龙区" prefecture="南阳市" province="河南省" -411321 county="南召县" prefecture="南阳市" province="河南省" -411322 county="方城县" prefecture="南阳市" province="河南省" -411323 county="西峡县" prefecture="南阳市" province="河南省" -411324 county="镇平县" prefecture="南阳市" province="河南省" -411325 county="内乡县" prefecture="南阳市" province="河南省" -411326 county="淅川县" prefecture="南阳市" province="河南省" -411327 county="社旗县" prefecture="南阳市" province="河南省" -411328 county="唐河县" prefecture="南阳市" province="河南省" -411329 county="新野县" prefecture="南阳市" province="河南省" -411330 county="桐柏县" prefecture="南阳市" province="河南省" -411381 county="邓州市" prefecture="南阳市" province="河南省" -411401 county="市辖区" prefecture="商丘市" province="河南省" -411402 county="梁园区" prefecture="商丘市" province="河南省" -411403 county="睢阳区" prefecture="商丘市" province="河南省" -411421 county="民权县" prefecture="商丘市" province="河南省" -411422 county="睢县" prefecture="商丘市" province="河南省" -411423 county="宁陵县" prefecture="商丘市" province="河南省" -411424 county="柘城县" prefecture="商丘市" province="河南省" -411425 county="虞城县" prefecture="商丘市" province="河南省" -411426 county="夏邑县" prefecture="商丘市" province="河南省" -411481 county="永城市" prefecture="商丘市" province="河南省" -411501 county="市辖区" prefecture="信阳市" province="河南省" -411502 county="浉河区" prefecture="信阳市" province="河南省" -411503 county="平桥区" prefecture="信阳市" province="河南省" -411521 county="罗山县" prefecture="信阳市" province="河南省" -411522 county="光山县" prefecture="信阳市" province="河南省" -411523 county="新县" prefecture="信阳市" province="河南省" -411524 county="商城县" prefecture="信阳市" province="河南省" -411525 county="固始县" prefecture="信阳市" province="河南省" -411526 county="潢川县" prefecture="信阳市" province="河南省" -411527 county="淮滨县" prefecture="信阳市" province="河南省" -411528 county="息县" prefecture="信阳市" province="河南省" -411601 county="市辖区" prefecture="周口市" province="河南省" -411602 county="川汇区" prefecture="周口市" province="河南省" -411621 county="扶沟县" prefecture="周口市" province="河南省" -411622 county="西华县" prefecture="周口市" province="河南省" -411623 county="商水县" prefecture="周口市" province="河南省" -411624 county="沈丘县" prefecture="周口市" province="河南省" -411625 county="郸城县" prefecture="周口市" province="河南省" -411626 county="淮阳县" prefecture="周口市" province="河南省" -411627 county="太康县" prefecture="周口市" province="河南省" -411628 county="鹿邑县" prefecture="周口市" province="河南省" -411681 county="项城市" prefecture="周口市" province="河南省" -411701 county="市辖区" prefecture="驻马店市" province="河南省" -411702 county="驿城区" prefecture="驻马店市" province="河南省" -411721 county="西平县" prefecture="驻马店市" province="河南省" -411722 county="上蔡县" prefecture="驻马店市" province="河南省" -411723 county="平舆县" prefecture="驻马店市" province="河南省" -411724 county="正阳县" prefecture="驻马店市" province="河南省" -411725 county="确山县" prefecture="驻马店市" province="河南省" -411726 county="泌阳县" prefecture="驻马店市" province="河南省" -411727 county="汝南县" prefecture="驻马店市" province="河南省" -411728 county="遂平县" prefecture="驻马店市" province="河南省" -411729 county="新蔡县" prefecture="驻马店市" province="河南省" -419001 county="济源市" prefecture="省直辖县级行政区划" province="河南省" -420101 county="市辖区" prefecture="武汉市" province="湖北省" -420102 county="江岸区" prefecture="武汉市" province="湖北省" -420103 county="江汉区" prefecture="武汉市" province="湖北省" -420104 county="硚口区" prefecture="武汉市" province="湖北省" -420105 county="汉阳区" prefecture="武汉市" province="湖北省" -420106 county="武昌区" prefecture="武汉市" province="湖北省" -420107 county="青山区" prefecture="武汉市" province="湖北省" -420111 county="洪山区" prefecture="武汉市" province="湖北省" -420112 county="东西湖区" prefecture="武汉市" province="湖北省" -420113 county="汉南区" prefecture="武汉市" province="湖北省" -420114 county="蔡甸区" prefecture="武汉市" province="湖北省" -420115 county="江夏区" prefecture="武汉市" province="湖北省" -420116 county="黄陂区" prefecture="武汉市" province="湖北省" -420117 county="新洲区" prefecture="武汉市" province="湖北省" -420201 county="市辖区" prefecture="黄石市" province="湖北省" -420202 county="黄石港区" prefecture="黄石市" province="湖北省" -420203 county="西塞山区" prefecture="黄石市" province="湖北省" -420204 county="下陆区" prefecture="黄石市" province="湖北省" -420205 county="铁山区" prefecture="黄石市" province="湖北省" -420222 county="阳新县" prefecture="黄石市" province="湖北省" -420281 county="大冶市" prefecture="黄石市" province="湖北省" -420301 county="市辖区" prefecture="十堰市" province="湖北省" -420302 county="茅箭区" prefecture="十堰市" province="湖北省" -420303 county="张湾区" prefecture="十堰市" province="湖北省" -420304 county="郧阳区" prefecture="十堰市" province="湖北省" -420321 county="郧县" prefecture="十堰市" province="湖北省" -420322 county="郧西县" prefecture="十堰市" province="湖北省" -420323 county="竹山县" prefecture="十堰市" province="湖北省" -420324 county="竹溪县" prefecture="十堰市" province="湖北省" -420325 county="房县" prefecture="十堰市" province="湖北省" -420381 county="丹江口市" prefecture="十堰市" province="湖北省" -420501 county="市辖区" prefecture="宜昌市" province="湖北省" -420502 county="西陵区" prefecture="宜昌市" province="湖北省" -420503 county="伍家岗区" prefecture="宜昌市" province="湖北省" -420504 county="点军区" prefecture="宜昌市" province="湖北省" -420505 county="猇亭区" prefecture="宜昌市" province="湖北省" -420506 county="夷陵区" prefecture="宜昌市" province="湖北省" -420525 county="远安县" prefecture="宜昌市" province="湖北省" -420526 county="兴山县" prefecture="宜昌市" province="湖北省" -420527 county="秭归县" prefecture="宜昌市" province="湖北省" -420528 county="长阳土家族自治县" prefecture="宜昌市" province="湖北省" -420529 county="五峰土家族自治县" prefecture="宜昌市" province="湖北省" -420581 county="宜都市" prefecture="宜昌市" province="湖北省" -420582 county="当阳市" prefecture="宜昌市" province="湖北省" -420583 county="枝江市" prefecture="宜昌市" province="湖北省" -420601 county="市辖区" prefecture="襄阳市" province="湖北省" -420602 county="襄城区" prefecture="襄阳市" province="湖北省" -420606 county="樊城区" prefecture="襄阳市" province="湖北省" -420607 county="襄州区" prefecture="襄阳市" province="湖北省" -420624 county="南漳县" prefecture="襄阳市" province="湖北省" -420625 county="谷城县" prefecture="襄阳市" province="湖北省" -420626 county="保康县" prefecture="襄阳市" province="湖北省" -420682 county="老河口市" prefecture="襄阳市" province="湖北省" -420683 county="枣阳市" prefecture="襄阳市" province="湖北省" -420684 county="宜城市" prefecture="襄阳市" province="湖北省" -420701 county="市辖区" prefecture="鄂州市" province="湖北省" -420702 county="梁子湖区" prefecture="鄂州市" province="湖北省" -420703 county="华容区" prefecture="鄂州市" province="湖北省" -420704 county="鄂城区" prefecture="鄂州市" province="湖北省" -420801 county="市辖区" prefecture="荆门市" province="湖北省" -420802 county="东宝区" prefecture="荆门市" province="湖北省" -420804 county="掇刀区" prefecture="荆门市" province="湖北省" -420821 county="京山县" prefecture="荆门市" province="湖北省" -420822 county="沙洋县" prefecture="荆门市" province="湖北省" -420881 county="钟祥市" prefecture="荆门市" province="湖北省" -420901 county="市辖区" prefecture="孝感市" province="湖北省" -420902 county="孝南区" prefecture="孝感市" province="湖北省" -420921 county="孝昌县" prefecture="孝感市" province="湖北省" -420922 county="大悟县" prefecture="孝感市" province="湖北省" -420923 county="云梦县" prefecture="孝感市" province="湖北省" -420981 county="应城市" prefecture="孝感市" province="湖北省" -420982 county="安陆市" prefecture="孝感市" province="湖北省" -420984 county="汉川市" prefecture="孝感市" province="湖北省" -421001 county="市辖区" prefecture="荆州市" province="湖北省" -421002 county="沙市区" prefecture="荆州市" province="湖北省" -421003 county="荆州区" prefecture="荆州市" province="湖北省" -421022 county="公安县" prefecture="荆州市" province="湖北省" -421023 county="监利县" prefecture="荆州市" province="湖北省" -421024 county="江陵县" prefecture="荆州市" province="湖北省" -421081 county="石首市" prefecture="荆州市" province="湖北省" -421083 county="洪湖市" prefecture="荆州市" province="湖北省" -421087 county="松滋市" prefecture="荆州市" province="湖北省" -421101 county="市辖区" prefecture="黄冈市" province="湖北省" -421102 county="黄州区" prefecture="黄冈市" province="湖北省" -421121 county="团风县" prefecture="黄冈市" province="湖北省" -421122 county="红安县" prefecture="黄冈市" province="湖北省" -421123 county="罗田县" prefecture="黄冈市" province="湖北省" -421124 county="英山县" prefecture="黄冈市" province="湖北省" -421125 county="浠水县" prefecture="黄冈市" province="湖北省" -421126 county="蕲春县" prefecture="黄冈市" province="湖北省" -421127 county="黄梅县" prefecture="黄冈市" province="湖北省" -421181 county="麻城市" prefecture="黄冈市" province="湖北省" -421182 county="武穴市" prefecture="黄冈市" province="湖北省" -421201 county="市辖区" prefecture="咸宁市" province="湖北省" -421202 county="咸安区" prefecture="咸宁市" province="湖北省" -421221 county="嘉鱼县" prefecture="咸宁市" province="湖北省" -421222 county="通城县" prefecture="咸宁市" province="湖北省" -421223 county="崇阳县" prefecture="咸宁市" province="湖北省" -421224 county="通山县" prefecture="咸宁市" province="湖北省" -421281 county="赤壁市" prefecture="咸宁市" province="湖北省" -421301 county="市辖区" prefecture="随州市" province="湖北省" -421302 county="曾都区" prefecture="随州市" province="湖北省" -421303 county="曾都区" prefecture="随州市" province="湖北省" -421321 county="随县" prefecture="随州市" province="湖北省" -421381 county="广水市" prefecture="随州市" province="湖北省" -422801 county="恩施市" prefecture="恩施土家族苗族自治州" province="湖北省" -422802 county="利川市" prefecture="恩施土家族苗族自治州" province="湖北省" -422822 county="建始县" prefecture="恩施土家族苗族自治州" province="湖北省" -422823 county="巴东县" prefecture="恩施土家族苗族自治州" province="湖北省" -422825 county="宣恩县" prefecture="恩施土家族苗族自治州" province="湖北省" -422826 county="咸丰县" prefecture="恩施土家族苗族自治州" province="湖北省" -422827 county="来凤县" prefecture="恩施土家族苗族自治州" province="湖北省" -422828 county="鹤峰县" prefecture="恩施土家族苗族自治州" province="湖北省" -429004 county="仙桃市" prefecture="省直辖县级行政区划" province="湖北省" -429005 county="潜江市" prefecture="省直辖县级行政区划" province="湖北省" -429006 county="天门市" prefecture="省直辖县级行政区划" province="湖北省" -429021 county="神农架林区" prefecture="省直辖县级行政区划" province="湖北省" -430101 county="市辖区" prefecture="长沙市" province="湖南省" -430102 county="芙蓉区" prefecture="长沙市" province="湖南省" -430103 county="天心区" prefecture="长沙市" province="湖南省" -430104 county="岳麓区" prefecture="长沙市" province="湖南省" -430105 county="开福区" prefecture="长沙市" province="湖南省" -430111 county="雨花区" prefecture="长沙市" province="湖南省" -430112 county="望城区" prefecture="长沙市" province="湖南省" -430121 county="长沙县" prefecture="长沙市" province="湖南省" -430122 county="望城县" prefecture="长沙市" province="湖南省" -430124 county="宁乡县" prefecture="长沙市" province="湖南省" -430181 county="浏阳市" prefecture="长沙市" province="湖南省" -430201 county="市辖区" prefecture="株洲市" province="湖南省" -430202 county="荷塘区" prefecture="株洲市" province="湖南省" -430203 county="芦淞区" prefecture="株洲市" province="湖南省" -430204 county="石峰区" prefecture="株洲市" province="湖南省" -430211 county="天元区" prefecture="株洲市" province="湖南省" -430221 county="株洲县" prefecture="株洲市" province="湖南省" -430223 county="攸县" prefecture="株洲市" province="湖南省" -430224 county="茶陵县" prefecture="株洲市" province="湖南省" -430225 county="炎陵县" prefecture="株洲市" province="湖南省" -430281 county="醴陵市" prefecture="株洲市" province="湖南省" -430301 county="市辖区" prefecture="湘潭市" province="湖南省" -430302 county="雨湖区" prefecture="湘潭市" province="湖南省" -430304 county="岳塘区" prefecture="湘潭市" province="湖南省" -430321 county="湘潭县" prefecture="湘潭市" province="湖南省" -430381 county="湘乡市" prefecture="湘潭市" province="湖南省" -430382 county="韶山市" prefecture="湘潭市" province="湖南省" -430401 county="市辖区" prefecture="衡阳市" province="湖南省" -430405 county="珠晖区" prefecture="衡阳市" province="湖南省" -430406 county="雁峰区" prefecture="衡阳市" province="湖南省" -430407 county="石鼓区" prefecture="衡阳市" province="湖南省" -430408 county="蒸湘区" prefecture="衡阳市" province="湖南省" -430412 county="南岳区" prefecture="衡阳市" province="湖南省" -430421 county="衡阳县" prefecture="衡阳市" province="湖南省" -430422 county="衡南县" prefecture="衡阳市" province="湖南省" -430423 county="衡山县" prefecture="衡阳市" province="湖南省" -430424 county="衡东县" prefecture="衡阳市" province="湖南省" -430426 county="祁东县" prefecture="衡阳市" province="湖南省" -430481 county="耒阳市" prefecture="衡阳市" province="湖南省" -430482 county="常宁市" prefecture="衡阳市" province="湖南省" -430501 county="市辖区" prefecture="邵阳市" province="湖南省" -430502 county="双清区" prefecture="邵阳市" province="湖南省" -430503 county="大祥区" prefecture="邵阳市" province="湖南省" -430511 county="北塔区" prefecture="邵阳市" province="湖南省" -430521 county="邵东县" prefecture="邵阳市" province="湖南省" -430522 county="新邵县" prefecture="邵阳市" province="湖南省" -430523 county="邵阳县" prefecture="邵阳市" province="湖南省" -430524 county="隆回县" prefecture="邵阳市" province="湖南省" -430525 county="洞口县" prefecture="邵阳市" province="湖南省" -430527 county="绥宁县" prefecture="邵阳市" province="湖南省" -430528 county="新宁县" prefecture="邵阳市" province="湖南省" -430529 county="城步苗族自治县" prefecture="邵阳市" province="湖南省" -430581 county="武冈市" prefecture="邵阳市" province="湖南省" -430601 county="市辖区" prefecture="岳阳市" province="湖南省" -430602 county="岳阳楼区" prefecture="岳阳市" province="湖南省" -430603 county="云溪区" prefecture="岳阳市" province="湖南省" -430611 county="君山区" prefecture="岳阳市" province="湖南省" -430621 county="岳阳县" prefecture="岳阳市" province="湖南省" -430623 county="华容县" prefecture="岳阳市" province="湖南省" -430624 county="湘阴县" prefecture="岳阳市" province="湖南省" -430626 county="平江县" prefecture="岳阳市" province="湖南省" -430681 county="汨罗市" prefecture="岳阳市" province="湖南省" -430682 county="临湘市" prefecture="岳阳市" province="湖南省" -430701 county="市辖区" prefecture="常德市" province="湖南省" -430702 county="武陵区" prefecture="常德市" province="湖南省" -430703 county="鼎城区" prefecture="常德市" province="湖南省" -430721 county="安乡县" prefecture="常德市" province="湖南省" -430722 county="汉寿县" prefecture="常德市" province="湖南省" -430723 county="澧县" prefecture="常德市" province="湖南省" -430724 county="临澧县" prefecture="常德市" province="湖南省" -430725 county="桃源县" prefecture="常德市" province="湖南省" -430726 county="石门县" prefecture="常德市" province="湖南省" -430781 county="津市市" prefecture="常德市" province="湖南省" -430801 county="市辖区" prefecture="张家界市" province="湖南省" -430802 county="永定区" prefecture="张家界市" province="湖南省" -430811 county="武陵源区" prefecture="张家界市" province="湖南省" -430821 county="慈利县" prefecture="张家界市" province="湖南省" -430822 county="桑植县" prefecture="张家界市" province="湖南省" -430901 county="市辖区" prefecture="益阳市" province="湖南省" -430902 county="资阳区" prefecture="益阳市" province="湖南省" -430903 county="赫山区" prefecture="益阳市" province="湖南省" -430921 county="南县" prefecture="益阳市" province="湖南省" -430922 county="桃江县" prefecture="益阳市" province="湖南省" -430923 county="安化县" prefecture="益阳市" province="湖南省" -430981 county="沅江市" prefecture="益阳市" province="湖南省" -431001 county="市辖区" prefecture="郴州市" province="湖南省" -431002 county="北湖区" prefecture="郴州市" province="湖南省" -431003 county="苏仙区" prefecture="郴州市" province="湖南省" -431021 county="桂阳县" prefecture="郴州市" province="湖南省" -431022 county="宜章县" prefecture="郴州市" province="湖南省" -431023 county="永兴县" prefecture="郴州市" province="湖南省" -431024 county="嘉禾县" prefecture="郴州市" province="湖南省" -431025 county="临武县" prefecture="郴州市" province="湖南省" -431026 county="汝城县" prefecture="郴州市" province="湖南省" -431027 county="桂东县" prefecture="郴州市" province="湖南省" -431028 county="安仁县" prefecture="郴州市" province="湖南省" -431081 county="资兴市" prefecture="郴州市" province="湖南省" -431101 county="市辖区" prefecture="永州市" province="湖南省" -431102 county="零陵区" prefecture="永州市" province="湖南省" -431103 county="冷水滩区" prefecture="永州市" province="湖南省" -431121 county="祁阳县" prefecture="永州市" province="湖南省" -431122 county="东安县" prefecture="永州市" province="湖南省" -431123 county="双牌县" prefecture="永州市" province="湖南省" -431124 county="道县" prefecture="永州市" province="湖南省" -431125 county="江永县" prefecture="永州市" province="湖南省" -431126 county="宁远县" prefecture="永州市" province="湖南省" -431127 county="蓝山县" prefecture="永州市" province="湖南省" -431128 county="新田县" prefecture="永州市" province="湖南省" -431129 county="江华瑶族自治县" prefecture="永州市" province="湖南省" -431201 county="市辖区" prefecture="怀化市" province="湖南省" -431202 county="鹤城区" prefecture="怀化市" province="湖南省" -431221 county="中方县" prefecture="怀化市" province="湖南省" -431222 county="沅陵县" prefecture="怀化市" province="湖南省" -431223 county="辰溪县" prefecture="怀化市" province="湖南省" -431224 county="溆浦县" prefecture="怀化市" province="湖南省" -431225 county="会同县" prefecture="怀化市" province="湖南省" -431226 county="麻阳苗族自治县" prefecture="怀化市" province="湖南省" -431227 county="新晃侗族自治县" prefecture="怀化市" province="湖南省" -431228 county="芷江侗族自治县" prefecture="怀化市" province="湖南省" -431229 county="靖州苗族侗族自治县" prefecture="怀化市" province="湖南省" -431230 county="通道侗族自治县" prefecture="怀化市" province="湖南省" -431281 county="洪江市" prefecture="怀化市" province="湖南省" -431301 county="市辖区" prefecture="娄底市" province="湖南省" -431302 county="娄星区" prefecture="娄底市" province="湖南省" -431321 county="双峰县" prefecture="娄底市" province="湖南省" -431322 county="新化县" prefecture="娄底市" province="湖南省" -431381 county="冷水江市" prefecture="娄底市" province="湖南省" -431382 county="涟源市" prefecture="娄底市" province="湖南省" -433101 county="吉首市" prefecture="湘西土家族苗族自治州" province="湖南省" -433122 county="泸溪县" prefecture="湘西土家族苗族自治州" province="湖南省" -433123 county="凤凰县" prefecture="湘西土家族苗族自治州" province="湖南省" -433124 county="花垣县" prefecture="湘西土家族苗族自治州" province="湖南省" -433125 county="保靖县" prefecture="湘西土家族苗族自治州" province="湖南省" -433126 county="古丈县" prefecture="湘西土家族苗族自治州" province="湖南省" -433127 county="永顺县" prefecture="湘西土家族苗族自治州" province="湖南省" -433130 county="龙山县" prefecture="湘西土家族苗族自治州" province="湖南省" -440101 county="市辖区" prefecture="广州市" province="广东省" -440102 county="东山区" prefecture="广州市" province="广东省" -440103 county="荔湾区" prefecture="广州市" province="广东省" -440104 county="越秀区" prefecture="广州市" province="广东省" -440105 county="海珠区" prefecture="广州市" province="广东省" -440106 county="天河区" prefecture="广州市" province="广东省" -440107 county="芳村区" prefecture="广州市" province="广东省" -440111 county="白云区" prefecture="广州市" province="广东省" -440112 county="黄埔区" prefecture="广州市" province="广东省" -440113 county="番禺区" prefecture="广州市" province="广东省" -440114 county="花都区" prefecture="广州市" province="广东省" -440115 county="南沙区" prefecture="广州市" province="广东省" -440116 county="萝岗区" prefecture="广州市" province="广东省" -440117 county="从化区" prefecture="广州市" province="广东省" -440118 county="增城区" prefecture="广州市" province="广东省" -440183 county="增城市" prefecture="广州市" province="广东省" -440184 county="从化市" prefecture="广州市" province="广东省" -440201 county="市辖区" prefecture="韶关市" province="广东省" -440202 county="北江区" prefecture="韶关市" province="广东省" -440203 county="武江区" prefecture="韶关市" province="广东省" -440204 county="浈江区" prefecture="韶关市" province="广东省" -440205 county="曲江区" prefecture="韶关市" province="广东省" -440221 county="曲江县" prefecture="韶关市" province="广东省" -440222 county="始兴县" prefecture="韶关市" province="广东省" -440224 county="仁化县" prefecture="韶关市" province="广东省" -440229 county="翁源县" prefecture="韶关市" province="广东省" -440232 county="乳源瑶族自治县" prefecture="韶关市" province="广东省" -440233 county="新丰县" prefecture="韶关市" province="广东省" -440281 county="乐昌市" prefecture="韶关市" province="广东省" -440282 county="南雄市" prefecture="韶关市" province="广东省" -440301 county="市辖区" prefecture="深圳市" province="广东省" -440303 county="罗湖区" prefecture="深圳市" province="广东省" -440304 county="福田区" prefecture="深圳市" province="广东省" -440305 county="南山区" prefecture="深圳市" province="广东省" -440306 county="宝安区" prefecture="深圳市" province="广东省" -440307 county="龙岗区" prefecture="深圳市" province="广东省" -440308 county="盐田区" prefecture="深圳市" province="广东省" -440401 county="市辖区" prefecture="珠海市" province="广东省" -440402 county="香洲区" prefecture="珠海市" province="广东省" -440403 county="斗门区" prefecture="珠海市" province="广东省" -440404 county="金湾区" prefecture="珠海市" province="广东省" -440501 county="市辖区" prefecture="汕头市" province="广东省" -440506 county="达濠区" prefecture="汕头市" province="广东省" -440507 county="龙湖区" prefecture="汕头市" province="广东省" -440508 county="金园区" prefecture="汕头市" province="广东省" -440509 county="升平区" prefecture="汕头市" province="广东省" -440510 county="河浦区" prefecture="汕头市" province="广东省" -440511 county="金平区" prefecture="汕头市" province="广东省" -440512 county="濠江区" prefecture="汕头市" province="广东省" -440513 county="潮阳区" prefecture="汕头市" province="广东省" -440514 county="潮南区" prefecture="汕头市" province="广东省" -440515 county="澄海区" prefecture="汕头市" province="广东省" -440523 county="南澳县" prefecture="汕头市" province="广东省" -440582 county="潮阳市" prefecture="汕头市" province="广东省" -440583 county="澄海市" prefecture="汕头市" province="广东省" -440601 county="市辖区" prefecture="佛山市" province="广东省" -440604 county="禅城区" prefecture="佛山市" province="广东省" -440605 county="南海区" prefecture="佛山市" province="广东省" -440606 county="顺德区" prefecture="佛山市" province="广东省" -440607 county="三水区" prefecture="佛山市" province="广东省" -440608 county="高明区" prefecture="佛山市" province="广东省" -440701 county="市辖区" prefecture="江门市" province="广东省" -440703 county="蓬江区" prefecture="江门市" province="广东省" -440704 county="江海区" prefecture="江门市" province="广东省" -440705 county="新会区" prefecture="江门市" province="广东省" -440781 county="台山市" prefecture="江门市" province="广东省" -440783 county="开平市" prefecture="江门市" province="广东省" -440784 county="鹤山市" prefecture="江门市" province="广东省" -440785 county="恩平市" prefecture="江门市" province="广东省" -440801 county="市辖区" prefecture="湛江市" province="广东省" -440802 county="赤坎区" prefecture="湛江市" province="广东省" -440803 county="霞山区" prefecture="湛江市" province="广东省" -440804 county="坡头区" prefecture="湛江市" province="广东省" -440811 county="麻章区" prefecture="湛江市" province="广东省" -440823 county="遂溪县" prefecture="湛江市" province="广东省" -440825 county="徐闻县" prefecture="湛江市" province="广东省" -440881 county="廉江市" prefecture="湛江市" province="广东省" -440882 county="雷州市" prefecture="湛江市" province="广东省" -440883 county="吴川市" prefecture="湛江市" province="广东省" -440901 county="市辖区" prefecture="茂名市" province="广东省" -440902 county="茂南区" prefecture="茂名市" province="广东省" -440903 county="茂港区" prefecture="茂名市" province="广东省" -440904 county="电白区" prefecture="茂名市" province="广东省" -440923 county="电白县" prefecture="茂名市" province="广东省" -440981 county="高州市" prefecture="茂名市" province="广东省" -440982 county="化州市" prefecture="茂名市" province="广东省" -440983 county="信宜市" prefecture="茂名市" province="广东省" -441201 county="市辖区" prefecture="肇庆市" province="广东省" -441202 county="端州区" prefecture="肇庆市" province="广东省" -441203 county="鼎湖区" prefecture="肇庆市" province="广东省" -441223 county="广宁县" prefecture="肇庆市" province="广东省" -441224 county="怀集县" prefecture="肇庆市" province="广东省" -441225 county="封开县" prefecture="肇庆市" province="广东省" -441226 county="德庆县" prefecture="肇庆市" province="广东省" -441283 county="高要市" prefecture="肇庆市" province="广东省" -441284 county="四会市" prefecture="肇庆市" province="广东省" -441301 county="市辖区" prefecture="惠州市" province="广东省" -441302 county="惠城区" prefecture="惠州市" province="广东省" -441303 county="惠阳区" prefecture="惠州市" province="广东省" -441322 county="博罗县" prefecture="惠州市" province="广东省" -441323 county="惠东县" prefecture="惠州市" province="广东省" -441324 county="龙门县" prefecture="惠州市" province="广东省" -441381 county="惠阳市" prefecture="惠州市" province="广东省" -441401 county="市辖区" prefecture="梅州市" province="广东省" -441402 county="梅江区" prefecture="梅州市" province="广东省" -441403 county="梅县区" prefecture="梅州市" province="广东省" -441421 county="梅县" prefecture="梅州市" province="广东省" -441422 county="大埔县" prefecture="梅州市" province="广东省" -441423 county="丰顺县" prefecture="梅州市" province="广东省" -441424 county="五华县" prefecture="梅州市" province="广东省" -441426 county="平远县" prefecture="梅州市" province="广东省" -441427 county="蕉岭县" prefecture="梅州市" province="广东省" -441481 county="兴宁市" prefecture="梅州市" province="广东省" -441501 county="市辖区" prefecture="汕尾市" province="广东省" -441502 county="城区" prefecture="汕尾市" province="广东省" -441521 county="海丰县" prefecture="汕尾市" province="广东省" -441523 county="陆河县" prefecture="汕尾市" province="广东省" -441581 county="陆丰市" prefecture="汕尾市" province="广东省" -441601 county="市辖区" prefecture="河源市" province="广东省" -441602 county="源城区" prefecture="河源市" province="广东省" -441621 county="紫金县" prefecture="河源市" province="广东省" -441622 county="龙川县" prefecture="河源市" province="广东省" -441623 county="连平县" prefecture="河源市" province="广东省" -441624 county="和平县" prefecture="河源市" province="广东省" -441625 county="东源县" prefecture="河源市" province="广东省" -441701 county="市辖区" prefecture="阳江市" province="广东省" -441702 county="江城区" prefecture="阳江市" province="广东省" -441721 county="阳西县" prefecture="阳江市" province="广东省" -441723 county="阳东县" prefecture="阳江市" province="广东省" -441781 county="阳春市" prefecture="阳江市" province="广东省" -441801 county="市辖区" prefecture="清远市" province="广东省" -441802 county="清城区" prefecture="清远市" province="广东省" -441803 county="清新区" prefecture="清远市" province="广东省" -441821 county="佛冈县" prefecture="清远市" province="广东省" -441823 county="阳山县" prefecture="清远市" province="广东省" -441825 county="连山壮族瑶族自治县" prefecture="清远市" province="广东省" -441826 county="连南瑶族自治县" prefecture="清远市" province="广东省" -441827 county="清新县" prefecture="清远市" province="广东省" -441881 county="英德市" prefecture="清远市" province="广东省" -441882 county="连州市" prefecture="清远市" province="广东省" -445101 county="市辖区" prefecture="潮州市" province="广东省" -445102 county="湘桥区" prefecture="潮州市" province="广东省" -445103 county="潮安区" prefecture="潮州市" province="广东省" -445121 county="潮安县" prefecture="潮州市" province="广东省" -445122 county="饶平县" prefecture="潮州市" province="广东省" -445201 county="市辖区" prefecture="揭阳市" province="广东省" -445202 county="榕城区" prefecture="揭阳市" province="广东省" -445203 county="揭东区" prefecture="揭阳市" province="广东省" -445221 county="揭东县" prefecture="揭阳市" province="广东省" -445222 county="揭西县" prefecture="揭阳市" province="广东省" -445224 county="惠来县" prefecture="揭阳市" province="广东省" -445281 county="普宁市" prefecture="揭阳市" province="广东省" -445301 county="市辖区" prefecture="云浮市" province="广东省" -445302 county="云城区" prefecture="云浮市" province="广东省" -445303 county="云安区" prefecture="云浮市" province="广东省" -445321 county="新兴县" prefecture="云浮市" province="广东省" -445322 county="郁南县" prefecture="云浮市" province="广东省" -445323 county="云安县" prefecture="云浮市" province="广东省" -445381 county="罗定市" prefecture="云浮市" province="广东省" -450101 county="市辖区" prefecture="南宁市" province="广西壮族自治区" -450102 county="兴宁区" prefecture="南宁市" province="广西壮族自治区" -450103 county="青秀区" prefecture="南宁市" province="广西壮族自治区" -450104 county="城北区" prefecture="南宁市" province="广西壮族自治区" -450105 county="江南区" prefecture="南宁市" province="广西壮族自治区" -450106 county="永新区" prefecture="南宁市" province="广西壮族自治区" -450107 county="西乡塘区" prefecture="南宁市" province="广西壮族自治区" -450108 county="良庆区" prefecture="南宁市" province="广西壮族自治区" -450109 county="邕宁区" prefecture="南宁市" province="广西壮族自治区" -450121 county="邕宁县" prefecture="南宁市" province="广西壮族自治区" -450122 county="武鸣县" prefecture="南宁市" province="广西壮族自治区" -450123 county="隆安县" prefecture="南宁市" province="广西壮族自治区" -450124 county="马山县" prefecture="南宁市" province="广西壮族自治区" -450125 county="上林县" prefecture="南宁市" province="广西壮族自治区" -450126 county="宾阳县" prefecture="南宁市" province="广西壮族自治区" -450127 county="横县" prefecture="南宁市" province="广西壮族自治区" -450201 county="市辖区" prefecture="柳州市" province="广西壮族自治区" -450202 county="城中区" prefecture="柳州市" province="广西壮族自治区" -450203 county="鱼峰区" prefecture="柳州市" province="广西壮族自治区" -450204 county="柳南区" prefecture="柳州市" province="广西壮族自治区" -450205 county="柳北区" prefecture="柳州市" province="广西壮族自治区" -450221 county="柳江县" prefecture="柳州市" province="广西壮族自治区" -450222 county="柳城县" prefecture="柳州市" province="广西壮族自治区" -450223 county="鹿寨县" prefecture="柳州市" province="广西壮族自治区" -450224 county="融安县" prefecture="柳州市" province="广西壮族自治区" -450225 county="融水苗族自治县" prefecture="柳州市" province="广西壮族自治区" -450226 county="三江侗族自治县" prefecture="柳州市" province="广西壮族自治区" -450301 county="市辖区" prefecture="桂林市" province="广西壮族自治区" -450302 county="秀峰区" prefecture="桂林市" province="广西壮族自治区" -450303 county="叠彩区" prefecture="桂林市" province="广西壮族自治区" -450304 county="象山区" prefecture="桂林市" province="广西壮族自治区" -450305 county="七星区" prefecture="桂林市" province="广西壮族自治区" -450311 county="雁山区" prefecture="桂林市" province="广西壮族自治区" -450312 county="临桂区" prefecture="桂林市" province="广西壮族自治区" -450321 county="阳朔县" prefecture="桂林市" province="广西壮族自治区" -450322 county="临桂县" prefecture="桂林市" province="广西壮族自治区" -450323 county="灵川县" prefecture="桂林市" province="广西壮族自治区" -450324 county="全州县" prefecture="桂林市" province="广西壮族自治区" -450325 county="兴安县" prefecture="桂林市" province="广西壮族自治区" -450326 county="永福县" prefecture="桂林市" province="广西壮族自治区" -450327 county="灌阳县" prefecture="桂林市" province="广西壮族自治区" -450328 county="龙胜各族自治县" prefecture="桂林市" province="广西壮族自治区" -450329 county="资源县" prefecture="桂林市" province="广西壮族自治区" -450330 county="平乐县" prefecture="桂林市" province="广西壮族自治区" -450331 county="荔浦县" prefecture="桂林市" province="广西壮族自治区" -450332 county="恭城瑶族自治县" prefecture="桂林市" province="广西壮族自治区" -450401 county="市辖区" prefecture="梧州市" province="广西壮族自治区" -450403 county="万秀区" prefecture="梧州市" province="广西壮族自治区" -450404 county="蝶山区" prefecture="梧州市" province="广西壮族自治区" -450405 county="长洲区" prefecture="梧州市" province="广西壮族自治区" -450406 county="龙圩区" prefecture="梧州市" province="广西壮族自治区" -450411 county="市郊区" prefecture="梧州市" province="广西壮族自治区" -450421 county="苍梧县" prefecture="梧州市" province="广西壮族自治区" -450422 county="藤县" prefecture="梧州市" province="广西壮族自治区" -450423 county="蒙山县" prefecture="梧州市" province="广西壮族自治区" -450481 county="岑溪市" prefecture="梧州市" province="广西壮族自治区" -450501 county="市辖区" prefecture="北海市" province="广西壮族自治区" -450502 county="海城区" prefecture="北海市" province="广西壮族自治区" -450503 county="银海区" prefecture="北海市" province="广西壮族自治区" -450512 county="铁山港区" prefecture="北海市" province="广西壮族自治区" -450521 county="合浦县" prefecture="北海市" province="广西壮族自治区" -450601 county="市辖区" prefecture="防城港市" province="广西壮族自治区" -450602 county="港口区" prefecture="防城港市" province="广西壮族自治区" -450603 county="防城区" prefecture="防城港市" province="广西壮族自治区" -450621 county="上思县" prefecture="防城港市" province="广西壮族自治区" -450681 county="东兴市" prefecture="防城港市" province="广西壮族自治区" -450701 county="市辖区" prefecture="钦州市" province="广西壮族自治区" -450702 county="钦南区" prefecture="钦州市" province="广西壮族自治区" -450703 county="钦北区" prefecture="钦州市" province="广西壮族自治区" -450721 county="灵山县" prefecture="钦州市" province="广西壮族自治区" -450722 county="浦北县" prefecture="钦州市" province="广西壮族自治区" -450801 county="市辖区" prefecture="贵港市" province="广西壮族自治区" -450802 county="港北区" prefecture="贵港市" province="广西壮族自治区" -450803 county="港南区" prefecture="贵港市" province="广西壮族自治区" -450804 county="覃塘区" prefecture="贵港市" province="广西壮族自治区" -450821 county="平南县" prefecture="贵港市" province="广西壮族自治区" -450881 county="桂平市" prefecture="贵港市" province="广西壮族自治区" -450901 county="市辖区" prefecture="玉林市" province="广西壮族自治区" -450902 county="玉州区" prefecture="玉林市" province="广西壮族自治区" -450903 county="福绵区" prefecture="玉林市" province="广西壮族自治区" -450921 county="容县" prefecture="玉林市" province="广西壮族自治区" -450922 county="陆川县" prefecture="玉林市" province="广西壮族自治区" -450923 county="博白县" prefecture="玉林市" province="广西壮族自治区" -450924 county="兴业县" prefecture="玉林市" province="广西壮族自治区" -450981 county="北流市" prefecture="玉林市" province="广西壮族自治区" -451001 county="市辖区" prefecture="百色市" province="广西壮族自治区" -451002 county="右江区" prefecture="百色市" province="广西壮族自治区" -451021 county="田阳县" prefecture="百色市" province="广西壮族自治区" -451022 county="田东县" prefecture="百色市" province="广西壮族自治区" -451023 county="平果县" prefecture="百色市" province="广西壮族自治区" -451024 county="德保县" prefecture="百色市" province="广西壮族自治区" -451025 county="靖西县" prefecture="百色市" province="广西壮族自治区" -451026 county="那坡县" prefecture="百色市" province="广西壮族自治区" -451027 county="凌云县" prefecture="百色市" province="广西壮族自治区" -451028 county="乐业县" prefecture="百色市" province="广西壮族自治区" -451029 county="田林县" prefecture="百色市" province="广西壮族自治区" -451030 county="西林县" prefecture="百色市" province="广西壮族自治区" -451031 county="隆林各族自治县" prefecture="百色市" province="广西壮族自治区" -451101 county="市辖区" prefecture="贺州市" province="广西壮族自治区" -451102 county="八步区" prefecture="贺州市" province="广西壮族自治区" -451121 county="昭平县" prefecture="贺州市" province="广西壮族自治区" -451122 county="钟山县" prefecture="贺州市" province="广西壮族自治区" -451123 county="富川瑶族自治县" prefecture="贺州市" province="广西壮族自治区" -451201 county="市辖区" prefecture="河池市" province="广西壮族自治区" -451202 county="金城江区" prefecture="河池市" province="广西壮族自治区" -451221 county="南丹县" prefecture="河池市" province="广西壮族自治区" -451222 county="天峨县" prefecture="河池市" province="广西壮族自治区" -451223 county="凤山县" prefecture="河池市" province="广西壮族自治区" -451224 county="东兰县" prefecture="河池市" province="广西壮族自治区" -451225 county="罗城仫佬族自治县" prefecture="河池市" province="广西壮族自治区" -451226 county="环江毛南族自治县" prefecture="河池市" province="广西壮族自治区" -451227 county="巴马瑶族自治县" prefecture="河池市" province="广西壮族自治区" -451228 county="都安瑶族自治县" prefecture="河池市" province="广西壮族自治区" -451229 county="大化瑶族自治县" prefecture="河池市" province="广西壮族自治区" -451281 county="宜州市" prefecture="河池市" province="广西壮族自治区" -451301 county="市辖区" prefecture="来宾市" province="广西壮族自治区" -451302 county="兴宾区" prefecture="来宾市" province="广西壮族自治区" -451321 county="忻城县" prefecture="来宾市" province="广西壮族自治区" -451322 county="象州县" prefecture="来宾市" province="广西壮族自治区" -451323 county="武宣县" prefecture="来宾市" province="广西壮族自治区" -451324 county="金秀瑶族自治县" prefecture="来宾市" province="广西壮族自治区" -451381 county="合山市" prefecture="来宾市" province="广西壮族自治区" -451401 county="市辖区" prefecture="崇左市" province="广西壮族自治区" -451402 county="江州区" prefecture="崇左市" province="广西壮族自治区" -451421 county="扶绥县" prefecture="崇左市" province="广西壮族自治区" -451422 county="宁明县" prefecture="崇左市" province="广西壮族自治区" -451423 county="龙州县" prefecture="崇左市" province="广西壮族自治区" -451424 county="大新县" prefecture="崇左市" province="广西壮族自治区" -451425 county="天等县" prefecture="崇左市" province="广西壮族自治区" -451481 county="凭祥市" prefecture="崇左市" province="广西壮族自治区" -460101 county="市辖区" prefecture="海口市" province="海南省" -460105 county="秀英区" prefecture="海口市" province="海南省" -460106 county="龙华区" prefecture="海口市" province="海南省" -460107 county="琼山区" prefecture="海口市" province="海南省" -460108 county="美兰区" prefecture="海口市" province="海南省" -460201 county="市辖区" prefecture="三亚市" province="海南省" -460202 county="海棠区" prefecture="三亚市" province="海南省" -460203 county="吉阳区" prefecture="三亚市" province="海南省" -460204 county="天涯区" prefecture="三亚市" province="海南省" -460205 county="崖州区" prefecture="三亚市" province="海南省" -460321 county="西沙群岛" prefecture="三沙市" province="海南省" -460322 county="南沙群岛" prefecture="三沙市" province="海南省" -460323 county="中沙群岛的岛礁及其海域" prefecture="三沙市" province="海南省" -469001 county="五指山市" prefecture="省直辖县级行政区划" province="海南省" -469002 county="琼海市" prefecture="省直辖县级行政区划" province="海南省" -469003 county="儋州市" prefecture="省直辖县级行政区划" province="海南省" -469005 county="文昌市" prefecture="省直辖县级行政区划" province="海南省" -469006 county="万宁市" prefecture="省直辖县级行政区划" province="海南省" -469007 county="东方市" prefecture="省直辖县级行政区划" province="海南省" -469021 county="定安县" prefecture="省直辖县级行政区划" province="海南省" -469022 county="屯昌县" prefecture="省直辖县级行政区划" province="海南省" -469023 county="澄迈县" prefecture="省直辖县级行政区划" province="海南省" -469024 county="临高县" prefecture="省直辖县级行政区划" province="海南省" -469025 county="白沙黎族自治县" prefecture="省直辖县级行政区划" province="海南省" -469026 county="昌江黎族自治县" prefecture="省直辖县级行政区划" province="海南省" -469027 county="乐东黎族自治县" prefecture="省直辖县级行政区划" province="海南省" -469028 county="陵水黎族自治县" prefecture="省直辖县级行政区划" province="海南省" -469029 county="保亭黎族苗族自治县" prefecture="省直辖县级行政区划" province="海南省" -469030 county="琼中黎族苗族自治县" prefecture="省直辖县级行政区划" province="海南省" -469031 county="西沙群岛" prefecture="省直辖县级行政区划" province="海南省" -469032 county="南沙群岛" prefecture="省直辖县级行政区划" province="海南省" -469033 county="中沙群岛的岛礁及其海域" prefecture="省直辖县级行政区划" province="海南省" -469034 county="陵水黎族自治县" prefecture="省直辖县级行政区划" province="海南省" -469035 county="保亭黎族苗族自治县" prefecture="省直辖县级行政区划" province="海南省" -469036 county="琼中黎族苗族自治县" prefecture="省直辖县级行政区划" province="海南省" -469037 county="西沙群岛" prefecture="省直辖县级行政区划" province="海南省" -469038 county="南沙群岛" prefecture="省直辖县级行政区划" province="海南省" -469039 county="中沙群岛的岛礁及其海域" prefecture="省直辖县级行政区划" province="海南省" -500101 county="万州区" prefecture="市辖区" province="重庆市" -500102 county="涪陵区" prefecture="市辖区" province="重庆市" -500103 county="渝中区" prefecture="市辖区" province="重庆市" -500104 county="大渡口区" prefecture="市辖区" province="重庆市" -500105 county="江北区" prefecture="市辖区" province="重庆市" -500106 county="沙坪坝区" prefecture="市辖区" province="重庆市" -500107 county="九龙坡区" prefecture="市辖区" province="重庆市" -500108 county="南岸区" prefecture="市辖区" province="重庆市" -500109 county="北碚区" prefecture="市辖区" province="重庆市" -500110 county="綦江区" prefecture="市辖区" province="重庆市" -500111 county="大足区" prefecture="市辖区" province="重庆市" -500112 county="渝北区" prefecture="市辖区" province="重庆市" -500113 county="巴南区" prefecture="市辖区" province="重庆市" -500114 county="黔江区" prefecture="市辖区" province="重庆市" -500115 county="长寿区" prefecture="市辖区" province="重庆市" -500116 county="江津区" prefecture="市辖区" province="重庆市" -500117 county="合川区" prefecture="市辖区" province="重庆市" -500118 county="永川区" prefecture="市辖区" province="重庆市" -500119 county="南川区" prefecture="市辖区" province="重庆市" -500120 county="璧山区" prefecture="市辖区" province="重庆市" -500151 county="铜梁区" prefecture="市辖区" province="重庆市" -500222 county="綦江县" prefecture="县" province="重庆市" -500223 county="潼南县" prefecture="县" province="重庆市" -500224 county="铜梁县" prefecture="县" province="重庆市" -500225 county="大足县" prefecture="县" province="重庆市" -500226 county="荣昌县" prefecture="县" province="重庆市" -500227 county="璧山县" prefecture="县" province="重庆市" -500228 county="梁平县" prefecture="县" province="重庆市" -500229 county="城口县" prefecture="县" province="重庆市" -500230 county="丰都县" prefecture="县" province="重庆市" -500231 county="垫江县" prefecture="县" province="重庆市" -500232 county="武隆县" prefecture="县" province="重庆市" -500233 county="忠县" prefecture="县" province="重庆市" -500234 county="开县" prefecture="县" province="重庆市" -500235 county="云阳县" prefecture="县" province="重庆市" -500236 county="奉节县" prefecture="县" province="重庆市" -500237 county="巫山县" prefecture="县" province="重庆市" -500238 county="巫溪县" prefecture="县" province="重庆市" -500240 county="石柱土家族自治县" prefecture="县" province="重庆市" -500241 county="秀山土家族苗族自治县" prefecture="县" province="重庆市" -500242 county="酉阳土家族苗族自治县" prefecture="县" province="重庆市" -500243 county="彭水苗族土家族自治县" prefecture="县" province="重庆市" -500381 county="江津市" prefecture="市" province="重庆市" -500382 county="合川市" prefecture="市" province="重庆市" -500383 county="永川市" prefecture="市" province="重庆市" -500384 county="南川市" prefecture="市" province="重庆市" -510101 county="市辖区" prefecture="成都市" province="四川省" -510104 county="锦江区" prefecture="成都市" province="四川省" -510105 county="青羊区" prefecture="成都市" province="四川省" -510106 county="金牛区" prefecture="成都市" province="四川省" -510107 county="武侯区" prefecture="成都市" province="四川省" -510108 county="成华区" prefecture="成都市" province="四川省" -510112 county="龙泉驿区" prefecture="成都市" province="四川省" -510113 county="青白江区" prefecture="成都市" province="四川省" -510114 county="新都区" prefecture="成都市" province="四川省" -510115 county="温江区" prefecture="成都市" province="四川省" -510121 county="金堂县" prefecture="成都市" province="四川省" -510122 county="双流县" prefecture="成都市" province="四川省" -510123 county="温江县" prefecture="成都市" province="四川省" -510124 county="郫县" prefecture="成都市" province="四川省" -510129 county="大邑县" prefecture="成都市" province="四川省" -510131 county="蒲江县" prefecture="成都市" province="四川省" -510132 county="新津县" prefecture="成都市" province="四川省" -510181 county="都江堰市" prefecture="成都市" province="四川省" -510182 county="彭州市" prefecture="成都市" province="四川省" -510183 county="邛崃市" prefecture="成都市" province="四川省" -510184 county="崇州市" prefecture="成都市" province="四川省" -510301 county="市辖区" prefecture="自贡市" province="四川省" -510302 county="自流井区" prefecture="自贡市" province="四川省" -510303 county="贡井区" prefecture="自贡市" province="四川省" -510304 county="大安区" prefecture="自贡市" province="四川省" -510311 county="沿滩区" prefecture="自贡市" province="四川省" -510321 county="荣县" prefecture="自贡市" province="四川省" -510322 county="富顺县" prefecture="自贡市" province="四川省" -510401 county="市辖区" prefecture="攀枝花市" province="四川省" -510402 county="东区" prefecture="攀枝花市" province="四川省" -510403 county="西区" prefecture="攀枝花市" province="四川省" -510411 county="仁和区" prefecture="攀枝花市" province="四川省" -510421 county="米易县" prefecture="攀枝花市" province="四川省" -510422 county="盐边县" prefecture="攀枝花市" province="四川省" -510501 county="市辖区" prefecture="泸州市" province="四川省" -510502 county="江阳区" prefecture="泸州市" province="四川省" -510503 county="纳溪区" prefecture="泸州市" province="四川省" -510504 county="龙马潭区" prefecture="泸州市" province="四川省" -510521 county="泸县" prefecture="泸州市" province="四川省" -510522 county="合江县" prefecture="泸州市" province="四川省" -510524 county="叙永县" prefecture="泸州市" province="四川省" -510525 county="古蔺县" prefecture="泸州市" province="四川省" -510601 county="市辖区" prefecture="德阳市" province="四川省" -510603 county="旌阳区" prefecture="德阳市" province="四川省" -510623 county="中江县" prefecture="德阳市" province="四川省" -510626 county="罗江县" prefecture="德阳市" province="四川省" -510681 county="广汉市" prefecture="德阳市" province="四川省" -510682 county="什邡市" prefecture="德阳市" province="四川省" -510683 county="绵竹市" prefecture="德阳市" province="四川省" -510701 county="市辖区" prefecture="绵阳市" province="四川省" -510703 county="涪城区" prefecture="绵阳市" province="四川省" -510704 county="游仙区" prefecture="绵阳市" province="四川省" -510722 county="三台县" prefecture="绵阳市" province="四川省" -510723 county="盐亭县" prefecture="绵阳市" province="四川省" -510724 county="安县" prefecture="绵阳市" province="四川省" -510725 county="梓潼县" prefecture="绵阳市" province="四川省" -510726 county="北川羌族自治县" prefecture="绵阳市" province="四川省" -510727 county="平武县" prefecture="绵阳市" province="四川省" -510781 county="江油市" prefecture="绵阳市" province="四川省" -510801 county="市辖区" prefecture="广元市" province="四川省" -510802 county="利州区" prefecture="广元市" province="四川省" -510811 county="昭化区" prefecture="广元市" province="四川省" -510812 county="朝天区" prefecture="广元市" province="四川省" -510821 county="旺苍县" prefecture="广元市" province="四川省" -510822 county="青川县" prefecture="广元市" province="四川省" -510823 county="剑阁县" prefecture="广元市" province="四川省" -510824 county="苍溪县" prefecture="广元市" province="四川省" -510901 county="市辖区" prefecture="遂宁市" province="四川省" -510902 county="市中区" prefecture="遂宁市" province="四川省" -510903 county="船山区" prefecture="遂宁市" province="四川省" -510904 county="安居区" prefecture="遂宁市" province="四川省" -510921 county="蓬溪县" prefecture="遂宁市" province="四川省" -510922 county="射洪县" prefecture="遂宁市" province="四川省" -510923 county="大英县" prefecture="遂宁市" province="四川省" -511001 county="市辖区" prefecture="内江市" province="四川省" -511002 county="市中区" prefecture="内江市" province="四川省" -511011 county="东兴区" prefecture="内江市" province="四川省" -511024 county="威远县" prefecture="内江市" province="四川省" -511025 county="资中县" prefecture="内江市" province="四川省" -511028 county="隆昌县" prefecture="内江市" province="四川省" -511101 county="市辖区" prefecture="乐山市" province="四川省" -511102 county="市中区" prefecture="乐山市" province="四川省" -511111 county="沙湾区" prefecture="乐山市" province="四川省" -511112 county="五通桥区" prefecture="乐山市" province="四川省" -511113 county="金口河区" prefecture="乐山市" province="四川省" -511123 county="犍为县" prefecture="乐山市" province="四川省" -511124 county="井研县" prefecture="乐山市" province="四川省" -511126 county="夹江县" prefecture="乐山市" province="四川省" -511129 county="沐川县" prefecture="乐山市" province="四川省" -511132 county="峨边彝族自治县" prefecture="乐山市" province="四川省" -511133 county="马边彝族自治县" prefecture="乐山市" province="四川省" -511181 county="峨眉山市" prefecture="乐山市" province="四川省" -511301 county="市辖区" prefecture="南充市" province="四川省" -511302 county="顺庆区" prefecture="南充市" province="四川省" -511303 county="高坪区" prefecture="南充市" province="四川省" -511304 county="嘉陵区" prefecture="南充市" province="四川省" -511321 county="南部县" prefecture="南充市" province="四川省" -511322 county="营山县" prefecture="南充市" province="四川省" -511323 county="蓬安县" prefecture="南充市" province="四川省" -511324 county="仪陇县" prefecture="南充市" province="四川省" -511325 county="西充县" prefecture="南充市" province="四川省" -511381 county="阆中市" prefecture="南充市" province="四川省" -511401 county="市辖区" prefecture="眉山市" province="四川省" -511402 county="东坡区" prefecture="眉山市" province="四川省" -511421 county="仁寿县" prefecture="眉山市" province="四川省" -511422 county="彭山县" prefecture="眉山市" province="四川省" -511423 county="洪雅县" prefecture="眉山市" province="四川省" -511424 county="丹棱县" prefecture="眉山市" province="四川省" -511425 county="青神县" prefecture="眉山市" province="四川省" -511501 county="市辖区" prefecture="宜宾市" province="四川省" -511502 county="翠屏区" prefecture="宜宾市" province="四川省" -511503 county="南溪区" prefecture="宜宾市" province="四川省" -511521 county="宜宾县" prefecture="宜宾市" province="四川省" -511522 county="南溪县" prefecture="宜宾市" province="四川省" -511523 county="江安县" prefecture="宜宾市" province="四川省" -511524 county="长宁县" prefecture="宜宾市" province="四川省" -511525 county="高县" prefecture="宜宾市" province="四川省" -511526 county="珙县" prefecture="宜宾市" province="四川省" -511527 county="筠连县" prefecture="宜宾市" province="四川省" -511528 county="兴文县" prefecture="宜宾市" province="四川省" -511529 county="屏山县" prefecture="宜宾市" province="四川省" -511601 county="市辖区" prefecture="广安市" province="四川省" -511602 county="广安区" prefecture="广安市" province="四川省" -511603 county="前锋区" prefecture="广安市" province="四川省" -511621 county="岳池县" prefecture="广安市" province="四川省" -511622 county="武胜县" prefecture="广安市" province="四川省" -511623 county="邻水县" prefecture="广安市" province="四川省" -511681 county="华蓥市" prefecture="广安市" province="四川省" -511701 county="市辖区" prefecture="达州市" province="四川省" -511702 county="通川区" prefecture="达州市" province="四川省" -511703 county="达川区" prefecture="达州市" province="四川省" -511721 county="达县" prefecture="达州市" province="四川省" -511722 county="宣汉县" prefecture="达州市" province="四川省" -511723 county="开江县" prefecture="达州市" province="四川省" -511724 county="大竹县" prefecture="达州市" province="四川省" -511725 county="渠县" prefecture="达州市" province="四川省" -511781 county="万源市" prefecture="达州市" province="四川省" -511801 county="市辖区" prefecture="雅安市" province="四川省" -511802 county="雨城区" prefecture="雅安市" province="四川省" -511803 county="名山区" prefecture="雅安市" province="四川省" -511821 county="名山县" prefecture="雅安市" province="四川省" -511822 county="荥经县" prefecture="雅安市" province="四川省" -511823 county="汉源县" prefecture="雅安市" province="四川省" -511824 county="石棉县" prefecture="雅安市" province="四川省" -511825 county="天全县" prefecture="雅安市" province="四川省" -511826 county="芦山县" prefecture="雅安市" province="四川省" -511827 county="宝兴县" prefecture="雅安市" province="四川省" -511901 county="市辖区" prefecture="巴中市" province="四川省" -511902 county="巴州区" prefecture="巴中市" province="四川省" -511903 county="恩阳区" prefecture="巴中市" province="四川省" -511921 county="通江县" prefecture="巴中市" province="四川省" -511922 county="南江县" prefecture="巴中市" province="四川省" -511923 county="平昌县" prefecture="巴中市" province="四川省" -512001 county="市辖区" prefecture="资阳市" province="四川省" -512002 county="雁江区" prefecture="资阳市" province="四川省" -512021 county="安岳县" prefecture="资阳市" province="四川省" -512022 county="乐至县" prefecture="资阳市" province="四川省" -512081 county="简阳市" prefecture="资阳市" province="四川省" -513221 county="汶川县" prefecture="阿坝藏族羌族自治州" province="四川省" -513222 county="理县" prefecture="阿坝藏族羌族自治州" province="四川省" -513223 county="茂县" prefecture="阿坝藏族羌族自治州" province="四川省" -513224 county="松潘县" prefecture="阿坝藏族羌族自治州" province="四川省" -513225 county="九寨沟县" prefecture="阿坝藏族羌族自治州" province="四川省" -513226 county="金川县" prefecture="阿坝藏族羌族自治州" province="四川省" -513227 county="小金县" prefecture="阿坝藏族羌族自治州" province="四川省" -513228 county="黑水县" prefecture="阿坝藏族羌族自治州" province="四川省" -513229 county="马尔康县" prefecture="阿坝藏族羌族自治州" province="四川省" -513230 county="壤塘县" prefecture="阿坝藏族羌族自治州" province="四川省" -513231 county="阿坝县" prefecture="阿坝藏族羌族自治州" province="四川省" -513232 county="若尔盖县" prefecture="阿坝藏族羌族自治州" province="四川省" -513233 county="红原县" prefecture="阿坝藏族羌族自治州" province="四川省" -513321 county="康定县" prefecture="甘孜藏族自治州" province="四川省" -513322 county="泸定县" prefecture="甘孜藏族自治州" province="四川省" -513323 county="丹巴县" prefecture="甘孜藏族自治州" province="四川省" -513324 county="九龙县" prefecture="甘孜藏族自治州" province="四川省" -513325 county="雅江县" prefecture="甘孜藏族自治州" province="四川省" -513326 county="道孚县" prefecture="甘孜藏族自治州" province="四川省" -513327 county="炉霍县" prefecture="甘孜藏族自治州" province="四川省" -513328 county="甘孜县" prefecture="甘孜藏族自治州" province="四川省" -513329 county="新龙县" prefecture="甘孜藏族自治州" province="四川省" -513330 county="德格县" prefecture="甘孜藏族自治州" province="四川省" -513331 county="白玉县" prefecture="甘孜藏族自治州" province="四川省" -513332 county="石渠县" prefecture="甘孜藏族自治州" province="四川省" -513333 county="色达县" prefecture="甘孜藏族自治州" province="四川省" -513334 county="理塘县" prefecture="甘孜藏族自治州" province="四川省" -513335 county="巴塘县" prefecture="甘孜藏族自治州" province="四川省" -513336 county="乡城县" prefecture="甘孜藏族自治州" province="四川省" -513337 county="稻城县" prefecture="甘孜藏族自治州" province="四川省" -513338 county="得荣县" prefecture="甘孜藏族自治州" province="四川省" -513401 county="西昌市" prefecture="凉山彝族自治州" province="四川省" -513422 county="木里藏族自治县" prefecture="凉山彝族自治州" province="四川省" -513423 county="盐源县" prefecture="凉山彝族自治州" province="四川省" -513424 county="德昌县" prefecture="凉山彝族自治州" province="四川省" -513425 county="会理县" prefecture="凉山彝族自治州" province="四川省" -513426 county="会东县" prefecture="凉山彝族自治州" province="四川省" -513427 county="宁南县" prefecture="凉山彝族自治州" province="四川省" -513428 county="普格县" prefecture="凉山彝族自治州" province="四川省" -513429 county="布拖县" prefecture="凉山彝族自治州" province="四川省" -513430 county="金阳县" prefecture="凉山彝族自治州" province="四川省" -513431 county="昭觉县" prefecture="凉山彝族自治州" province="四川省" -513432 county="喜德县" prefecture="凉山彝族自治州" province="四川省" -513433 county="冕宁县" prefecture="凉山彝族自治州" province="四川省" -513434 county="越西县" prefecture="凉山彝族自治州" province="四川省" -513435 county="甘洛县" prefecture="凉山彝族自治州" province="四川省" -513436 county="美姑县" prefecture="凉山彝族自治州" province="四川省" -513437 county="雷波县" prefecture="凉山彝族自治州" province="四川省" -520101 county="市辖区" prefecture="贵阳市" province="贵州省" -520102 county="南明区" prefecture="贵阳市" province="贵州省" -520103 county="云岩区" prefecture="贵阳市" province="贵州省" -520111 county="花溪区" prefecture="贵阳市" province="贵州省" -520112 county="乌当区" prefecture="贵阳市" province="贵州省" -520113 county="白云区" prefecture="贵阳市" province="贵州省" -520114 county="小河区" prefecture="贵阳市" province="贵州省" -520115 county="观山湖区" prefecture="贵阳市" province="贵州省" -520121 county="开阳县" prefecture="贵阳市" province="贵州省" -520122 county="息烽县" prefecture="贵阳市" province="贵州省" -520123 county="修文县" prefecture="贵阳市" province="贵州省" -520181 county="清镇市" prefecture="贵阳市" province="贵州省" -520201 county="钟山区" prefecture="六盘水市" province="贵州省" -520203 county="六枝特区" prefecture="六盘水市" province="贵州省" -520221 county="水城县" prefecture="六盘水市" province="贵州省" -520222 county="盘县" prefecture="六盘水市" province="贵州省" -520301 county="市辖区" prefecture="遵义市" province="贵州省" -520302 county="红花岗区" prefecture="遵义市" province="贵州省" -520303 county="汇川区" prefecture="遵义市" province="贵州省" -520321 county="遵义县" prefecture="遵义市" province="贵州省" -520322 county="桐梓县" prefecture="遵义市" province="贵州省" -520323 county="绥阳县" prefecture="遵义市" province="贵州省" -520324 county="正安县" prefecture="遵义市" province="贵州省" -520325 county="道真仡佬族苗族自治县" prefecture="遵义市" province="贵州省" -520326 county="务川仡佬族苗族自治县" prefecture="遵义市" province="贵州省" -520327 county="凤冈县" prefecture="遵义市" province="贵州省" -520328 county="湄潭县" prefecture="遵义市" province="贵州省" -520329 county="余庆县" prefecture="遵义市" province="贵州省" -520330 county="习水县" prefecture="遵义市" province="贵州省" -520381 county="赤水市" prefecture="遵义市" province="贵州省" -520382 county="仁怀市" prefecture="遵义市" province="贵州省" -520401 county="市辖区" prefecture="安顺市" province="贵州省" -520402 county="西秀区" prefecture="安顺市" province="贵州省" -520421 county="平坝县" prefecture="安顺市" province="贵州省" -520422 county="普定县" prefecture="安顺市" province="贵州省" -520423 county="镇宁布依族苗族自治县" prefecture="安顺市" province="贵州省" -520424 county="关岭布依族苗族自治县" prefecture="安顺市" province="贵州省" -520425 county="紫云苗族布依族自治县" prefecture="安顺市" province="贵州省" -520501 county="市辖区" prefecture="毕节市" province="贵州省" -520502 county="七星关区" prefecture="毕节市" province="贵州省" -520521 county="大方县" prefecture="毕节市" province="贵州省" -520522 county="黔西县" prefecture="毕节市" province="贵州省" -520523 county="金沙县" prefecture="毕节市" province="贵州省" -520524 county="织金县" prefecture="毕节市" province="贵州省" -520525 county="纳雍县" prefecture="毕节市" province="贵州省" -520526 county="威宁彝族回族苗族自治县" prefecture="毕节市" province="贵州省" -520527 county="赫章县" prefecture="毕节市" province="贵州省" -520601 county="市辖区" prefecture="铜仁市" province="贵州省" -520602 county="碧江区" prefecture="铜仁市" province="贵州省" -520603 county="万山区" prefecture="铜仁市" province="贵州省" -520621 county="江口县" prefecture="铜仁市" province="贵州省" -520622 county="玉屏侗族自治县" prefecture="铜仁市" province="贵州省" -520623 county="石阡县" prefecture="铜仁市" province="贵州省" -520624 county="思南县" prefecture="铜仁市" province="贵州省" -520625 county="印江土家族苗族自治县" prefecture="铜仁市" province="贵州省" -520626 county="德江县" prefecture="铜仁市" province="贵州省" -520627 county="沿河土家族自治县" prefecture="铜仁市" province="贵州省" -520628 county="松桃苗族自治县" prefecture="铜仁市" province="贵州省" -522201 county="铜仁市" prefecture="铜仁地区" province="贵州省" -522222 county="江口县" prefecture="铜仁地区" province="贵州省" -522223 county="玉屏侗族自治县" prefecture="铜仁地区" province="贵州省" -522224 county="石阡县" prefecture="铜仁地区" province="贵州省" -522225 county="思南县" prefecture="铜仁地区" province="贵州省" -522226 county="印江土家族苗族自治县" prefecture="铜仁地区" province="贵州省" -522227 county="德江县" prefecture="铜仁地区" province="贵州省" -522228 county="沿河土家族自治县" prefecture="铜仁地区" province="贵州省" -522229 county="松桃苗族自治县" prefecture="铜仁地区" province="贵州省" -522230 county="万山特区" prefecture="铜仁地区" province="贵州省" -522301 county="兴义市" prefecture="黔西南布依族苗族自治州" province="贵州省" -522322 county="兴仁县" prefecture="黔西南布依族苗族自治州" province="贵州省" -522323 county="普安县" prefecture="黔西南布依族苗族自治州" province="贵州省" -522324 county="晴隆县" prefecture="黔西南布依族苗族自治州" province="贵州省" -522325 county="贞丰县" prefecture="黔西南布依族苗族自治州" province="贵州省" -522326 county="望谟县" prefecture="黔西南布依族苗族自治州" province="贵州省" -522327 county="册亨县" prefecture="黔西南布依族苗族自治州" province="贵州省" -522328 county="安龙县" prefecture="黔西南布依族苗族自治州" province="贵州省" -522401 county="毕节市" prefecture="毕节地区" province="贵州省" -522422 county="大方县" prefecture="毕节地区" province="贵州省" -522423 county="黔西县" prefecture="毕节地区" province="贵州省" -522424 county="金沙县" prefecture="毕节地区" province="贵州省" -522425 county="织金县" prefecture="毕节地区" province="贵州省" -522426 county="纳雍县" prefecture="毕节地区" province="贵州省" -522427 county="威宁彝族回族苗族自治县" prefecture="毕节地区" province="贵州省" -522428 county="赫章县" prefecture="毕节地区" province="贵州省" -522601 county="凯里市" prefecture="黔东南苗族侗族自治州" province="贵州省" -522622 county="黄平县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522623 county="施秉县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522624 county="三穗县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522625 county="镇远县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522626 county="岑巩县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522627 county="天柱县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522628 county="锦屏县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522629 county="剑河县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522630 county="台江县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522631 county="黎平县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522632 county="榕江县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522633 county="从江县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522634 county="雷山县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522635 county="麻江县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522636 county="丹寨县" prefecture="黔东南苗族侗族自治州" province="贵州省" -522701 county="都匀市" prefecture="黔南布依族苗族自治州" province="贵州省" -522702 county="福泉市" prefecture="黔南布依族苗族自治州" province="贵州省" -522722 county="荔波县" prefecture="黔南布依族苗族自治州" province="贵州省" -522723 county="贵定县" prefecture="黔南布依族苗族自治州" province="贵州省" -522725 county="瓮安县" prefecture="黔南布依族苗族自治州" province="贵州省" -522726 county="独山县" prefecture="黔南布依族苗族自治州" province="贵州省" -522727 county="平塘县" prefecture="黔南布依族苗族自治州" province="贵州省" -522728 county="罗甸县" prefecture="黔南布依族苗族自治州" province="贵州省" -522729 county="长顺县" prefecture="黔南布依族苗族自治州" province="贵州省" -522730 county="龙里县" prefecture="黔南布依族苗族自治州" province="贵州省" -522731 county="惠水县" prefecture="黔南布依族苗族自治州" province="贵州省" -522732 county="三都水族自治县" prefecture="黔南布依族苗族自治州" province="贵州省" -530101 county="市辖区" prefecture="昆明市" province="云南省" -530102 county="五华区" prefecture="昆明市" province="云南省" -530103 county="盘龙区" prefecture="昆明市" province="云南省" -530111 county="官渡区" prefecture="昆明市" province="云南省" -530112 county="西山区" prefecture="昆明市" province="云南省" -530113 county="东川区" prefecture="昆明市" province="云南省" -530114 county="呈贡区" prefecture="昆明市" province="云南省" -530121 county="呈贡县" prefecture="昆明市" province="云南省" -530122 county="晋宁县" prefecture="昆明市" province="云南省" -530124 county="富民县" prefecture="昆明市" province="云南省" -530125 county="宜良县" prefecture="昆明市" province="云南省" -530126 county="石林彝族自治县" prefecture="昆明市" province="云南省" -530127 county="嵩明县" prefecture="昆明市" province="云南省" -530128 county="禄劝彝族苗族自治县" prefecture="昆明市" province="云南省" -530129 county="寻甸回族彝族自治县" prefecture="昆明市" province="云南省" -530181 county="安宁市" prefecture="昆明市" province="云南省" -530301 county="市辖区" prefecture="曲靖市" province="云南省" -530302 county="麒麟区" prefecture="曲靖市" province="云南省" -530321 county="马龙县" prefecture="曲靖市" province="云南省" -530322 county="陆良县" prefecture="曲靖市" province="云南省" -530323 county="师宗县" prefecture="曲靖市" province="云南省" -530324 county="罗平县" prefecture="曲靖市" province="云南省" -530325 county="富源县" prefecture="曲靖市" province="云南省" -530326 county="会泽县" prefecture="曲靖市" province="云南省" -530328 county="沾益县" prefecture="曲靖市" province="云南省" -530381 county="宣威市" prefecture="曲靖市" province="云南省" -530401 county="市辖区" prefecture="玉溪市" province="云南省" -530402 county="红塔区" prefecture="玉溪市" province="云南省" -530421 county="江川县" prefecture="玉溪市" province="云南省" -530422 county="澄江县" prefecture="玉溪市" province="云南省" -530423 county="通海县" prefecture="玉溪市" province="云南省" -530424 county="华宁县" prefecture="玉溪市" province="云南省" -530425 county="易门县" prefecture="玉溪市" province="云南省" -530426 county="峨山彝族自治县" prefecture="玉溪市" province="云南省" -530427 county="新平彝族傣族自治县" prefecture="玉溪市" province="云南省" -530428 county="元江哈尼族彝族傣族自治县" prefecture="玉溪市" province="云南省" -530501 county="市辖区" prefecture="保山市" province="云南省" -530502 county="隆阳区" prefecture="保山市" province="云南省" -530521 county="施甸县" prefecture="保山市" province="云南省" -530522 county="腾冲县" prefecture="保山市" province="云南省" -530523 county="龙陵县" prefecture="保山市" province="云南省" -530524 county="昌宁县" prefecture="保山市" province="云南省" -530601 county="市辖区" prefecture="昭通市" province="云南省" -530602 county="昭阳区" prefecture="昭通市" province="云南省" -530621 county="鲁甸县" prefecture="昭通市" province="云南省" -530622 county="巧家县" prefecture="昭通市" province="云南省" -530623 county="盐津县" prefecture="昭通市" province="云南省" -530624 county="大关县" prefecture="昭通市" province="云南省" -530625 county="永善县" prefecture="昭通市" province="云南省" -530626 county="绥江县" prefecture="昭通市" province="云南省" -530627 county="镇雄县" prefecture="昭通市" province="云南省" -530628 county="彝良县" prefecture="昭通市" province="云南省" -530629 county="威信县" prefecture="昭通市" province="云南省" -530630 county="水富县" prefecture="昭通市" province="云南省" -530701 county="市辖区" prefecture="丽江市" province="云南省" -530702 county="古城区" prefecture="丽江市" province="云南省" -530721 county="玉龙纳西族自治县" prefecture="丽江市" province="云南省" -530722 county="永胜县" prefecture="丽江市" province="云南省" -530723 county="华坪县" prefecture="丽江市" province="云南省" -530724 county="宁蒗彝族自治县" prefecture="丽江市" province="云南省" -530801 county="市辖区" prefecture="普洱市" province="云南省" -530802 county="思茅区" prefecture="普洱市" province="云南省" -530821 county="宁洱哈尼族彝族自治县" prefecture="普洱市" province="云南省" -530822 county="墨江哈尼族自治县" prefecture="普洱市" province="云南省" -530823 county="景东彝族自治县" prefecture="普洱市" province="云南省" -530824 county="景谷傣族彝族自治县" prefecture="普洱市" province="云南省" -530825 county="镇沅彝族哈尼族拉祜族自治县" prefecture="普洱市" province="云南省" -530826 county="江城哈尼族彝族自治县" prefecture="普洱市" province="云南省" -530827 county="孟连傣族拉祜族佤族自治县" prefecture="普洱市" province="云南省" -530828 county="澜沧拉祜族自治县" prefecture="普洱市" province="云南省" -530829 county="西盟佤族自治县" prefecture="普洱市" province="云南省" -530901 county="市辖区" prefecture="临沧市" province="云南省" -530902 county="临翔区" prefecture="临沧市" province="云南省" -530921 county="凤庆县" prefecture="临沧市" province="云南省" -530922 county="云县" prefecture="临沧市" province="云南省" -530923 county="永德县" prefecture="临沧市" province="云南省" -530924 county="镇康县" prefecture="临沧市" province="云南省" -530925 county="双江拉祜族佤族布朗族傣族自治县" prefecture="临沧市" province="云南省" -530926 county="耿马傣族佤族自治县" prefecture="临沧市" province="云南省" -530927 county="沧源佤族自治县" prefecture="临沧市" province="云南省" -532301 county="楚雄市" prefecture="楚雄彝族自治州" province="云南省" -532322 county="双柏县" prefecture="楚雄彝族自治州" province="云南省" -532323 county="牟定县" prefecture="楚雄彝族自治州" province="云南省" -532324 county="南华县" prefecture="楚雄彝族自治州" province="云南省" -532325 county="姚安县" prefecture="楚雄彝族自治州" province="云南省" -532326 county="大姚县" prefecture="楚雄彝族自治州" province="云南省" -532327 county="永仁县" prefecture="楚雄彝族自治州" province="云南省" -532328 county="元谋县" prefecture="楚雄彝族自治州" province="云南省" -532329 county="武定县" prefecture="楚雄彝族自治州" province="云南省" -532331 county="禄丰县" prefecture="楚雄彝族自治州" province="云南省" -532501 county="个旧市" prefecture="红河哈尼族彝族自治州" province="云南省" -532502 county="开远市" prefecture="红河哈尼族彝族自治州" province="云南省" -532503 county="蒙自市" prefecture="红河哈尼族彝族自治州" province="云南省" -532504 county="弥勒市" prefecture="红河哈尼族彝族自治州" province="云南省" -532522 county="蒙自县" prefecture="红河哈尼族彝族自治州" province="云南省" -532523 county="屏边苗族自治县" prefecture="红河哈尼族彝族自治州" province="云南省" -532524 county="建水县" prefecture="红河哈尼族彝族自治州" province="云南省" -532525 county="石屏县" prefecture="红河哈尼族彝族自治州" province="云南省" -532526 county="弥勒县" prefecture="红河哈尼族彝族自治州" province="云南省" -532527 county="泸西县" prefecture="红河哈尼族彝族自治州" province="云南省" -532528 county="元阳县" prefecture="红河哈尼族彝族自治州" province="云南省" -532529 county="红河县" prefecture="红河哈尼族彝族自治州" province="云南省" -532530 county="金平苗族瑶族傣族自治县" prefecture="红河哈尼族彝族自治州" province="云南省" -532531 county="绿春县" prefecture="红河哈尼族彝族自治州" province="云南省" -532532 county="河口瑶族自治县" prefecture="红河哈尼族彝族自治州" province="云南省" -532601 county="文山市" prefecture="文山壮族苗族自治州" province="云南省" -532621 county="文山县" prefecture="文山壮族苗族自治州" province="云南省" -532622 county="砚山县" prefecture="文山壮族苗族自治州" province="云南省" -532623 county="西畴县" prefecture="文山壮族苗族自治州" province="云南省" -532624 county="麻栗坡县" prefecture="文山壮族苗族自治州" province="云南省" -532625 county="马关县" prefecture="文山壮族苗族自治州" province="云南省" -532626 county="丘北县" prefecture="文山壮族苗族自治州" province="云南省" -532627 county="广南县" prefecture="文山壮族苗族自治州" province="云南省" -532628 county="富宁县" prefecture="文山壮族苗族自治州" province="云南省" -532701 county="思茅市" prefecture="思茅地区" province="云南省" -532722 county="普洱哈尼族彝族自治县" prefecture="思茅地区" province="云南省" -532723 county="墨江哈尼族自治县" prefecture="思茅地区" province="云南省" -532724 county="景东彝族自治县" prefecture="思茅地区" province="云南省" -532725 county="景谷傣族彝族自治县" prefecture="思茅地区" province="云南省" -532726 county="镇沅彝族哈尼族拉祜族自治县" prefecture="思茅地区" province="云南省" -532727 county="江城哈尼族彝族自治县" prefecture="思茅地区" province="云南省" -532728 county="孟连傣族拉祜族佤族自治县" prefecture="思茅地区" province="云南省" -532729 county="澜沧拉祜族自治县" prefecture="思茅地区" province="云南省" -532730 county="西盟佤族自治县" prefecture="思茅地区" province="云南省" -532801 county="景洪市" prefecture="西双版纳傣族自治州" province="云南省" -532822 county="勐海县" prefecture="西双版纳傣族自治州" province="云南省" -532823 county="勐腊县" prefecture="西双版纳傣族自治州" province="云南省" -532901 county="大理市" prefecture="大理白族自治州" province="云南省" -532922 county="漾濞彝族自治县" prefecture="大理白族自治州" province="云南省" -532923 county="祥云县" prefecture="大理白族自治州" province="云南省" -532924 county="宾川县" prefecture="大理白族自治州" province="云南省" -532925 county="弥渡县" prefecture="大理白族自治州" province="云南省" -532926 county="南涧彝族自治县" prefecture="大理白族自治州" province="云南省" -532927 county="巍山彝族回族自治县" prefecture="大理白族自治州" province="云南省" -532928 county="永平县" prefecture="大理白族自治州" province="云南省" -532929 county="云龙县" prefecture="大理白族自治州" province="云南省" -532930 county="洱源县" prefecture="大理白族自治州" province="云南省" -532931 county="剑川县" prefecture="大理白族自治州" province="云南省" -532932 county="鹤庆县" prefecture="大理白族自治州" province="云南省" -533102 county="瑞丽市" prefecture="德宏傣族景颇族自治州" province="云南省" -533103 county="芒市" prefecture="德宏傣族景颇族自治州" province="云南省" -533122 county="梁河县" prefecture="德宏傣族景颇族自治州" province="云南省" -533123 county="盈江县" prefecture="德宏傣族景颇族自治州" province="云南省" -533124 county="陇川县" prefecture="德宏傣族景颇族自治州" province="云南省" -533321 county="泸水县" prefecture="怒江傈僳族自治州" province="云南省" -533323 county="福贡县" prefecture="怒江傈僳族自治州" province="云南省" -533324 county="贡山独龙族怒族自治县" prefecture="怒江傈僳族自治州" province="云南省" -533325 county="兰坪白族普米族自治县" prefecture="怒江傈僳族自治州" province="云南省" -533421 county="香格里拉县" prefecture="迪庆藏族自治州" province="云南省" -533422 county="德钦县" prefecture="迪庆藏族自治州" province="云南省" -533423 county="维西傈僳族自治县" prefecture="迪庆藏族自治州" province="云南省" -533521 county="临沧县" prefecture="临沧地区" province="云南省" -533522 county="凤庆县" prefecture="临沧地区" province="云南省" -533523 county="云县" prefecture="临沧地区" province="云南省" -533524 county="永德县" prefecture="临沧地区" province="云南省" -533525 county="镇康县" prefecture="临沧地区" province="云南省" -533526 county="双江拉祜族佤族布朗族傣族自治县" prefecture="临沧地区" province="云南省" -533527 county="耿马傣族佤族自治县" prefecture="临沧地区" province="云南省" -533528 county="沧源佤族自治县" prefecture="临沧地区" province="云南省" -540101 county="市辖区" prefecture="拉萨市" province="西藏自治区" -540102 county="城关区" prefecture="拉萨市" province="西藏自治区" -540121 county="林周县" prefecture="拉萨市" province="西藏自治区" -540122 county="当雄县" prefecture="拉萨市" province="西藏自治区" -540123 county="尼木县" prefecture="拉萨市" province="西藏自治区" -540124 county="曲水县" prefecture="拉萨市" province="西藏自治区" -540125 county="堆龙德庆县" prefecture="拉萨市" province="西藏自治区" -540126 county="达孜县" prefecture="拉萨市" province="西藏自治区" -540127 county="墨竹工卡县" prefecture="拉萨市" province="西藏自治区" -540202 county="桑珠孜区" prefecture="日喀则市" province="西藏自治区" -540221 county="南木林县" prefecture="日喀则市" province="西藏自治区" -540222 county="江孜县" prefecture="日喀则市" province="西藏自治区" -540223 county="定日县" prefecture="日喀则市" province="西藏自治区" -540224 county="萨迦县" prefecture="日喀则市" province="西藏自治区" -540225 county="拉孜县" prefecture="日喀则市" province="西藏自治区" -540226 county="昂仁县" prefecture="日喀则市" province="西藏自治区" -540227 county="谢通门县" prefecture="日喀则市" province="西藏自治区" -540228 county="白朗县" prefecture="日喀则市" province="西藏自治区" -540229 county="仁布县" prefecture="日喀则市" province="西藏自治区" -540230 county="康马县" prefecture="日喀则市" province="西藏自治区" -540231 county="定结县" prefecture="日喀则市" province="西藏自治区" -540232 county="仲巴县" prefecture="日喀则市" province="西藏自治区" -540233 county="亚东县" prefecture="日喀则市" province="西藏自治区" -540234 county="吉隆县" prefecture="日喀则市" province="西藏自治区" -540235 county="聂拉木县" prefecture="日喀则市" province="西藏自治区" -540236 county="萨嘎县" prefecture="日喀则市" province="西藏自治区" -540237 county="岗巴县" prefecture="日喀则市" province="西藏自治区" -542121 county="昌都县" prefecture="昌都地区" province="西藏自治区" -542122 county="江达县" prefecture="昌都地区" province="西藏自治区" -542123 county="贡觉县" prefecture="昌都地区" province="西藏自治区" -542124 county="类乌齐县" prefecture="昌都地区" province="西藏自治区" -542125 county="丁青县" prefecture="昌都地区" province="西藏自治区" -542126 county="察雅县" prefecture="昌都地区" province="西藏自治区" -542127 county="八宿县" prefecture="昌都地区" province="西藏自治区" -542128 county="左贡县" prefecture="昌都地区" province="西藏自治区" -542129 county="芒康县" prefecture="昌都地区" province="西藏自治区" -542132 county="洛隆县" prefecture="昌都地区" province="西藏自治区" -542133 county="边坝县" prefecture="昌都地区" province="西藏自治区" -542221 county="乃东县" prefecture="山南地区" province="西藏自治区" -542222 county="扎囊县" prefecture="山南地区" province="西藏自治区" -542223 county="贡嘎县" prefecture="山南地区" province="西藏自治区" -542224 county="桑日县" prefecture="山南地区" province="西藏自治区" -542225 county="琼结县" prefecture="山南地区" province="西藏自治区" -542226 county="曲松县" prefecture="山南地区" province="西藏自治区" -542227 county="措美县" prefecture="山南地区" province="西藏自治区" -542228 county="洛扎县" prefecture="山南地区" province="西藏自治区" -542229 county="加查县" prefecture="山南地区" province="西藏自治区" -542231 county="隆子县" prefecture="山南地区" province="西藏自治区" -542232 county="错那县" prefecture="山南地区" province="西藏自治区" -542233 county="浪卡子县" prefecture="山南地区" province="西藏自治区" -542301 county="日喀则市" prefecture="日喀则地区" province="西藏自治区" -542322 county="南木林县" prefecture="日喀则地区" province="西藏自治区" -542323 county="江孜县" prefecture="日喀则地区" province="西藏自治区" -542324 county="定日县" prefecture="日喀则地区" province="西藏自治区" -542325 county="萨迦县" prefecture="日喀则地区" province="西藏自治区" -542326 county="拉孜县" prefecture="日喀则地区" province="西藏自治区" -542327 county="昂仁县" prefecture="日喀则地区" province="西藏自治区" -542328 county="谢通门县" prefecture="日喀则地区" province="西藏自治区" -542329 county="白朗县" prefecture="日喀则地区" province="西藏自治区" -542330 county="仁布县" prefecture="日喀则地区" province="西藏自治区" -542331 county="康马县" prefecture="日喀则地区" province="西藏自治区" -542332 county="定结县" prefecture="日喀则地区" province="西藏自治区" -542333 county="仲巴县" prefecture="日喀则地区" province="西藏自治区" -542334 county="亚东县" prefecture="日喀则地区" province="西藏自治区" -542335 county="吉隆县" prefecture="日喀则地区" province="西藏自治区" -542336 county="聂拉木县" prefecture="日喀则地区" province="西藏自治区" -542337 county="萨嘎县" prefecture="日喀则地区" province="西藏自治区" -542338 county="岗巴县" prefecture="日喀则地区" province="西藏自治区" -542421 county="那曲县" prefecture="那曲地区" province="西藏自治区" -542422 county="嘉黎县" prefecture="那曲地区" province="西藏自治区" -542423 county="比如县" prefecture="那曲地区" province="西藏自治区" -542424 county="聂荣县" prefecture="那曲地区" province="西藏自治区" -542425 county="安多县" prefecture="那曲地区" province="西藏自治区" -542426 county="申扎县" prefecture="那曲地区" province="西藏自治区" -542427 county="索县" prefecture="那曲地区" province="西藏自治区" -542428 county="班戈县" prefecture="那曲地区" province="西藏自治区" -542429 county="巴青县" prefecture="那曲地区" province="西藏自治区" -542430 county="尼玛县" prefecture="那曲地区" province="西藏自治区" -542431 county="双湖县" prefecture="那曲地区" province="西藏自治区" -542521 county="普兰县" prefecture="阿里地区" province="西藏自治区" -542522 county="札达县" prefecture="阿里地区" province="西藏自治区" -542523 county="噶尔县" prefecture="阿里地区" province="西藏自治区" -542524 county="日土县" prefecture="阿里地区" province="西藏自治区" -542525 county="革吉县" prefecture="阿里地区" province="西藏自治区" -542526 county="改则县" prefecture="阿里地区" province="西藏自治区" -542527 county="措勤县" prefecture="阿里地区" province="西藏自治区" -542621 county="林芝县" prefecture="林芝地区" province="西藏自治区" -542622 county="工布江达县" prefecture="林芝地区" province="西藏自治区" -542623 county="米林县" prefecture="林芝地区" province="西藏自治区" -542624 county="墨脱县" prefecture="林芝地区" province="西藏自治区" -542625 county="波密县" prefecture="林芝地区" province="西藏自治区" -542626 county="察隅县" prefecture="林芝地区" province="西藏自治区" -542627 county="朗县" prefecture="林芝地区" province="西藏自治区" -610101 county="市辖区" prefecture="西安市" province="陕西省" -610102 county="新城区" prefecture="西安市" province="陕西省" -610103 county="碑林区" prefecture="西安市" province="陕西省" -610104 county="莲湖区" prefecture="西安市" province="陕西省" -610111 county="灞桥区" prefecture="西安市" province="陕西省" -610112 county="未央区" prefecture="西安市" province="陕西省" -610113 county="雁塔区" prefecture="西安市" province="陕西省" -610114 county="阎良区" prefecture="西安市" province="陕西省" -610115 county="临潼区" prefecture="西安市" province="陕西省" -610116 county="长安区" prefecture="西安市" province="陕西省" -610122 county="蓝田县" prefecture="西安市" province="陕西省" -610124 county="周至县" prefecture="西安市" province="陕西省" -610125 county="户县" prefecture="西安市" province="陕西省" -610126 county="高陵县" prefecture="西安市" province="陕西省" -610201 county="市辖区" prefecture="铜川市" province="陕西省" -610202 county="王益区" prefecture="铜川市" province="陕西省" -610203 county="印台区" prefecture="铜川市" province="陕西省" -610204 county="耀州区" prefecture="铜川市" province="陕西省" -610222 county="宜君县" prefecture="铜川市" province="陕西省" -610301 county="市辖区" prefecture="宝鸡市" province="陕西省" -610302 county="渭滨区" prefecture="宝鸡市" province="陕西省" -610303 county="金台区" prefecture="宝鸡市" province="陕西省" -610304 county="陈仓区" prefecture="宝鸡市" province="陕西省" -610321 county="宝鸡县" prefecture="宝鸡市" province="陕西省" -610322 county="凤翔县" prefecture="宝鸡市" province="陕西省" -610323 county="岐山县" prefecture="宝鸡市" province="陕西省" -610324 county="扶风县" prefecture="宝鸡市" province="陕西省" -610326 county="眉县" prefecture="宝鸡市" province="陕西省" -610327 county="陇县" prefecture="宝鸡市" province="陕西省" -610328 county="千阳县" prefecture="宝鸡市" province="陕西省" -610329 county="麟游县" prefecture="宝鸡市" province="陕西省" -610330 county="凤县" prefecture="宝鸡市" province="陕西省" -610331 county="太白县" prefecture="宝鸡市" province="陕西省" -610401 county="市辖区" prefecture="咸阳市" province="陕西省" -610402 county="秦都区" prefecture="咸阳市" province="陕西省" -610403 county="杨陵区" prefecture="咸阳市" province="陕西省" -610404 county="渭城区" prefecture="咸阳市" province="陕西省" -610422 county="三原县" prefecture="咸阳市" province="陕西省" -610423 county="泾阳县" prefecture="咸阳市" province="陕西省" -610424 county="乾县" prefecture="咸阳市" province="陕西省" -610425 county="礼泉县" prefecture="咸阳市" province="陕西省" -610426 county="永寿县" prefecture="咸阳市" province="陕西省" -610427 county="彬县" prefecture="咸阳市" province="陕西省" -610428 county="长武县" prefecture="咸阳市" province="陕西省" -610429 county="旬邑县" prefecture="咸阳市" province="陕西省" -610430 county="淳化县" prefecture="咸阳市" province="陕西省" -610431 county="武功县" prefecture="咸阳市" province="陕西省" -610481 county="兴平市" prefecture="咸阳市" province="陕西省" -610501 county="市辖区" prefecture="渭南市" province="陕西省" -610502 county="临渭区" prefecture="渭南市" province="陕西省" -610521 county="华县" prefecture="渭南市" province="陕西省" -610522 county="潼关县" prefecture="渭南市" province="陕西省" -610523 county="大荔县" prefecture="渭南市" province="陕西省" -610524 county="合阳县" prefecture="渭南市" province="陕西省" -610525 county="澄城县" prefecture="渭南市" province="陕西省" -610526 county="蒲城县" prefecture="渭南市" province="陕西省" -610527 county="白水县" prefecture="渭南市" province="陕西省" -610528 county="富平县" prefecture="渭南市" province="陕西省" -610581 county="韩城市" prefecture="渭南市" province="陕西省" -610582 county="华阴市" prefecture="渭南市" province="陕西省" -610601 county="市辖区" prefecture="延安市" province="陕西省" -610602 county="宝塔区" prefecture="延安市" province="陕西省" -610621 county="延长县" prefecture="延安市" province="陕西省" -610622 county="延川县" prefecture="延安市" province="陕西省" -610623 county="子长县" prefecture="延安市" province="陕西省" -610624 county="安塞县" prefecture="延安市" province="陕西省" -610625 county="志丹县" prefecture="延安市" province="陕西省" -610626 county="吴起县" prefecture="延安市" province="陕西省" -610627 county="甘泉县" prefecture="延安市" province="陕西省" -610628 county="富县" prefecture="延安市" province="陕西省" -610629 county="洛川县" prefecture="延安市" province="陕西省" -610630 county="宜川县" prefecture="延安市" province="陕西省" -610631 county="黄龙县" prefecture="延安市" province="陕西省" -610632 county="黄陵县" prefecture="延安市" province="陕西省" -610701 county="市辖区" prefecture="汉中市" province="陕西省" -610702 county="汉台区" prefecture="汉中市" province="陕西省" -610721 county="南郑县" prefecture="汉中市" province="陕西省" -610722 county="城固县" prefecture="汉中市" province="陕西省" -610723 county="洋县" prefecture="汉中市" province="陕西省" -610724 county="西乡县" prefecture="汉中市" province="陕西省" -610725 county="勉县" prefecture="汉中市" province="陕西省" -610726 county="宁强县" prefecture="汉中市" province="陕西省" -610727 county="略阳县" prefecture="汉中市" province="陕西省" -610728 county="镇巴县" prefecture="汉中市" province="陕西省" -610729 county="留坝县" prefecture="汉中市" province="陕西省" -610730 county="佛坪县" prefecture="汉中市" province="陕西省" -610801 county="市辖区" prefecture="榆林市" province="陕西省" -610802 county="榆阳区" prefecture="榆林市" province="陕西省" -610821 county="神木县" prefecture="榆林市" province="陕西省" -610822 county="府谷县" prefecture="榆林市" province="陕西省" -610823 county="横山县" prefecture="榆林市" province="陕西省" -610824 county="靖边县" prefecture="榆林市" province="陕西省" -610825 county="定边县" prefecture="榆林市" province="陕西省" -610826 county="绥德县" prefecture="榆林市" province="陕西省" -610827 county="米脂县" prefecture="榆林市" province="陕西省" -610828 county="佳县" prefecture="榆林市" province="陕西省" -610829 county="吴堡县" prefecture="榆林市" province="陕西省" -610830 county="清涧县" prefecture="榆林市" province="陕西省" -610831 county="子洲县" prefecture="榆林市" province="陕西省" -610901 county="市辖区" prefecture="安康市" province="陕西省" -610902 county="汉滨区" prefecture="安康市" province="陕西省" -610921 county="汉阴县" prefecture="安康市" province="陕西省" -610922 county="石泉县" prefecture="安康市" province="陕西省" -610923 county="宁陕县" prefecture="安康市" province="陕西省" -610924 county="紫阳县" prefecture="安康市" province="陕西省" -610925 county="岚皋县" prefecture="安康市" province="陕西省" -610926 county="平利县" prefecture="安康市" province="陕西省" -610927 county="镇坪县" prefecture="安康市" province="陕西省" -610928 county="旬阳县" prefecture="安康市" province="陕西省" -610929 county="白河县" prefecture="安康市" province="陕西省" -611001 county="市辖区" prefecture="商洛市" province="陕西省" -611002 county="商州区" prefecture="商洛市" province="陕西省" -611021 county="洛南县" prefecture="商洛市" province="陕西省" -611022 county="丹凤县" prefecture="商洛市" province="陕西省" -611023 county="商南县" prefecture="商洛市" province="陕西省" -611024 county="山阳县" prefecture="商洛市" province="陕西省" -611025 county="镇安县" prefecture="商洛市" province="陕西省" -611026 county="柞水县" prefecture="商洛市" province="陕西省" -620101 county="市辖区" prefecture="兰州市" province="甘肃省" -620102 county="城关区" prefecture="兰州市" province="甘肃省" -620103 county="七里河区" prefecture="兰州市" province="甘肃省" -620104 county="西固区" prefecture="兰州市" province="甘肃省" -620105 county="安宁区" prefecture="兰州市" province="甘肃省" -620111 county="红古区" prefecture="兰州市" province="甘肃省" -620121 county="永登县" prefecture="兰州市" province="甘肃省" -620122 county="皋兰县" prefecture="兰州市" province="甘肃省" -620123 county="榆中县" prefecture="兰州市" province="甘肃省" -620201 county="市辖区" prefecture="嘉峪关市" province="甘肃省" -620301 county="市辖区" prefecture="金昌市" province="甘肃省" -620302 county="金川区" prefecture="金昌市" province="甘肃省" -620321 county="永昌县" prefecture="金昌市" province="甘肃省" -620401 county="市辖区" prefecture="白银市" province="甘肃省" -620402 county="白银区" prefecture="白银市" province="甘肃省" -620403 county="平川区" prefecture="白银市" province="甘肃省" -620421 county="靖远县" prefecture="白银市" province="甘肃省" -620422 county="会宁县" prefecture="白银市" province="甘肃省" -620423 county="景泰县" prefecture="白银市" province="甘肃省" -620501 county="市辖区" prefecture="天水市" province="甘肃省" -620502 county="秦州区" prefecture="天水市" province="甘肃省" -620503 county="麦积区" prefecture="天水市" province="甘肃省" -620521 county="清水县" prefecture="天水市" province="甘肃省" -620522 county="秦安县" prefecture="天水市" province="甘肃省" -620523 county="甘谷县" prefecture="天水市" province="甘肃省" -620524 county="武山县" prefecture="天水市" province="甘肃省" -620525 county="张家川回族自治县" prefecture="天水市" province="甘肃省" -620601 county="市辖区" prefecture="武威市" province="甘肃省" -620602 county="凉州区" prefecture="武威市" province="甘肃省" -620621 county="民勤县" prefecture="武威市" province="甘肃省" -620622 county="古浪县" prefecture="武威市" province="甘肃省" -620623 county="天祝藏族自治县" prefecture="武威市" province="甘肃省" -620701 county="市辖区" prefecture="张掖市" province="甘肃省" -620702 county="甘州区" prefecture="张掖市" province="甘肃省" -620721 county="肃南裕固族自治县" prefecture="张掖市" province="甘肃省" -620722 county="民乐县" prefecture="张掖市" province="甘肃省" -620723 county="临泽县" prefecture="张掖市" province="甘肃省" -620724 county="高台县" prefecture="张掖市" province="甘肃省" -620725 county="山丹县" prefecture="张掖市" province="甘肃省" -620801 county="市辖区" prefecture="平凉市" province="甘肃省" -620802 county="崆峒区" prefecture="平凉市" province="甘肃省" -620821 county="泾川县" prefecture="平凉市" province="甘肃省" -620822 county="灵台县" prefecture="平凉市" province="甘肃省" -620823 county="崇信县" prefecture="平凉市" province="甘肃省" -620824 county="华亭县" prefecture="平凉市" province="甘肃省" -620825 county="庄浪县" prefecture="平凉市" province="甘肃省" -620826 county="静宁县" prefecture="平凉市" province="甘肃省" -620901 county="市辖区" prefecture="酒泉市" province="甘肃省" -620902 county="肃州区" prefecture="酒泉市" province="甘肃省" -620921 county="金塔县" prefecture="酒泉市" province="甘肃省" -620922 county="瓜州县" prefecture="酒泉市" province="甘肃省" -620923 county="肃北蒙古族自治县" prefecture="酒泉市" province="甘肃省" -620924 county="阿克塞哈萨克族自治县" prefecture="酒泉市" province="甘肃省" -620981 county="玉门市" prefecture="酒泉市" province="甘肃省" -620982 county="敦煌市" prefecture="酒泉市" province="甘肃省" -621001 county="市辖区" prefecture="庆阳市" province="甘肃省" -621002 county="西峰区" prefecture="庆阳市" province="甘肃省" -621021 county="庆城县" prefecture="庆阳市" province="甘肃省" -621022 county="环县" prefecture="庆阳市" province="甘肃省" -621023 county="华池县" prefecture="庆阳市" province="甘肃省" -621024 county="合水县" prefecture="庆阳市" province="甘肃省" -621025 county="正宁县" prefecture="庆阳市" province="甘肃省" -621026 county="宁县" prefecture="庆阳市" province="甘肃省" -621027 county="镇原县" prefecture="庆阳市" province="甘肃省" -621101 county="市辖区" prefecture="定西市" province="甘肃省" -621102 county="安定区" prefecture="定西市" province="甘肃省" -621121 county="通渭县" prefecture="定西市" province="甘肃省" -621122 county="陇西县" prefecture="定西市" province="甘肃省" -621123 county="渭源县" prefecture="定西市" province="甘肃省" -621124 county="临洮县" prefecture="定西市" province="甘肃省" -621125 county="漳县" prefecture="定西市" province="甘肃省" -621126 county="岷县" prefecture="定西市" province="甘肃省" -621201 county="市辖区" prefecture="陇南市" province="甘肃省" -621202 county="武都区" prefecture="陇南市" province="甘肃省" -621221 county="成县" prefecture="陇南市" province="甘肃省" -621222 county="文县" prefecture="陇南市" province="甘肃省" -621223 county="宕昌县" prefecture="陇南市" province="甘肃省" -621224 county="康县" prefecture="陇南市" province="甘肃省" -621225 county="西和县" prefecture="陇南市" province="甘肃省" -621226 county="礼县" prefecture="陇南市" province="甘肃省" -621227 county="徽县" prefecture="陇南市" province="甘肃省" -621228 county="两当县" prefecture="陇南市" province="甘肃省" -622421 county="定西县" prefecture="定西地区" province="甘肃省" -622424 county="通渭县" prefecture="定西地区" province="甘肃省" -622425 county="陇西县" prefecture="定西地区" province="甘肃省" -622426 county="渭源县" prefecture="定西地区" province="甘肃省" -622427 county="临洮县" prefecture="定西地区" province="甘肃省" -622428 county="漳县" prefecture="定西地区" province="甘肃省" -622429 county="岷县" prefecture="定西地区" province="甘肃省" -622621 county="武都县" prefecture="陇南地区" province="甘肃省" -622623 county="宕昌县" prefecture="陇南地区" province="甘肃省" -622624 county="成县" prefecture="陇南地区" province="甘肃省" -622625 county="康县" prefecture="陇南地区" province="甘肃省" -622626 county="文县" prefecture="陇南地区" province="甘肃省" -622627 county="西和县" prefecture="陇南地区" province="甘肃省" -622628 county="礼县" prefecture="陇南地区" province="甘肃省" -622629 county="两当县" prefecture="陇南地区" province="甘肃省" -622630 county="徽县" prefecture="陇南地区" province="甘肃省" -622901 county="临夏市" prefecture="临夏回族自治州" province="甘肃省" -622921 county="临夏县" prefecture="临夏回族自治州" province="甘肃省" -622922 county="康乐县" prefecture="临夏回族自治州" province="甘肃省" -622923 county="永靖县" prefecture="临夏回族自治州" province="甘肃省" -622924 county="广河县" prefecture="临夏回族自治州" province="甘肃省" -622925 county="和政县" prefecture="临夏回族自治州" province="甘肃省" -622926 county="东乡族自治县" prefecture="临夏回族自治州" province="甘肃省" -622927 county="积石山保安族东乡族撒拉族自治县" prefecture="临夏回族自治州" province="甘肃省" -623001 county="合作市" prefecture="甘南藏族自治州" province="甘肃省" -623021 county="临潭县" prefecture="甘南藏族自治州" province="甘肃省" -623022 county="卓尼县" prefecture="甘南藏族自治州" province="甘肃省" -623023 county="舟曲县" prefecture="甘南藏族自治州" province="甘肃省" -623024 county="迭部县" prefecture="甘南藏族自治州" province="甘肃省" -623025 county="玛曲县" prefecture="甘南藏族自治州" province="甘肃省" -623026 county="碌曲县" prefecture="甘南藏族自治州" province="甘肃省" -623027 county="夏河县" prefecture="甘南藏族自治州" province="甘肃省" -630101 county="市辖区" prefecture="西宁市" province="青海省" -630102 county="城东区" prefecture="西宁市" province="青海省" -630103 county="城中区" prefecture="西宁市" province="青海省" -630104 county="城西区" prefecture="西宁市" province="青海省" -630105 county="城北区" prefecture="西宁市" province="青海省" -630121 county="大通回族土族自治县" prefecture="西宁市" province="青海省" -630122 county="湟中县" prefecture="西宁市" province="青海省" -630123 county="湟源县" prefecture="西宁市" province="青海省" -630202 county="乐都区" prefecture="海东市" province="青海省" -630221 county="平安县" prefecture="海东市" province="青海省" -630222 county="民和回族土族自治县" prefecture="海东市" province="青海省" -630223 county="互助土族自治县" prefecture="海东市" province="青海省" -630224 county="化隆回族自治县" prefecture="海东市" province="青海省" -630225 county="循化撒拉族自治县" prefecture="海东市" province="青海省" -632121 county="平安县" prefecture="海东地区" province="青海省" -632122 county="民和回族土族自治县" prefecture="海东地区" province="青海省" -632123 county="乐都县" prefecture="海东地区" province="青海省" -632126 county="互助土族自治县" prefecture="海东地区" province="青海省" -632127 county="化隆回族自治县" prefecture="海东地区" province="青海省" -632128 county="循化撒拉族自治县" prefecture="海东地区" province="青海省" -632221 county="门源回族自治县" prefecture="海北藏族自治州" province="青海省" -632222 county="祁连县" prefecture="海北藏族自治州" province="青海省" -632223 county="海晏县" prefecture="海北藏族自治州" province="青海省" -632224 county="刚察县" prefecture="海北藏族自治州" province="青海省" -632321 county="同仁县" prefecture="黄南藏族自治州" province="青海省" -632322 county="尖扎县" prefecture="黄南藏族自治州" province="青海省" -632323 county="泽库县" prefecture="黄南藏族自治州" province="青海省" -632324 county="河南蒙古族自治县" prefecture="黄南藏族自治州" province="青海省" -632521 county="共和县" prefecture="海南藏族自治州" province="青海省" -632522 county="同德县" prefecture="海南藏族自治州" province="青海省" -632523 county="贵德县" prefecture="海南藏族自治州" province="青海省" -632524 county="兴海县" prefecture="海南藏族自治州" province="青海省" -632525 county="贵南县" prefecture="海南藏族自治州" province="青海省" -632621 county="玛沁县" prefecture="果洛藏族自治州" province="青海省" -632622 county="班玛县" prefecture="果洛藏族自治州" province="青海省" -632623 county="甘德县" prefecture="果洛藏族自治州" province="青海省" -632624 county="达日县" prefecture="果洛藏族自治州" province="青海省" -632625 county="久治县" prefecture="果洛藏族自治州" province="青海省" -632626 county="玛多县" prefecture="果洛藏族自治州" province="青海省" -632701 county="玉树市" prefecture="玉树藏族自治州" province="青海省" -632721 county="玉树县" prefecture="玉树藏族自治州" province="青海省" -632722 county="杂多县" prefecture="玉树藏族自治州" province="青海省" -632723 county="称多县" prefecture="玉树藏族自治州" province="青海省" -632724 county="治多县" prefecture="玉树藏族自治州" province="青海省" -632725 county="囊谦县" prefecture="玉树藏族自治州" province="青海省" -632726 county="曲麻莱县" prefecture="玉树藏族自治州" province="青海省" -632801 county="格尔木市" prefecture="海西蒙古族藏族自治州" province="青海省" -632802 county="德令哈市" prefecture="海西蒙古族藏族自治州" province="青海省" -632821 county="乌兰县" prefecture="海西蒙古族藏族自治州" province="青海省" -632822 county="都兰县" prefecture="海西蒙古族藏族自治州" province="青海省" -632823 county="天峻县" prefecture="海西蒙古族藏族自治州" province="青海省" -640101 county="市辖区" prefecture="银川市" province="宁夏回族自治区" -640104 county="兴庆区" prefecture="银川市" province="宁夏回族自治区" -640105 county="西夏区" prefecture="银川市" province="宁夏回族自治区" -640106 county="金凤区" prefecture="银川市" province="宁夏回族自治区" -640121 county="永宁县" prefecture="银川市" province="宁夏回族自治区" -640122 county="贺兰县" prefecture="银川市" province="宁夏回族自治区" -640181 county="灵武市" prefecture="银川市" province="宁夏回族自治区" -640201 county="市辖区" prefecture="石嘴山市" province="宁夏回族自治区" -640202 county="大武口区" prefecture="石嘴山市" province="宁夏回族自治区" -640203 county="石嘴山区" prefecture="石嘴山市" province="宁夏回族自治区" -640205 county="惠农区" prefecture="石嘴山市" province="宁夏回族自治区" -640221 county="平罗县" prefecture="石嘴山市" province="宁夏回族自治区" -640222 county="陶乐县" prefecture="石嘴山市" province="宁夏回族自治区" -640223 county="惠农县" prefecture="石嘴山市" province="宁夏回族自治区" -640301 county="市辖区" prefecture="吴忠市" province="宁夏回族自治区" -640302 county="利通区" prefecture="吴忠市" province="宁夏回族自治区" -640303 county="红寺堡区" prefecture="吴忠市" province="宁夏回族自治区" -640321 county="中卫县" prefecture="吴忠市" province="宁夏回族自治区" -640322 county="中宁县" prefecture="吴忠市" province="宁夏回族自治区" -640323 county="盐池县" prefecture="吴忠市" province="宁夏回族自治区" -640324 county="同心县" prefecture="吴忠市" province="宁夏回族自治区" -640381 county="青铜峡市" prefecture="吴忠市" province="宁夏回族自治区" -640401 county="市辖区" prefecture="固原市" province="宁夏回族自治区" -640402 county="原州区" prefecture="固原市" province="宁夏回族自治区" -640421 county="海原县" prefecture="固原市" province="宁夏回族自治区" -640422 county="西吉县" prefecture="固原市" province="宁夏回族自治区" -640423 county="隆德县" prefecture="固原市" province="宁夏回族自治区" -640424 county="泾源县" prefecture="固原市" province="宁夏回族自治区" -640425 county="彭阳县" prefecture="固原市" province="宁夏回族自治区" -640501 county="市辖区" prefecture="中卫市" province="宁夏回族自治区" -640502 county="沙坡头区" prefecture="中卫市" province="宁夏回族自治区" -640521 county="中宁县" prefecture="中卫市" province="宁夏回族自治区" -640522 county="海原县" prefecture="中卫市" province="宁夏回族自治区" -650101 county="市辖区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650102 county="天山区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650103 county="沙依巴克区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650104 county="新市区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650105 county="水磨沟区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650106 county="头屯河区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650107 county="达坂城区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650108 county="东山区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650109 county="米东区" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650121 county="乌鲁木齐县" prefecture="乌鲁木齐市" province="新疆维吾尔自治区" -650201 county="市辖区" prefecture="克拉玛依市" province="新疆维吾尔自治区" -650202 county="独山子区" prefecture="克拉玛依市" province="新疆维吾尔自治区" -650203 county="克拉玛依区" prefecture="克拉玛依市" province="新疆维吾尔自治区" -650204 county="白碱滩区" prefecture="克拉玛依市" province="新疆维吾尔自治区" -650205 county="乌尔禾区" prefecture="克拉玛依市" province="新疆维吾尔自治区" -652101 county="吐鲁番市" prefecture="吐鲁番地区" province="新疆维吾尔自治区" -652122 county="鄯善县" prefecture="吐鲁番地区" province="新疆维吾尔自治区" -652123 county="托克逊县" prefecture="吐鲁番地区" province="新疆维吾尔自治区" -652201 county="哈密市" prefecture="哈密地区" province="新疆维吾尔自治区" -652222 county="巴里坤哈萨克自治县" prefecture="哈密地区" province="新疆维吾尔自治区" -652223 county="伊吾县" prefecture="哈密地区" province="新疆维吾尔自治区" -652301 county="昌吉市" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652302 county="阜康市" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652303 county="米泉市" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652323 county="呼图壁县" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652324 county="玛纳斯县" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652325 county="奇台县" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652327 county="吉木萨尔县" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652328 county="木垒哈萨克自治县" prefecture="昌吉回族自治州" province="新疆维吾尔自治区" -652701 county="博乐市" prefecture="博尔塔拉蒙古自治州" province="新疆维吾尔自治区" -652702 county="阿拉山口市" prefecture="博尔塔拉蒙古自治州" province="新疆维吾尔自治区" -652722 county="精河县" prefecture="博尔塔拉蒙古自治州" province="新疆维吾尔自治区" -652723 county="温泉县" prefecture="博尔塔拉蒙古自治州" province="新疆维吾尔自治区" -652801 county="库尔勒市" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652822 county="轮台县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652823 county="尉犁县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652824 county="若羌县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652825 county="且末县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652826 county="焉耆回族自治县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652827 county="和静县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652828 county="和硕县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652829 county="博湖县" prefecture="巴音郭楞蒙古自治州" province="新疆维吾尔自治区" -652901 county="阿克苏市" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652922 county="温宿县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652923 county="库车县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652924 county="沙雅县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652925 county="新和县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652926 county="拜城县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652927 county="乌什县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652928 county="阿瓦提县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -652929 county="柯坪县" prefecture="阿克苏地区" province="新疆维吾尔自治区" -653001 county="阿图什市" prefecture="克孜勒苏柯尔克孜自治州" province="新疆维吾尔自治区" -653022 county="阿克陶县" prefecture="克孜勒苏柯尔克孜自治州" province="新疆维吾尔自治区" -653023 county="阿合奇县" prefecture="克孜勒苏柯尔克孜自治州" province="新疆维吾尔自治区" -653024 county="乌恰县" prefecture="克孜勒苏柯尔克孜自治州" province="新疆维吾尔自治区" -653101 county="喀什市" prefecture="喀什地区" province="新疆维吾尔自治区" -653121 county="疏附县" prefecture="喀什地区" province="新疆维吾尔自治区" -653122 county="疏勒县" prefecture="喀什地区" province="新疆维吾尔自治区" -653123 county="英吉沙县" prefecture="喀什地区" province="新疆维吾尔自治区" -653124 county="泽普县" prefecture="喀什地区" province="新疆维吾尔自治区" -653125 county="莎车县" prefecture="喀什地区" province="新疆维吾尔自治区" -653126 county="叶城县" prefecture="喀什地区" province="新疆维吾尔自治区" -653127 county="麦盖提县" prefecture="喀什地区" province="新疆维吾尔自治区" -653128 county="岳普湖县" prefecture="喀什地区" province="新疆维吾尔自治区" -653129 county="伽师县" prefecture="喀什地区" province="新疆维吾尔自治区" -653130 county="巴楚县" prefecture="喀什地区" province="新疆维吾尔自治区" -653131 county="塔什库尔干塔吉克自治县" prefecture="喀什地区" province="新疆维吾尔自治区" -653201 county="和田市" prefecture="和田地区" province="新疆维吾尔自治区" -653221 county="和田县" prefecture="和田地区" province="新疆维吾尔自治区" -653222 county="墨玉县" prefecture="和田地区" province="新疆维吾尔自治区" -653223 county="皮山县" prefecture="和田地区" province="新疆维吾尔自治区" -653224 county="洛浦县" prefecture="和田地区" province="新疆维吾尔自治区" -653225 county="策勒县" prefecture="和田地区" province="新疆维吾尔自治区" -653226 county="于田县" prefecture="和田地区" province="新疆维吾尔自治区" -653227 county="民丰县" prefecture="和田地区" province="新疆维吾尔自治区" -654002 county="伊宁市" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654003 county="奎屯市" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654021 county="伊宁县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654022 county="察布查尔锡伯自治县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654023 county="霍城县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654024 county="巩留县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654025 county="新源县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654026 county="昭苏县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654027 county="特克斯县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654028 county="尼勒克县" prefecture="伊犁哈萨克自治州" province="新疆维吾尔自治区" -654201 county="塔城市" prefecture="塔城地区" province="新疆维吾尔自治区" -654202 county="乌苏市" prefecture="塔城地区" province="新疆维吾尔自治区" -654221 county="额敏县" prefecture="塔城地区" province="新疆维吾尔自治区" -654223 county="沙湾县" prefecture="塔城地区" province="新疆维吾尔自治区" -654224 county="托里县" prefecture="塔城地区" province="新疆维吾尔自治区" -654225 county="裕民县" prefecture="塔城地区" province="新疆维吾尔自治区" -654226 county="和布克赛尔蒙古自治县" prefecture="塔城地区" province="新疆维吾尔自治区" -654301 county="阿勒泰市" prefecture="阿勒泰地区" province="新疆维吾尔自治区" -654321 county="布尔津县" prefecture="阿勒泰地区" province="新疆维吾尔自治区" -654322 county="富蕴县" prefecture="阿勒泰地区" province="新疆维吾尔自治区" -654323 county="福海县" prefecture="阿勒泰地区" province="新疆维吾尔自治区" -654324 county="哈巴河县" prefecture="阿勒泰地区" province="新疆维吾尔自治区" -654325 county="青河县" prefecture="阿勒泰地区" province="新疆维吾尔自治区" -654326 county="吉木乃县" prefecture="阿勒泰地区" province="新疆维吾尔自治区" -659001 county="石河子市" prefecture="自治区直辖县级行政区划" province="新疆维吾尔自治区" -659002 county="阿拉尔市" prefecture="自治区直辖县级行政区划" province="新疆维吾尔自治区" -659003 county="图木舒克市" prefecture="自治区直辖县级行政区划" province="新疆维吾尔自治区" -659004 county="五家渠市" prefecture="自治区直辖县级行政区划" province="新疆维吾尔自治区" +# Downloaded from +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(1区)&action=raw +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(2区)&action=raw +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(3区)&action=raw +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(4区)&action=raw +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(5区)&action=raw +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(6区)&action=raw +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(7区)&action=raw +# https://zh.wikipedia.org/w/index.php?title=中华人民共和国行政区划代码_(8区)&action=raw +11 province="北京市" + 0000 county="北京市" + 0100 county="市辖区" + 0101 county="东城区" + 0102 county="西城区" + 0103 county="[-2010]崇文区" + 0104 county="[-2010]宣武区" + 0105 county="朝阳区" + 0106 county="丰台区" + 0107 county="石景山区" + 0108 county="海淀区" + 0109 county="门头沟区" + 0110 county="[-1986]燕山区" + 0111 county="[1986-]房山区" + 0112 county="[1997-]通州区" + 0113 county="[1998-]顺义区" + 0114 county="[1999-]昌平区" + 0115 county="[2001-]大兴区" + 0116 county="[2001-]怀柔区" + 0117 county="[2001-]平谷区" + 0118 county="[2015-]密云区" + 0119 county="[2015-]延庆区" + 0200 county="[-2015]县" + 0201 county="[-1982]昌平县" + 0202 county="[-1982]顺义县" + 0203 county="[-1982]通县" + 0204 county="[-1982]大兴县" + 0205 county="[-1982]房山县" + 0206 county="[-1982]平谷县" + 0207 county="[-1982]怀柔县" + 0208 county="[-1982]密云县" + 0209 county="[-1982]延庆县" + 0221 county="[1982-1999]昌平县" + 0222 county="[1982-1998]顺义县" + 0223 county="[1982-1997]通县" + 0224 county="[1982-2001]大兴县" + 0225 county="[1982-1986]房山县" + 0226 county="[1982-2001]平谷县" + 0227 county="[1982-2001]怀柔县" + 0228 county="[1982-2015]密云县" + 0229 county="[1982-2015]延庆县" +12 province="天津市" + 0000 county="天津市" + 0100 county="市辖区" + 0101 county="和平区" + 0102 county="河东区" + 0103 county="河西区" + 0104 county="南开区" + 0105 county="河北区" + 0106 county="红桥区" + 0107 county="[-2009]塘沽区" + 0108 county="[-2009]汉沽区" + 0109 county="[-2009]大港区" + 0110 county="[-1991]东郊区,[1992-]东丽区" + 0111 county="[-1991]西郊区,[1992-]西青区" + 0112 county="[-1991]南郊区,[1992-]津南区" + 0113 county="[-1991]北郊区,[1992-]北辰区" + 0114 county="[2000-]武清区" + 0115 county="[2001-]宝坻区" + 0116 county="[2009-]滨海新区" + 0117 county="[2015-]宁河区" + 0118 county="[2015-]静海区" + 0119 county="[2016-]蓟州区" + 0200 county="[-2016]县" + 0201 county="[-1982]宁河县" + 0202 county="[-1982]武清县" + 0203 county="[-1982]静海县" + 0204 county="[-1982]宝坻县" + 0205 county="[-1982]蓟县" + 0221 county="[1982-2015]宁河县" + 0222 county="[1982-2000]武清县" + 0223 county="[1982-2015]静海县" + 0224 county="[1982-2001]宝坻县" + 0225 county="[1982-2016]蓟县" +13 province="河北省" + 0000 county="河北省" + 0100 county="石家庄市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]长安区" + 0103 county="[1983-2014]桥东区" + 0104 county="[1983-]桥西区" + 0105 county="[1983-]新华区" + 0106 county="[1983-2001]郊区" + 0107 county="[1983-]井陉矿区" + 0108 county="[2001-]裕华区" + 0109 county="[2014-]藁城区" + 0110 county="[2014-]鹿泉区" + 0111 county="[2014-]栾城区" + 0121 county="[1983-]井陉县" + 0122 county="[1983-1994]获鹿县" + 0123 county="[1986-]正定县" + 0124 county="[1986-2014]栾城县" + 0125 county="[1993-]行唐县" + 0126 county="[1993-]灵寿县" + 0127 county="[1993-]高邑县" + 0128 county="[1993-]深泽县" + 0129 county="[1993-]赞皇县" + 0130 county="[1993-]无极县" + 0131 county="[1993-]平山县" + 0132 county="[1993-]元氏县" + 0133 county="[1993-]赵县" + 0181 county="[1993-]辛集市" + 0182 county="[1993-2014]藁城市" + 0183 county="[1993-]晋州市" + 0184 county="[1993-]新乐市" + 0185 county="[1994-2014]鹿泉市" + 0200 county="唐山市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]路南区" + 0203 county="[1983-]路北区" + 0204 county="[1983-1994]东矿区,[1995-]古冶区" + 0205 county="[1983-]开平区" + 0206 county="[1983-2002]新区" + 0207 county="[2002-]丰南区" + 0208 county="[2002-]丰润区" + 0209 county="[2012-]曹妃甸区" + 0221 county="[1983-2002]丰润县" + 0222 county="[1983-1994]丰南县" + 0223 county="[1983-2018]滦县" + 0224 county="[1983-]滦南县" + 0225 county="[1983-]乐亭县" + 0226 county="[1983-1996]迁安县" + 0227 county="[1983-]迁西县" + 0228 county="[1983-1992]遵化县" + 0229 county="[1983-]玉田县" + 0230 county="[1983-2012]唐海县" + 0281 county="[1992-]遵化市" + 0282 county="[1994-2002]丰南市" + 0283 county="[1996-]迁安市" + 0284 county="[2018-]滦州市" + 0300 county="[1983-]秦皇岛市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]海港区" + 0303 county="[1983-]山海关区" + 0304 county="[1983-]北戴河区" + 0305 county="[1983-1984]郊区" + 0306 county="[2015-]抚宁区" + 0321 county="[1983-1985]青龙县,[1986-]青龙满族自治县" + 0322 county="[1983-]昌黎县" + 0323 county="[1983-2015]抚宁县" + 0324 county="[1983-]卢龙县" + 0400 county="[1983-]邯郸市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]邯山区" + 0403 county="[1983-]丛台区" + 0404 county="[1983-]复兴区" + 0405 county="[1983-1986]郊区" + 0406 county="[1983-]峰峰矿区" + 0407 county="[2016-]肥乡区" + 0408 county="[2016-]永年区" + 0421 county="[1983-2016]邯郸县" + 0422 county="[1986-1988]武安县" + 0423 county="[1993-]临漳县" + 0424 county="[1993-]成安县" + 0425 county="[1993-]大名县" + 0426 county="[1993-]涉县" + 0427 county="[1993-]磁县" + 0428 county="[1993-2016]肥乡县" + 0429 county="[1993-2016]永年县" + 0430 county="[1993-1995]丘县,[1996-]邱县" + 0431 county="[1993-]鸡泽县" + 0432 county="[1993-]广平县" + 0433 county="[1993-]馆陶县" + 0434 county="[1993-]魏县" + 0435 county="[1993-]曲周县" + 0481 county="[1989-]武安市" + 0500 county="[1983-]邢台市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-2019]桥东区,[2020-]襄都区" + 0503 county="[1983-2019]桥西区,[2020-]信都区" + 0504 county="[1983-1988]郊区" + 0505 county="[2020-]任泽区" + 0506 county="[2020-]南和区" + 0521 county="[1986-2020]邢台县" + 0522 county="[1993-]临城县" + 0523 county="[1993-]内丘县" + 0524 county="[1993-]柏乡县" + 0525 county="[1993-]隆尧县" + 0526 county="[1993-2020]任县" + 0527 county="[1993-2020]南和县" + 0528 county="[1993-]宁晋县" + 0529 county="[1993-]巨鹿县" + 0530 county="[1993-]新河县" + 0531 county="[1993-]广宗县" + 0532 county="[1993-]平乡县" + 0533 county="[1993-]威县" + 0534 county="[1993-]清河县" + 0535 county="[1993-]临西县" + 0581 county="[1993-]南宫市" + 0582 county="[1993-]沙河市" + 0600 county="[1983-]保定市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-2014]新市区,[2015-]竞秀区" + 0603 county="[1983-2015]北市区" + 0604 county="[1983-2015]南市区" + 0605 county="[1983-1987]郊区" + 0606 county="[2015-]莲池区" + 0607 county="[2015-]满城区" + 0608 county="[2015-]清苑区" + 0609 county="[2015-]徐水区" + 0621 county="[1983-2015]满城县" + 0622 county="[1986-2015]清苑县" + 0623 county="[1994-]涞水县" + 0624 county="[1994-]阜平县" + 0625 county="[1994-2015]徐水县" + 0626 county="[1994-]定兴县" + 0627 county="[1994-]唐县" + 0628 county="[1994-]高阳县" + 0629 county="[1994-]容城县" + 0630 county="[1994-]涞源县" + 0631 county="[1994-]望都县" + 0632 county="[1994-]安新县" + 0633 county="[1994-]易县" + 0634 county="[1994-]曲阳县" + 0635 county="[1994-]蠡县" + 0636 county="[1994-]顺平县" + 0637 county="[1994-]博野县" + 0638 county="[1994-]雄县" + 0681 county="[1994-]涿州市" + 0682 county="[1994-]定州市" + 0683 county="[1994-]安国市" + 0684 county="[1994-]高碑店市" + 0700 county="[1983-]张家口市" + 0701 county="[1983-]市辖区" + 0702 county="[1983-]桥东区" + 0703 county="[1983-]桥西区" + 0704 county="[1983-1989]茶坊区" + 0705 county="[1983-]宣化区" + 0706 county="[1983-]下花园区" + 0707 county="[1983-1989]庞家堡区" + 0708 county="[2016-]万全区" + 0709 county="[2016-]崇礼区" + 0721 county="[1983-2016]宣化县" + 0722 county="[1993-]张北县" + 0723 county="[1993-]康保县" + 0724 county="[1993-]沽源县" + 0725 county="[1993-]尚义县" + 0726 county="[1993-]蔚县" + 0727 county="[1993-]阳原县" + 0728 county="[1993-]怀安县" + 0729 county="[1993-2016]万全县" + 0730 county="[1993-]怀来县" + 0731 county="[1993-]涿鹿县" + 0732 county="[1993-]赤城县" + 0733 county="[1993-2016]崇礼县" + 0800 county="[1983-]承德市" + 0801 county="[1983-]市辖区" + 0802 county="[1983-]双桥区" + 0803 county="[1983-]双滦区" + 0804 county="[1983-]鹰手营子矿区" + 0821 county="[1983-]承德县" + 0822 county="[1993-]兴隆县" + 0823 county="[1993-2017]平泉县" + 0824 county="[1993-]滦平县" + 0825 county="[1993-]隆化县" + 0826 county="[1993-]丰宁满族自治县" + 0827 county="[1993-]宽城满族自治县" + 0828 county="[1993-]围场满族蒙古族自治县" + 0881 county="[2017-]平泉市" + 0900 county="[1983-]沧州市" + 0901 county="[1983-]市辖区" + 0902 county="[1983-]新华区" + 0903 county="[1983-]运河区" + 0904 county="[1983-1997]郊区" + 0921 county="[1983-]沧县" + 0922 county="[1986-]青县" + 0923 county="[1993-]东光县" + 0924 county="[1993-]海兴县" + 0925 county="[1993-]盐山县" + 0926 county="[1993-]肃宁县" + 0927 county="[1993-]南皮县" + 0928 county="[1993-]吴桥县" + 0929 county="[1993-]献县" + 0930 county="[1993-]孟村回族自治县" + 0981 county="[1993-]泊头市" + 0982 county="[1993-]任丘市" + 0983 county="[1993-]黄骅市" + 0984 county="[1993-]河间市" + 1000 county="[1988-]廊坊市" + 1001 county="[1988-]市辖区" + 1002 county="[1988-]安次区" + 1003 county="[2000-]广阳区" + 1021 county="[1988-1993]三河县" + 1022 county="[1988-]固安县" + 1023 county="[1988-]永清县" + 1024 county="[1988-]香河县" + 1025 county="[1988-]大城县" + 1026 county="[1988-]文安县" + 1027 county="[1988-1990]霸县" + 1028 county="[1988-]大厂回族自治县" + 1081 county="[1990-]霸州市" + 1082 county="[1993-]三河市" + 1100 county="[1996-]衡水市" + 1101 county="[1996-]市辖区" + 1102 county="[1996-]桃城区" + 1103 county="[2016-]冀州区" + 1121 county="[1996-]枣强县" + 1122 county="[1996-]武邑县" + 1123 county="[1996-]武强县" + 1124 county="[1996-]饶阳县" + 1125 county="[1996-]安平县" + 1126 county="[1996-]故城县" + 1127 county="[1996-]景县" + 1128 county="[1996-]阜城县" + 1181 county="[1996-2016]冀州市" + 1182 county="[1996-]深州市" + 2100 county="[-1993]邯郸地区" + 2101 county="[-1983]邯郸市" + 2121 county="[-1993]大名县" + 2122 county="[-1993]魏县" + 2123 county="[-1993]曲周县" + 2124 county="[-1993]丘县" + 2125 county="[-1993]鸡泽县" + 2126 county="[-1993]肥乡县" + 2127 county="[-1993]广平县" + 2128 county="[-1993]成安县" + 2129 county="[-1993]临漳县" + 2130 county="[-1993]磁县" + 2131 county="[-1986]武安县" + 2132 county="[-1993]涉县" + 2133 county="[-1993]永年县" + 2134 county="[-1983]邯郸县" + 2135 county="[-1993]馆陶县" + 2200 county="[-1993]邢台地区" + 2201 county="[1986-1993]南宫市" + 2202 county="[1987-1993]沙河市" + 2221 county="[-1986]邢台县" + 2222 county="[-1987]沙河县" + 2223 county="[-1993]临城县" + 2224 county="[-1993]内丘县" + 2225 county="[-1993]柏乡县" + 2226 county="[-1993]隆尧县" + 2227 county="[-1993]任县" + 2228 county="[-1993]南和县" + 2229 county="[-1993]宁晋县" + 2230 county="[-1986]南宫县" + 2231 county="[-1993]巨鹿县" + 2232 county="[-1993]新河县" + 2233 county="[-1993]广宗县" + 2234 county="[-1993]平乡县" + 2235 county="[-1993]威县" + 2236 county="[-1993]清河县" + 2237 county="[-1993]临西县" + 2300 county="[-1993]石家庄地区" + 2301 county="[1986-1993]辛集市" + 2302 county="[1989-1993]藁城市" + 2303 county="[1991-1993]晋州市" + 2304 county="[1992-1993]新乐市" + 2321 county="[-1986]束鹿县" + 2322 county="[-1991]晋县" + 2323 county="[-1993]深泽县" + 2324 county="[-1993]无极县" + 2325 county="[-1989]藁城县" + 2326 county="[-1993]赵县" + 2327 county="[-1986]栾城县" + 2328 county="[-1986]正定县" + 2329 county="[-1992]新乐县" + 2330 county="[-1993]高邑县" + 2331 county="[-1993]元氏县" + 2332 county="[-1993]赞皇县" + 2333 county="[-1983]井陉县" + 2334 county="[-1983]获鹿县" + 2335 county="[-1993]平山县" + 2336 county="[-1993]灵寿县" + 2337 county="[-1993]行唐县" + 2400 county="[-1994]保定地区" + 2401 county="[1986-1994]定州市" + 2402 county="[1986-1994]涿州市" + 2403 county="[1991-1994]安国市" + 2404 county="[1993-1994]高碑店市" + 2421 county="[-1994]易县" + 2422 county="[-1983]满城县" + 2423 county="[-1994]徐水县" + 2424 county="[-1994]涞源县" + 2425 county="[-1994]定兴县" + 2426 county="[-1992]完县,[1993-1994]顺平县" + 2427 county="[-1994]唐县" + 2428 county="[-1994]望都县" + 2429 county="[-1994]涞水县" + 2430 county="[-1986]涿县" + 2431 county="[-1986]清苑县" + 2432 county="[-1994]高阳县" + 2433 county="[-1994]安新县" + 2434 county="[-1994]雄县" + 2435 county="[-1994]容城县" + 2436 county="[-1993]新城县" + 2437 county="[-1994]曲阳县" + 2438 county="[-1994]阜平县" + 2439 county="[-1986]定县" + 2440 county="[-1991]安国县" + 2441 county="[-1994]博野县" + 2442 county="[-1994]蠡县" + 2500 county="[-1993]张家口地区" + 2501 county="[-1983]张家口市" + 2521 county="[-1993]张北县" + 2522 county="[-1993]康保县" + 2523 county="[-1993]沽源县" + 2524 county="[-1993]尚义县" + 2525 county="[-1993]蔚县" + 2526 county="[-1993]阳原县" + 2527 county="[-1993]怀安县" + 2528 county="[-1993]万全县" + 2529 county="[-1993]怀来县" + 2530 county="[-1993]涿鹿县" + 2531 county="[-1983]宣化县" + 2532 county="[-1993]赤城县" + 2533 county="[-1993]崇礼县" + 2600 county="[-1993]承德地区" + 2601 county="[-1983]承德市" + 2621 county="[-1983]青龙县" + 2622 county="[-1988]宽城县,[1989-1993]宽城满族自治县" + 2623 county="[-1993]兴隆县" + 2624 county="[-1993]平泉县" + 2625 county="[-1983]承德县" + 2626 county="[-1993]滦平县" + 2627 county="[-1985]丰宁县,[1986-1993]丰宁满族自治县" + 2628 county="[-1993]隆化县" + 2629 county="[-1988]围场县,[1989-1993]围场满族蒙古族自治县" + 2700 county="[-1983]唐山地区" + 2701 county="[-1983]秦皇岛市" + 2721 county="[-1983]丰润县" + 2722 county="[-1983]丰南县" + 2723 county="[-1983]滦县" + 2724 county="[-1983]滦南县" + 2725 county="[-1983]乐亭县" + 2726 county="[-1983]昌黎县" + 2727 county="[-1983]抚宁县" + 2728 county="[-1983]卢龙县" + 2729 county="[-1983]迁安县" + 2730 county="[-1983]迁西县" + 2731 county="[-1983]遵化县" + 2732 county="[-1983]玉田县" + 2800 county="[-1988]廊坊地区" + 2801 county="[1981-1988]廊坊市" + 2821 county="[-1988]三河县" + 2822 county="[-1988]大厂回族自治县" + 2823 county="[-1988]香河县" + 2824 county="[-1983]安次县" + 2825 county="[-1988]永清县" + 2826 county="[-1988]固安县" + 2827 county="[-1988]霸县" + 2828 county="[-1988]文安县" + 2829 county="[-1988]大城县" + 2900 county="[-1993]沧州地区" + 2901 county="[-1983]沧州市" + 2902 county="[1982-1993]泊头市" + 2903 county="[1986-1993]任丘市" + 2904 county="[1989-1993]黄骅市" + 2905 county="[1990-1993]河间市" + 2921 county="[-1983]沧县" + 2922 county="[-1990]河间县" + 2923 county="[-1993]肃宁县" + 2924 county="[-1993]献县" + 2925 county="[-1983]交河县" + 2926 county="[-1993]吴桥县" + 2927 county="[-1993]东光县" + 2928 county="[-1993]南皮县" + 2929 county="[-1993]盐山县" + 2930 county="[-1989]黄骅县" + 2931 county="[-1993]孟村回族自治县" + 2932 county="[-1986]青县" + 2933 county="[-1986]任丘县" + 2934 county="[-1993]海兴县" + 3000 county="[-1996]衡水地区" + 3001 county="[1982-1996]衡水市" + 3002 county="[1993-1996]冀州市" + 3003 county="[1994-1996]深州市" + 3021 county="[-1983]衡水县" + 3022 county="[-1993]冀县" + 3023 county="[-1996]枣强县" + 3024 county="[-1996]武邑县" + 3025 county="[-1994]深县" + 3026 county="[-1996]武强县" + 3027 county="[-1996]饶阳县" + 3028 county="[-1996]安平县" + 3029 county="[-1996]故城县" + 3030 county="[-1996]景县" + 3031 county="[-1996]阜城县" + 9000 county="[1988-1989]省直辖县级行政单位" + 9001 county="[1988-1989]武安市" +14 province="山西省" + 0000 county="山西省" + 0100 county="太原市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-1997]南城区" + 0103 county="[1983-1997]北城区" + 0104 county="[1983-1997]河西区" + 0105 county="[1997-]小店区" + 0106 county="[1997-]迎泽区" + 0107 county="[1997-]杏花岭区" + 0108 county="[1997-]尖草坪区" + 0109 county="[1997-]万柏林区" + 0110 county="[1997-]晋源区" + 0111 county="[1983-1988]古交工矿区" + 0112 county="[1983-1997]南郊区" + 0113 county="[1983-1997]北郊区" + 0120 county="[-1983]市区" + 0121 county="清徐县" + 0122 county="阳曲县" + 0123 county="娄烦县" + 0181 county="[1989-]古交市" + 0200 county="大同市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-2018]城区" + 0203 county="[1983-2018]矿区" + 0211 county="[1983-2018]南郊区" + 0212 county="[1983-]新荣区" + 0213 county="[2018-]平城区" + 0214 county="[2018-]云冈区" + 0215 county="[2018-]云州区" + 0221 county="[1993-]阳高县" + 0222 county="[1993-]天镇县" + 0223 county="[1993-]广灵县" + 0224 county="[1993-]灵丘县" + 0225 county="[1993-]浑源县" + 0226 county="[1993-]左云县" + 0227 county="[1993-2018]大同县" + 0300 county="阳泉市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]城区" + 0303 county="[1983-]矿区" + 0311 county="[1983-]郊区" + 0321 county="[1983-]平定县" + 0322 county="[1983-]盂县" + 0400 county="长治市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-2018]城区" + 0403 county="[2018-]潞州区" + 0404 county="[2018-]上党区" + 0405 county="[2018-]屯留区" + 0406 county="[2018-]潞城区" + 0411 county="[1983-2018]郊区" + 0421 county="[1983-2018]长治县" + 0422 county="[1983-1994]潞城县" + 0423 county="[1985-]襄垣县" + 0424 county="[1985-2018]屯留县" + 0425 county="[1985-]平顺县" + 0426 county="[1985-]黎城县" + 0427 county="[1985-]壶关县" + 0428 county="[1985-]长子县" + 0429 county="[1985-]武乡县" + 0430 county="[1985-]沁县" + 0431 county="[1985-]沁源县" + 0481 county="[1994-2018]潞城市" + 0500 county="[1985-]晋城市" + 0501 county="[1985-]市辖区" + 0502 county="[1985-]城区" + 0511 county="[1985-1996]郊区" + 0521 county="[1985-]沁水县" + 0522 county="[1985-]阳城县" + 0523 county="[1985-1993]高平县" + 0524 county="[1985-]陵川县" + 0525 county="[1996-]泽州县" + 0581 county="[1993-]高平市" + 0600 county="[1988-]朔州市" + 0601 county="[1988-]市辖区" + 0602 county="[1988-]朔城区" + 0603 county="[1988-]平鲁区" + 0621 county="[1988-]山阴县" + 0622 county="[1993-]应县" + 0623 county="[1993-]右玉县" + 0624 county="[1993-2018]怀仁县" + 0681 county="[2018-]怀仁市" + 0700 county="[1999-]晋中市" + 0701 county="[1999-]市辖区" + 0702 county="[1999-]榆次区" + 0703 county="[2019-]太谷区" + 0721 county="[1999-]榆社县" + 0722 county="[1999-]左权县" + 0723 county="[1999-]和顺县" + 0724 county="[1999-]昔阳县" + 0725 county="[1999-]寿阳县" + 0726 county="[1999-2019]太谷县" + 0727 county="[1999-]祁县" + 0728 county="[1999-]平遥县" + 0729 county="[1999-]灵石县" + 0781 county="[1999-]介休市" + 0800 county="[2000-]运城市" + 0801 county="[2000-]市辖区" + 0802 county="[2000-]盐湖区" + 0821 county="[2000-]临猗县" + 0822 county="[2000-]万荣县" + 0823 county="[2000-]闻喜县" + 0824 county="[2000-]稷山县" + 0825 county="[2000-]新绛县" + 0826 county="[2000-]绛县" + 0827 county="[2000-]垣曲县" + 0828 county="[2000-]夏县" + 0829 county="[2000-]平陆县" + 0830 county="[2000-]芮城县" + 0881 county="[2000-]永济市" + 0882 county="[2000-]河津市" + 0900 county="[2000-]忻州市" + 0901 county="[2000-]市辖区" + 0902 county="[2000-]忻府区" + 0921 county="[2000-]定襄县" + 0922 county="[2000-]五台县" + 0923 county="[2000-]代县" + 0924 county="[2000-]繁峙县" + 0925 county="[2000-]宁武县" + 0926 county="[2000-]静乐县" + 0927 county="[2000-]神池县" + 0928 county="[2000-]五寨县" + 0929 county="[2000-]岢岚县" + 0930 county="[2000-]河曲县" + 0931 county="[2000-]保德县" + 0932 county="[2000-]偏关县" + 0981 county="[2000-]原平市" + 1000 county="[2000-]临汾市" + 1001 county="[2000-]市辖区" + 1002 county="[2000-]尧都区" + 1021 county="[2000-]曲沃县" + 1022 county="[2000-]翼城县" + 1023 county="[2000-]襄汾县" + 1024 county="[2000-]洪洞县" + 1025 county="[2000-]古县" + 1026 county="[2000-]安泽县" + 1027 county="[2000-]浮山县" + 1028 county="[2000-]吉县" + 1029 county="[2000-]乡宁县" + 1030 county="[2000-]大宁县" + 1031 county="[2000-]隰县" + 1032 county="[2000-]永和县" + 1033 county="[2000-]蒲县" + 1034 county="[2000-]汾西县" + 1081 county="[2000-]侯马市" + 1082 county="[2000-]霍州市" + 1100 county="[2003-]吕梁市" + 1101 county="[2003-]市辖区" + 1102 county="[2003-]离石区" + 1121 county="[2003-]文水县" + 1122 county="[2003-]交城县" + 1123 county="[2003-]兴县" + 1124 county="[2003-]临县" + 1125 county="[2003-]柳林县" + 1126 county="[2003-]石楼县" + 1127 county="[2003-]岚县" + 1128 county="[2003-]方山县" + 1129 county="[2003-]中阳县" + 1130 county="[2003-]交口县" + 1181 county="[2003-]孝义市" + 1182 county="[2003-]汾阳市" + 2100 county="[-1993]雁北地区" + 2121 county="[-1993]阳高县" + 2122 county="[-1993]天镇县" + 2123 county="[-1993]广灵县" + 2124 county="[-1993]灵丘县" + 2125 county="[-1993]浑源县" + 2126 county="[-1993]应县" + 2127 county="[-1988]山阴县" + 2128 county="[-1988]朔县" + 2129 county="[-1988]平鲁县" + 2130 county="[-1993]左云县" + 2131 county="[-1993]右玉县" + 2132 county="[-1993]大同县" + 2133 county="[-1993]怀仁县" + 2200 county="[-1982]忻县地区,[1983-1999]忻州地区" + 2201 county="[1983-2000]忻州市" + 2202 county="[1993-2000]原平市" + 2221 county="[-1983]忻县" + 2222 county="[-2000]定襄县" + 2223 county="[-2000]五台县" + 2224 county="[-1993]原平县" + 2225 county="[-2000]代县" + 2226 county="[-2000]繁峙县" + 2227 county="[-2000]宁武县" + 2228 county="[-2000]静乐县" + 2229 county="[-2000]神池县" + 2230 county="[-2000]五寨县" + 2231 county="[-2000]岢岚县" + 2232 county="[-2000]河曲县" + 2233 county="[-2000]保德县" + 2234 county="[-2000]偏关县" + 2300 county="[-2003]吕梁地区" + 2301 county="[1992-2003]孝义市" + 2302 county="[1996-2003]离石市" + 2303 county="[1996-2003]汾阳市" + 2321 county="[-1996]汾阳县" + 2322 county="[-2003]文水县" + 2323 county="[-2003]交城县" + 2324 county="[-1992]孝义县" + 2325 county="[-2003]兴县" + 2326 county="[-2003]临县" + 2327 county="[-2003]柳林县" + 2328 county="[-2003]石楼县" + 2329 county="[-2003]岚县" + 2330 county="[-2003]方山县" + 2331 county="[-1996]离石县" + 2332 county="[-2003]中阳县" + 2333 county="[-2003]交口县" + 2400 county="[-1999]晋中地区" + 2401 county="[-1999]榆次市" + 2402 county="[1992-1999]介休市" + 2421 county="[-1999]榆社县" + 2422 county="[-1999]左权县" + 2423 county="[-1999]和顺县" + 2424 county="[-1999]昔阳县" + 2425 county="[-1983]平定县" + 2426 county="[-1983]盂县" + 2427 county="[-1999]寿阳县" + 2428 county="[-1983]榆次县" + 2429 county="[-1999]太谷县" + 2430 county="[-1999]祁县" + 2431 county="[-1999]平遥县" + 2432 county="[-1992]介休县" + 2433 county="[-1999]灵石县" + 2500 county="[-1985]晋东南地区" + 2501 county="[1983-1985]晋城市" + 2521 county="[-1983]长治县" + 2522 county="[-1983]潞城县" + 2523 county="[-1985]屯留县" + 2524 county="[-1985]长子县" + 2525 county="[-1985]沁水县" + 2526 county="[-1985]阳城县" + 2527 county="[-1983]晋城县" + 2528 county="[-1985]高平县" + 2529 county="[-1985]陵川县" + 2530 county="[-1985]壶关县" + 2531 county="[-1985]平顺县" + 2532 county="[-1985]黎城县" + 2533 county="[-1985]武乡县" + 2534 county="[-1985]襄垣县" + 2535 county="[-1985]沁县" + 2536 county="[-1985]沁源县" + 2600 county="[-2000]临汾地区" + 2601 county="[-2000]临汾市" + 2602 county="[-2000]侯马市" + 2603 county="[1989-2000]霍州市" + 2621 county="[-2000]曲沃县" + 2622 county="[-2000]翼城县" + 2623 county="[-2000]襄汾县" + 2624 county="[-1983]临汾县" + 2625 county="[-2000]洪洞县" + 2626 county="[-1989]霍县" + 2627 county="[-2000]古县" + 2628 county="[-2000]安泽县" + 2629 county="[-2000]浮山县" + 2630 county="[-2000]吉县" + 2631 county="[-2000]乡宁县" + 2632 county="[-2000]蒲县" + 2633 county="[-2000]大宁县" + 2634 county="[-2000]永和县" + 2635 county="[-2000]隰县" + 2636 county="[-2000]汾西县" + 2700 county="[-2000]运城地区" + 2701 county="[1983-2000]运城市" + 2702 county="[1994-2000]永济市" + 2703 county="[1994-2000]河津市" + 2721 county="[-1983]运城县" + 2722 county="[-1994]永济县" + 2723 county="[-2000]芮城县" + 2724 county="[-2000]临猗县" + 2725 county="[-2000]万荣县" + 2726 county="[-2000]新绛县" + 2727 county="[-2000]稷山县" + 2728 county="[-1994]河津县" + 2729 county="[-2000]闻喜县" + 2730 county="[-2000]夏县" + 2731 county="[-2000]绛县" + 2732 county="[-2000]平陆县" + 2733 county="[-2000]垣曲县" + 9000 county="[1988-1989]省直辖县级行政单位" + 9001 county="[1988-1989]古交市" +15 province="内蒙古自治区" + 0000 county="内蒙古自治区" + 0100 county="呼和浩特市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]新城区" + 0103 county="[1983-]回民区" + 0104 county="[1983-]玉泉区" + 0105 county="[1983-1999]郊区,[2000-]赛罕区" + 0120 county="[-1983]市区" + 0121 county="土默特左旗" + 0122 county="托克托县" + 0123 county="[1995-]和林格尔县" + 0124 county="[1995-]清水河县" + 0125 county="[1996-]武川县" + 0200 county="包头市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]东河区" + 0203 county="[1983-]昆都仑区" + 0204 county="[1983-]青山区" + 0205 county="[1983-1998]石拐矿区,[1999-]石拐区" + 0206 county="[1983-]白云鄂博矿区" + 0207 county="[1983-1998]郊区,[1999-]九原区" + 0220 county="[-1983]市区" + 0221 county="土默特右旗" + 0222 county="固阳县" + 0223 county="[1996-]达尔罕茂明安联合旗" + 0300 county="乌海市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]海勃湾区" + 0303 county="[1983-]海南区" + 0304 county="[1983-]乌达区" + 0400 county="[1983-]赤峰市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]红山区" + 0403 county="[1983-]元宝山区" + 0404 county="[1983-1992]郊区,[1993-]松山区" + 0421 county="[1983-]阿鲁科尔沁旗" + 0422 county="[1983-]巴林左旗" + 0423 county="[1983-]巴林右旗" + 0424 county="[1983-]林西县" + 0425 county="[1983-]克什克腾旗" + 0426 county="[1983-]翁牛特旗" + 0427 county="[1983-1983]赤峰县" + 0428 county="[1983-]喀喇沁旗" + 0429 county="[1983-]宁城县" + 0430 county="[1983-]敖汉旗" + 0500 county="[1999-]通辽市" + 0501 county="[1999-]市辖区" + 0502 county="[1999-]科尔沁区" + 0521 county="[1999-]科尔沁左翼中旗" + 0522 county="[1999-]科尔沁左翼后旗" + 0523 county="[1999-]开鲁县" + 0524 county="[1999-]库伦旗" + 0525 county="[1999-]奈曼旗" + 0526 county="[1999-]扎鲁特旗" + 0581 county="[1999-]霍林郭勒市" + 0600 county="[2001-]鄂尔多斯市" + 0601 county="[2001-]市辖区" + 0602 county="[2001-]东胜区" + 0603 county="[2016-]康巴什区" + 0621 county="[2001-]达拉特旗" + 0622 county="[2001-]准格尔旗" + 0623 county="[2001-]鄂托克前旗" + 0624 county="[2001-]鄂托克旗" + 0625 county="[2001-]杭锦旗" + 0626 county="[2001-]乌审旗" + 0627 county="[2001-]伊金霍洛旗" + 0700 county="[2001-]呼伦贝尔市" + 0701 county="[2001-]市辖区" + 0702 county="[2001-]海拉尔区" + 0703 county="[2013-]扎赉诺尔区" + 0721 county="[2001-]阿荣旗" + 0722 county="[2001-]莫力达瓦达斡尔族自治旗" + 0723 county="[2001-]鄂伦春自治旗" + 0724 county="[2001-]鄂温克族自治旗" + 0725 county="[2001-]陈巴尔虎旗" + 0726 county="[2001-]新巴尔虎左旗" + 0727 county="[2001-]新巴尔虎右旗" + 0781 county="[2001-]满洲里市" + 0782 county="[2001-]牙克石市" + 0783 county="[2001-]扎兰屯市" + 0784 county="[2001-]额尔古纳市" + 0785 county="[2001-]根河市" + 0800 county="[2003-]巴彦淖尔市" + 0801 county="[2003-]市辖区" + 0802 county="[2003-]临河区" + 0821 county="[2003-]五原县" + 0822 county="[2003-]磴口县" + 0823 county="[2003-]乌拉特前旗" + 0824 county="[2003-]乌拉特中旗" + 0825 county="[2003-]乌拉特后旗" + 0826 county="[2003-]杭锦后旗" + 0900 county="[2003-]乌兰察布市" + 0901 county="[2003-]市辖区" + 0902 county="[2003-]集宁区" + 0921 county="[2003-]卓资县" + 0922 county="[2003-]化德县" + 0923 county="[2003-]商都县" + 0924 county="[2003-]兴和县" + 0925 county="[2003-]凉城县" + 0926 county="[2003-]察哈尔右翼前旗" + 0927 county="[2003-]察哈尔右翼中旗" + 0928 county="[2003-]察哈尔右翼后旗" + 0929 county="[2003-]四子王旗" + 0981 county="[2003-]丰镇市" + 2100 county="[-2001]呼伦贝尔盟" + 2101 county="[-2001]海拉尔市" + 2102 county="[-2001]满洲里市" + 2103 county="[1983-2001]扎兰屯市" + 2104 county="[1983-2001]牙克石市" + 2105 county="[1994-2001]根河市" + 2106 county="[1994-2001]额尔古纳市" + 2121 county="[-1983]布特哈旗" + 2122 county="[-2001]阿荣旗" + 2123 county="[-2001]莫力达瓦达斡尔族自治旗" + 2124 county="[-1983]喜桂图旗" + 2125 county="[-1994]额尔古纳右旗" + 2126 county="[-1994]额尔古纳左旗" + 2127 county="[-2001]鄂伦春自治旗" + 2128 county="[-2001]鄂温克族自治旗" + 2129 county="[-2001]新巴尔虎右旗" + 2130 county="[-2001]新巴尔虎左旗" + 2131 county="[-2001]陈巴尔虎旗" + 2200 county="兴安盟" + 2201 county="乌兰浩特市" + 2202 county="[1996-]阿尔山市" + 2221 county="科尔沁右翼前旗" + 2222 county="科尔沁右翼中旗" + 2223 county="扎赉特旗" + 2224 county="突泉县" + 2300 county="[-1999]哲里木盟" + 2301 county="[-1999]通辽市" + 2302 county="[1985-1999]霍林郭勒市" + 2321 county="[-1986]通辽县" + 2322 county="[-1999]科尔沁左翼中旗" + 2323 county="[-1999]科尔沁左翼后旗" + 2324 county="[-1999]开鲁县" + 2325 county="[-1999]库伦旗" + 2326 county="[-1999]奈曼旗" + 2327 county="[-1999]扎鲁特旗" + 2400 county="[-1983]昭乌达盟" + 2401 county="[-1983]赤峰市" + 2421 county="[-1983]阿鲁科尔沁旗" + 2422 county="[-1983]巴林左旗" + 2423 county="[-1983]巴林右旗" + 2424 county="[-1983]林西县" + 2425 county="[-1983]克什克腾旗" + 2426 county="[-1983]翁牛特旗" + 2427 county="[-1983]赤峰县" + 2428 county="[-1983]喀喇沁旗" + 2429 county="[-1983]宁城县" + 2430 county="[-1983]敖汉旗" + 2500 county="锡林郭勒盟" + 2501 county="二连浩特市" + 2502 county="[1983-]锡林浩特市" + 2521 county="[-1983]阿巴哈纳尔旗" + 2522 county="阿巴嘎旗" + 2523 county="苏尼特左旗" + 2524 county="苏尼特右旗" + 2525 county="东乌珠穆沁旗" + 2526 county="西乌珠穆沁旗" + 2527 county="太仆寺旗" + 2528 county="镶黄旗" + 2529 county="正镶白旗" + 2530 county="正蓝旗" + 2531 county="多伦县" + 2600 county="[-2003]乌兰察布盟" + 2601 county="[-2003]集宁市" + 2602 county="[1990-2003]丰镇市" + 2621 county="[-1996]武川县" + 2622 county="[-1995]和林格尔县" + 2623 county="[-1995]清水河县" + 2624 county="[-2003]卓资县" + 2625 county="[-2003]化德县" + 2626 county="[-2003]商都县" + 2627 county="[-2003]兴和县" + 2628 county="[-1990]丰镇县" + 2629 county="[-2003]凉城县" + 2630 county="[-2003]察哈尔右翼前旗" + 2631 county="[-2003]察哈尔右翼中旗" + 2632 county="[-2003]察哈尔右翼后旗" + 2633 county="[-1996]达尔罕茂明安联合旗" + 2634 county="[-2003]四子王旗" + 2700 county="[-2001]伊克昭盟" + 2701 county="[1983-2001]东胜市" + 2721 county="[-1983]东胜县" + 2722 county="[-2001]达拉特旗" + 2723 county="[-2001]准格尔旗" + 2724 county="[-2001]鄂托克前旗" + 2725 county="[-2001]鄂托克旗" + 2726 county="[-2001]杭锦旗" + 2727 county="[-2001]乌审旗" + 2728 county="[-2001]伊金霍洛旗" + 2800 county="[-2003]巴彦淖尔盟" + 2801 county="[1984-2003]临河市" + 2821 county="[-1984]临河县" + 2822 county="[-2003]五原县" + 2823 county="[-2003]磴口县" + 2824 county="[-2003]乌拉特前旗" + 2825 county="[-2003]乌拉特中旗" + 2826 county="[-2003]乌拉特后旗" + 2827 county="[-2003]杭锦后旗" + 2900 county="阿拉善盟" + 2921 county="阿拉善左旗" + 2922 county="阿拉善右旗" + 2923 county="额济纳旗" +21 province="辽宁省" + 0000 county="辽宁省" + 0100 county="沈阳市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]和平区" + 0103 county="[1983-]沈河区" + 0104 county="[1983-]大东区" + 0105 county="[1983-]皇姑区" + 0106 county="[1983-]铁西区" + 0111 county="[1983-]苏家屯区" + 0112 county="[1983-2013]东陵区,[2014-]浑南区" + 0113 county="[1983-2005]新城子区,[2006-]沈北新区" + 0114 county="[1983-]于洪区" + 0115 county="[2016-]辽中区" + 0120 county="[-1983]市区" + 0121 county="[-1993]新民县" + 0122 county="[-2016]辽中县" + 0123 county="[1992-]康平县" + 0124 county="[1992-]法库县" + 0181 county="[1993-]新民市" + 0200 county="[-1980]旅大市,[1981-]大连市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]中山区" + 0203 county="[1983-]西岗区" + 0204 county="[1983-]沙河口区" + 0211 county="[1983-]甘井子区" + 0212 county="[1983-]旅顺口区" + 0213 county="[1987-]金州区" + 0214 county="[2015-]普兰店区" + 0219 county="[1985-1986]瓦房店市" + 0220 county="[-1983]市区" + 0221 county="[-1987]金县" + 0222 county="[-1991]新金县" + 0223 county="[-1985]复县" + 0224 county="长海县" + 0225 county="[-1992]庄河县" + 0281 county="[1989-]瓦房店市" + 0282 county="[1991-2015]普兰店市" + 0283 county="[1992-]庄河市" + 0300 county="鞍山市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]铁东区" + 0303 county="[1983-]铁西区" + 0304 county="[1983-]立山区" + 0311 county="[1983-1982]郊区,[1983-1995]旧堡区,[1996-]千山区" + 0319 county="[1985-1986]海城市" + 0320 county="[-1983]市区" + 0321 county="台安县" + 0322 county="[-1985]海城县" + 0323 county="[1992-]岫岩满族自治县" + 0381 county="[1989-]海城市" + 0400 county="抚顺市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]新抚区" + 0403 county="[1983-1998]露天区,[1999-]东洲区" + 0404 county="[1983-]望花区" + 0411 county="[1983-1987]郊区,[1988-]顺城区" + 0420 county="[-1983]市区" + 0421 county="抚顺县" + 0422 county="[-1984]新宾县,[1985-]新宾满族自治县" + 0423 county="[-1988]清原县,[1989-]清原满族自治县" + 0500 county="本溪市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-]平山区" + 0503 county="[1983-]溪湖区" + 0504 county="[1984-]明山区" + 0505 county="[1984-]南芬区" + 0511 county="[1983-1984]立新区" + 0520 county="[-1983]市区" + 0521 county="[-1988]本溪县,[1989-]本溪满族自治县" + 0522 county="[-1988]桓仁县,[1989-]桓仁满族自治县" + 0600 county="丹东市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-]元宝区" + 0603 county="[1983-]振兴区" + 0604 county="[1983-]振安区" + 0620 county="[-1983]市区" + 0621 county="[-1984]凤城县,[1985-1993]凤城满族自治县" + 0622 county="[-1984]岫岩县,[1985-1992]岫岩满族自治县" + 0623 county="[-1993]东沟县" + 0624 county="[-1988]宽甸县,[1989-]宽甸满族自治县" + 0681 county="[1993-]东港市" + 0682 county="[1994-]凤城市" + 0700 county="锦州市" + 0701 county="[1983-]市辖区" + 0702 county="[1983-]古塔区" + 0703 county="[1983-]凌河区" + 0704 county="[1983-1989]南票区" + 0705 county="[1983-1989]葫芦岛区" + 0711 county="[1983-]太和区" + 0719 county="[1985-1986]锦西市" + 0720 county="[-1983]市区" + 0721 county="[-1985]锦西县" + 0722 county="[-1986]兴城县" + 0723 county="[-1989]绥中县" + 0724 county="[-1993]锦县" + 0725 county="[-1988]北镇县,[1989-1994]北镇满族自治县" + 0726 county="黑山县" + 0727 county="义县" + 0781 county="[1993-]凌海市" + 0782 county="[1995-2005]北宁市,[2006-]北镇市" + 0800 county="营口市" + 0801 county="[1983-]市辖区" + 0802 county="[1983-]站前区" + 0803 county="[1983-]西市区" + 0804 county="[1986-]鲅鱼圈区" + 0811 county="[1983-1983]郊区,[1984-]老边区" + 0812 county="[1984-1986]鲅鱼圈区" + 0820 county="[-1983]市区" + 0821 county="[-1992]营口县" + 0822 county="[-1984]盘山县" + 0823 county="[-1984]大洼县" + 0824 county="[-1992]盖县" + 0881 county="[1992-]盖州市" + 0882 county="[1992-]大石桥市" + 0900 county="阜新市" + 0901 county="[1983-]市辖区" + 0902 county="[1983-]海州区" + 0903 county="[1983-]新邱区" + 0904 county="[1983-]太平区" + 0905 county="[1983-]清河门区" + 0911 county="[1983-1983]郊区,[1984-]细河区" + 0920 county="[-1983]市区" + 0921 county="阜新蒙古族自治县" + 0922 county="彰武县" + 1000 county="辽阳市" + 1001 county="[1983-]市辖区" + 1002 county="[1983-]白塔区" + 1003 county="[1983-]文圣区" + 1004 county="[1983-]宏伟区" + 1005 county="[1984-]弓长岭区" + 1011 county="[1983-1983]郊区,[1984-]太子河区" + 1020 county="[-1983]市区" + 1021 county="辽阳县" + 1022 county="[-1996]灯塔县" + 1081 county="[1996-]灯塔市" + 1100 county="[1984-]盘锦市" + 1101 county="[1984-]市辖区" + 1102 county="[1984-1985]盘山区,[1986-]双台子区" + 1103 county="[1984-]兴隆台区" + 1104 county="[2016-]大洼区" + 1111 county="[1984-1986]郊区" + 1121 county="[1984-2016]大洼县" + 1122 county="[1986-]盘山县" + 1200 county="[1984-]铁岭市" + 1201 county="[1984-]市辖区" + 1202 county="[1984-]银州区" + 1203 county="[1984-1986]铁法区" + 1204 county="[1984-]清河区" + 1221 county="[1984-]铁岭县" + 1222 county="[1984-1988]开原县" + 1223 county="[1984-]西丰县" + 1224 county="[1984-]昌图县" + 1225 county="[1984-1992]康平县" + 1226 county="[1984-1992]法库县" + 1281 county="[1989-2001]铁法市,[2002-]调兵山市" + 1282 county="[1989-]开原市" + 1300 county="[1984-]朝阳市" + 1301 county="[1984-]市辖区" + 1302 county="[1984-]双塔区" + 1303 county="[1984-]龙城区" + 1319 county="[1985-1986]北票市" + 1321 county="[1984-]朝阳县" + 1322 county="[1984-]建平县" + 1323 county="[1984-1991]凌源县" + 1324 county="[1984-]喀喇沁左翼蒙古族自治县" + 1325 county="[1984-1989]建昌县" + 1326 county="[1984-1985]北票县" + 1381 county="[1989-]北票市" + 1382 county="[1991-]凌源市" + 1400 county="[1989-1993]锦西市,[1994-]葫芦岛市" + 1401 county="[1989-]市辖区" + 1402 county="[1989-]连山区" + 1403 county="[1989-1993]葫芦岛区,[1994-]龙港区" + 1404 county="[1989-]南票区" + 1421 county="[1989-]绥中县" + 1422 county="[1989-]建昌县" + 1481 county="[1989-]兴城市" + 2100 county="[-1984]铁岭地区" + 2101 county="[-1984]铁岭市" + 2102 county="[1981-1984]铁法市" + 2121 county="[-1984]铁岭县" + 2122 county="[-1984]开原县" + 2123 county="[-1984]西丰县" + 2124 county="[-1984]昌图县" + 2125 county="[-1984]康平县" + 2126 county="[-1984]法库县" + 2200 county="[-1984]朝阳地区" + 2201 county="[-1984]朝阳市" + 2221 county="[-1984]朝阳县" + 2222 county="[-1984]建平县" + 2223 county="[-1984]凌源县" + 2224 county="[-1984]喀喇沁左翼蒙古族自治县" + 2225 county="[-1984]建昌县" + 2226 county="[-1984]北票县" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]瓦房店市" + 9002 county="[1986-1989]海城市" + 9003 county="[1986-1989]锦西市" + 9004 county="[1986-1989]兴城市" + 9005 county="[1986-1989]铁法市" + 9006 county="[1986-1989]北票市" + 9007 county="[1988-1989]开原市" +22 province="吉林省" + 0000 county="吉林省" + 0100 county="长春市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]南关区" + 0103 county="[1983-]宽城区" + 0104 county="[1983-]朝阳区" + 0105 county="[1983-1994]二道河子区,[1995-]二道区" + 0106 county="[1995-]绿园区" + 0111 county="[1983-1995]郊区" + 0112 county="[1995-]双阳区" + 0113 county="[2014-]九台区" + 0120 county="[-1983]市区" + 0121 county="[1983-1990]榆树县" + 0122 county="[1983-]农安县" + 0123 county="[1983-1988]九台县" + 0124 county="[1983-1994]德惠县" + 0125 county="[1983-1995]双阳县" + 0181 county="[1989-2014]九台市" + 0182 county="[1990-]榆树市" + 0183 county="[1994-]德惠市" + 0184 county="[2020-]公主岭市" + 0200 county="吉林市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]昌邑区" + 0203 county="[1983-]龙潭区" + 0204 county="[1983-]船营区" + 0211 county="[1983-1991]郊区,[1992-]丰满区" + 0220 county="[-1983]市区" + 0221 county="[1983-]永吉县" + 0222 county="[1983-1992]舒兰县" + 0223 county="[1983-1995]磐石县" + 0224 county="[1983-1989]蛟河县" + 0225 county="[1983-1988]桦甸县" + 0281 county="[1989-]蛟河市" + 0282 county="[1989-]桦甸市" + 0283 county="[1992-]舒兰市" + 0284 county="[1995-]磐石市" + 0300 county="[1983-]四平市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]铁西区" + 0303 county="[1983-]铁东区" + 0319 county="[1985-1986]公主岭市" + 0321 county="[1983-1985]怀德县" + 0322 county="[1983-]梨树县" + 0323 county="[1983-1987]伊通县,[1988-]伊通满族自治县" + 0324 county="[1983-1996]双辽县" + 0381 county="[1989-2020]公主岭市" + 0382 county="[1996-]双辽市" + 0400 county="[1983-]辽源市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]龙山区" + 0403 county="[1983-]西安区" + 0421 county="[1983-]东丰县" + 0422 county="[1983-]东辽县" + 0500 county="[1985-]通化市" + 0501 county="[1986-]市辖区" + 0502 county="[1986-]东昌区" + 0503 county="[1986-]二道江区" + 0519 county="[1985-1986]梅河口市" + 0521 county="[1985-]通化县" + 0522 county="[1985-1988]集安县" + 0523 county="[1985-]辉南县" + 0524 county="[1985-]柳河县" + 0581 county="[1989-]梅河口市" + 0582 county="[1989-]集安市" + 0600 county="[1985-1993]浑江市,[1994-]白山市" + 0601 county="[1986-]市辖区" + 0602 county="[1986-2009]八道江区,[2010-]浑江区" + 0603 county="[1986-1995]三岔子区" + 0604 county="[1986-1992]临江区" + 0605 county="[2006-]江源区" + 0621 county="[1985-]抚松县" + 0622 county="[1985-]靖宇县" + 0623 county="[1985-]长白朝鲜族自治县" + 0624 county="[1992-1993]临江县" + 0625 county="[1995-2006]江源县" + 0681 county="[1993-]临江市" + 0700 county="[1992-]松原市" + 0701 county="[1992-]市辖区" + 0702 county="[1992-1994]扶余区,[1995-]宁江区" + 0721 county="[1992-]前郭尔罗斯蒙古族自治县" + 0722 county="[1992-]长岭县" + 0723 county="[1992-]乾安县" + 0724 county="[1995-2013]扶余县" + 0781 county="[2013-]扶余市" + 0800 county="[1993-]白城市" + 0801 county="[1993-]市辖区" + 0802 county="[1993-]洮北区" + 0821 county="[1993-]镇赉县" + 0822 county="[1993-]通榆县" + 0881 county="[1993-]洮南市" + 0882 county="[1993-]大安市" + 2100 county="[-1983]四平地区" + 2101 county="[-1983]四平市" + 2102 county="[-1983]辽源市" + 2121 county="[-1983]怀德县" + 2122 county="[-1983]梨树县" + 2123 county="[-1983]伊通县" + 2124 county="[-1983]双辽县" + 2125 county="[-1983]东丰县" + 2200 county="[-1985]通化地区" + 2201 county="[-1985]通化市" + 2202 county="[-1985]浑江市" + 2221 county="[-1985]海龙县" + 2222 county="[-1985]通化县" + 2223 county="[-1985]柳河县" + 2224 county="[-1985]辉南县" + 2225 county="[-1985]集安县" + 2226 county="[-1985]抚松县" + 2227 county="[-1985]靖宇县" + 2228 county="[-1985]长白朝鲜族自治县" + 2300 county="[-1993]白城地区" + 2301 county="[-1993]白城市" + 2302 county="[1987-1993]洮南市" + 2303 county="[1987-1992]扶余市" + 2304 county="[1988-1993]大安市" + 2321 county="[-1987]扶余县" + 2322 county="[-1987]洮安县" + 2323 county="[-1992]长岭县" + 2324 county="[-1992]前郭尔罗斯蒙古族自治县" + 2325 county="[-1988]大安县" + 2326 county="[-1993]镇赉县" + 2327 county="[-1993]通榆县" + 2328 county="[-1992]乾安县" + 2400 county="延边朝鲜族自治州" + 2401 county="延吉市" + 2402 county="图们市" + 2403 county="[1985-]敦化市" + 2404 county="[1988-]珲春市" + 2405 county="[1988-]龙井市" + 2406 county="[1993-]和龙市" + 2421 county="[-1982]延吉县,[1983-1987]龙井县" + 2422 county="[-1985]敦化县" + 2423 county="[-1993]和龙县" + 2424 county="汪清县" + 2425 county="[-1988]珲春县" + 2426 county="安图县" + 2500 county="[1982-1983]德惠地区" + 2521 county="[1982-1983]榆树县" + 2522 county="[1982-1983]农安县" + 2523 county="[1982-1983]九台县" + 2524 county="[1982-1983]德惠县" + 2525 county="[1982-1983]双阳县" + 2600 county="[1982-1983]永吉地区" + 2621 county="[1982-1983]永吉县" + 2622 county="[1982-1983]舒兰县" + 2623 county="[1982-1983]磐石县" + 2624 county="[1982-1983]蛟河县" + 2625 county="[1982-1983]桦甸县" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]公主岭市" + 9002 county="[1986-1989]梅河口市" + 9003 county="[1988-1989]集安市" + 9004 county="[1988-1989]桦甸市" + 9005 county="[1988-1989]九台市" +23 province="黑龙江省" + 0000 county="黑龙江省" + 0100 county="哈尔滨市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]道里区" + 0103 county="[1983-]南岗区" + 0104 county="[1983-]道外区" + 0105 county="[1983-2004]太平区" + 0106 county="[1983-2006]香坊区" + 0107 county="[1983-2006]动力区" + 0108 county="[1983-]平房区" + 0109 county="[2004-]松北区" + 0110 county="[2006-]香坊区" + 0111 county="[2004-]呼兰区" + 0112 county="[2006-]阿城区" + 0113 county="[2014-]双城区" + 0121 county="[1983-2004]呼兰县" + 0122 county="[1983-1987]阿城县" + 0123 county="[1991-]依兰县" + 0124 county="[1991-]方正县" + 0125 county="[1991-]宾县" + 0126 county="[1996-]巴彦县" + 0127 county="[1996-]木兰县" + 0128 county="[1996-]通河县" + 0129 county="[1996-]延寿县" + 0181 county="[1989-2006]阿城市" + 0182 county="[1996-2014]双城市" + 0183 county="[1996-]尚志市" + 0184 county="[1996-]五常市" + 0200 county="齐齐哈尔市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]龙沙区" + 0203 county="[1983-]建华区" + 0204 county="[1983-]铁锋区" + 0205 county="[1983-]昂昂溪区" + 0206 county="[1983-]富拉尔基区" + 0207 county="[1983-1982]华安区,[1983-]碾子山区" + 0208 county="[1983-1987]梅里斯区,[1988-]梅里斯达斡尔族区" + 0221 county="[1984-]龙江县" + 0222 county="[1984-1992]讷河县" + 0223 county="[1984-]依安县" + 0224 county="[1984-]泰来县" + 0225 county="[1984-]甘南县" + 0226 county="[1984-1992]杜尔伯特蒙古族自治县" + 0227 county="[1984-]富裕县" + 0228 county="[1984-1992]林甸县" + 0229 county="[1984-]克山县" + 0230 county="[1984-]克东县" + 0231 county="[1984-]拜泉县" + 0281 county="[1992-]讷河市" + 0300 county="鸡西市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]鸡冠区" + 0303 county="[1983-]恒山区" + 0304 county="[1983-]滴道区" + 0305 county="[1983-]梨树区" + 0306 county="[1983-]城子河区" + 0307 county="[1983-]麻山区" + 0321 county="[1983-]鸡东县" + 0322 county="[1993-1996]虎林县" + 0381 county="[1996-]虎林市" + 0382 county="[1996-]密山市" + 0400 county="鹤岗市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]向阳区" + 0403 county="[1983-]工农区" + 0404 county="[1983-]南山区" + 0405 county="[1983-]兴安区" + 0406 county="[1983-]东山区" + 0407 county="[1983-]兴山区" + 0421 county="[1987-]萝北县" + 0422 county="[1987-]绥滨县" + 0500 county="双鸭山市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-]尖山区" + 0503 county="[1983-]岭东区" + 0504 county="[1983-1987]岭西区" + 0505 county="[1983-]四方台区" + 0506 county="[1983-]宝山区" + 0521 county="[1987-]集贤县" + 0522 county="[1991-]友谊县" + 0523 county="[1991-]宝清县" + 0524 county="[1993-]饶河县" + 0600 county="大庆市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-]萨尔图区" + 0603 county="[1983-]龙凤区" + 0604 county="[1983-]让胡路区" + 0605 county="[1983-]红岗区" + 0606 county="[1983-]大同区" + 0621 county="[1992-]肇州县" + 0622 county="[1992-]肇源县" + 0623 county="[1992-]林甸县" + 0624 county="[1992-]杜尔伯特蒙古族自治县" + 0700 county="伊春市" + 0701 county="[1983-]市辖区" + 0702 county="[1983-2019]伊春区" + 0703 county="[1983-2019]南岔区" + 0704 county="[1983-2019]友好区" + 0705 county="[1983-2019]西林区" + 0706 county="[1983-2019]翠峦区" + 0707 county="[1983-2019]新青区" + 0708 county="[1983-2019]美溪区" + 0709 county="[1983-1982]大丰区,[1983-2019]金山屯区" + 0710 county="[1983-2019]五营区" + 0711 county="[1983-1982]乌敏河区,[1983-2019]乌马河区" + 0712 county="[1983-1982]东风区,[1983-2019]汤旺河区" + 0713 county="[1983-2019]带岭区" + 0714 county="[1983-2019]乌伊岭区" + 0715 county="[1983-2019]红星区" + 0716 county="[1983-2019]上甘岭区" + 0717 county="[2019-]伊美区" + 0718 county="[2019-]乌翠区" + 0719 county="[2019-]友好区" + 0720 county="[-1983]市区" + 0721 county="[-1988]铁力县" + 0722 county="嘉荫县" + 0723 county="[2019-]汤旺县" + 0724 county="[2019-]丰林县" + 0725 county="[2019-]大箐山县" + 0726 county="[2019-]南岔县" + 0751 county="[2019-]金林区" + 0781 county="[1989-]铁力市" + 0800 county="[1983-]佳木斯市" + 0801 county="[1983-]市辖区" + 0802 county="[1983-2006]永红区" + 0803 county="[1983-]向阳区" + 0804 county="[1983-]前进区" + 0805 county="[1983-]东风区" + 0811 county="[1983-]郊区" + 0821 county="[1984-1988]富锦县" + 0822 county="[1984-]桦南县" + 0823 county="[1984-1991]依兰县" + 0824 county="[1984-1991]友谊县" + 0825 county="[1984-1987]集贤县" + 0826 county="[1984-]桦川县" + 0827 county="[1984-1991]宝清县" + 0828 county="[1984-]汤原县" + 0829 county="[1984-1987]绥滨县" + 0830 county="[1984-1987]萝北县" + 0831 county="[1984-1987]同江县" + 0832 county="[1984-1993]饶河县" + 0833 county="[1984-2016]抚远县" + 0881 county="[1989-]同江市" + 0882 county="[1989-]富锦市" + 0883 county="[2016-]抚远市" + 0900 county="[1983-]七台河市" + 0901 county="[1984-]市辖区" + 0902 county="[1984-]新兴区" + 0903 county="[1984-]桃山区" + 0904 county="[1984-]茄子河区" + 0921 county="[1983-]勃利县" + 1000 county="[1983-]牡丹江市" + 1001 county="[1983-]市辖区" + 1002 county="[1983-]东安区" + 1003 county="[1983-]阳明区" + 1004 county="[1983-]爱民区" + 1005 county="[1983-]西安区" + 1011 county="[1983-1997]郊区" + 1019 county="[1986-1987]镜泊湖市" + 1020 county="[1983-1986]绥芬河市" + 1021 county="[1983-1993]宁安县" + 1022 county="[1983-1992]海林县" + 1023 county="[1983-1995]穆棱县" + 1024 county="[1983-2015]东宁县" + 1025 county="[1983-]林口县" + 1026 county="[1983-1988]密山县" + 1027 county="[1983-1993]虎林县" + 1081 county="[1989-]绥芬河市" + 1082 county="[1989-1996]密山市" + 1083 county="[1992-]海林市" + 1084 county="[1993-]宁安市" + 1085 county="[1995-]穆棱市" + 1086 county="[2015-]东宁市" + 1100 county="[1993-]黑河市" + 1101 county="[1993-]市辖区" + 1102 county="[1993-]爱辉区" + 1121 county="[1993-2019]嫩江县" + 1122 county="[1993-1996]德都县" + 1123 county="[1993-]逊克县" + 1124 county="[1993-]孙吴县" + 1181 county="[1993-]北安市" + 1182 county="[1993-]五大连池市" + 1183 county="[2019-]嫩江市" + 1200 county="[1999-]绥化市" + 1201 county="[1999-]市辖区" + 1202 county="[1999-]北林区" + 1221 county="[1999-]望奎县" + 1222 county="[1999-]兰西县" + 1223 county="[1999-]青冈县" + 1224 county="[1999-]庆安县" + 1225 county="[1999-]明水县" + 1226 county="[1999-]绥棱县" + 1281 county="[1999-]安达市" + 1282 county="[1999-]肇东市" + 1283 county="[1999-]海伦市" + 2100 county="[-1996]松花江地区" + 2101 county="[1988-1996]双城市" + 2102 county="[1988-1996]尚志市" + 2103 county="[1993-1996]五常市" + 2121 county="[-1983]阿城县" + 2122 county="[-1991]宾县" + 2123 county="[-1983]呼兰县" + 2124 county="[-1988]双城县" + 2125 county="[-1993]五常县" + 2126 county="[-1996]巴彦县" + 2127 county="[-1996]木兰县" + 2128 county="[-1996]通河县" + 2129 county="[-1988]尚志县" + 2130 county="[-1991]方正县" + 2131 county="[-1996]延寿县" + 2200 county="[-1984]嫩江地区" + 2221 county="[-1984]龙江县" + 2222 county="[-1984]讷河县" + 2223 county="[-1984]依安县" + 2224 county="[-1984]泰来县" + 2225 county="[-1984]甘南县" + 2226 county="[-1984]杜尔伯特蒙古族自治县" + 2227 county="[-1984]富裕县" + 2228 county="[-1984]林甸县" + 2229 county="[-1984]克山县" + 2230 county="[-1984]克东县" + 2231 county="[-1984]拜泉县" + 2300 county="[-1999]绥化地区" + 2301 county="[1982-1999]绥化市" + 2302 county="[1984-1999]安达市" + 2303 county="[1986-1999]肇东市" + 2304 county="[1989-1999]海伦市" + 2321 county="[-1989]海伦县" + 2322 county="[-1986]肇东县" + 2323 county="[-1982]绥化县" + 2324 county="[-1999]望奎县" + 2325 county="[-1999]兰西县" + 2326 county="[-1999]青冈县" + 2327 county="[-1984]安达县" + 2328 county="[-1992]肇源县" + 2329 county="[-1992]肇州县" + 2330 county="[-1999]庆安县" + 2331 county="[-1999]明水县" + 2332 county="[-1999]绥棱县" + 2400 county="[-1984]合江地区" + 2401 county="[-1984]佳木斯市" + 2402 county="[-1984]七台河市" + 2421 county="[-1984]富锦县" + 2422 county="[-1984]桦南县" + 2423 county="[-1984]依兰县" + 2424 county="[-1983]勃利县" + 2425 county="[-1984]集贤县" + 2426 county="[-1984]桦川县" + 2427 county="[-1984]宝清县" + 2428 county="[-1984]汤原县" + 2429 county="[-1984]绥滨县" + 2430 county="[-1984]萝北县" + 2431 county="[-1984]同江县" + 2432 county="[-1984]饶河县" + 2433 county="[-1984]抚远县" + 2434 county="[1984-1984]友谊县" + 2500 county="[-1983]牡丹江地区" + 2501 county="[-1983]牡丹江市" + 2502 county="[-1983]绥芬河市" + 2521 county="[-1983]宁安县" + 2522 county="[-1983]海林县" + 2523 county="[-1983]穆棱县" + 2524 county="[-1983]东宁县" + 2525 county="[-1983]林口县" + 2526 county="[-1983]鸡东县" + 2527 county="[-1983]密山县" + 2528 county="[-1983]虎林县" + 2600 county="[-1993]黑河地区" + 2601 county="[-1993]黑河市" + 2602 county="[1982-1993]北安市" + 2603 county="[1983-1993]五大连池市" + 2621 county="[-1982]北安县" + 2622 county="[-1993]嫩江县" + 2623 county="[-1993]德都县" + 2624 county="[-1983]爱辉县" + 2625 county="[-1993]逊克县" + 2626 county="[-1993]孙吴县" + 2627 county="[1982-1983]通北县" + 2700 county="大兴安岭地区" + 2701 county="[1981-2018]加格達奇區,[2018-]漠河市" + 2702 county="[1981-2018]松嶺區" + 2703 county="[1981-2018]新林區" + 2704 county="[1981-2018]呼中區" + 2721 county="呼玛县" + 2722 county="[1981-]塔河县" + 2723 county="[1981-2018]漠河县" + 2761 county="[2018-]加格達奇區" + 2762 county="[2018-]松嶺區" + 2763 county="[2018-]新林區" + 2764 county="[2018-]呼中區" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]绥芬河市" + 9002 county="[1987-1989]阿城市" + 9003 county="[1987-1989]同江市" + 9004 county="[1988-1989]富锦市" + 9005 county="[1988-1989]铁力市" + 9006 county="[1988-1989]密山市" +31 province="上海市" + 0000 county="上海市" + 0100 county="市辖区" + 0101 county="黄浦区" + 0102 county="[-2000]南市区" + 0103 county="[-2011]卢湾区" + 0104 county="徐汇区" + 0105 county="长宁区" + 0106 county="静安区" + 0107 county="普陀区" + 0108 county="[-2015]闸北区" + 0109 county="虹口区" + 0110 county="杨浦区" + 0111 county="[-1988]吴淞区" + 0112 county="[1981-]闵行区" + 0113 county="[1988-]宝山区" + 0114 county="[1992-]嘉定区" + 0115 county="[1992-]浦东新区" + 0116 county="[1997-]金山区" + 0117 county="[1998-]松江区" + 0118 county="[1999-]青浦区" + 0119 county="[2001-2009]南汇区" + 0120 county="[2001-]奉贤区" + 0151 county="[2016-]崇明区" + 0200 county="[-2016]县" + 0201 county="[-1982]上海县" + 0202 county="[-1982]嘉定县" + 0203 county="[-1982]宝山县" + 0204 county="[-1982]川沙县" + 0205 county="[-1982]南汇县" + 0206 county="[-1982]奉贤县" + 0207 county="[-1982]松江县" + 0208 county="[-1982]金山县" + 0209 county="[-1982]青浦县" + 0210 county="[-1982]崇明县" + 0221 county="[1982-1992]上海县" + 0222 county="[1982-1992]嘉定县" + 0223 county="[1982-1988]宝山县" + 0224 county="[1982-1992]川沙县" + 0225 county="[1982-2001]南汇县" + 0226 county="[1982-2001]奉贤县" + 0227 county="[1982-1998]松江县" + 0228 county="[1982-1997]金山县" + 0229 county="[1982-1999]青浦县" + 0230 county="[1982-2016]崇明县" +32 province="江苏省" + 0000 county="江苏省" + 0100 county="南京市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]玄武区" + 0103 county="[1983-2013]白下区" + 0104 county="[1983-]秦淮区" + 0105 county="[1983-]建邺区" + 0106 county="[1983-]鼓楼区" + 0107 county="[1983-2013]下关区" + 0111 county="[1983-]浦口区" + 0112 county="[1983-2002]大厂区" + 0113 county="[1983-]栖霞区" + 0114 county="[1983-]雨花台区" + 0115 county="[2000-]江宁区" + 0116 county="[2002-]六合区" + 0117 county="[2013-]溧水区" + 0118 county="[2013-]高淳区" + 0120 county="[-1983]市区" + 0121 county="[-2000]江宁县" + 0122 county="[-2002]江浦县" + 0123 county="[-2002]六合县" + 0124 county="[1983-2013]溧水县" + 0125 county="[1983-2013]高淳县" + 0200 county="无锡市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-2015]崇安区" + 0203 county="[1983-2015]南长区" + 0204 county="[1983-2015]北塘区" + 0205 county="[2000-]锡山区" + 0206 county="[2000-]惠山区" + 0211 county="[1983-1999]郊区,[2000-]滨湖区" + 0212 county="[1987-2000]马山区" + 0213 county="[2015-]梁溪区" + 0214 county="[2015-]新吴区" + 0221 county="[1983-1987]江阴县" + 0222 county="[1983-1995]无锡县" + 0223 county="[1983-1988]宜兴县" + 0281 county="[1989-]江阴市" + 0282 county="[1989-]宜兴市" + 0283 county="[1995-2000]锡山市" + 0300 county="徐州市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]鼓楼区" + 0303 county="[1983-]云龙区" + 0304 county="[1983-1994]矿区,[1995-2009]九里区" + 0305 county="[1983-]贾汪区" + 0311 county="[1983-1992]郊区,[1993-]泉山区" + 0312 county="[2010-]铜山区" + 0321 county="[1983-]丰县" + 0322 county="[1983-]沛县" + 0323 county="[1983-2010]铜山县" + 0324 county="[1983-]睢宁县" + 0325 county="[1983-1992]邳县" + 0326 county="[1983-1990]新沂县" + 0381 county="[1990-]新沂市" + 0382 county="[1992-]邳州市" + 0400 county="常州市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]天宁区" + 0403 county="[1983-1986]广化区" + 0404 county="[1983-]钟楼区" + 0405 county="[1983-2015]戚墅堰区" + 0411 county="[1983-2001]郊区,[2002-]新北区" + 0412 county="[2002-]武进区" + 0413 county="[2015-]金坛区" + 0421 county="[1983-1995]武进县" + 0422 county="[1983-1993]金坛县" + 0423 county="[1983-1990]溧阳县" + 0481 county="[1990-]溧阳市" + 0482 county="[1993-2015]金坛市" + 0483 county="[1995-2002]武进市" + 0500 county="苏州市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-2012]沧浪区" + 0503 county="[1983-2012]平江区" + 0504 county="[1983-2012]金阊区" + 0505 county="[2000-]虎丘区" + 0506 county="[2000-]吴中区" + 0507 county="[2000-]相城区" + 0508 county="[2012-]姑苏区" + 0509 county="[2012-]吴江区" + 0511 county="[1983-2000]郊区" + 0520 county="[1983-1986]常熟市" + 0521 county="[1983-1986]沙洲县" + 0522 county="[1983-1993]太仓县" + 0523 county="[1983-1989]昆山县" + 0524 county="[1983-1995]吴县" + 0525 county="[1983-1992]吴江县" + 0581 county="[1989-]常熟市" + 0582 county="[1989-]张家港市" + 0583 county="[1989-]昆山市" + 0584 county="[1992-2012]吴江市" + 0585 county="[1993-]太仓市" + 0586 county="[1995-2000]吴县市" + 0600 county="南通市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-1990]城区,[1991-2019]崇川区" + 0611 county="[1983-1990]郊区,[1991-2019]港闸区" + 0612 county="[2009-]通州区" + 0613 county="[2020-]崇川区" + 0614 county="[2020-]海门区" + 0621 county="[1983-2018]海安县" + 0622 county="[1983-1991]如皋县" + 0623 county="[1983-]如东县" + 0624 county="[1983-1993]南通县" + 0625 county="[1983-1994]海门县" + 0626 county="[1983-1989]启东县" + 0681 county="[1989-]启东市" + 0682 county="[1991-]如皋市" + 0683 county="[1993-2009]通州市" + 0684 county="[1994-2020]海门市" + 0685 county="[2018-]海安市" + 0700 county="连云港市" + 0701 county="[1983-]市辖区" + 0702 county="[1983-1986]新海区" + 0703 county="[1983-]连云区" + 0704 county="[1983-2001]云台区" + 0705 county="[1986-2014]新浦区" + 0706 county="[1986-]海州区" + 0707 county="[2014-]赣榆区" + 0721 county="[1983-2014]赣榆县" + 0722 county="[1983-]东海县" + 0723 county="[1983-]灌云县" + 0724 county="[1996-]灌南县" + 0800 county="[1983-1999]淮阴市,[2000-]淮安市" + 0801 county="[1983-]市辖区" + 0802 county="[1983-2016]清河区" + 0803 county="[2000-2010]楚州区,[2011-]淮安区" + 0804 county="[2000-]淮阴区" + 0811 county="[1983-2016]清浦区" + 0812 county="[2016-]清江浦区" + 0813 county="[2016-]洪泽区" + 0821 county="[1983-2000]淮阴县" + 0822 county="[1983-1996]灌南县" + 0823 county="[1983-1996]沭阳县" + 0824 county="[1983-1987]宿迁县" + 0825 county="[1983-1996]泗阳县" + 0826 county="[1983-]涟水县" + 0827 county="[1983-1996]泗洪县" + 0828 county="[1983-1987]淮安县" + 0829 county="[1983-2016]洪泽县" + 0830 county="[1983-]盱眙县" + 0831 county="[1983-]金湖县" + 0881 county="[1989-1996]宿迁市" + 0882 county="[1989-2000]淮安市" + 0900 county="[1983-]盐城市" + 0901 county="[1983-]市辖区" + 0902 county="[1983-2002]城区,[2003-]亭湖区" + 0903 county="[2003-]盐都区" + 0904 county="[2015-]大丰区" + 0911 county="[1983-1996]郊区" + 0921 county="[1983-]响水县" + 0922 county="[1983-]滨海县" + 0923 county="[1983-]阜宁县" + 0924 county="[1983-]射阳县" + 0925 county="[1983-]建湖县" + 0926 county="[1983-1996]大丰县" + 0927 county="[1983-1987]东台县" + 0928 county="[1996-2003]盐都县" + 0981 county="[1989-]东台市" + 0982 county="[1996-2015]大丰市" + 1000 county="[1983-]扬州市" + 1001 county="[1983-]市辖区" + 1002 county="[1983-]广陵区" + 1003 county="[2000-]邗江区" + 1011 county="[1983-2001]郊区,[2002-2010]维扬区" + 1012 county="[2011-]江都区" + 1020 county="[1983-1986]泰州市" + 1021 county="[1983-1987]兴化县" + 1022 county="[1983-1991]高邮县" + 1023 county="[1983-]宝应县" + 1024 county="[1983-1993]靖江县" + 1025 county="[1983-1992]泰兴县" + 1026 county="[1983-1994]江都县" + 1027 county="[1983-2000]邗江县" + 1028 county="[1983-1994]泰县" + 1029 county="[1983-1986]仪征县" + 1081 county="[1989-]仪征市" + 1082 county="[1989-1996]泰州市" + 1083 county="[1989-1996]兴化市" + 1084 county="[1991-]高邮市" + 1085 county="[1992-1996]泰兴市" + 1086 county="[1993-1996]靖江市" + 1087 county="[1994-1996]姜堰市" + 1088 county="[1994-2011]江都市" + 1100 county="[1983-]镇江市" + 1101 county="[1983-]市辖区" + 1102 county="[1983-1983]城区,[1984-]京口区" + 1111 county="[1983-1983]郊区,[1984-]润州区" + 1112 county="[2002-]丹徒区" + 1121 county="[1983-2002]丹徒县" + 1122 county="[1983-1987]丹阳县" + 1123 county="[1983-1995]句容县" + 1124 county="[1983-1994]扬中县" + 1181 county="[1989-]丹阳市" + 1182 county="[1994-]扬中市" + 1183 county="[1995-]句容市" + 1200 county="[1996-]泰州市" + 1201 county="[1996-]市辖区" + 1202 county="[1996-]海陵区" + 1203 county="[1997-]高港区" + 1204 county="[2012-]姜堰区" + 1281 county="[1996-]兴化市" + 1282 county="[1996-]靖江市" + 1283 county="[1996-]泰兴市" + 1284 county="[1996-2012]姜堰市" + 1300 county="[1996-]宿迁市" + 1301 county="[1996-]市辖区" + 1302 county="[1996-]宿城区" + 1311 county="[2004-]宿豫区" + 1321 county="[1996-2004]宿豫县" + 1322 county="[1996-]沭阳县" + 1323 county="[1996-]泗阳县" + 1324 county="[1996-]泗洪县" + 2100 county="[-1983]徐州地区" + 2121 county="[-1983]丰县" + 2122 county="[-1983]沛县" + 2123 county="[-1983]铜山县" + 2124 county="[-1983]睢宁县" + 2125 county="[-1983]邳县" + 2126 county="[-1983]新沂县" + 2127 county="[-1983]东海县" + 2128 county="[-1983]赣榆县" + 2200 county="[-1983]淮阴地区" + 2201 county="[-1983]清江市" + 2221 county="[-1983]淮阴县" + 2222 county="[-1983]灌云县" + 2223 county="[-1983]灌南县" + 2224 county="[-1983]沭阳县" + 2225 county="[-1983]宿迁县" + 2226 county="[-1983]泗阳县" + 2227 county="[-1983]涟水县" + 2228 county="[-1983]泗洪县" + 2229 county="[-1983]淮安县" + 2230 county="[-1983]洪泽县" + 2231 county="[-1983]盱眙县" + 2232 county="[-1983]金湖县" + 2300 county="[-1983]盐城地区" + 2321 county="[-1983]响水县" + 2322 county="[-1983]滨海县" + 2323 county="[-1983]阜宁县" + 2324 county="[-1983]射阳县" + 2325 county="[-1983]建湖县" + 2326 county="[-1983]盐城县" + 2327 county="[-1983]大丰县" + 2328 county="[-1983]东台县" + 2400 county="[-1983]扬州地区" + 2401 county="[-1983]扬州市" + 2402 county="[-1983]泰州市" + 2421 county="[-1983]兴化县" + 2422 county="[-1983]高邮县" + 2423 county="[-1983]宝应县" + 2424 county="[-1983]靖江县" + 2425 county="[-1983]泰兴县" + 2426 county="[-1983]江都县" + 2427 county="[-1983]邗江县" + 2428 county="[-1983]泰县" + 2429 county="[-1983]仪征县" + 2500 county="[-1983]南通地区" + 2521 county="[-1983]海安县" + 2522 county="[-1983]如皋县" + 2523 county="[-1983]如东县" + 2524 county="[-1983]南通县" + 2525 county="[-1983]海门县" + 2526 county="[-1983]启东县" + 2600 county="[-1983]镇江地区" + 2601 county="[-1983]镇江市" + 2621 county="[-1983]丹徒县" + 2622 county="[-1983]武进县" + 2623 county="[-1983]丹阳县" + 2624 county="[-1983]句容县" + 2625 county="[-1983]金坛县" + 2626 county="[-1983]溧水县" + 2627 county="[-1983]高淳县" + 2628 county="[-1983]溧阳县" + 2629 county="[-1983]宜兴县" + 2630 county="[-1983]扬中县" + 2700 county="[-1983]苏州地区" + 2721 county="[-1983]江阴县" + 2722 county="[-1983]无锡县" + 2723 county="[-1983]沙洲县" + 2724 county="[-1983]常熟县" + 2725 county="[-1983]太仓县" + 2726 county="[-1983]昆山县" + 2727 county="[-1983]吴县" + 2728 county="[-1983]吴江县" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]泰州市" + 9002 county="[1986-1989]仪征市" + 9003 county="[1986-1989]常熟市" + 9004 county="[1986-1989]张家港市" + 9005 county="[1987-1989]江阴市" + 9006 county="[1987-1989]宿迁市" + 9007 county="[1987-1989]丹阳市" + 9008 county="[1987-1989]东台市" + 9009 county="[1987-1989]兴化市" + 9010 county="[1987-1989]淮安市" + 9011 county="[1988-1989]宜兴市" +33 province="浙江省" + 0000 county="浙江省" + 0100 county="杭州市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]上城区" + 0103 county="[1983-2021]下城区" + 0104 county="[1983-2021]江干区" + 0105 county="[1983-]拱墅区" + 0106 county="[1983-]西湖区" + 0107 county="[1983-1990]半山区" + 0108 county="[1996-]滨江区" + 0109 county="[2001-]萧山区" + 0110 county="[2001-]余杭区" + 0111 county="[2014-]富阳区" + 0112 county="[2017-]临安区" + 0120 county="[-1983]市区" + 0121 county="[-1987]萧山县" + 0122 county="桐庐县" + 0123 county="[-1994]富阳县" + 0124 county="[-1996]临安县" + 0125 county="[-1994]余杭县" + 0126 county="[-1992]建德县" + 0127 county="淳安县" + 0181 county="[1989-2001]萧山市" + 0182 county="[1992-]建德市" + 0183 county="[1994-2014]富阳市" + 0184 county="[1994-2001]余杭市" + 0185 county="[1996-2017]临安市" + 0200 county="宁波市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-1984]镇明区" + 0203 county="[1983-]海曙区" + 0204 county="[1983-2016]江东区" + 0205 county="[1983-]江北区" + 0206 county="[1985-1986]滨海区,[1987-]北仑区" + 0211 county="[1985-]镇海区" + 0212 county="[2002-]鄞州区" + 0213 county="[2016-]奉化区" + 0219 county="[1985-1986]余姚市" + 0220 county="[-1983]市区" + 0221 county="[1982-1985]镇海县" + 0222 county="[1983-1988]慈溪县" + 0223 county="[1983-1985]余姚县" + 0224 county="[1983-1988]奉化县" + 0225 county="[1983-]象山县" + 0226 county="[1983-]宁海县" + 0227 county="[1983-2002]鄞县" + 0281 county="[1989-]余姚市" + 0282 county="[1989-]慈溪市" + 0283 county="[1989-2016]奉化市" + 0300 county="温州市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-1983]城区,[1984-]鹿城区" + 0303 county="[1984-]龙湾区" + 0304 county="[1992-]瓯海区" + 0305 county="[2015-]洞头区" + 0320 county="[-1983]市区" + 0321 county="[1981-1992]瓯海县" + 0322 county="[1981-2015]洞头县" + 0323 county="[1981-1993]乐清县" + 0324 county="[1981-]永嘉县" + 0325 county="[1981-1987]瑞安县" + 0326 county="[1981-]平阳县" + 0327 county="[1981-]苍南县" + 0328 county="[1981-]文成县" + 0329 county="[1981-]泰顺县" + 0381 county="[1989-]瑞安市" + 0382 county="[1993-]乐清市" + 0383 county="[2019-]龙港市" + 0400 county="[1983-]嘉兴市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-1992]城区,[1993-2004]秀城区,[2005-]南湖区" + 0411 county="[1983-1998]郊区,[1999-]秀洲区" + 0421 county="[1983-]嘉善县" + 0422 county="[1983-1991]平湖县" + 0423 county="[1983-1986]海宁县" + 0424 county="[1983-]海盐县" + 0425 county="[1983-1993]桐乡县" + 0481 county="[1989-]海宁市" + 0482 county="[1991-]平湖市" + 0483 county="[1993-]桐乡市" + 0500 county="[1983-]湖州市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-1987]城区,[2003-]吴兴区" + 0503 county="[2003-]南浔区" + 0511 county="[1983-1988]郊区" + 0521 county="[1983-]德清县" + 0522 county="[1983-]长兴县" + 0523 county="[1983-]安吉县" + 0600 county="[1983-]绍兴市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-]越城区" + 0603 county="[2013-]柯桥区" + 0604 county="[2013-]上虞区" + 0621 county="[1983-2013]绍兴县" + 0622 county="[1983-1992]上虞县" + 0623 county="[1983-1995]嵊县" + 0624 county="[1983-]新昌县" + 0625 county="[1983-1989]诸暨县" + 0681 county="[1989-]诸暨市" + 0682 county="[1992-2013]上虞市" + 0683 county="[1995-]嵊州市" + 0700 county="[1985-]金华市" + 0701 county="[1985-]市辖区" + 0702 county="[1985-]婺城区" + 0703 county="[2000-]金东区" + 0719 county="[1985-1986]兰溪市" + 0721 county="[1985-2000]金华县" + 0722 county="[1985-1992]永康县" + 0723 county="[1985-]武义县" + 0724 county="[1985-1988]东阳县" + 0725 county="[1985-1988]义乌县" + 0726 county="[1985-]浦江县" + 0727 county="[1985-]磐安县" + 0781 county="[1989-]兰溪市" + 0782 county="[1989-]义乌市" + 0783 county="[1989-]东阳市" + 0784 county="[1992-]永康市" + 0800 county="[1985-]衢州市" + 0801 county="[1985-]市辖区" + 0802 county="[1985-]柯城区" + 0803 county="[2001-]衢江区" + 0821 county="[1985-2001]衢县" + 0822 county="[1985-]常山县" + 0823 county="[1985-1987]江山县" + 0824 county="[1985-]开化县" + 0825 county="[1985-]龙游县" + 0881 county="[1989-]江山市" + 0900 county="[1987-]舟山市" + 0901 county="[1987-]市辖区" + 0902 county="[1987-]定海区" + 0903 county="[1987-]普陀区" + 0921 county="[1987-]岱山县" + 0922 county="[1987-]嵊泗县" + 1000 county="[1994-]台州市" + 1001 county="[1994-]市辖区" + 1002 county="[1994-]椒江区" + 1003 county="[1994-]黄岩区" + 1004 county="[1994-]路桥区" + 1021 county="[1994-2017]玉环县" + 1022 county="[1994-]三门县" + 1023 county="[1994-]天台县" + 1024 county="[1994-]仙居县" + 1081 county="[1994-]温岭市" + 1082 county="[1994-]临海市" + 1083 county="[2017-]玉环市" + 1100 county="[2000-]丽水市" + 1101 county="[2000-]市辖区" + 1102 county="[2000-]莲都区" + 1121 county="[2000-]青田县" + 1122 county="[2000-]缙云县" + 1123 county="[2000-]遂昌县" + 1124 county="[2000-]松阳县" + 1125 county="[2000-]云和县" + 1126 county="[2000-]庆元县" + 1127 county="[2000-]景宁畲族自治县" + 1181 county="[2000-]龙泉市" + 2100 county="[-1983]嘉兴地区" + 2101 county="[-1983]湖州市" + 2102 county="[-1983]嘉兴市" + 2121 county="[-1981]嘉兴县" + 2122 county="[-1983]嘉善县" + 2123 county="[-1983]平湖县" + 2124 county="[-1983]海宁县" + 2125 county="[-1983]海盐县" + 2126 county="[-1983]桐乡县" + 2127 county="[-1983]德清县" + 2128 county="[-1981]吴兴县" + 2129 county="[-1983]长兴县" + 2130 county="[-1983]安吉县" + 2200 county="[-1983]宁波地区" + 2221 county="[-1983]慈溪县" + 2222 county="[-1983]余姚县" + 2223 county="[-1983]奉化县" + 2224 county="[-1983]象山县" + 2225 county="[-1983]宁海县" + 2226 county="[-1983]鄞县" + 2227 county="[-1982]镇海县" + 2300 county="[-1983]绍兴地区" + 2301 county="[-1983]绍兴市" + 2321 county="[-1981]绍兴县" + 2322 county="[-1983]上虞县" + 2323 county="[-1983]嵊县" + 2324 county="[-1983]新昌县" + 2325 county="[-1983]诸暨县" + 2400 county="[-1981]温州地区,[1982-1985]金华地区" + 2401 county="[1982-1985]金华市" + 2402 county="[1982-1985]衢州市" + 2421 county="[-1981]洞头县,[1982-1985]兰溪县" + 2422 county="[-1981]永嘉县,[1982-1985]永康县" + 2423 county="[-1981]瑞安县,[1982-1985]武义县" + 2424 county="[-1981]文成县,[1982-1985]东阳县" + 2425 county="[-1981]平阳县,[1982-1985]义乌县" + 2426 county="[-1981]乐清县,[1982-1985]浦江县" + 2427 county="[-1981]泰顺县,[1982-1985]常山县" + 2428 county="[1982-1985]江山县" + 2429 county="[1982-1985]开化县" + 2430 county="[1983-1985]龙游县" + 2431 county="[1983-1985]磐安县" + 2500 county="[-1982]金华地区" + 2501 county="[-1982]金华市" + 2502 county="[-1982]衢州市" + 2521 county="[-1981]金华县" + 2522 county="[-1982]兰溪县" + 2523 county="[-1982]永康县" + 2524 county="[-1982]武义县" + 2525 county="[-1982]东阳县" + 2526 county="[-1982]义乌县" + 2527 county="[-1982]浦江县" + 2528 county="[-1981]衢县" + 2529 county="[-1982]常山县" + 2530 county="[-1982]江山县" + 2531 county="[-1982]开化县" + 2600 county="[-1982]丽水地区,[1982-1994]台州地区" + 2601 county="[1982-1994]椒江市" + 2602 county="[1986-1994]临海市" + 2603 county="[1989-1994]黄岩市" + 2621 county="[-1982]丽水县,[1982-1986]临海县" + 2622 county="[-1982]青田县,[1982-1989]黄岩县" + 2623 county="[-1982]云和县,[1982-1994]温岭县" + 2624 county="[-1982]龙泉县,[1982-1994]仙居县" + 2625 county="[-1982]庆元县,[1982-1994]天台县" + 2626 county="[-1982]缙云县,[1982-1994]三门县" + 2627 county="[-1982]遂昌县,[1982-1994]玉环县" + 2628 county="[1982-1982]松阳县" + 2700 county="[-1982]台州地区,[1982-1987]舟山地区" + 2701 county="[1981-1982]椒江市" + 2721 county="[-1982]临海县,[1982-1987]定海县" + 2722 county="[-1982]黄岩县,[1982-1987]普陀县" + 2723 county="[-1982]温岭县,[1982-1987]岱山县" + 2724 county="[-1982]仙居县,[1982-1987]嵊泗县" + 2725 county="[-1982]天台县" + 2726 county="[-1982]三门县" + 2727 county="[-1982]玉环县" + 2800 county="[-1982]舟山地区,[1982-2000]丽水地区" + 2801 county="[1986-2000]丽水市" + 2802 county="[1990-2000]龙泉市" + 2821 county="[-1982]定海县,[1982-1986]丽水县" + 2822 county="[-1982]普陀县,[1982-2000]青田县" + 2823 county="[-1982]岱山县,[1982-2000]云和县" + 2824 county="[-1982]嵊泗县,[1982-1990]龙泉县" + 2825 county="[1982-2000]庆元县" + 2826 county="[1982-2000]缙云县" + 2827 county="[1982-2000]遂昌县" + 2828 county="[1982-2000]松阳县" + 2829 county="[1984-2000]景宁畲族自治县" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]余姚市" + 9002 county="[1986-1989]海宁市" + 9003 county="[1986-1989]兰溪市" + 9004 county="[1987-1989]瑞安市" + 9005 county="[1987-1989]萧山市" + 9006 county="[1987-1989]江山市" + 9007 county="[1988-1989]义乌市" + 9008 county="[1988-1989]东阳市" + 9009 county="[1988-1989]慈溪市" + 9010 county="[1988-1989]奉化市" +34 province="安徽省" + 0000 county="安徽省" + 0100 county="合肥市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-2001]东市区,[2002-]瑶海区" + 0103 county="[1983-2001]中市区,[2002-]庐阳区" + 0104 county="[1983-2001]西市区,[2002-]蜀山区" + 0111 county="[1983-2001]郊区,[2002-]包河区" + 0120 county="[-1983]市区" + 0121 county="长丰县" + 0122 county="[1983-]肥东县" + 0123 county="[1983-]肥西县" + 0124 county="[2011-]庐江县" + 0181 county="[2011-]巢湖市" + 0200 county="芜湖市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]镜湖区" + 0203 county="[1983-2004]马塘区,[2005-2020]弋江区" + 0204 county="[1983-2005]新芜区" + 0205 county="[1983-1990]裕溪口区" + 0206 county="[1983-1990]四褐山区" + 0207 county="[1990-]鸠江区" + 0208 county="[2005-2020]三山区" + 0209 county="[2020-]弋江区" + 0210 county="[2020-]湾沚区" + 0211 county="[1983-1990]郊区" + 0212 county="[2020-]繁昌区" + 0220 county="[-1983]市区" + 0221 county="[-2020]芜湖县" + 0222 county="[1983-2020]繁昌县" + 0223 county="[1983-]南陵县" + 0224 county="[1983-1988]青阳县" + 0225 county="[2011-2019]无为县" + 0281 county="[2019-]无为市" + 0300 county="蚌埠市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-2003]东市区,[2004-]龙子湖区" + 0303 county="[1983-2003]中市区,[2004-]蚌山区" + 0304 county="[1983-2003]西市区,[2004-]禹会区" + 0311 county="[1983-2003]郊区,[2004-]淮上区" + 0321 county="[1983-]怀远县" + 0322 county="[1983-]五河县" + 0323 county="[1983-]固镇县" + 0400 county="淮南市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]大通区" + 0403 county="[1983-]田家庵区" + 0404 county="[1983-]谢家集区" + 0405 county="[1983-]八公山区" + 0406 county="[1983-]潘集区" + 0420 county="[-1983]市区" + 0421 county="凤台县" + 0422 county="[2015-]寿县" + 0500 county="马鞍山市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-2012]金家庄区" + 0503 county="[1983-]花山区" + 0504 county="[1983-]雨山区" + 0505 county="[1983-2001]向山区" + 0506 county="[2012-]博望区" + 0521 county="[1983-]当涂县" + 0522 county="[2011-]含山县" + 0523 county="[2011-]和县" + 0600 county="淮北市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-]杜集区" + 0603 county="[1983-]相山区" + 0604 county="[1983-]烈山区" + 0611 county="[1983-1984]郊区" + 0620 county="[-1983]市区" + 0621 county="濉溪县" + 0700 county="铜陵市" + 0701 county="[1983-]市辖区" + 0702 county="[1983-2015]铜官山区" + 0703 county="[1983-2015]狮子山区" + 0704 county="[1983-1987]铜山区" + 0705 county="[2015-]铜官区" + 0706 county="[2015-]义安区" + 0711 county="[1983-]郊区" + 0720 county="[-1983]市区" + 0721 county="[-2015]铜陵县" + 0722 county="[2015-]枞阳县" + 0800 county="安庆市" + 0801 county="[1983-]市辖区" + 0802 county="[1983-]迎江区" + 0803 county="[1983-]大观区" + 0811 county="[1983-2004]郊区,[2005-]宜秀区" + 0821 county="[1988-1996]桐城县" + 0822 county="[1988-]怀宁县" + 0823 county="[1988-2015]枞阳县" + 0824 county="[1988-2018]潜山县" + 0825 county="[1988-]太湖县" + 0826 county="[1988-]宿松县" + 0827 county="[1988-]望江县" + 0828 county="[1988-]岳西县" + 0881 county="[1996-]桐城市" + 0882 county="[2018-]潜山市" + 0900 county="[1983-1987]省直辖行政单位" + 0901 county="[1983-1987]黄山市" + 1000 county="[1987-]黄山市" + 1001 county="[1987-]市辖区" + 1002 county="[1987-]屯溪区" + 1003 county="[1987-]黄山区" + 1004 county="[1987-]徽州区" + 1021 county="[1987-]歙县" + 1022 county="[1987-]休宁县" + 1023 county="[1987-]黟县" + 1024 county="[1987-]祁门县" + 1100 county="[1992-]滁州市" + 1101 county="[1992-]市辖区" + 1102 county="[1992-]琅琊区" + 1103 county="[1992-]南谯区" + 1121 county="[1992-1993]天长县" + 1122 county="[1992-]来安县" + 1124 county="[1992-]全椒县" + 1125 county="[1992-]定远县" + 1126 county="[1992-]凤阳县" + 1127 county="[1992-1994]嘉山县" + 1181 county="[1993-]天长市" + 1182 county="[1994-]明光市" + 1200 county="[1996-]阜阳市" + 1201 county="[1996-]市辖区" + 1202 county="[1996-]颍州区" + 1203 county="[1996-]颍东区" + 1204 county="[1996-]颍泉区" + 1221 county="[1996-]临泉县" + 1222 county="[1996-]太和县" + 1223 county="[1996-2000]涡阳县" + 1224 county="[1996-2000]蒙城县" + 1225 county="[1996-]阜南县" + 1226 county="[1996-]颍上县" + 1227 county="[1996-2000]利辛县" + 1281 county="[1996-2000]亳州市" + 1282 county="[1996-]界首市" + 1300 county="[1998-]宿州市" + 1301 county="[1998-]市辖区" + 1302 county="[1998-]埇桥区" + 1321 county="[1998-]砀山县" + 1322 county="[1998-]萧县" + 1323 county="[1998-]灵璧县" + 1324 county="[1998-]泗县" + 1400 county="[1999-2011]巢湖市" + 1401 county="[1999-2011]市辖区" + 1402 county="[1999-2011]居巢区" + 1421 county="[1999-2011]庐江县" + 1422 county="[1999-2011]无为县" + 1423 county="[1999-2011]含山县" + 1424 county="[1999-2011]和县" + 1500 county="[1999-]六安市" + 1501 county="[1999-]市辖区" + 1502 county="[1999-]金安区" + 1503 county="[1999-]裕安区" + 1504 county="[2015-]叶集区" + 1521 county="[1999-2015]寿县" + 1522 county="[1999-]霍邱县" + 1523 county="[1999-]舒城县" + 1524 county="[1999-]金寨县" + 1525 county="[1999-]霍山县" + 1600 county="[2000-]亳州市" + 1601 county="[2000-]市辖区" + 1602 county="[2000-]谯城区" + 1621 county="[2000-]涡阳县" + 1622 county="[2000-]蒙城县" + 1623 county="[2000-]利辛县" + 1700 county="[2000-]池州市" + 1701 county="[2000-]市辖区" + 1702 county="[2000-]贵池区" + 1721 county="[2000-]东至县" + 1722 county="[2000-]石台县" + 1723 county="[2000-]青阳县" + 1800 county="[2000-]宣城市" + 1801 county="[2000-]市辖区" + 1802 county="[2000-]宣州区" + 1821 county="[2000-]郎溪县" + 1822 county="[2000-2019]广德县" + 1823 county="[2000-]泾县" + 1824 county="[2000-]绩溪县" + 1825 county="[2000-]旌德县" + 1881 county="[2000-]宁国市" + 1882 county="[2019-]广德市" + 2100 county="[-1996]阜阳地区" + 2101 county="[-1996]阜阳市" + 2102 county="[1986-1996]亳州市" + 2103 county="[1989-1996]界首市" + 2121 county="[-1992]阜阳县" + 2122 county="[-1996]临泉县" + 2123 county="[-1996]太和县" + 2124 county="[-1996]涡阳县" + 2125 county="[-1996]蒙城县" + 2126 county="[-1986]亳县" + 2127 county="[-1996]阜南县" + 2128 county="[-1996]颍上县" + 2129 county="[-1989]界首县" + 2130 county="[-1996]利辛县" + 2200 county="[-1998]宿县地区" + 2201 county="[-1998]宿州市" + 2221 county="[-1998]砀山县" + 2222 county="[-1998]萧县" + 2223 county="[-1992]宿县" + 2224 county="[-1998]灵璧县" + 2225 county="[-1998]泗县" + 2226 county="[-1983]怀远县" + 2227 county="[-1983]五河县" + 2228 county="[-1983]固镇县" + 2300 county="[-1992]滁县地区" + 2301 county="[1982-1992]滁州市" + 2321 county="[-1992]天长县" + 2322 county="[-1992]来安县" + 2323 county="[-1982]滁县" + 2324 county="[-1992]全椒县" + 2325 county="[-1992]定远县" + 2326 county="[-1992]凤阳县" + 2327 county="[-1992]嘉山县" + 2400 county="[-1999]六安地区" + 2401 county="[-1999]六安市" + 2421 county="[-1992]六安县" + 2422 county="[-1999]寿县" + 2423 county="[-1999]霍邱县" + 2424 county="[-1983]肥西县" + 2425 county="[-1999]舒城县" + 2426 county="[-1999]金寨县" + 2427 county="[-1999]霍山县" + 2500 county="[-2000]宣城地区" + 2501 county="[1987-2000]宣州市" + 2502 county="[1997-2000]宁国市" + 2521 county="[-1987]宣城县" + 2522 county="[-2000]郎溪县" + 2523 county="[-2000]广德县" + 2524 county="[-1997]宁国县" + 2525 county="[-1983]当涂县" + 2526 county="[-1983]繁昌县" + 2527 county="[-1983]南陵县" + 2528 county="[-1983]青阳县" + 2529 county="[-2000]泾县" + 2530 county="[1987-2000]旌德县" + 2531 county="[1987-2000]绩溪县" + 2600 county="[-1999]巢湖地区" + 2601 county="[1982-1999]巢湖市" + 2621 county="[-1983]肥东县" + 2622 county="[-1999]庐江县" + 2623 county="[-1999]无为县" + 2624 county="[-1983]巢县" + 2625 county="[-1999]含山县" + 2626 county="[-1999]和县" + 2700 county="[-1987]徽州地区" + 2701 county="[-1987]屯溪市" + 2721 county="[-1987]绩溪县" + 2722 county="[-1987]旌德县" + 2723 county="[-1987]歙县" + 2724 county="[-1987]休宁县" + 2725 county="[-1987]黟县" + 2726 county="[-1987]祁门县" + 2727 county="[-1983]太平县" + 2728 county="[-1987]石台县" + 2800 county="[-1988]安庆地区" + 2821 county="[-1988]怀宁县" + 2822 county="[-1988]桐城县" + 2823 county="[-1988]枞阳县" + 2824 county="[-1988]潜山县" + 2825 county="[-1988]太湖县" + 2826 county="[-1988]宿松县" + 2827 county="[-1988]望江县" + 2828 county="[-1988]岳西县" + 2829 county="[-1988]东至县" + 2830 county="[-1988]贵池县" + 2831 county="[1987-1988]石台县" + 2900 county="[1988-2000]池州地区" + 2901 county="[1988-2000]贵池市" + 2921 county="[1988-2000]东至县" + 2922 county="[1988-2000]石台县" + 2923 county="[1988-2000]青阳县" +35 province="福建省" + 0000 county="福建省" + 0100 county="福州市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]鼓楼区" + 0103 county="[1983-]台江区" + 0104 county="[1983-]仓山区" + 0105 county="[1983-]马尾区" + 0111 county="[1983-1994]郊区,[1995-]晋安区" + 0112 county="[2017-]长乐区" + 0120 county="[-1983]市区" + 0121 county="闽侯县" + 0122 county="[1983-]连江县" + 0123 county="[1983-]罗源县" + 0124 county="[1983-]闽清县" + 0125 county="[1983-]永泰县" + 0126 county="[1983-1994]长乐县" + 0127 county="[1983-1990]福清县" + 0128 county="[1983-]平潭县" + 0181 county="[1990-]福清市" + 0182 county="[1994-2017]长乐市" + 0200 county="厦门市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-2003]鼓浪屿区" + 0203 county="[1983-]思明区" + 0204 county="[1983-2003]开元区" + 0205 county="[1983-2002]杏林区,[2003-]海沧区" + 0206 county="[1987-]湖里区" + 0211 county="[1983-1986]郊区,[1987-]集美区" + 0212 county="[1996-]同安区" + 0213 county="[2003-]翔安区" + 0220 county="[-1983]市区" + 0221 county="[-1996]同安县" + 0300 county="[1983-]莆田市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]城厢区" + 0303 county="[1983-]涵江区" + 0304 county="[2002-]荔城区" + 0305 county="[2002-]秀屿区" + 0321 county="[1983-2002]莆田县" + 0322 county="[1983-]仙游县" + 0400 county="[1983-]三明市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-2021]梅列区" + 0403 county="[1983-2021]三元区" + 0404 county="[2021-]三元区" + 0405 county="[2021-]沙县区" + 0420 county="[1984-1986]永安市" + 0421 county="[1983-]明溪县" + 0422 county="[1983-1984]永安县" + 0423 county="[1983-]清流县" + 0424 county="[1983-]宁化县" + 0425 county="[1983-]大田县" + 0426 county="[1983-]尤溪县" + 0427 county="[1983-2021]沙县" + 0428 county="[1983-]将乐县" + 0429 county="[1983-]泰宁县" + 0430 county="[1983-]建宁县" + 0481 county="[1989-]永安市" + 0500 county="[1985-]泉州市" + 0501 county="[1985-]市辖区" + 0502 county="[1985-]鲤城区" + 0503 county="[1997-]丰泽区" + 0504 county="[1997-]洛江区" + 0505 county="[2000-]泉港区" + 0521 county="[1985-]惠安县" + 0522 county="[1985-1992]晋江县" + 0523 county="[1985-1993]南安县" + 0524 county="[1985-]安溪县" + 0525 county="[1985-]永春县" + 0526 county="[1985-]德化县" + 0527 county="[1985-]金门县" + 0581 county="[1989-]石狮市" + 0582 county="[1992-]晋江市" + 0583 county="[1993-]南安市" + 0600 county="[1985-]漳州市" + 0601 county="[1985-]市辖区" + 0602 county="[1985-]芗城区" + 0603 county="[1996-]龙文区" + 0604 county="[2021-]龙海区" + 0605 county="[2021-]长泰区" + 0621 county="[1985-1993]龙海县" + 0622 county="[1985-]云霄县" + 0623 county="[1985-]漳浦县" + 0624 county="[1985-]诏安县" + 0625 county="[1985-2021]长泰县" + 0626 county="[1985-]东山县" + 0627 county="[1985-]南靖县" + 0628 county="[1985-]平和县" + 0629 county="[1985-]华安县" + 0681 county="[1993-2021]龙海市" + 0700 county="[1994-]南平市" + 0701 county="[1994-]市辖区" + 0702 county="[1994-]延平区" + 0703 county="[2014-]建阳区" + 0721 county="[1994-]顺昌县" + 0722 county="[1994-]浦城县" + 0723 county="[1994-]光泽县" + 0724 county="[1994-]松溪县" + 0725 county="[1994-]政和县" + 0781 county="[1994-]邵武市" + 0782 county="[1994-]武夷山市" + 0783 county="[1994-]建瓯市" + 0784 county="[1994-2014]建阳市" + 0800 county="[1996-]龙岩市" + 0801 county="[1996-]市辖区" + 0802 county="[1996-]新罗区" + 0803 county="[2014-]永定区" + 0821 county="[1996-]长汀县" + 0822 county="[1996-2014]永定县" + 0823 county="[1996-]上杭县" + 0824 county="[1996-]武平县" + 0825 county="[1996-]连城县" + 0881 county="[1996-]漳平市" + 0900 county="[1999-]宁德市" + 0901 county="[1999-]市辖区" + 0902 county="[1999-]蕉城区" + 0921 county="[1999-]霞浦县" + 0922 county="[1999-]古田县" + 0923 county="[1999-]屏南县" + 0924 county="[1999-]寿宁县" + 0925 county="[1999-]周宁县" + 0926 county="[1999-]柘荣县" + 0981 county="[1999-]福安市" + 0982 county="[1999-]福鼎市" + 2100 county="[-1987]建阳地区,[1988-1993]南平地区" + 2101 county="[-1994]南平市" + 2102 county="[1983-1994]邵武市" + 2103 county="[1989-1994]武夷山市" + 2104 county="[1992-1994]建瓯市" + 2105 county="[1994-1994]建阳市" + 2121 county="[-1994]顺昌县" + 2122 county="[-1994]建阳县" + 2123 county="[-1992]建瓯县" + 2124 county="[-1994]浦城县" + 2125 county="[-1983]邵武县" + 2126 county="[-1989]崇安县" + 2127 county="[-1994]光泽县" + 2128 county="[-1994]松溪县" + 2129 county="[-1994]政和县" + 2200 county="[-1999]宁德地区" + 2201 county="[1988-1999]宁德市" + 2202 county="[1989-1999]福安市" + 2203 county="[1995-1999]福鼎市" + 2221 county="[-1988]宁德县" + 2222 county="[-1983]连江县" + 2223 county="[-1983]罗源县" + 2224 county="[-1995]福鼎县" + 2225 county="[-1999]霞浦县" + 2226 county="[-1989]福安县" + 2227 county="[-1999]古田县" + 2228 county="[-1999]屏南县" + 2229 county="[-1999]寿宁县" + 2230 county="[-1999]周宁县" + 2231 county="[-1999]柘荣县" + 2300 county="[-1983]莆田地区" + 2321 county="[-1983]闽清县" + 2322 county="[-1983]永泰县" + 2323 county="[-1983]长乐县" + 2324 county="[-1983]福清县" + 2325 county="[-1983]平潭县" + 2326 county="[-1983]莆田县" + 2327 county="[-1983]仙游县" + 2400 county="[-1985]晋江地区" + 2401 county="[-1985]泉州市" + 2421 county="[-1985]惠安县" + 2422 county="[-1985]晋江县" + 2423 county="[-1985]南安县" + 2424 county="[-1985]安溪县" + 2425 county="[-1985]永春县" + 2426 county="[-1985]德化县" + 2427 county="[-1985]金门县" + 2500 county="[-1985]龙溪地区" + 2501 county="[-1985]漳州市" + 2521 county="[-1985]龙海县" + 2522 county="[-1985]云霄县" + 2523 county="[-1985]漳浦县" + 2524 county="[-1985]诏安县" + 2525 county="[-1985]长泰县" + 2526 county="[-1985]东山县" + 2527 county="[-1985]南靖县" + 2528 county="[-1985]平和县" + 2529 county="[-1985]华安县" + 2600 county="[-1996]龙岩地区" + 2601 county="[1981-1996]龙岩市" + 2602 county="[1990-1996]漳平市" + 2621 county="[-1981]龙岩县" + 2622 county="[-1996]长汀县" + 2623 county="[-1996]永定县" + 2624 county="[-1996]上杭县" + 2625 county="[-1996]武平县" + 2626 county="[-1990]漳平县" + 2627 county="[-1996]连城县" + 2700 county="[-1983]三明地区" + 2701 county="[-1983]三明市" + 2721 county="[-1983]明溪县" + 2722 county="[-1983]永安县" + 2723 county="[-1983]清流县" + 2724 county="[-1983]宁化县" + 2725 county="[-1983]大田县" + 2726 county="[-1983]尤溪县" + 2727 county="[-1983]沙县" + 2728 county="[-1983]将乐县" + 2729 county="[-1983]泰宁县" + 2730 county="[-1983]建宁县" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]永安市" + 9002 county="[1987-1989]石狮市" +36 province="江西省" + 0000 county="江西省" + 0100 county="南昌市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]东湖区" + 0103 county="[1983-]西湖区" + 0104 county="[1983-]青云谱区" + 0105 county="[1983-2019]湾里区" + 0111 county="[1983-2001]郊区,[2002-]青山湖区" + 0112 county="[2015-]新建区" + 0113 county="[2019-]红谷滩区" + 0120 county="[-1983]市区" + 0121 county="南昌县" + 0122 county="[-2015]新建县" + 0123 county="[1983-]安义县" + 0124 county="[1983-]进贤县" + 0200 county="景德镇市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]昌江区" + 0203 county="[1983-]珠山区" + 0211 county="[1983-1988]鹅湖区" + 0212 county="[1983-1988]蛟潭区" + 0221 county="[1983-1992]乐平县" + 0222 county="[1988-]浮梁县" + 0281 county="[1992-]乐平市" + 0300 county="萍乡市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-1992]城关区,[1993-]安源区" + 0311 county="[1983-1997]上栗区" + 0312 county="[1983-1997]芦溪区" + 0313 county="[1983-]湘东区" + 0321 county="[1992-]莲花县" + 0322 county="[1997-]上栗县" + 0323 county="[1997-]芦溪县" + 0400 county="九江市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-2015]庐山区,[2016-]濂溪区" + 0403 county="[1983-]浔阳区" + 0404 county="[2017-]柴桑区" + 0421 county="[1983-2017]九江县" + 0422 county="[1983-1989]瑞昌县" + 0423 county="[1983-]武宁县" + 0424 county="[1983-]修水县" + 0425 county="[1983-]永修县" + 0426 county="[1983-]德安县" + 0427 county="[1983-2016]星子县" + 0428 county="[1983-]都昌县" + 0429 county="[1983-]湖口县" + 0430 county="[1983-]彭泽县" + 0481 county="[1989-]瑞昌市" + 0482 county="[2010-]共青城市" + 0483 county="[2016-]庐山市" + 0500 county="[1983-]新余市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-]渝水区" + 0521 county="[1983-]分宜县" + 0600 county="[1983-]鹰潭市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-]月湖区" + 0603 county="[2018-]余江区" + 0621 county="[1983-1996]贵溪县" + 0622 county="[1983-2018]余江县" + 0681 county="[1996-]贵溪市" + 0700 county="[1998-]赣州市" + 0701 county="[1998-]市辖区" + 0702 county="[1998-]章贡区" + 0703 county="[2013-]南康区" + 0704 county="[2016-]赣县区" + 0721 county="[1998-2016]赣县" + 0722 county="[1998-]信丰县" + 0723 county="[1998-]大余县" + 0724 county="[1998-]上犹县" + 0725 county="[1998-]崇义县" + 0726 county="[1998-]安远县" + 0727 county="[1998-2020]龙南县" + 0728 county="[1998-]定南县" + 0729 county="[1998-]全南县" + 0730 county="[1998-]宁都县" + 0731 county="[1998-]于都县" + 0732 county="[1998-]兴国县" + 0733 county="[1998-]会昌县" + 0734 county="[1998-]寻乌县" + 0735 county="[1998-]石城县" + 0781 county="[1998-]瑞金市" + 0782 county="[1998-2013]南康市" + 0783 county="[2020-]龙南市" + 0800 county="[2000-]吉安市" + 0801 county="[2000-]市辖区" + 0802 county="[2000-]吉州区" + 0803 county="[2000-]青原区" + 0821 county="[2000-]吉安县" + 0822 county="[2000-]吉水县" + 0823 county="[2000-]峡江县" + 0824 county="[2000-]新干县" + 0825 county="[2000-]永丰县" + 0826 county="[2000-]泰和县" + 0827 county="[2000-]遂川县" + 0828 county="[2000-]万安县" + 0829 county="[2000-]安福县" + 0830 county="[2000-]永新县" + 0881 county="[2000-]井冈山市" + 0900 county="[2000-]宜春市" + 0901 county="[2000-]市辖区" + 0902 county="[2000-]袁州区" + 0921 county="[2000-]奉新县" + 0922 county="[2000-]万载县" + 0923 county="[2000-]上高县" + 0924 county="[2000-]宜丰县" + 0925 county="[2000-]靖安县" + 0926 county="[2000-]铜鼓县" + 0981 county="[2000-]丰城市" + 0982 county="[2000-]樟树市" + 0983 county="[2000-]高安市" + 1000 county="[2000-]抚州市" + 1001 county="[2000-]市辖区" + 1002 county="[2000-]临川区" + 1003 county="[2016-]东乡区" + 1021 county="[2000-]南城县" + 1022 county="[2000-]黎川县" + 1023 county="[2000-]南丰县" + 1024 county="[2000-]崇仁县" + 1025 county="[2000-]乐安县" + 1026 county="[2000-]宜黄县" + 1027 county="[2000-]金溪县" + 1028 county="[2000-]资溪县" + 1029 county="[2000-2016]东乡县" + 1030 county="[2000-]广昌县" + 1100 county="[2000-]上饶市" + 1101 county="[2000-]市辖区" + 1102 county="[2000-]信州区" + 1103 county="[2015-]广丰区" + 1104 county="[2019-]广信区" + 1121 county="[2000-2019]上饶县" + 1122 county="[2000-2015]广丰县" + 1123 county="[2000-]玉山县" + 1124 county="[2000-]铅山县" + 1125 county="[2000-]横峰县" + 1126 county="[2000-]弋阳县" + 1127 county="[2000-]余干县" + 1128 county="[2000-2002]波阳县,[2003-]鄱阳县" + 1129 county="[2000-]万年县" + 1130 county="[2000-]婺源县" + 1181 county="[2000-]德兴市" + 2100 county="[-1998]赣州地区" + 2101 county="[-1998]赣州市" + 2102 county="[1994-1998]瑞金市" + 2103 county="[1995-1998]南康市" + 2121 county="[-1998]赣县" + 2122 county="[-1995]南康县" + 2123 county="[-1998]信丰县" + 2124 county="[-1998]大余县" + 2125 county="[-1998]上犹县" + 2126 county="[-1998]崇义县" + 2127 county="[-1998]安远县" + 2128 county="[-1998]龙南县" + 2129 county="[-1998]定南县" + 2130 county="[-1998]全南县" + 2131 county="[-1998]宁都县" + 2132 county="[-1998]于都县" + 2133 county="[-1998]兴国县" + 2134 county="[-1994]瑞金县" + 2135 county="[-1998]会昌县" + 2136 county="[-1998]寻乌县" + 2137 county="[-1998]石城县" + 2138 county="[-1983]广昌县" + 2200 county="[-2000]宜春地区" + 2201 county="[-2000]宜春市" + 2202 county="[1988-2000]丰城市" + 2203 county="[1988-2000]樟树市" + 2204 county="[1993-2000]高安市" + 2221 county="[-1988]丰城县" + 2222 county="[-1993]高安县" + 2223 county="[-1988]清江县" + 2224 county="[-1983]新余县" + 2225 county="[-1985]宜春县" + 2226 county="[-2000]奉新县" + 2227 county="[-2000]万载县" + 2228 county="[-2000]上高县" + 2229 county="[-2000]宜丰县" + 2230 county="[-1983]分宜县" + 2231 county="[-1983]安义县" + 2232 county="[-2000]靖安县" + 2233 county="[-2000]铜鼓县" + 2300 county="[-2000]上饶地区" + 2301 county="[-2000]上饶市" + 2302 county="[1990-2000]德兴市" + 2321 county="[-2000]上饶县" + 2322 county="[-2000]广丰县" + 2323 county="[-2000]玉山县" + 2324 county="[-2000]铅山县" + 2325 county="[-2000]横峰县" + 2326 county="[-2000]弋阳县" + 2327 county="[-1983]贵溪县" + 2328 county="[-1983]余江县" + 2329 county="[-2000]余干县" + 2330 county="[-2000]波阳县" + 2331 county="[-2000]万年县" + 2332 county="[-1983]乐平县" + 2333 county="[-1990]德兴县" + 2334 county="[-2000]婺源县" + 2400 county="[-2000]吉安地区" + 2401 county="[-2000]吉安市" + 2402 county="[1984-2000]井冈山市" + 2421 county="[-2000]吉安县" + 2422 county="[-2000]吉水县" + 2423 county="[-2000]峡江县" + 2424 county="[-2000]新干县" + 2425 county="[-2000]永丰县" + 2426 county="[-2000]泰和县" + 2427 county="[-2000]遂川县" + 2428 county="[-2000]万安县" + 2429 county="[-2000]安福县" + 2430 county="[-2000]永新县" + 2431 county="[-1992]莲花县" + 2432 county="[-2000]宁冈县" + 2433 county="[1981-1984]井冈山县" + 2500 county="[-2000]抚州地区" + 2501 county="[-1987]抚州市" + 2502 county="[1987-2000]临川市" + 2521 county="[-1987]临川县" + 2522 county="[-2000]南城县" + 2523 county="[-2000]黎川县" + 2524 county="[-2000]南丰县" + 2525 county="[-2000]崇仁县" + 2526 county="[-2000]乐安县" + 2527 county="[-2000]宜黄县" + 2528 county="[-2000]金溪县" + 2529 county="[-2000]资溪县" + 2530 county="[-1983]进贤县" + 2531 county="[-2000]东乡县" + 2532 county="[1983-2000]广昌县" + 2600 county="[-1983]九江地区" + 2621 county="[-1983]九江县" + 2622 county="[-1983]瑞昌县" + 2623 county="[-1983]武宁县" + 2624 county="[-1983]修水县" + 2625 county="[-1983]永修县" + 2626 county="[-1983]德安县" + 2627 county="[-1983]星子县" + 2628 county="[-1983]都昌县" + 2629 county="[-1983]湖口县" + 2630 county="[-1983]彭泽县" +37 province="山东省" + 0000 county="山东省" + 0100 county="济南市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]历下区" + 0103 county="[1983-]市中区" + 0104 county="[1983-]槐荫区" + 0105 county="[1983-]天桥区" + 0111 county="[1983-1987]郊区" + 0112 county="[1987-]历城区" + 0113 county="[2001-]长清区" + 0114 county="[2016-]章丘区" + 0115 county="[2018-]济阳区" + 0116 county="[2018-]莱芜区" + 0117 county="[2018-]钢城区" + 0120 county="[-1983]市区" + 0121 county="[-1987]历城县" + 0122 county="[-1992]章丘县" + 0123 county="[-2001]长清县" + 0124 county="[1985-]平阴县" + 0125 county="[1989-2018]济阳县" + 0126 county="[1989-]商河县" + 0181 county="[1992-2016]章丘市" + 0200 county="青岛市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]市南区" + 0203 county="[1983-]市北区" + 0204 county="[1983-1994]台东区" + 0205 county="[1983-2012]四方区" + 0206 county="[1983-1994]沧口区" + 0211 county="[1983-]黄岛区" + 0212 county="[1988-]崂山区" + 0213 county="[1994-]李沧区" + 0214 county="[1994-]城阳区" + 0215 county="[2017-]即墨区" + 0220 county="[-1983]市区" + 0221 county="[-1988]崂山县" + 0222 county="[-1989]即墨县" + 0223 county="[-1990]胶南县" + 0224 county="[-1987]胶县" + 0225 county="[1983-1990]莱西县" + 0226 county="[1983-1989]平度县" + 0281 county="[1989-]胶州市" + 0282 county="[1989-2017]即墨市" + 0283 county="[1989-]平度市" + 0284 county="[1990-2012]胶南市" + 0285 county="[1990-]莱西市" + 0300 county="淄博市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]淄川区" + 0303 county="[1983-]张店区" + 0304 county="[1983-]博山区" + 0305 county="[1983-]临淄区" + 0306 county="[1983-]周村区" + 0321 county="[1983-]桓台县" + 0322 county="[1989-]高青县" + 0323 county="[1989-]沂源县" + 0400 county="枣庄市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]市中区" + 0403 county="[1983-]薛城区" + 0404 county="[1983-]峄城区" + 0405 county="[1983-]台儿庄区" + 0406 county="[1983-]山亭区" + 0420 county="[-1983]市区" + 0421 county="[-1988]滕县" + 0481 county="[1989-]滕州市" + 0500 county="[1982-]东营市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-]东营区" + 0503 county="[1983-]河口区" + 0504 county="[1983-1987]牛庄区" + 0505 county="[2016-]垦利区" + 0521 county="[1982-2016]垦利县" + 0522 county="[1982-]利津县" + 0523 county="[1983-]广饶县" + 0600 county="[1983-]烟台市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-]芝罘区" + 0611 county="[1983-]福山区" + 0612 county="[1994-]牟平区" + 0613 county="[1994-]莱山区" + 0614 county="[2020-]蓬莱区" + 0620 county="[1983-1987]威海市" + 0621 county="[1983-1983]福山县" + 0622 county="[1983-1991]蓬莱县" + 0623 county="[1983-1986]黄县" + 0624 county="[1983-1991]招远县" + 0625 county="[1983-1988]掖县" + 0626 county="[1983-1983]莱西县" + 0627 county="[1983-1987]莱阳县" + 0628 county="[1983-1995]栖霞县" + 0629 county="[1983-1996]海阳县" + 0630 county="[1983-1987]乳山县" + 0631 county="[1983-1994]牟平县" + 0632 county="[1983-1987]文登县" + 0633 county="[1983-1987]荣成县" + 0634 county="[1983-2020]长岛县" + 0681 county="[1989-]龙口市" + 0682 county="[1989-]莱阳市" + 0683 county="[1989-]莱州市" + 0684 county="[1991-2020]蓬莱市" + 0685 county="[1991-]招远市" + 0686 county="[1995-]栖霞市" + 0687 county="[1996-]海阳市" + 0700 county="[1983-]潍坊市" + 0701 county="[1983-]市辖区" + 0702 county="[1983-]潍城区" + 0703 county="[1983-]寒亭区" + 0704 county="[1983-]坊子区" + 0705 county="[1994-]奎文区" + 0721 county="[1983-1986]益都县" + 0722 county="[1983-1994]安丘县" + 0723 county="[1983-1993]寿光县" + 0724 county="[1983-]临朐县" + 0725 county="[1983-]昌乐县" + 0726 county="[1983-1994]昌邑县" + 0727 county="[1983-1994]高密县" + 0728 county="[1983-1987]诸城县" + 0729 county="[1983-1992]五莲县" + 0781 county="[1989-]青州市" + 0782 county="[1989-]诸城市" + 0783 county="[1993-]寿光市" + 0784 county="[1994-]安丘市" + 0785 county="[1994-]高密市" + 0786 county="[1994-]昌邑市" + 0800 county="[1983-]济宁市" + 0801 county="[1983-]市辖区" + 0802 county="[1983-2013]市中区" + 0811 county="[1983-1992]郊区,[1993-]任城区" + 0812 county="[2013-]兖州区" + 0821 county="[1983-1983]济宁县" + 0822 county="[1983-1992]兖州县" + 0823 county="[1983-1986]曲阜县" + 0824 county="[1983-1983]泗水县" + 0825 county="[1983-1992]邹县" + 0826 county="[1983-]微山县" + 0827 county="[1983-]鱼台县" + 0828 county="[1983-]金乡县" + 0829 county="[1983-]嘉祥县" + 0830 county="[1985-]汶上县" + 0831 county="[1985-]泗水县" + 0832 county="[1989-]梁山县" + 0881 county="[1989-]曲阜市" + 0882 county="[1992-2013]兖州市" + 0883 county="[1992-]邹城市" + 0900 county="[1985-]泰安市" + 0901 county="[1985-]市辖区" + 0902 county="[1985-]泰山区" + 0911 county="[1985-1999]郊区,[2000-]岱岳区" + 0919 county="[1985-1986]莱芜市" + 0920 county="[1985-1986]新泰市" + 0921 county="[1985-]宁阳县" + 0922 county="[1985-1992]肥城县" + 0923 county="[1985-]东平县" + 0981 county="[1989-1992]莱芜市" + 0982 county="[1989-]新泰市" + 0983 county="[1992-]肥城市" + 1000 county="[1987-]威海市" + 1001 county="[1987-]市辖区" + 1002 county="[1987-]环翠区" + 1003 county="[2014-]文登区" + 1021 county="[1987-1993]乳山县" + 1022 county="[1987-1988]文登县" + 1023 county="[1987-1988]荣成县" + 1081 county="[1989-2014]文登市" + 1082 county="[1989-]荣成市" + 1083 county="[1993-]乳山市" + 1100 county="[1989-]日照市" + 1101 county="[1992-]市辖区" + 1102 county="[1992-]东港区" + 1103 county="[2004-]岚山区" + 1121 county="[1992-]五莲县" + 1122 county="[1992-]莒县" + 1200 county="[1992-2018]莱芜市" + 1201 county="[1992-2018]市辖区" + 1202 county="[1992-2018]莱城区" + 1203 county="[1992-2018]钢城区" + 1300 county="[1994-]临沂市" + 1301 county="[1994-]市辖区" + 1302 county="[1994-]兰山区" + 1311 county="[1994-]罗庄区" + 1312 county="[1994-]河东区" + 1321 county="[1994-]沂南县" + 1322 county="[1994-]郯城县" + 1323 county="[1994-]沂水县" + 1324 county="[1994-2013]苍山县,[2014-]兰陵县" + 1325 county="[1994-]费县" + 1326 county="[1994-]平邑县" + 1327 county="[1994-]莒南县" + 1328 county="[1994-]蒙阴县" + 1329 county="[1994-]临沭县" + 1400 county="[1994-]德州市" + 1401 county="[1994-]市辖区" + 1402 county="[1994-]德城区" + 1403 county="[2014-]陵城区" + 1421 county="[1994-2014]陵县" + 1422 county="[1994-]宁津县" + 1423 county="[1994-]庆云县" + 1424 county="[1994-]临邑县" + 1425 county="[1994-]齐河县" + 1426 county="[1994-]平原县" + 1427 county="[1994-]夏津县" + 1428 county="[1994-]武城县" + 1481 county="[1994-]乐陵市" + 1482 county="[1994-]禹城市" + 1500 county="[1997-]聊城市" + 1501 county="[1997-]市辖区" + 1502 county="[1997-]东昌府区" + 1503 county="[2019-]茌平区" + 1521 county="[1997-]阳谷县" + 1522 county="[1997-]莘县" + 1523 county="[1997-2019]茌平县" + 1524 county="[1997-]东阿县" + 1525 county="[1997-]冠县" + 1526 county="[1997-]高唐县" + 1581 county="[1997-]临清市" + 1600 county="[2000-]滨州市" + 1601 county="[2000-]市辖区" + 1602 county="[2000-]滨城区" + 1603 county="[2014-]沾化区" + 1621 county="[2000-]惠民县" + 1622 county="[2000-]阳信县" + 1623 county="[2000-]无棣县" + 1624 county="[2000-2014]沾化县" + 1625 county="[2000-]博兴县" + 1626 county="[2000-2018]邹平县" + 1681 county="[2018-]邹平市" + 1700 county="[2000-]菏泽市" + 1701 county="[2000-]市辖区" + 1702 county="[2000-]牡丹区" + 1703 county="[2016-]定陶区" + 1721 county="[2000-]曹县" + 1722 county="[2000-]单县" + 1723 county="[2000-]成武县" + 1724 county="[2000-]巨野县" + 1725 county="[2000-]郓城县" + 1726 county="[2000-]鄄城县" + 1727 county="[2000-2016]定陶县" + 1728 county="[2000-]东明县" + 2100 county="[-1983]烟台地区" + 2101 county="[-1983]烟台市" + 2102 county="[-1983]威海市" + 2121 county="[-1983]福山县" + 2122 county="[-1983]蓬莱县" + 2123 county="[-1983]黄县" + 2124 county="[-1983]招远县" + 2125 county="[-1983]掖县" + 2126 county="[-1983]莱西县" + 2127 county="[-1983]莱阳县" + 2128 county="[-1983]栖霞县" + 2129 county="[-1983]海阳县" + 2130 county="[-1983]乳山县" + 2131 county="[-1983]牟平县" + 2132 county="[-1983]文登县" + 2133 county="[-1983]荣成县" + 2134 county="[-1983]长岛县" + 2200 county="[-1980]昌潍地区,[1981-1982]潍坊地区" + 2201 county="[-1983]潍坊市" + 2221 county="[-1983]益都县" + 2222 county="[-1983]安丘县" + 2223 county="[-1983]寿光县" + 2224 county="[-1983]临朐县" + 2225 county="[-1983]昌乐县" + 2226 county="[-1983]昌邑县" + 2227 county="[-1983]高密县" + 2228 county="[-1983]诸城县" + 2229 county="[-1983]五莲县" + 2230 county="[-1983]平度县" + 2231 county="[-1983]潍县" + 2300 county="[-1991]惠民地区,[1992-1999]滨州地区" + 2301 county="[1982-2000]滨州市" + 2321 county="[-2000]惠民县" + 2322 county="[-1987]滨县" + 2323 county="[-2000]阳信县" + 2324 county="[-2000]无棣县" + 2325 county="[-2000]沾化县" + 2326 county="[-1982]利津县" + 2327 county="[-1983]广饶县" + 2328 county="[-2000]博兴县" + 2329 county="[-1983]桓台县" + 2330 county="[-2000]邹平县" + 2331 county="[-1989]高青县" + 2332 county="[-1982]垦利县" + 2400 county="[-1994]德州地区" + 2401 county="[-1994]德州市" + 2402 county="[1988-1994]乐陵市" + 2403 county="[1993-1994]禹城市" + 2421 county="[-1994]陵县" + 2422 county="[-1994]平原县" + 2423 county="[-1994]夏津县" + 2424 county="[-1994]武城县" + 2425 county="[-1994]齐河县" + 2426 county="[-1993]禹城县" + 2427 county="[-1988]乐陵县" + 2428 county="[-1994]临邑县" + 2429 county="[-1989]商河县" + 2430 county="[-1989]济阳县" + 2431 county="[-1994]宁津县" + 2432 county="[-1994]庆云县" + 2500 county="[-1997]聊城地区" + 2501 county="[1983-1997]聊城市" + 2502 county="[1983-1997]临清市" + 2521 county="[-1983]聊城县" + 2522 county="[-1997]阳谷县" + 2523 county="[-1997]莘县" + 2524 county="[-1997]茌平县" + 2525 county="[-1997]东阿县" + 2526 county="[-1997]冠县" + 2527 county="[-1997]高唐县" + 2528 county="[-1983]临清县" + 2600 county="[-1985]泰安地区" + 2601 county="[1982-1985]泰安市" + 2602 county="[1983-1985]莱芜市" + 2603 county="[1982-1982]新汶市,[1983-1985]新泰市" + 2621 county="[-1982]泰安县" + 2622 county="[-1983]莱芜县" + 2623 county="[-1983]新泰县" + 2624 county="[-1985]宁阳县" + 2625 county="[-1985]肥城县" + 2626 county="[-1985]东平县" + 2627 county="[-1985]平阴县" + 2628 county="[-1982]新汶县" + 2629 county="[1983-1985]汶上县" + 2630 county="[1983-1985]泗水县" + 2700 county="[-1983]济宁地区" + 2701 county="[-1983]济宁市" + 2721 county="[-1983]济宁县" + 2722 county="[-1983]兖州县" + 2723 county="[-1983]曲阜县" + 2724 county="[-1983]泗水县" + 2725 county="[-1983]邹县" + 2726 county="[-1983]微山县" + 2727 county="[-1983]鱼台县" + 2728 county="[-1983]金乡县" + 2729 county="[-1983]嘉祥县" + 2730 county="[-1983]汶上县" + 2800 county="[-1994]临沂地区" + 2801 county="[1983-1994]临沂市" + 2802 county="[1985-1989]日照市" + 2821 county="[-1983]临沂县" + 2822 county="[-1994]郯城县" + 2823 county="[-1994]苍山县" + 2824 county="[-1994]莒南县" + 2825 county="[-1985]日照县" + 2826 county="[-1992]莒县" + 2827 county="[-1994]沂水县" + 2828 county="[-1989]沂源县" + 2829 county="[-1994]蒙阴县" + 2830 county="[-1994]平邑县" + 2831 county="[-1994]费县" + 2832 county="[-1994]沂南县" + 2833 county="[-1994]临沭县" + 2900 county="[-2000]菏泽地区" + 2901 county="[1983-2000]菏泽市" + 2921 county="[-1983]菏泽县" + 2922 county="[-2000]曹县" + 2923 county="[-2000]定陶县" + 2924 county="[-2000]成武县" + 2925 county="[-2000]单县" + 2926 county="[-2000]巨野县" + 2927 county="[-1989]梁山县" + 2928 county="[-2000]郓城县" + 2929 county="[-2000]鄄城县" + 2930 county="[-2000]东明县" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]青州市" + 9002 county="[1986-1989]龙口市" + 9003 county="[1986-1989]曲阜市" + 9004 county="[1986-1989]莱芜市" + 9005 county="[1986-1989]新泰市" + 9006 county="[1987-1989]胶州市" + 9007 county="[1987-1989]诸城市" + 9008 county="[1987-1989]莱阳市" + 9009 county="[1988-1989]莱州市" + 9010 county="[1988-1989]滕州市" + 9011 county="[1988-1989]文登市" + 9012 county="[1988-1989]荣成市" +41 province="河南省" + 0000 county="河南省" + 0100 county="郑州市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]中原区" + 0103 county="[1983-]二七区" + 0104 county="[1983-1982]向阳回族区,[1983-]管城回族区" + 0105 county="[1983-]金水区" + 0106 county="[1983-]上街区" + 0107 county="[1983-1987]新密区" + 0108 county="[1987-2002]邙山区,[2003-]惠济区" + 0111 county="[1983-1987]金海区" + 0112 county="[1983-1987]郊区" + 0120 county="[-1983]市区" + 0121 county="[-1994]荥阳县" + 0122 county="[1983-]中牟县" + 0123 county="[1983-1994]新郑县" + 0124 county="[1983-1991]巩县" + 0125 county="[1983-1994]登封县" + 0126 county="[1983-1994]密县" + 0181 county="[1991-]巩义市" + 0182 county="[1994-]荥阳市" + 0183 county="[1994-]新密市" + 0184 county="[1994-]新郑市" + 0185 county="[1994-]登封市" + 0200 county="开封市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]龙亭区" + 0203 county="[1983-]顺河回族区" + 0204 county="[1983-]鼓楼区" + 0205 county="[1983-2004]南关区,[2005-]禹王台区" + 0211 county="[1983-2004]郊区,[2005-2013]金明区" + 0212 county="[2014-]祥符区" + 0221 county="[1983-]杞县" + 0222 county="[1983-]通许县" + 0223 county="[1983-]尉氏县" + 0224 county="[1983-2014]开封县" + 0225 county="[1983-]兰考县" + 0300 county="洛阳市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]老城区" + 0303 county="[1983-]西工区" + 0304 county="[1983-]瀍河回族区" + 0305 county="[1983-]涧西区" + 0306 county="[1983-2021]吉利区" + 0307 county="[2021-]偃师区" + 0308 county="[2021-]孟津区" + 0311 county="[1983-1999]郊区,[2000-]洛龙区" + 0321 county="[1983-1993]偃师县" + 0322 county="[1983-2021]孟津县" + 0323 county="[1983-]新安县" + 0324 county="[1986-]栾川县" + 0325 county="[1986-]嵩县" + 0326 county="[1986-]汝阳县" + 0327 county="[1986-]宜阳县" + 0328 county="[1986-]洛宁县" + 0329 county="[1986-]伊川县" + 0381 county="[1993-2021]偃师市" + 0400 county="平顶山市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]新华区" + 0403 county="[1983-]卫东区" + 0404 county="[1997-]石龙区" + 0411 county="[1983-1993]郊区,[1994-]湛河区" + 0412 county="[1982-1990]舞钢区" + 0421 county="[1983-]宝丰县" + 0422 county="[1983-]叶县" + 0423 county="[1983-]鲁山县" + 0424 county="[1986-1988]临汝县" + 0425 county="[1986-]郏县" + 0426 county="[1986-1997]襄城县" + 0481 county="[1990-]舞钢市" + 0482 county="[1989-]汝州市" + 0500 county="安阳市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-]文峰区" + 0503 county="[1983-]北关区" + 0504 county="[1983-2002]铁西区" + 0505 county="[2002-]殷都区" + 0506 county="[2002-]龙安区" + 0511 county="[1983-2002]郊区" + 0521 county="[1983-1994]林县" + 0522 county="[1983-]安阳县" + 0523 county="[1983-]汤阴县" + 0524 county="[1983-1986]淇县" + 0525 county="[1983-1986]浚县" + 0526 county="[1986-]滑县" + 0527 county="[1986-]内黄县" + 0581 county="[1994-]林州市" + 0600 county="鹤壁市" + 0601 county="[1983-]市辖区" + 0602 county="[1983-]鹤山区" + 0603 county="[1983-]山城区" + 0611 county="[1983-2000]郊区,[2001-]淇滨区" + 0621 county="[1986-]浚县" + 0622 county="[1986-]淇县" + 0700 county="新乡市" + 0701 county="[1983-]市辖区" + 0702 county="[1983-]红旗区" + 0703 county="[1983-2002]新华区,[2003-]卫滨区" + 0704 county="[1983-2002]北站区,[2003-]凤泉区" + 0711 county="[1983-2002]郊区,[2003-]牧野区" + 0721 county="[1983-]新乡县" + 0722 county="[1983-1988]汲县" + 0723 county="[1986-1988]辉县" + 0724 county="[1986-]获嘉县" + 0725 county="[1986-]原阳县" + 0726 county="[1986-]延津县" + 0727 county="[1986-]封丘县" + 0728 county="[1986-2019]长垣县" + 0781 county="[1989-]卫辉市" + 0782 county="[1989-]辉县市" + 0783 county="[2019-]长垣市" + 0800 county="焦作市" + 0801 county="[1983-]市辖区" + 0802 county="[1983-]解放区" + 0803 county="[1983-]中站区" + 0804 county="[1983-]马村区" + 0811 county="[1983-1989]郊区,[1990-]山阳区" + 0821 county="[1983-]修武县" + 0822 county="[1983-]博爱县" + 0823 county="[1986-]武陟县" + 0824 county="[1986-1989]沁阳县" + 0825 county="[1986-]温县" + 0826 county="[1986-1996]孟县" + 0827 county="[1986-1988]济源县" + 0881 county="[1989-1997]济源市" + 0882 county="[1989-]沁阳市" + 0883 county="[1996-]孟州市" + 0900 county="[1983-]濮阳市" + 0901 county="[1983-]市辖区" + 0902 county="[1985-2001]市区,[2002-]华龙区" + 0911 county="[1983-1987]郊区" + 0921 county="[1983-1986]滑县" + 0922 county="[1983-]清丰县" + 0923 county="[1983-]南乐县" + 0924 county="[1983-1986]内黄县" + 0925 county="[1983-1986]长垣县" + 0926 county="[1983-]范县" + 0927 county="[1983-]台前县" + 0928 county="[1987-]濮阳县" + 1000 county="[1986-]许昌市" + 1001 county="[1986-]市辖区" + 1002 county="[1986-]魏都区" + 1003 county="[2016-]建安区" + 1021 county="[1986-1988]禹县" + 1022 county="[1986-1993]长葛县" + 1023 county="[1986-2016]许昌县" + 1024 county="[1986-]鄢陵县" + 1025 county="[1997-]襄城县" + 1081 county="[1989-]禹州市" + 1082 county="[1993-]长葛市" + 1100 county="[1986-]漯河市" + 1101 county="[1986-]市辖区" + 1102 county="[1986-]源汇区" + 1103 county="[2004-]郾城区" + 1104 county="[2004-]召陵区" + 1121 county="[1986-]舞阳县" + 1122 county="[1986-]临颍县" + 1123 county="[1986-2004]郾城县" + 1200 county="[1986-]三门峡市" + 1201 county="[1986-]市辖区" + 1202 county="[1986-]湖滨区" + 1203 county="[2015-]陕州区" + 1219 county="[1986-1989]义马市" + 1221 county="[1986-]渑池县" + 1222 county="[1986-2015]陕县" + 1223 county="[1986-1993]灵宝县" + 1224 county="[1986-]卢氏县" + 1281 county="[1989-]义马市" + 1282 county="[1993-]灵宝市" + 1300 county="[1994-]南阳市" + 1301 county="[1994-]市辖区" + 1302 county="[1994-]宛城区" + 1303 county="[1994-]卧龙区" + 1321 county="[1994-]南召县" + 1322 county="[1994-]方城县" + 1323 county="[1994-]西峡县" + 1324 county="[1994-]镇平县" + 1325 county="[1994-]内乡县" + 1326 county="[1994-]淅川县" + 1327 county="[1994-]社旗县" + 1328 county="[1994-]唐河县" + 1329 county="[1994-]新野县" + 1330 county="[1994-]桐柏县" + 1381 county="[1994-]邓州市" + 1400 county="[1997-]商丘市" + 1401 county="[1997-]市辖区" + 1402 county="[1997-]梁园区" + 1403 county="[1997-]睢阳区" + 1421 county="[1997-]民权县" + 1422 county="[1997-]睢县" + 1423 county="[1997-]宁陵县" + 1424 county="[1997-]柘城县" + 1425 county="[1997-]虞城县" + 1426 county="[1997-]夏邑县" + 1481 county="[1997-]永城市" + 1500 county="[1998-]信阳市" + 1501 county="[1998-]市辖区" + 1502 county="[1998-]浉河区" + 1503 county="[1998-]平桥区" + 1521 county="[1998-]罗山县" + 1522 county="[1998-]光山县" + 1523 county="[1998-]新县" + 1524 county="[1998-]商城县" + 1525 county="[1998-]固始县" + 1526 county="[1998-]潢川县" + 1527 county="[1998-]淮滨县" + 1528 county="[1998-]息县" + 1600 county="[2000-]周口市" + 1601 county="[2000-]市辖区" + 1602 county="[2000-]川汇区" + 1603 county="[2019-]淮阳区" + 1621 county="[2000-]扶沟县" + 1622 county="[2000-]西华县" + 1623 county="[2000-]商水县" + 1624 county="[2000-]沈丘县" + 1625 county="[2000-]郸城县" + 1626 county="[2000-2019]淮阳县" + 1627 county="[2000-]太康县" + 1628 county="[2000-]鹿邑县" + 1681 county="[2000-]项城市" + 1700 county="[2000-]驻马店市" + 1701 county="[2000-]市辖区" + 1702 county="[2000-]驿城区" + 1721 county="[2000-]西平县" + 1722 county="[2000-]上蔡县" + 1723 county="[2000-]平舆县" + 1724 county="[2000-]正阳县" + 1725 county="[2000-]确山县" + 1726 county="[2000-]泌阳县" + 1727 county="[2000-]汝南县" + 1728 county="[2000-]遂平县" + 1729 county="[2000-]新蔡县" + 2100 county="[-1983]安阳地区" + 2121 county="[-1983]林县" + 2122 county="[-1983]安阳县" + 2123 county="[-1983]汤阴县" + 2124 county="[-1983]浚县" + 2125 county="[-1983]淇县" + 2126 county="[-1983]濮阳县" + 2127 county="[-1983]滑县" + 2128 county="[-1983]清丰县" + 2129 county="[-1983]南乐县" + 2130 county="[-1983]内黄县" + 2131 county="[-1983]长垣县" + 2132 county="[-1983]范县" + 2133 county="[-1983]台前县" + 2200 county="[-1986]新乡地区" + 2221 county="[-1986]沁阳县" + 2222 county="[-1983]博爱县" + 2223 county="[-1986]济源县" + 2224 county="[-1986]孟县" + 2225 county="[-1986]温县" + 2226 county="[-1986]武陟县" + 2227 county="[-1983]修武县" + 2228 county="[-1986]获嘉县" + 2229 county="[-1983]新乡县" + 2230 county="[-1986]辉县" + 2231 county="[-1983]汲县" + 2232 county="[-1986]原阳县" + 2233 county="[-1986]延津县" + 2234 county="[-1986]封丘县" + 2300 county="[-1997]商丘地区" + 2301 county="[-1997]商丘市" + 2302 county="[1996-1997]永城市" + 2321 county="[-1997]虞城县" + 2322 county="[-1997]商丘县" + 2323 county="[-1997]民权县" + 2324 county="[-1997]宁陵县" + 2325 county="[-1997]睢县" + 2326 county="[-1997]夏邑县" + 2327 county="[-1997]柘城县" + 2328 county="[-1996]永城县" + 2400 county="[-1983]开封地区" + 2421 county="[-1983]杞县" + 2422 county="[-1983]通许县" + 2423 county="[-1983]尉氏县" + 2424 county="[-1983]开封县" + 2425 county="[-1983]中牟县" + 2426 county="[-1983]新郑县" + 2427 county="[-1983]巩县" + 2428 county="[-1983]登封县" + 2429 county="[-1983]密县" + 2430 county="[-1983]兰考县" + 2500 county="[-1986]洛阳地区" + 2501 county="[-1986]三门峡市" + 2502 county="[1981-1986]义马市" + 2521 county="[-1983]偃师县" + 2522 county="[-1983]孟津县" + 2523 county="[-1983]新安县" + 2524 county="[-1986]渑池县" + 2525 county="[-1986]陕县" + 2526 county="[-1986]灵宝县" + 2527 county="[-1986]伊川县" + 2528 county="[-1986]汝阳县" + 2529 county="[-1986]嵩县" + 2530 county="[-1986]洛宁县" + 2531 county="[-1986]卢氏县" + 2532 county="[-1986]栾川县" + 2533 county="[-1986]临汝县" + 2534 county="[-1986]宜阳县" + 2535 county="[-1981]义马矿区" + 2600 county="[-1986]许昌地区" + 2601 county="[-1986]许昌市" + 2602 county="[-1986]漯河市" + 2621 county="[-1986]长葛县" + 2622 county="[-1986]禹县" + 2623 county="[-1986]鄢陵县" + 2624 county="[-1986]许昌县" + 2625 county="[-1986]郏县" + 2626 county="[-1986]临颍县" + 2627 county="[-1986]襄城县" + 2628 county="[-1983]宝丰县" + 2629 county="[-1986]郾城县" + 2630 county="[-1983]叶县" + 2631 county="[-1983]鲁山县" + 2632 county="[-1986]舞阳县" + 2700 county="[-2000]周口地区" + 2701 county="[-2000]周口市" + 2702 county="[1993-2000]项城市" + 2721 county="[-2000]扶沟县" + 2722 county="[-2000]西华县" + 2723 county="[-2000]商水县" + 2724 county="[-2000]太康县" + 2725 county="[-2000]鹿邑县" + 2726 county="[-2000]郸城县" + 2727 county="[-2000]淮阳县" + 2728 county="[-2000]沈丘县" + 2729 county="[-1993]项城县" + 2800 county="[-2000]驻马店地区" + 2801 county="[-2000]驻马店市" + 2821 county="[-2000]确山县" + 2822 county="[-2000]泌阳县" + 2823 county="[-2000]遂平县" + 2824 county="[-2000]西平县" + 2825 county="[-2000]上蔡县" + 2826 county="[-2000]汝南县" + 2827 county="[-2000]平舆县" + 2828 county="[-2000]新蔡县" + 2829 county="[-2000]正阳县" + 2900 county="[-1994]南阳地区" + 2901 county="[-1994]南阳市" + 2902 county="[1988-1994]邓州市" + 2921 county="[-1994]南召县" + 2922 county="[-1994]方城县" + 2923 county="[-1994]西峡县" + 2924 county="[-1994]南阳县" + 2925 county="[-1994]镇平县" + 2926 county="[-1994]内乡县" + 2927 county="[-1994]淅川县" + 2928 county="[-1994]社旗县" + 2929 county="[-1994]唐河县" + 2930 county="[-1988]邓县" + 2931 county="[-1994]新野县" + 2932 county="[-1994]桐柏县" + 3000 county="[-1998]信阳地区" + 3001 county="[-1998]信阳市" + 3021 county="[-1998]息县" + 3022 county="[-1998]淮滨县" + 3023 county="[-1998]信阳县" + 3024 county="[-1998]潢川县" + 3025 county="[-1998]光山县" + 3026 county="[-1998]固始县" + 3027 county="[-1998]商城县" + 3028 county="[-1998]罗山县" + 3029 county="[-1998]新县" + 9000 county="[1986-]省直辖县级行政单位" + 9001 county="[1986-1989]义马市,[1997-]济源市" + 9002 county="[1988-1989]汝州市" + 9003 county="[1988-1989]济源市" + 9004 county="[1988-1989]禹州市" + 9005 county="[1988-1989]卫辉市" + 9006 county="[1988-1989]辉县市" +42 province="湖北省" + 0000 county="湖北省" + 0100 county="武汉市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]江岸区" + 0103 county="[1983-]江汉区" + 0104 county="[1983-]硚口区" + 0105 county="[1983-]汉阳区" + 0106 county="[1983-]武昌区" + 0107 county="[1983-]青山区" + 0111 county="[1983-]洪山区" + 0112 county="[1983-]东西湖区" + 0113 county="[1984-]汉南区" + 0114 county="[1992-]蔡甸区" + 0115 county="[1995-]江夏区" + 0116 county="[1998-]黄陂区" + 0117 county="[1998-]新洲区" + 0120 county="[-1983]市区" + 0121 county="[-1992]汉阳县" + 0122 county="[-1995]武昌县" + 0123 county="[1983-1998]黄陂县" + 0124 county="[1983-1998]新洲县" + 0200 county="黄石市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]黄石港区" + 0203 county="[1983-2000]石灰窑区,[2001-]西塞山区" + 0204 county="[1983-]下陆区" + 0205 county="[1983-]铁山区" + 0211 county="[1983-1985]郊区" + 0220 county="[-1983]市区" + 0221 county="[-1994]大冶县" + 0222 county="[1996-]阳新县" + 0281 county="[1994-]大冶市" + 0300 county="十堰市" + 0301 county="[1984-]市辖区" + 0302 county="[1984-]茅箭区" + 0303 county="[1984-]张湾区" + 0304 county="[2014-]郧阳区" + 0321 county="[1994-2014]郧县" + 0322 county="[1994-]郧西县" + 0323 county="[1994-]竹山县" + 0324 county="[1994-]竹溪县" + 0325 county="[1994-]房县" + 0381 county="[1994-]丹江口市" + 0400 county="[-1994]沙市市" + 0500 county="宜昌市" + 0501 county="[1986-]市辖区" + 0502 county="[1986-]西陵区" + 0503 county="[1986-]伍家岗区" + 0504 county="[1986-]点军区" + 0505 county="[1995-]猇亭区" + 0506 county="[2001-]夷陵区" + 0521 county="[1992-2001]宜昌县" + 0523 county="[1992-1996]枝江县" + 0525 county="[1992-]远安县" + 0526 county="[1992-]兴山县" + 0527 county="[1992-]秭归县" + 0528 county="[1992-]长阳土家族自治县" + 0529 county="[1992-]五峰土家族自治县" + 0581 county="[1987-1997]枝城市,[1998-]宜都市" + 0582 county="[1992-]当阳市" + 0583 county="[1996-]枝江市" + 0600 county="[-2009]襄樊市,[2010-]襄阳市" + 0601 county="[1984-]市辖区" + 0602 county="[1984-]襄城区" + 0603 county="[1984-1995]樊东区" + 0604 county="[1984-1995]樊西区" + 0605 county="[1984-1995]郊区" + 0606 county="[1995-]樊城区" + 0607 county="[2001-2009]襄阳区,[2010-]襄州区" + 0619 county="[1983-1986]随州市" + 0620 county="[1983-1986]老河口市" + 0621 county="[1983-2001]襄阳县" + 0622 county="[1983-1988]枣阳县" + 0623 county="[1983-1994]宜城县" + 0624 county="[1983-]南漳县" + 0625 county="[1983-]谷城县" + 0626 county="[1983-]保康县" + 0681 county="[1989-1994]随州市" + 0682 county="[1989-]老河口市" + 0683 county="[1989-]枣阳市" + 0684 county="[1994-]宜城市" + 0700 county="[1983-]鄂州市" + 0701 county="[1987-]市辖区" + 0702 county="[1987-]梁子湖区" + 0703 county="[1987-]华容区" + 0704 county="[1987-]鄂城区" + 0800 county="[1983-]荆门市" + 0801 county="[1985-]市辖区" + 0802 county="[1985-]东宝区" + 0803 county="[1985-1998]沙洋区" + 0804 county="[2001-]掇刀区" + 0821 county="[1996-2018]京山县" + 0822 county="[1998-]沙洋县" + 0881 county="[1996-]钟祥市" + 0882 county="[2018-]京山市" + 0900 county="[1993-]孝感市" + 0901 county="[1993-]市辖区" + 0902 county="[1993-]孝南区" + 0921 county="[1993-]孝昌县" + 0922 county="[1993-]大悟县" + 0923 county="[1993-]云梦县" + 0924 county="[1993-1997]汉川县" + 0981 county="[1993-]应城市" + 0982 county="[1993-]安陆市" + 0983 county="[1993-2000]广水市" + 0984 county="[1997-]汉川市" + 1000 county="[1994-1995]荆沙市,[1996-]荆州市" + 1001 county="[1994-]市辖区" + 1002 county="[1994-]沙市区" + 1003 county="[1994-]荆州区" + 1004 county="[1994-1998]江陵区" + 1021 county="[1994-1995]松滋县" + 1022 county="[1994-]公安县" + 1023 county="[1994-2020]监利县" + 1024 county="[1998-]江陵县" + 1025 county="[1994-1996]京山县" + 1081 county="[1994-]石首市" + 1082 county="[1994-1996]钟祥市" + 1083 county="[1994-]洪湖市" + 1087 county="[1995-]松滋市" + 1088 county="[2020-]监利市" + 1100 county="[1995-]黄冈市" + 1101 county="[1995-]市辖区" + 1102 county="[1995-]黄州区" + 1121 county="[1995-]团风县" + 1122 county="[1995-]红安县" + 1123 county="[1995-]罗田县" + 1124 county="[1995-]英山县" + 1125 county="[1995-]浠水县" + 1126 county="[1995-]蕲春县" + 1127 county="[1995-]黄梅县" + 1181 county="[1995-]麻城市" + 1182 county="[1995-]武穴市" + 1200 county="[1998-]咸宁市" + 1201 county="[1998-]市辖区" + 1202 county="[1998-]咸安区" + 1221 county="[1998-]嘉鱼县" + 1222 county="[1998-]通城县" + 1223 county="[1998-]崇阳县" + 1224 county="[1998-]通山县" + 1281 county="[1998-]赤壁市" + 1300 county="[2000-]随州市" + 1301 county="[2000-]市辖区" + 1302 county="[2000-2009]曾都区" + 1303 county="[2009-]曾都区" + 1321 county="[2009-]随县" + 1381 county="[2000-]广水市" + 2100 county="[-1995]黄冈地区" + 2101 county="[1986-1995]麻城市" + 2102 county="[1987-1995]武穴市" + 2103 county="[1990-1995]黄州市" + 2121 county="[-1990]黄冈县" + 2122 county="[-1983]新洲县" + 2123 county="[-1995]红安县" + 2124 county="[-1986]麻城县" + 2125 county="[-1995]罗田县" + 2126 county="[-1995]英山县" + 2127 county="[-1995]浠水县" + 2128 county="[-1995]蕲春县" + 2129 county="[-1987]广济县" + 2130 county="[-1995]黄梅县" + 2131 county="[-1983]鄂城县" + 2200 county="[-1993]孝感地区" + 2201 county="[1983-1993]孝感市" + 2202 county="[1986-1993]应城市" + 2203 county="[1987-1993]安陆市" + 2204 county="[1988-1993]广水市" + 2221 county="[-1983]孝感县" + 2222 county="[-1983]黄陂县" + 2223 county="[-1993]大悟县" + 2224 county="[-1988]应山县" + 2225 county="[-1987]安陆县" + 2226 county="[-1993]云梦县" + 2227 county="[-1986]应城县" + 2228 county="[-1993]汉川县" + 2300 county="[-1998]咸宁地区" + 2301 county="[1983-1998]咸宁市" + 2302 county="[1986-1998]蒲圻市" + 2321 county="[-1983]咸宁县" + 2322 county="[-1998]嘉鱼县" + 2323 county="[-1986]蒲圻县" + 2324 county="[-1998]通城县" + 2325 county="[-1998]崇阳县" + 2326 county="[-1998]通山县" + 2327 county="[-1996]阳新县" + 2400 county="[-1994]荆州地区" + 2401 county="[1986-1994]仙桃市" + 2402 county="[1986-1994]石首市" + 2403 county="[1987-1994]洪湖市" + 2404 county="[1987-1994]天门市" + 2405 county="[1988-1994]潜江市" + 2406 county="[1992-1994]钟祥市" + 2421 county="[-1994]江陵县" + 2422 county="[-1994]松滋县" + 2423 county="[-1994]公安县" + 2424 county="[-1986]石首县" + 2425 county="[-1994]监利县" + 2426 county="[-1987]洪湖县" + 2427 county="[-1986]沔阳县" + 2428 county="[-1987]天门县" + 2429 county="[-1988]潜江县" + 2430 county="[-1983]荆门县" + 2431 county="[-1992]钟祥县" + 2432 county="[-1994]京山县" + 2500 county="[-1983]襄阳地区" + 2501 county="[-1983]随州市" + 2502 county="[-1983]老河口市" + 2521 county="[-1983]襄阳县" + 2522 county="[-1983]枣阳县" + 2523 county="[-1983]随县" + 2524 county="[-1983]宜城县" + 2525 county="[-1983]南漳县" + 2526 county="[-1983]光化县" + 2527 county="[-1983]谷城县" + 2528 county="[-1983]保康县" + 2600 county="[-1994]郧阳地区" + 2601 county="[1983-1994]丹江口市" + 2621 county="[-1983]均县" + 2622 county="[-1994]郧县" + 2623 county="[-1994]郧西县" + 2624 county="[-1994]竹山县" + 2625 county="[-1994]竹溪县" + 2626 county="[-1994]房县" + 2627 county="[-1983]神农架林区" + 2700 county="[-1992]宜昌地区" + 2701 county="[1987-1992]枝城市" + 2702 county="[1988-1992]当阳市" + 2721 county="[-1992]宜昌县" + 2722 county="[-1987]宜都县" + 2723 county="[-1992]枝江县" + 2724 county="[-1988]当阳县" + 2725 county="[-1992]远安县" + 2726 county="[-1992]兴山县" + 2727 county="[-1992]秭归县" + 2728 county="[-1983]长阳县,[1984-1992]长阳土家族自治县" + 2729 county="[-1983]五峰县,[1984-1992]五峰土家族自治县" + 2800 county="[-1982]恩施地区,[1983-1992]鄂西土家族苗族自治州,[1993-]恩施土家族苗族自治州" + 2801 county="[1981-]恩施市" + 2802 county="[1986-]利川市" + 2821 county="[-1983]恩施县" + 2822 county="建始县" + 2823 county="巴东县" + 2824 county="[-1986]利川县" + 2825 county="宣恩县" + 2826 county="咸丰县" + 2827 county="[-1982]来凤土家族自治县,[1983-]来凤县" + 2828 county="[-1982]鹤峰土家族自治县,[1983-]鹤峰县" + 2900 county="林区" + 2921 county="神农架林区" + 9000 county="[1986-]省直辖县级行政单位" + 9001 county="随州市" + 9002 county="[1986-1989]老河口市" + 9003 county="[1988-1989]枣阳市" + 9004 county="[1994-]仙桃市" + 9005 county="[1994-]潜江市" + 9006 county="[1994-]天门市" + 9021 county="神农架林区" +43 province="湖南省" + 0000 county="湖南省" + 0100 county="长沙市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-1995]东区,[1996-]芙蓉区" + 0103 county="[1983-1995]南区,[1996-]天心区" + 0104 county="[1983-1995]西区,[1996-]岳麓区" + 0105 county="[1983-1995]北区,[1996-]开福区" + 0111 county="[1983-1995]郊区,[1996-]雨花区" + 0112 county="[2011-]望城区" + 0120 county="[-1983]市区" + 0121 county="长沙县" + 0122 county="[-2011]望城县" + 0123 county="[1983-1993]浏阳县" + 0124 county="[1983-2017]宁乡县" + 0181 county="[1993-]浏阳市" + 0182 county="[2017-]宁乡市" + 0200 county="株洲市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-1996]东区,[1997-]荷塘区" + 0203 county="[1983-1996]北区,[1997-]芦淞区" + 0204 county="[1983-1996]南区,[1997-]石峰区" + 0211 county="[1983-1996]郊区,[1997-]天元区" + 0212 county="[2018-]渌口区" + 0219 county="[1985-1986]醴陵市" + 0220 county="[-1983]市区" + 0221 county="[-2018]株洲县" + 0222 county="[1983-1985]醴陵县" + 0223 county="[1983-]攸县" + 0224 county="[1983-]茶陵县" + 0225 county="[1983-1993]酃县,[1994-]炎陵县" + 0281 county="[1989-]醴陵市" + 0300 county="湘潭市" + 0301 county="[1983-]市辖区" + 0302 county="[1984-]雨湖区" + 0303 county="[1984-1992]湘江区" + 0304 county="[1984-]岳塘区" + 0305 county="[1984-1992]板塘区" + 0306 county="[1988-1990]韶山区" + 0311 county="[1984-1992]郊区" + 0312 county="[1984-1988]韶山区" + 0321 county="湘潭县" + 0322 county="[-1986]湘乡县" + 0381 county="[1989-]湘乡市" + 0382 county="[1990-]韶山市" + 0400 county="衡阳市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-2001]江东区" + 0403 county="[1983-2001]城南区" + 0404 county="[1983-2001]城北区" + 0405 county="[2001-]珠晖区" + 0406 county="[2001-]雁峰区" + 0407 county="[2001-]石鼓区" + 0408 county="[2001-]蒸湘区" + 0411 county="[1983-2001]郊区" + 0412 county="[1984-]南岳区" + 0421 county="[1983-]衡阳县" + 0422 county="[1983-]衡南县" + 0423 county="[1983-]衡山县" + 0424 county="[1983-]衡东县" + 0425 county="[1983-1996]常宁县" + 0426 county="[1983-]祁东县" + 0427 county="[1983-1986]耒阳县" + 0481 county="[1989-]耒阳市" + 0482 county="[1996-]常宁市" + 0500 county="邵阳市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-1996]东区,[1997-]双清区" + 0503 county="[1983-1996]西区,[1997-]大祥区" + 0504 county="[1983-1987]桥头区" + 0511 county="[1983-1996]郊区,[1997-]北塔区" + 0521 county="[1983-2019]邵东县" + 0522 county="[1983-]新邵县" + 0523 county="[1986-]邵阳县" + 0524 county="[1986-]隆回县" + 0525 county="[1986-]洞口县" + 0526 county="[1986-1994]武冈县" + 0527 county="[1986-]绥宁县" + 0528 county="[1986-]新宁县" + 0529 county="[1986-]城步苗族自治县" + 0581 county="[1994-]武冈市" + 0582 county="[2019-]邵东市" + 0600 county="[1983-]岳阳市" + 0601 county="[1984-]市辖区" + 0602 county="[1984-1995]南区,[1996-]岳阳楼区" + 0603 county="[1984-1995]北区,[1996-]云溪区" + 0611 county="[1984-1995]郊区,[1996-]君山区" + 0621 county="[1983-]岳阳县" + 0622 county="[1986-1992]临湘县" + 0623 county="[1986-]华容县" + 0624 county="[1986-]湘阴县" + 0625 county="[1986-1987]汨罗县" + 0626 county="[1986-]平江县" + 0681 county="[1989-]汨罗市" + 0682 county="[1992-]临湘市" + 0700 county="[1988-]常德市" + 0701 county="[1988-]市辖区" + 0702 county="[1988-]武陵区" + 0703 county="[1988-]鼎城区" + 0721 county="[1988-]安乡县" + 0722 county="[1988-]汉寿县" + 0723 county="[1988-]澧县" + 0724 county="[1988-]临澧县" + 0725 county="[1988-]桃源县" + 0726 county="[1988-]石门县" + 0727 county="[1988-1988]慈利县" + 0781 county="[1989-]津市市" + 0800 county="[1988-1993]大庸市,[1994-]张家界市" + 0801 county="[1988-]市辖区" + 0802 county="[1988-]永定区" + 0811 county="[1988-]武陵源区" + 0821 county="[1988-]慈利县" + 0822 county="[1988-]桑植县" + 0900 county="[1994-]益阳市" + 0901 county="[1994-]市辖区" + 0902 county="[1994-]资阳区" + 0903 county="[1994-]赫山区" + 0921 county="[1994-]南县" + 0922 county="[1994-]桃江县" + 0923 county="[1994-]安化县" + 0981 county="[1994-]沅江市" + 1000 county="[1994-]郴州市" + 1001 county="[1994-]市辖区" + 1002 county="[1994-]北湖区" + 1003 county="[1994-]苏仙区" + 1021 county="[1994-]桂阳县" + 1022 county="[1994-]宜章县" + 1023 county="[1994-]永兴县" + 1024 county="[1994-]嘉禾县" + 1025 county="[1994-]临武县" + 1026 county="[1994-]汝城县" + 1027 county="[1994-]桂东县" + 1028 county="[1994-]安仁县" + 1081 county="[1994-]资兴市" + 1100 county="[1995-]永州市" + 1101 county="[1995-]市辖区" + 1102 county="[1995-2004]芝山区,[2005-]零陵区" + 1103 county="[1995-]冷水滩区" + 1121 county="[1995-2021]祁阳县" + 1122 county="[1995-]东安县" + 1123 county="[1995-]双牌县" + 1124 county="[1995-]道县" + 1125 county="[1995-]江永县" + 1126 county="[1995-]宁远县" + 1127 county="[1995-]蓝山县" + 1128 county="[1995-]新田县" + 1129 county="[1995-]江华瑶族自治县" + 1181 county="[2021-]祁阳市" + 1200 county="[1997-]怀化市" + 1201 county="[1997-]市辖区" + 1202 county="[1997-]鹤城区" + 1221 county="[1997-]中方县" + 1222 county="[1997-]沅陵县" + 1223 county="[1997-]辰溪县" + 1224 county="[1997-]溆浦县" + 1225 county="[1997-]会同县" + 1226 county="[1997-]麻阳苗族自治县" + 1227 county="[1997-]新晃侗族自治县" + 1228 county="[1997-]芷江侗族自治县" + 1229 county="[1997-]靖州苗族侗族自治县" + 1230 county="[1997-]通道侗族自治县" + 1281 county="[1997-]洪江市" + 1300 county="[1999-]娄底市" + 1301 county="[1999-]市辖区" + 1302 county="[1999-]娄星区" + 1321 county="[1999-]双峰县" + 1322 county="[1999-]新化县" + 1381 county="[1999-]冷水江市" + 1382 county="[1999-]涟源市" + 2100 county="[-1983]湘潭地区" + 2121 county="[-1983]湘潭县" + 2122 county="[-1983]湘乡县" + 2123 county="[-1983]醴陵县" + 2124 county="[-1983]浏阳县" + 2125 county="[-1983]攸县" + 2126 county="[-1983]茶陵县" + 2127 county="[-1983]酃县" + 2128 county="[-1983]韶山区" + 2200 county="[-1986]岳阳地区" + 2201 county="[-1983]岳阳市" + 2221 county="[-1983]岳阳县" + 2222 county="[-1986]平江县" + 2223 county="[-1986]湘阴县" + 2224 county="[-1986]汨罗县" + 2225 county="[-1986]临湘县" + 2226 county="[-1986]华容县" + 2300 county="[-1994]益阳地区" + 2301 county="[-1994]益阳市" + 2302 county="[1988-1994]沅江市" + 2321 county="[-1994]益阳县" + 2322 county="[-1994]南县" + 2323 county="[-1988]沅江县" + 2324 county="[-1994]宁乡县" + 2325 county="[-1994]桃江县" + 2326 county="[-1994]安化县" + 2400 county="[-1988]常德地区" + 2401 county="[-1988]常德市" + 2402 county="[-1988]津市市" + 2421 county="[-1988]常德县" + 2422 county="[-1988]安乡县" + 2423 county="[-1988]汉寿县" + 2424 county="[-1988]澧县" + 2425 county="[-1988]临澧县" + 2426 county="[-1988]桃源县" + 2427 county="[-1988]石门县" + 2428 county="[-1988]慈利县" + 2500 county="[-1999]娄底地区" + 2501 county="[-1999]娄底市" + 2502 county="[-1999]冷水江市" + 2503 county="[-1999]涟源市" + 2521 county="[-1999]涟源县" + 2522 county="[-1999]双峰县" + 2523 county="[-1983]邵东县" + 2524 county="[-1999]新化县" + 2525 county="[-1983]新邵县" + 2600 county="[-1986]邵阳地区" + 2621 county="[-1986]邵阳县" + 2622 county="[-1986]隆回县" + 2623 county="[-1986]武冈县" + 2624 county="[-1986]洞口县" + 2625 county="[-1986]新宁县" + 2626 county="[-1986]绥宁县" + 2627 county="[-1986]城步苗族自治县" + 2700 county="[-1983]衡阳地区" + 2721 county="[-1983]衡阳县" + 2722 county="[-1983]衡南县" + 2723 county="[-1983]衡山县" + 2724 county="[-1983]衡东县" + 2725 county="[-1983]常宁县" + 2726 county="[-1983]祁东县" + 2727 county="[-1983]祁阳县" + 2800 county="[-1994]郴州地区" + 2801 county="[-1994]郴州市" + 2802 county="[1984-1994]资兴市" + 2821 county="[-1994]郴县" + 2822 county="[-1994]桂阳县" + 2823 county="[-1994]永兴县" + 2824 county="[-1994]宜章县" + 2825 county="[-1984]资兴县" + 2826 county="[-1994]嘉禾县" + 2827 county="[-1994]临武县" + 2828 county="[-1994]汝城县" + 2829 county="[-1994]桂东县" + 2830 county="[-1983]耒阳县" + 2831 county="[-1994]安仁县" + 2900 county="[-1995]零陵地区" + 2901 county="[1982-1995]永州市" + 2902 county="[1984-1995]冷水滩市" + 2921 county="[-1984]零陵县" + 2922 county="[-1995]东安县" + 2923 county="[-1995]道县" + 2924 county="[-1995]宁远县" + 2925 county="[-1995]江永县" + 2926 county="[-1995]江华瑶族自治县" + 2927 county="[-1995]蓝山县" + 2928 county="[-1995]新田县" + 2929 county="[-1995]双牌县" + 2930 county="[1983-1995]祁阳县" + 3000 county="[-1980]黔阳地区,[1981-1996]怀化地区" + 3001 county="[-1997]怀化市" + 3002 county="[-1997]洪江市" + 3021 county="[-1997]黔阳县" + 3022 county="[-1997]沅陵县" + 3023 county="[-1997]辰溪县" + 3024 county="[-1997]溆浦县" + 3025 county="[-1987]麻阳县,[1988-1997]麻阳苗族自治县" + 3026 county="[-1997]新晃侗族自治县" + 3027 county="[-1985]芷江县,[1986-1997]芷江侗族自治县" + 3028 county="[-1982]怀化县" + 3029 county="[-1997]会同县" + 3030 county="[-1986]靖县,[1987-1997]靖州苗族侗族自治县" + 3031 county="[-1997]通道侗族自治县" + 3100 county="湘西土家族苗族自治州" + 3101 county="[1982-]吉首市" + 3102 county="[1985-1988]大庸市" + 3121 county="[-1982]吉首县" + 3122 county="泸溪县" + 3123 county="凤凰县" + 3124 county="花垣县" + 3125 county="保靖县" + 3126 county="古丈县" + 3127 county="永顺县" + 3128 county="[-1985]大庸县" + 3129 county="[-1988]桑植县" + 3130 county="龙山县" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]醴陵市" + 9002 county="[1986-1989]湘乡市" + 9003 county="[1986-1989]耒阳市" + 9004 county="[1987-1989]汨罗市" + 9005 county="[1988-1989]津市市" +44 province="广东省" + 0000 county="广东省" + 0100 county="广州市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-2005]东山区" + 0103 county="[1983-]荔湾区" + 0104 county="[1983-]越秀区" + 0105 county="[1983-]海珠区" + 0106 county="[1985-]天河区" + 0107 county="[1985-2005]芳村区" + 0111 county="[1983-1986]郊区,[1987-]白云区" + 0112 county="[1983-]黄埔区" + 0113 county="[2000-]番禺区" + 0114 county="[2000-]花都区" + 0115 county="[2005-]南沙区" + 0116 county="[2005-2014]萝岗区" + 0117 county="[2014-]从化区" + 0118 county="[2014-]增城区" + 0120 county="[-1983]市区" + 0121 county="[-1993]花县" + 0122 county="[-1994]从化县" + 0123 county="[-1988]新丰县" + 0124 county="[-1988]龙门县" + 0125 county="[-1993]增城县" + 0126 county="[-1992]番禺县" + 0127 county="[1983-1988]清远县" + 0128 county="[1983-1988]佛冈县" + 0181 county="[1992-2000]番禺市" + 0182 county="[1993-2000]花都市" + 0183 county="[1993-2014]增城市" + 0184 county="[1994-2014]从化市" + 0200 county="韶关市" + 0201 county="[1983-]市辖区" + 0202 county="[1984-2004]北江区" + 0203 county="[1984-]武江区" + 0204 county="[1984-]浈江区" + 0205 county="[2004-]曲江区" + 0220 county="[-1983]市区" + 0221 county="[-2004]曲江县" + 0222 county="[1983-]始兴县" + 0223 county="[1983-1996]南雄县" + 0224 county="[1983-]仁化县" + 0225 county="[1983-1994]乐昌县" + 0226 county="[1983-1988]连县" + 0227 county="[1983-1988]阳山县" + 0228 county="[1983-1988]英德县" + 0229 county="[1983-]翁源县" + 0230 county="[1983-1988]连山壮族瑶族自治县" + 0231 county="[1983-1988]连南瑶族自治县" + 0232 county="[1983-]乳源瑶族自治县" + 0233 county="[1988-]新丰县" + 0281 county="[1994-]乐昌市" + 0282 county="[1996-]南雄市" + 0300 county="深圳市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-1990]沙头角区办事处" + 0303 county="[1983-1989]罗湖区办事处,[1990-]罗湖区" + 0304 county="[1983-1989]上埗区办事处,[1990-]福田区" + 0305 county="[1983-1989]南头区办事处,[1990-]南山区" + 0306 county="[1992-]宝安区" + 0307 county="[1992-]龙岗区" + 0308 county="[1997-]盐田区" + 0309 county="[2016-]龙华区" + 0310 county="[2016-]坪山区" + 0311 county="[2018-]光明区" + 0320 county="[-1983]市区" + 0321 county="[1982-1992]宝安县" + 0400 county="珠海市" + 0401 county="[1984-]市辖区" + 0402 county="[1984-]香洲区" + 0403 county="[2001-]斗门区" + 0404 county="[2001-]金湾区" + 0421 county="[1983-2001]斗门县" + 0500 county="汕头市" + 0501 county="[1983-]市辖区" + 0502 county="[1984-1991]同平区" + 0503 county="[1984-1991]安平区" + 0504 county="[1984-1991]公园区" + 0505 county="[1984-1991]金砂区" + 0506 county="[1984-2003]达濠区" + 0507 county="[1991-]龙湖区" + 0508 county="[1991-2003]金园区" + 0509 county="[1991-2003]升平区" + 0510 county="[1994-2003]河浦区" + 0511 county="[1984-1991]郊区,[2003-]金平区" + 0512 county="[2003-]濠江区" + 0513 county="[2003-]潮阳区" + 0514 county="[2003-]潮南区" + 0515 county="[2003-]澄海区" + 0520 county="[1983-1986]潮州市" + 0521 county="[1983-1994]澄海县" + 0522 county="[1983-1991]饶平县" + 0523 county="[1983-]南澳县" + 0524 county="[1983-1993]潮阳县" + 0525 county="[1983-1991]揭阳县" + 0526 county="[1983-1991]揭西县" + 0527 county="[1983-1991]普宁县" + 0528 county="[1983-1991]惠来县" + 0581 county="[1989-1991]潮州市" + 0582 county="[1993-2003]潮阳市" + 0583 county="[1994-2003]澄海市" + 0600 county="佛山市" + 0601 county="[1984-]市辖区" + 0602 county="[1984-1986]汾江区,[1987-2001]城区" + 0603 county="[1984-2002]石湾区" + 0604 county="[2002-]禅城区" + 0605 county="[2002-]南海区" + 0606 county="[2002-]顺德区" + 0607 county="[2002-]三水区" + 0608 county="[2002-]高明区" + 0620 county="[1983-1988]中山市" + 0621 county="[1983-1993]三水县" + 0622 county="[1983-1992]南海县" + 0623 county="[1983-1992]顺德县" + 0624 county="[1983-1994]高明县" + 0681 county="[1992-2002]顺德市" + 0682 county="[1992-2002]南海市" + 0683 county="[1993-2002]三水市" + 0684 county="[1994-2002]高明市" + 0700 county="江门市" + 0701 county="[1984-]市辖区" + 0702 county="[1984-1994]城区" + 0703 county="[1994-]蓬江区" + 0704 county="[1994-]江海区" + 0705 county="[2002-]新会区" + 0711 county="[1984-1994]郊区" + 0721 county="[1983-1992]新会县" + 0722 county="[1983-1992]台山县" + 0723 county="[1983-1994]恩平县" + 0724 county="[1983-1993]开平县" + 0725 county="[1983-1993]鹤山县" + 0726 county="[1983-1988]阳江县" + 0727 county="[1983-1988]阳春县" + 0781 county="[1992-]台山市" + 0782 county="[1992-2002]新会市" + 0783 county="[1993-]开平市" + 0784 county="[1993-]鹤山市" + 0785 county="[1994-]恩平市" + 0800 county="湛江市" + 0801 county="[1984-]市辖区" + 0802 county="[1984-]赤坎区" + 0803 county="[1984-]霞山区" + 0804 county="[1984-]坡头区" + 0811 county="[1984-1993]郊区,[1994-]麻章区" + 0821 county="[1983-1994]吴川县" + 0822 county="[1983-1993]廉江县" + 0823 county="[1983-]遂溪县" + 0824 county="[1983-1994]海康县" + 0825 county="[1983-]徐闻县" + 0881 county="[1993-]廉江市" + 0882 county="[1994-]雷州市" + 0883 county="[1994-]吴川市" + 0900 county="茂名市" + 0901 county="[1985-]市辖区" + 0902 county="[1985-]茂南区" + 0903 county="[2001-2014]茂港区" + 0904 county="[2014-]电白区" + 0921 county="[1983-1995]信宜县" + 0922 county="[1983-1993]高州县" + 0923 county="[1983-2014]电白县" + 0924 county="[1983-1994]化州县" + 0981 county="[1993-]高州市" + 0982 county="[1994-]化州市" + 0983 county="[1995-]信宜市" + 1000 county="[1986-1988]海口市" + 1100 county="[1987-1988]三亚市" + 1200 county="[1988-]肇庆市" + 1201 county="[1988-]市辖区" + 1202 county="[1988-]端州区" + 1203 county="[1988-]鼎湖区" + 1204 county="[2015-]高要区" + 1221 county="[1988-1993]高要县" + 1222 county="[1988-1993]四会县" + 1223 county="[1988-]广宁县" + 1224 county="[1988-]怀集县" + 1225 county="[1988-]封开县" + 1226 county="[1988-]德庆县" + 1227 county="[1988-1992]云浮县" + 1228 county="[1988-1994]新兴县" + 1229 county="[1988-1994]郁南县" + 1230 county="[1988-1993]罗定县" + 1281 county="[1992-1994]云浮市" + 1282 county="[1993-1994]罗定市" + 1283 county="[1993-2015]高要市" + 1284 county="[1993-]四会市" + 1300 county="[1988-]惠州市" + 1301 county="[1988-]市辖区" + 1302 county="[1988-]惠城区" + 1303 county="[2003-]惠阳区" + 1321 county="[1988-1994]惠阳县" + 1322 county="[1988-]博罗县" + 1323 county="[1988-]惠东县" + 1324 county="[1988-]龙门县" + 1381 county="[1994-2003]惠阳市" + 1400 county="[1988-]梅州市" + 1401 county="[1988-]市辖区" + 1402 county="[1988-]梅江区" + 1403 county="[2013-]梅县区" + 1421 county="[1988-2013]梅县" + 1422 county="[1988-]大埔县" + 1423 county="[1988-]丰顺县" + 1424 county="[1988-]五华县" + 1425 county="[1988-1994]兴宁县" + 1426 county="[1988-]平远县" + 1427 county="[1988-]蕉岭县" + 1481 county="[1994-]兴宁市" + 1500 county="[1988-]汕尾市" + 1501 county="[1988-]市辖区" + 1502 county="[1988-]城区" + 1521 county="[1988-]海丰县" + 1522 county="[1988-1995]陆丰县" + 1523 county="[1988-]陆河县" + 1581 county="[1995-]陆丰市" + 1600 county="[1988-]河源市" + 1601 county="[1988-]市辖区" + 1602 county="[1988-]源城区" + 1611 county="[1988-1993]郊区" + 1621 county="[1988-]紫金县" + 1622 county="[1988-]龙川县" + 1623 county="[1988-]连平县" + 1624 county="[1988-]和平县" + 1625 county="[1993-]东源县" + 1700 county="[1988-]阳江市" + 1701 county="[1988-]市辖区" + 1702 county="[1988-]江城区" + 1703 county="[1988-1991]阳东区" + 1704 county="[2014-]阳东区" + 1721 county="[1988-]阳西县" + 1722 county="[1988-1994]阳春县" + 1723 county="[1991-2014]阳东县" + 1781 county="[1994-]阳春市" + 1800 county="[1988-]清远市" + 1801 county="[1988-]市辖区" + 1802 county="[1988-]清城区" + 1803 county="[2012-]清新区" + 1811 county="[1988-1992]清郊区" + 1821 county="[1988-]佛冈县" + 1822 county="[1988-1994]英德县" + 1823 county="[1988-]阳山县" + 1824 county="[1988-1994]连县" + 1825 county="[1988-]连山壮族瑶族自治县" + 1826 county="[1988-]连南瑶族自治县" + 1827 county="[1992-2012]清新县" + 1881 county="[1994-]英德市" + 1882 county="[1994-]连州市" + 1900 county="[1988-]东莞市" + 2000 county="[1988-]中山市" + 2100 county="[-1988]海南行政区" + 2101 county="[-1986]海口市" + 2102 county="[1987-1988]通什市" + 2121 county="[-1988]琼山县" + 2122 county="[-1988]文昌县" + 2123 county="[-1988]琼海县" + 2124 county="[-1988]万宁县" + 2125 county="[-1988]定安县" + 2126 county="[-1988]屯昌县" + 2127 county="[-1988]澄迈县" + 2128 county="[-1988]临高县" + 2129 county="[-1988]儋县" + 2130 county="[1987-1988]东方黎族自治县" + 2131 county="[1987-1988]乐东黎族自治县" + 2132 county="[1987-1988]琼中黎族苗族自治县" + 2133 county="[1987-1988]保亭黎族苗族自治县" + 2134 county="[1987-1988]陵水黎族自治县" + 2135 county="[1987-1988]白沙黎族自治县" + 2136 county="[1987-1988]昌江黎族自治县" + 2137 county="[1987-1988]西南中沙群岛办事处" + 2200 county="[-1987]海南黎族苗族自治州" + 2201 county="[1984-1987]三亚市" + 2202 county="[1986-1987]通什市" + 2221 county="[-1984]崖县" + 2222 county="[-1987]东方县" + 2223 county="[-1987]乐东县" + 2224 county="[-1987]琼中县" + 2225 county="[-1987]保亭县" + 2226 county="[-1987]陵水县" + 2227 county="[-1987]白沙县" + 2228 county="[-1987]昌江县" + 2229 county="[1984-1987]西南中沙群岛办事处" + 2300 county="[-1983]汕头地区" + 2301 county="[-1983]汕头市" + 2302 county="[-1983]潮州市" + 2321 county="[-1983]潮安县" + 2322 county="[-1983]澄海县" + 2323 county="[-1983]饶平县" + 2324 county="[-1983]南澳县" + 2325 county="[-1983]潮阳县" + 2326 county="[-1983]揭阳县" + 2327 county="[-1983]揭西县" + 2328 county="[-1983]普宁县" + 2329 county="[-1983]惠来县" + 2330 county="[-1983]陆丰县" + 2331 county="[-1983]海丰县" + 2400 county="[-1988]梅县地区" + 2401 county="[1983-1982]梅州市,[1983-1987]梅县市" + 2421 county="[-1983]梅县" + 2422 county="[-1988]大埔县" + 2423 county="[-1988]丰顺县" + 2424 county="[-1988]五华县" + 2425 county="[-1988]兴宁县" + 2426 county="[-1988]平远县" + 2427 county="[-1988]蕉岭县" + 2500 county="[-1988]惠阳地区" + 2501 county="[-1988]惠州市" + 2502 county="[1985-1988]东莞市" + 2521 county="[-1988]惠阳县" + 2522 county="[-1988]紫金县" + 2523 county="[-1988]和平县" + 2524 county="[-1988]连平县" + 2525 county="[-1988]河源县" + 2526 county="[-1988]博罗县" + 2527 county="[-1985]东莞县" + 2528 county="[-1988]惠东县" + 2529 county="[-1988]龙川县" + 2530 county="[1983-1988]陆丰县" + 2531 county="[1983-1988]海丰县" + 2600 county="[-1983]韶关地区" + 2621 county="[-1983]始兴县" + 2622 county="[-1983]南雄县" + 2623 county="[-1983]仁化县" + 2624 county="[-1983]乐昌县" + 2625 county="[-1983]连县" + 2626 county="[-1983]阳山县" + 2627 county="[-1983]英德县" + 2628 county="[-1983]清远县" + 2629 county="[-1983]佛冈县" + 2630 county="[-1983]翁源县" + 2631 county="[-1983]连山壮族瑶族自治县" + 2632 county="[-1983]连南瑶族自治县" + 2633 county="[-1983]乳源瑶族自治县" + 2700 county="[-1983]佛山地区" + 2701 county="[-1983]佛山市" + 2702 county="[-1983]江门市" + 2721 county="[-1983]三水县" + 2722 county="[-1983]南海县" + 2723 county="[-1983]顺德县" + 2724 county="[-1983]中山县" + 2725 county="[-1983]斗门县" + 2726 county="[-1983]新会县" + 2727 county="[-1983]台山县" + 2728 county="[-1983]恩平县" + 2729 county="[-1983]开平县" + 2730 county="[-1981]高鹤县" + 2731 county="[1981-1983]高明县" + 2732 county="[1981-1983]鹤山县" + 2800 county="[-1988]肇庆地区" + 2801 county="[-1988]肇庆市" + 2821 county="[-1988]高要县" + 2822 county="[-1988]四会县" + 2823 county="[-1988]广宁县" + 2824 county="[-1988]怀集县" + 2825 county="[-1988]封开县" + 2826 county="[-1988]德庆县" + 2827 county="[-1988]云浮县" + 2828 county="[-1988]新兴县" + 2829 county="[-1988]郁南县" + 2830 county="[-1988]罗定县" + 2900 county="[-1983]湛江地区" + 2901 county="[-1983]湛江市" + 2902 county="[-1983]茂名市" + 2921 county="[-1983]阳江县" + 2922 county="[-1983]阳春县" + 2923 county="[-1983]信宜县" + 2924 county="[-1983]高州县" + 2925 county="[-1983]电白县" + 2926 county="[-1983]吴川县" + 2927 county="[-1983]化州县" + 2928 county="[-1983]廉江县" + 2929 county="[-1983]遂溪县" + 2930 county="[-1983]海康县" + 2931 county="[-1983]徐闻县" + 5100 county="[1991-]潮州市" + 5101 county="[1991-]市辖区" + 5102 county="[1991-]湘桥区" + 5103 county="[2013-]潮安区" + 5121 county="[1991-2013]潮安县" + 5122 county="[1991-]饶平县" + 5200 county="[1991-]揭阳市" + 5201 county="[1991-]市辖区" + 5202 county="[1991-]榕城区" + 5203 county="[2012-]揭东区" + 5221 county="[1991-2012]揭东县" + 5222 county="[1991-]揭西县" + 5223 county="[1991-1993]普宁县" + 5224 county="[1991-]惠来县" + 5281 county="[1993-]普宁市" + 5300 county="[1994-]云浮市" + 5301 county="[1994-]市辖区" + 5302 county="[1994-]云城区" + 5303 county="[2014-]云安区" + 5321 county="[1994-]新兴县" + 5322 county="[1994-]郁南县" + 5323 county="[1996-2014]云安县" + 5381 county="[1994-]罗定市" + 9000 county="[1986-1989]省直辖县级行政单位" + 9001 county="[1986-1989]潮州市" +45 province="广西壮族自治区" + 0000 county="广西壮族自治区" + 0100 county="南宁市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]兴宁区" + 0103 county="[1983-2003]新城区,[2004-]青秀区" + 0104 county="[1983-2004]城北区" + 0105 county="[1983-]江南区" + 0106 county="[1983-2004]永新区" + 0107 county="[2004-]西乡塘区" + 0108 county="[2004-]良庆区" + 0109 county="[2004-]邕宁区" + 0110 county="[2015-]武鸣区" + 0111 county="[1984-2001]郊区" + 0121 county="[1983-2004]邕宁县" + 0122 county="[1983-2015]武鸣县" + 0123 county="[2002-]隆安县" + 0124 county="[2002-]马山县" + 0125 county="[2002-]上林县" + 0126 county="[2002-]宾阳县" + 0127 county="[2002-2021]横县" + 0181 county="[2021-]横州市" + 0200 county="柳州市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]城中区" + 0203 county="[1983-]鱼峰区" + 0204 county="[1983-]柳南区" + 0205 county="[1983-]柳北区" + 0206 county="[2016-]柳江区" + 0211 county="[1984-2002]郊区" + 0221 county="[1983-2016]柳江县" + 0222 county="[1983-]柳城县" + 0223 county="[2002-]鹿寨县" + 0224 county="[2002-]融安县" + 0225 county="[2002-]融水苗族自治县" + 0226 county="[2002-]三江侗族自治县" + 0300 county="桂林市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]秀峰区" + 0303 county="[1983-]叠彩区" + 0304 county="[1983-]象山区" + 0305 county="[1983-]七星区" + 0311 county="[1984-1995]郊区,[1996-]雁山区" + 0312 county="[2013-]临桂区" + 0320 county="[-1983]市区" + 0321 county="[1981-]阳朔县" + 0322 county="[1983-2013]临桂县" + 0323 county="[1998-]灵川县" + 0324 county="[1998-]全州县" + 0325 county="[1998-]兴安县" + 0326 county="[1998-]永福县" + 0327 county="[1998-]灌阳县" + 0328 county="[1998-]龙胜各族自治县" + 0329 county="[1998-]资源县" + 0330 county="[1998-]平乐县" + 0331 county="[1998-2018]荔浦县" + 0332 county="[1998-]恭城瑶族自治县" + 0381 county="[2018-]荔浦市" + 0400 county="梧州市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-1990]白云区" + 0403 county="[1983-]万秀区" + 0404 county="[1983-2013]蝶山区" + 0405 county="[2003-]长洲区" + 0406 county="[2013-]龙圩区" + 0411 county="[1983-2003]郊区" + 0421 county="[1983-]苍梧县" + 0422 county="[1997-]藤县" + 0423 county="[1997-]蒙山县" + 0481 county="[1997-]岑溪市" + 0500 county="[1983-]北海市" + 0501 county="[1984-]市辖区" + 0502 county="[1984-]海城区" + 0503 county="[1994-]银海区" + 0511 county="[1984-1994]郊区" + 0512 county="[1994-]铁山港区" + 0521 county="[1987-]合浦县" + 0600 county="[1993-]防城港市" + 0601 county="[1993-]市辖区" + 0602 county="[1993-]港口区" + 0603 county="[1993-]防城区" + 0621 county="[1993-]上思县" + 0681 county="[1996-]东兴市" + 0700 county="[1994-]钦州市" + 0701 county="[1994-]市辖区" + 0702 county="[1994-]钦南区" + 0703 county="[1994-]钦北区" + 0721 county="[1994-]灵山县" + 0722 county="[1994-]浦北县" + 0800 county="[1995-]贵港市" + 0801 county="[1995-]市辖区" + 0802 county="[1995-]港北区" + 0803 county="[1995-]港南区" + 0804 county="[2003-]覃塘区" + 0821 county="[1995-]平南县" + 0881 county="[1995-]桂平市" + 0900 county="[1997-]玉林市" + 0901 county="[1997-]市辖区" + 0902 county="[1997-]玉州区" + 0903 county="[2013-]福绵区" + 0921 county="[1997-]容县" + 0922 county="[1997-]陆川县" + 0923 county="[1997-]博白县" + 0924 county="[1997-]兴业县" + 0981 county="[1997-]北流市" + 1000 county="[2002-]百色市" + 1001 county="[2002-]市辖区" + 1002 county="[2002-]右江区" + 1003 county="[2019-]田阳区" + 1021 county="[2002-2019]田阳县" + 1022 county="[2002-]田东县" + 1023 county="[2002-2019]平果县" + 1024 county="[2002-]德保县" + 1025 county="[2002-2015]靖西县" + 1026 county="[2002-]那坡县" + 1027 county="[2002-]凌云县" + 1028 county="[2002-]乐业县" + 1029 county="[2002-]田林县" + 1030 county="[2002-]西林县" + 1031 county="[2002-]隆林各族自治县" + 1081 county="[2015-]靖西市" + 1082 county="[2019-]平果市" + 1100 county="[2002-]贺州市" + 1101 county="[2002-]市辖区" + 1102 county="[2002-]八步区" + 1103 county="[2016-]平桂区" + 1121 county="[2002-]昭平县" + 1122 county="[2002-]钟山县" + 1123 county="[2002-]富川瑶族自治县" + 1200 county="[2002-]河池市" + 1201 county="[2002-]市辖区" + 1202 county="[2002-]金城江区" + 1203 county="[2016-]宜州区" + 1221 county="[2002-]南丹县" + 1222 county="[2002-]天峨县" + 1223 county="[2002-]凤山县" + 1224 county="[2002-]东兰县" + 1225 county="[2002-]罗城仫佬族自治县" + 1226 county="[2002-]环江毛南族自治县" + 1227 county="[2002-]巴马瑶族自治县" + 1228 county="[2002-]都安瑶族自治县" + 1229 county="[2002-]大化瑶族自治县" + 1281 county="[2002-2016]宜州市" + 1300 county="[2002-]来宾市" + 1301 county="[2002-]市辖区" + 1302 county="[2002-]兴宾区" + 1321 county="[2002-]忻城县" + 1322 county="[2002-]象州县" + 1323 county="[2002-]武宣县" + 1324 county="[2002-]金秀瑶族自治县" + 1381 county="[2002-]合山市" + 1400 county="[2002-]崇左市" + 1401 county="[2002-]市辖区" + 1402 county="[2002-]江州区" + 1421 county="[2002-]扶绥县" + 1422 county="[2002-]宁明县" + 1423 county="[2002-]龙州县" + 1424 county="[2002-]大新县" + 1425 county="[2002-]天等县" + 1481 county="[2002-]凭祥市" + 2100 county="[-2002]南宁地区" + 2101 county="[-2002]凭祥市" + 2121 county="[-1983]邕宁县" + 2122 county="[-2002]横县" + 2123 county="[-2002]宾阳县" + 2124 county="[-2002]上林县" + 2125 county="[-1983]武鸣县" + 2126 county="[-2002]隆安县" + 2127 county="[-2002]马山县" + 2128 county="[-2002]扶绥县" + 2129 county="[-2002]崇左县" + 2130 county="[-2002]大新县" + 2131 county="[-2002]天等县" + 2132 county="[-2002]宁明县" + 2133 county="[-2002]龙州县" + 2200 county="[-2002]柳州地区" + 2201 county="[1981-2002]合山市" + 2221 county="[-1983]柳江县" + 2222 county="[-1983]柳城县" + 2223 county="[-2002]鹿寨县" + 2224 county="[-2002]象州县" + 2225 county="[-2002]武宣县" + 2226 county="[-2002]来宾县" + 2227 county="[-2002]融安县" + 2228 county="[-2002]三江侗族自治县" + 2229 county="[-2002]融水苗族自治县" + 2230 county="[-2002]金秀瑶族自治县" + 2231 county="[-2002]忻城县" + 2300 county="[-1998]桂林地区" + 2321 county="[-1983]临桂县" + 2322 county="[-1998]灵川县" + 2323 county="[-1998]全州县" + 2324 county="[-1998]兴安县" + 2325 county="[-1998]永福县" + 2326 county="[-1981]阳朔县" + 2327 county="[-1998]灌阳县" + 2328 county="[-1998]龙胜各族自治县" + 2329 county="[-1998]资源县" + 2330 county="[-1998]平乐县" + 2331 county="[-1998]荔浦县" + 2332 county="[-1989]恭城县,[1990-1998]恭城瑶族自治县" + 2400 county="[-1996]梧州地区,[1997-2001]贺州地区" + 2401 county="[1995-1997]岑溪市" + 2402 county="[1997-2002]贺州市" + 2421 county="[-1995]岑溪县" + 2422 county="[-1983]苍梧县" + 2423 county="[-1997]藤县" + 2424 county="[-2002]昭平县" + 2425 county="[-1997]蒙山县" + 2426 county="[-1997]贺县" + 2427 county="[-2002]钟山县" + 2428 county="[-1982]富川县,[1983-2002]富川瑶族自治县" + 2500 county="[-1997]玉林地区" + 2501 county="[1983-1997]玉林市" + 2502 county="[1988-1995]贵港市" + 2503 county="[1994-1997]北流市" + 2504 county="[1994-1995]桂平市" + 2521 county="[-1983]玉林县" + 2522 county="[-1988]贵县" + 2523 county="[-1994]桂平县" + 2524 county="[-1995]平南县" + 2525 county="[-1997]容县" + 2526 county="[-1994]北流县" + 2527 county="[-1997]陆川县" + 2528 county="[-1997]博白县" + 2600 county="[-2002]百色地区" + 2601 county="[1983-2002]百色市" + 2621 county="[-1983]百色县" + 2622 county="[-2002]田阳县" + 2623 county="[-2002]田东县" + 2624 county="[-2002]平果县" + 2625 county="[-2002]德保县" + 2626 county="[-2002]靖西县" + 2627 county="[-2002]那坡县" + 2628 county="[-2002]凌云县" + 2629 county="[-2002]乐业县" + 2630 county="[-2002]田林县" + 2631 county="[-2002]隆林各族自治县" + 2632 county="[-2002]西林县" + 2700 county="[-2002]河池地区" + 2701 county="[1983-2002]河池市" + 2702 county="[1993-2002]宜州市" + 2721 county="[-1983]河池县" + 2722 county="[-1993]宜山县" + 2723 county="[-1982]罗城县,[1983-2002]罗城仫佬族自治县" + 2724 county="[-1985]环江县,[1986-2002]环江毛南族自治县" + 2725 county="[-2002]南丹县" + 2726 county="[-2002]天峨县" + 2727 county="[-2002]凤山县" + 2728 county="[-2002]东兰县" + 2729 county="[-2002]巴马瑶族自治县" + 2730 county="[-2002]都安瑶族自治县" + 2731 county="[1987-2002]大化瑶族自治县" + 2800 county="[-1994]钦州地区" + 2801 county="[-1983]北海市" + 2802 county="[1983-1994]钦州市" + 2821 county="[-1993]上思县" + 2822 county="[-1993]防城各族自治县" + 2823 county="[-1983]钦州县" + 2824 county="[-1994]灵山县" + 2825 county="[-1987]合浦县" + 2826 county="[-1994]浦北县" +46 province="海南省" + 0000 county="[1988-]海南省" + 0001 county="[1988-2000]通什市,[2001-2002]五指山市" + 0002 county="[1992-2002]琼海市" + 0003 county="[1993-2002]儋州市" + 0004 county="[1994-2002]琼山市" + 0005 county="[1995-2002]文昌市" + 0006 county="[1996-2002]万宁市" + 0007 county="[1997-2002]东方市" + 0021 county="[1988-1994]琼山县" + 0022 county="[1988-1995]文昌县" + 0023 county="[1988-1992]琼海县" + 0024 county="[1988-1996]万宁县" + 0025 county="[1988-2002]定安县" + 0026 county="[1988-2002]屯昌县" + 0027 county="[1988-2002]澄迈县" + 0028 county="[1988-2002]临高县" + 0029 county="[1988-1993]儋县" + 0030 county="[1988-2002]白沙黎族自治县" + 0031 county="[1988-2002]昌江黎族自治县" + 0032 county="[1988-1997]东方黎族自治县" + 0033 county="[1988-2002]乐东黎族自治县" + 0034 county="[1988-2002]陵水黎族自治县" + 0035 county="[1988-2002]保亭黎族苗族自治县" + 0036 county="[1988-2002]琼中黎族苗族自治县" + 0037 county="[1988-2002]西沙群岛" + 0038 county="[1988-2002]南沙群岛" + 0039 county="[1988-2002]中沙群岛的岛礁及其海域" + 0100 county="[1988-]海口市" + 0101 county="[1990-]市辖区" + 0102 county="[1990-2002]振东区" + 0103 county="[1990-2002]新华区" + 0104 county="[1990-2002]秀英区" + 0105 county="[2002-]秀英区" + 0106 county="[2002-]龙华区" + 0107 county="[2002-]琼山区" + 0108 county="[2002-]美兰区" + 0200 county="[1988-]三亚市" + 0201 county="[2014-]市辖区" + 0202 county="[2014-]海棠区" + 0203 county="[2014-]吉阳区" + 0204 county="[2014-]天涯区" + 0205 county="[2014-]崖州区" + 0300 county="[2012-]三沙市" + 0301 county="[2020-]市辖区" + 0302 county="[2020-]西沙区" + 0303 county="[2020-]南沙区" + 0400 county="[2015-]儋州市" + 9000 county="[2002-]省直辖县级行政单位" + 9001 county="[2002-]五指山市" + 9002 county="[2002-]琼海市" + 9003 county="[2002-2015]儋州市" + 9004 county="[2002-2002]琼山市" + 9005 county="[2002-]文昌市" + 9006 county="[2002-]万宁市" + 9007 county="[2002-]东方市" + 9021 county="[2002-]定安县" + 9022 county="[2002-]屯昌县" + 9023 county="[2002-]澄迈县" + 9024 county="[2002-]临高县" + 9025 county="[2002-]白沙黎族自治县" + 9026 county="[2002-]昌江黎族自治县" + 9027 county="[2002-]乐东黎族自治县" + 9028 county="[2002-]陵水黎族自治县" + 9029 county="[2002-]保亭黎族苗族自治县" + 9030 county="[2002-]琼中黎族苗族自治县" + 9031 county="[2002-2012]西沙群岛" + 9032 county="[2002-2012]南沙群岛" + 9033 county="[2002-2012]中沙群岛的岛礁及其海域" +50 province="重庆市" + 0000 county="[1997-]重庆市" + 0100 county="[1997-]市辖区" + 0101 county="[1997-1997]万县区,[1998-]万州区" + 0102 county="[1997-]涪陵区" + 0103 county="[1997-]渝中区" + 0104 county="[1997-]大渡口区" + 0105 county="[1997-2025]江北区" + 0106 county="[1997-]沙坪坝区" + 0107 county="[1997-]九龙坡区" + 0108 county="[1997-]南岸区" + 0109 county="[1997-]北碚区" + 0110 county="[1997-2010]万盛区,[2011-]綦江区" + 0111 county="[1997-2010]双桥区,[2011-]大足区" + 0112 county="[1997-2025]渝北区" + 0113 county="[1997-]巴南区" + 0114 county="[2000-]黔江区" + 0115 county="[2001-]长寿区" + 0116 county="[2006-]江津区" + 0117 county="[2006-]合川区" + 0118 county="[2006-]永川区" + 0119 county="[2006-]南川区" + 0120 county="[2014-]璧山区" + 0151 county="[2014-]铜梁区" + 0152 county="[2015-]潼南区" + 0153 county="[2015-]荣昌区" + 0154 county="[2016-]开州区" + 0155 county="[2016-]梁平区" + 0156 county="[2016-]武隆区" + 0157 county="[2025-]两江新区" + 0200 county="[1997-]县" + 0221 county="[1997-2001]长寿县" + 0222 county="[1997-2011]綦江县" + 0223 county="[1997-2015]潼南县" + 0224 county="[1997-2014]铜梁县" + 0225 county="[1997-2011]大足县" + 0226 county="[1997-2015]荣昌县" + 0227 county="[1997-2014]璧山县" + 0228 county="[1997-2016]梁平县" + 0229 county="[1997-]城口县" + 0230 county="[1997-]丰都县" + 0231 county="[1997-]垫江县" + 0232 county="[1997-2016]武隆县" + 0233 county="[1997-]忠县" + 0234 county="[1997-2016]开县" + 0235 county="[1997-]云阳县" + 0236 county="[1997-]奉节县" + 0237 county="[1997-]巫山县" + 0238 county="[1997-]巫溪县" + 0239 county="[1997-2000]黔江土家族苗族自治县" + 0240 county="[1997-]石柱土家族自治县" + 0241 county="[1997-]秀山土家族苗族自治县" + 0242 county="[1997-]酉阳土家族苗族自治县" + 0243 county="[1997-]彭水苗族土家族自治县" + 0300 county="[1997-2006]市" + 0381 county="[1997-2006]江津市" + 0382 county="[1997-2006]合川市" + 0383 county="[1997-2006]永川市" + 0384 county="[1997-2006]南川市" +51 province="四川省" + 0000 county="四川省" + 0100 county="成都市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-1990]东城区" + 0103 county="[1983-1990]西城区" + 0104 county="[1990-]锦江区" + 0105 county="[1990-]青羊区" + 0106 county="[1990-]金牛区" + 0107 county="[1990-]武侯区" + 0108 county="[1990-]成华区" + 0111 county="[1983-1990]金牛区" + 0112 county="[1983-]龙泉驿区" + 0113 county="[1983-]青白江区" + 0114 county="[2001-]新都区" + 0115 county="[2002-]温江区" + 0116 county="[2015-]双流区" + 0117 county="[2016-]郫都区" + 0118 county="[2020-]新津区" + 0120 county="[-1983]市区" + 0121 county="金堂县" + 0122 county="[-2015]双流县" + 0123 county="[1983-2002]温江县" + 0124 county="[1983-2016]郫县" + 0125 county="[1983-2001]新都县" + 0126 county="[1983-1993]彭县" + 0127 county="[1983-1988]灌县" + 0128 county="[1983-1994]崇庆县" + 0129 county="[1983-]大邑县" + 0130 county="[1983-1994]邛崃县" + 0131 county="[1983-]蒲江县" + 0132 county="[1983-2020]新津县" + 0181 county="[1989-]都江堰市" + 0182 county="[1993-]彭州市" + 0183 county="[1994-]邛崃市" + 0184 county="[1994-]崇州市" + 0185 county="[2016-]简阳市" + 0200 county="[-1997]重庆市" + 0201 county="[1983-1997]市辖区" + 0202 county="[1983-1993]市中区,[1994-1997]渝中区" + 0203 county="[1983-1997]大渡口区" + 0211 county="[1983-1997]江北区" + 0212 county="[1983-1997]沙坪坝区" + 0213 county="[1983-1997]九龙坡区" + 0214 county="[1983-1997]南岸区" + 0215 county="[1983-1997]北碚区" + 0216 county="[1983-1997]万盛区" + 0217 county="[1983-1997]双桥区" + 0218 county="[1994-1997]渝北区" + 0219 county="[1994-1997]巴南区" + 0220 county="[-1983]市区" + 0221 county="[-1997]长寿县" + 0222 county="[-1994]巴县" + 0223 county="[-1997]綦江县" + 0224 county="[-1994]江北县" + 0225 county="[1983-1992]江津县" + 0226 county="[1983-1992]合川县" + 0227 county="[1983-1997]潼南县" + 0228 county="[1983-1997]铜梁县" + 0229 county="[1983-1992]永川县" + 0230 county="[1983-1997]大足县" + 0231 county="[1983-1997]荣昌县" + 0232 county="[1983-1997]璧山县" + 0281 county="[1992-1997]永川市" + 0282 county="[1992-1997]江津市" + 0283 county="[1992-1997]合川市" + 0300 county="自贡市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]自流井区" + 0303 county="[1983-]贡井区" + 0304 county="[1983-]大安区" + 0311 county="[1983-1982]郊区,[1983-]沿滩区" + 0320 county="[-1983]市区" + 0321 county="荣县" + 0322 county="[1983-]富顺县" + 0400 county="[-1986]渡口市,[1987-]攀枝花市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]东区" + 0403 county="[1983-]西区" + 0411 county="[1983-]仁和区" + 0420 county="[-1983]市区" + 0421 county="米易县" + 0422 county="盐边县" + 0500 county="[1983-]泸州市" + 0501 county="[1983-]市辖区" + 0502 county="[1983-1994]市中区,[1995-]江阳区" + 0503 county="[1995-]纳溪区" + 0504 county="[1995-]龙马潭区" + 0521 county="[1983-]泸县" + 0522 county="[1983-]合江县" + 0523 county="[1983-1995]纳溪县" + 0524 county="[1985-]叙永县" + 0525 county="[1985-]古蔺县" + 0600 county="[1983-]德阳市" + 0601 county="[1984-]市辖区" + 0602 county="[1984-1996]市中区" + 0603 county="[1996-]旌阳区" + 0604 county="[2017-]罗江区" + 0621 county="[1983-1984]德阳县" + 0622 county="[1983-1996]绵竹县" + 0623 county="[1983-]中江县" + 0624 county="[1983-1988]广汉县" + 0625 county="[1983-1995]什邡县" + 0626 county="[1996-2017]罗江县" + 0681 county="[1989-]广汉市" + 0682 county="[1995-]什邡市" + 0683 county="[1996-]绵竹市" + 0700 county="[1985-]绵阳市" + 0701 county="[1985-]市辖区" + 0702 county="[1985-1992]市中区" + 0703 county="[1992-]涪城区" + 0704 county="[1992-]游仙区" + 0705 county="[2016-]安州区" + 0721 county="[1985-1988]江油县" + 0722 county="[1985-]三台县" + 0723 county="[1985-]盐亭县" + 0724 county="[1985-2016]安县" + 0725 county="[1985-]梓潼县" + 0726 county="[1985-2002]北川县,[2003-]北川羌族自治县" + 0727 county="[1985-]平武县" + 0781 county="[1989-]江油市" + 0800 county="[1985-]广元市" + 0801 county="[1985-]市辖区" + 0802 county="[1985-2006]市中区,[2007-]利州区" + 0811 county="[1989-2012]元坝区,[2013-]昭化区" + 0812 county="[1989-]朝天区" + 0821 county="[1985-]旺苍县" + 0822 county="[1985-]青川县" + 0823 county="[1985-]剑阁县" + 0824 county="[1985-]苍溪县" + 0900 county="[1985-]遂宁市" + 0901 county="[1985-]市辖区" + 0902 county="[1985-2003]市中区" + 0903 county="[2003-]船山区" + 0904 county="[2003-]安居区" + 0921 county="[1985-]蓬溪县" + 0922 county="[1985-2019]射洪县" + 0923 county="[1997-]大英县" + 0981 county="[2019-]射洪市" + 1000 county="[1985-]内江市" + 1001 county="[1985-]市辖区" + 1002 county="[1985-]市中区" + 1011 county="[1989-]东兴区" + 1021 county="[1985-1989]内江县" + 1022 county="[1985-1998]乐至县" + 1023 county="[1985-1998]安岳县" + 1024 county="[1985-]威远县" + 1025 county="[1985-]资中县" + 1026 county="[1985-1993]资阳县" + 1027 county="[1985-1994]简阳县" + 1028 county="[1985-2017]隆昌县" + 1081 county="[1993-1998]资阳市" + 1082 county="[1994-1998]简阳市" + 1083 county="[2017-]隆昌市" + 1100 county="[1985-]乐山市" + 1101 county="[1985-]市辖区" + 1102 county="[1985-]市中区" + 1111 county="[1985-]沙湾区" + 1112 county="[1985-]五通桥区" + 1113 county="[1985-]金口河区" + 1121 county="[1985-1997]仁寿县" + 1122 county="[1985-1997]眉山县" + 1123 county="[1985-]犍为县" + 1124 county="[1985-]井研县" + 1125 county="[1985-1988]峨眉县" + 1126 county="[1985-]夹江县" + 1127 county="[1985-1997]洪雅县" + 1128 county="[1985-1997]彭山县" + 1129 county="[1985-]沐川县" + 1130 county="[1985-1997]青神县" + 1131 county="[1985-1997]丹棱县" + 1132 county="[1985-]峨边彝族自治县" + 1133 county="[1985-]马边彝族自治县" + 1181 county="[1989-]峨眉山市" + 1200 county="[1992-1997]万县市" + 1201 county="[1992-1997]市辖区" + 1202 county="[1992-1997]龙宝区" + 1203 county="[1992-1997]天城区" + 1204 county="[1992-1997]五桥区" + 1221 county="[1992-1997]开县" + 1222 county="[1992-1997]忠县" + 1223 county="[1992-1997]梁平县" + 1224 county="[1992-1997]云阳县" + 1225 county="[1992-1997]奉节县" + 1226 county="[1992-1997]巫山县" + 1227 county="[1992-1997]巫溪县" + 1228 county="[1992-1997]城口县" + 1300 county="[1993-]南充市" + 1301 county="[1993-]市辖区" + 1302 county="[1993-]顺庆区" + 1303 county="[1993-]高坪区" + 1304 county="[1993-]嘉陵区" + 1321 county="[1993-]南部县" + 1322 county="[1993-]营山县" + 1323 county="[1993-]蓬安县" + 1324 county="[1993-]仪陇县" + 1325 county="[1993-]西充县" + 1381 county="[1993-]阆中市" + 1400 county="[1995-1997]涪陵市,[2000-]眉山市" + 1401 county="[1995-1997]市辖区,[2000-]市辖区" + 1402 county="[1995-1997]枳城区,[2000-]东坡区" + 1403 county="[1995-1997]李渡区,[2014-]彭山区" + 1421 county="[1995-1997]垫江县,[2000-]仁寿县" + 1422 county="[1995-1997]丰都县,[2000-2014]彭山县" + 1423 county="[1995-1997]武隆县,[2000-]洪雅县" + 1424 county="[2000-]丹棱县" + 1425 county="[2000-]青神县" + 1481 county="[1995-1997]南川市" + 1500 county="[1996-]宜宾市" + 1501 county="[1996-]市辖区" + 1502 county="[1996-]翠屏区" + 1503 county="[2011-]南溪区" + 1504 county="[2018-]叙州区" + 1521 county="[1996-2018]宜宾县" + 1522 county="[1996-2011]南溪县" + 1523 county="[1996-]江安县" + 1524 county="[1996-]长宁县" + 1525 county="[1996-]高县" + 1526 county="[1996-]珙县" + 1527 county="[1996-]筠连县" + 1528 county="[1996-]兴文县" + 1529 county="[1996-]屏山县" + 1600 county="[1998-]广安市" + 1601 county="[1998-]市辖区" + 1602 county="[1998-]广安区" + 1603 county="[2013-]前锋区" + 1621 county="[1998-]岳池县" + 1622 county="[1998-]武胜县" + 1623 county="[1998-]邻水县" + 1681 county="[1998-]华蓥市" + 1700 county="[1999-]达州市" + 1701 county="[1999-]市辖区" + 1702 county="[1999-]通川区" + 1703 county="[2013-]达川区" + 1721 county="[1999-2013]达县" + 1722 county="[1999-]宣汉县" + 1723 county="[1999-]开江县" + 1724 county="[1999-]大竹县" + 1725 county="[1999-]渠县" + 1781 county="[1999-]万源市" + 1800 county="[2000-]雅安市" + 1801 county="[2000-]市辖区" + 1802 county="[2000-]雨城区" + 1803 county="[2012-]名山区" + 1821 county="[2000-2012]名山县" + 1822 county="[2000-]荥经县" + 1823 county="[2000-]汉源县" + 1824 county="[2000-]石棉县" + 1825 county="[2000-]天全县" + 1826 county="[2000-]芦山县" + 1827 county="[2000-]宝兴县" + 1900 county="[2000-]巴中市" + 1901 county="[2000-]市辖区" + 1902 county="[2000-]巴州区" + 1903 county="[2013-]恩阳区" + 1921 county="[2000-]通江县" + 1922 county="[2000-]南江县" + 1923 county="[2000-]平昌县" + 2000 county="[2000-]资阳市" + 2001 county="[2000-]市辖区" + 2002 county="[2000-]雁江区" + 2021 county="[2000-]安岳县" + 2022 county="[2000-]乐至县" + 2081 county="[2000-2016]简阳市" + 2100 county="[-1980]江津地区,[1981-1982]永川地区" + 2121 county="[-1983]江津县" + 2122 county="[-1983]合川县" + 2123 county="[-1983]潼南县" + 2124 county="[-1983]铜梁县" + 2125 county="[-1983]永川县" + 2126 county="[-1983]大足县" + 2127 county="[-1983]荣昌县" + 2128 county="[-1983]璧山县" + 2200 county="[-1992]万县地区" + 2201 county="[-1992]万县市" + 2221 county="[-1992]万县" + 2222 county="[-1992]开县" + 2223 county="[-1992]忠县" + 2224 county="[-1992]梁平县" + 2225 county="[-1992]云阳县" + 2226 county="[-1992]奉节县" + 2227 county="[-1992]巫山县" + 2228 county="[-1992]巫溪县" + 2229 county="[-1992]城口县" + 2300 county="[-1995]涪陵地区" + 2301 county="[1983-1995]涪陵市" + 2302 county="[1994-1995]南川市" + 2321 county="[-1983]涪陵县" + 2322 county="[-1995]垫江县" + 2323 county="[-1994]南川县" + 2324 county="[-1995]丰都县" + 2325 county="[1983-1982]石柱县,[1983-1996]石柱土家族自治县" + 2326 county="[-1995]武隆县" + 2327 county="[1983-1982]彭水县,[1983-1996]彭水苗族土家族自治县" + 2328 county="[1983-1982]黔江县,[1983-1996]黔江土家族苗族自治县" + 2329 county="[1983-1982]酉阳县,[1983-1996]酉阳土家族苗族自治县" + 2330 county="[1983-1982]秀山县,[1983-1996]秀山土家族苗族自治县" + 2400 county="[-1985]内江地区" + 2401 county="[-1985]内江市" + 2402 county="[-1985]泸州市" + 2421 county="[-1985]内江县" + 2422 county="[-1985]资中县" + 2423 county="[-1985]资阳县" + 2424 county="[-1985]简阳县" + 2425 county="[-1985]威远县" + 2426 county="[-1985]隆昌县" + 2427 county="[-1985]安岳县" + 2428 county="[-1985]乐至县" + 2500 county="[-1996]宜宾地区" + 2501 county="[-1996]宜宾市" + 2502 county="[-1983]泸州市" + 2521 county="[-1983]泸县" + 2522 county="[-1983]富顺县" + 2523 county="[-1983]合江县" + 2524 county="[-1983]纳溪县" + 2525 county="[-1985]叙永县" + 2526 county="[-1985]古蔺县" + 2527 county="[-1996]宜宾县" + 2528 county="[-1996]南溪县" + 2529 county="[-1996]江安县" + 2530 county="[-1996]长宁县" + 2531 county="[-1996]高县" + 2532 county="[-1996]筠连县" + 2533 county="[-1996]珙县" + 2534 county="[-1996]兴文县" + 2535 county="[-1996]屏山县" + 2600 county="[-1985]乐山地区" + 2601 county="[-1985]乐山市" + 2621 county="[-1985]仁寿县" + 2622 county="[-1985]眉山县" + 2623 county="[-1985]犍为县" + 2624 county="[-1985]井研县" + 2625 county="[-1985]峨眉县" + 2626 county="[-1985]夹江县" + 2627 county="[-1985]洪雅县" + 2628 county="[-1985]彭山县" + 2629 county="[-1985]沐川县" + 2630 county="[-1985]青神县" + 2631 county="[-1985]丹稜县" + 2632 county="[-1983]峨边县,[1984-1985]峨边彝族自治县" + 2633 county="[-1983]马边县,[1984-1985]马边彝族自治县" + 2634 county="[-1985]金口河工农区" + 2700 county="[-1983]温江地区" + 2721 county="[-1983]温江县" + 2722 county="[-1983]郫县" + 2723 county="[-1983]新都县" + 2724 county="[-1983]广汉县" + 2725 county="[-1983]什邡县" + 2726 county="[-1983]彭县" + 2727 county="[-1983]灌县" + 2728 county="[-1983]崇庆县" + 2729 county="[-1983]大邑县" + 2730 county="[-1983]邛崃县" + 2731 county="[-1983]蒲江县" + 2732 county="[-1983]新津县" + 2800 county="[-1985]绵阳地区" + 2801 county="[-1985]绵阳市" + 2821 county="[-1983]德阳县" + 2822 county="[-1983]绵竹县" + 2823 county="[-1985]安县" + 2824 county="[-1985]江油县" + 2825 county="[-1985]梓潼县" + 2826 county="[-1985]剑阁县" + 2827 county="[-1985]广元县" + 2828 county="[-1985]旺苍县" + 2829 county="[-1985]青川县" + 2830 county="[-1985]平武县" + 2831 county="[-1985]北川县" + 2832 county="[-1985]遂宁县" + 2833 county="[-1985]三台县" + 2834 county="[-1983]中江县" + 2835 county="[-1985]蓬溪县" + 2836 county="[-1985]射洪县" + 2837 county="[-1985]盐亭县" + 2900 county="[-1993]南充地区" + 2901 county="[-1993]南充市" + 2902 county="[1985-1993]华蓥市" + 2903 county="[1991-1993]阆中市" + 2921 county="[-1993]南充县" + 2922 county="[-1993]南部县" + 2923 county="[-1993]岳池县" + 2924 county="[-1993]营山县" + 2925 county="[-1993]广安县" + 2926 county="[-1993]蓬安县" + 2927 county="[-1993]仪陇县" + 2928 county="[-1993]武胜县" + 2929 county="[-1993]西充县" + 2930 county="[-1991]阆中县" + 2931 county="[-1985]苍溪县" + 2932 county="[-1985]华云工农区" + 3000 county="[-1992]达县地区,[1993-1998]达川地区" + 3001 county="[-1992]达县市,[1993-1998]达川市" + 3002 county="[1993-1999]万源市" + 3021 county="[-1999]达县" + 3022 county="[-1999]宣汉县" + 3023 county="[-1999]开江县" + 3024 county="[-1993]万源县" + 3025 county="[-1993]通江县" + 3026 county="[-1993]南江县" + 3027 county="[-1993]巴中县" + 3028 county="[-1993]平昌县" + 3029 county="[-1999]大竹县" + 3030 county="[-1999]渠县" + 3031 county="[-1999]邻水县" + 3032 county="[-1993]白沙工农区" + 3100 county="[-2000]雅安地区" + 3101 county="[1983-2000]雅安市" + 3121 county="[-1983]雅安县" + 3122 county="[-2000]名山县" + 3123 county="[-2000]荥经县" + 3124 county="[-2000]汉源县" + 3125 county="[-2000]石棉县" + 3126 county="[-2000]天全县" + 3127 county="[-2000]芦山县" + 3128 county="[-2000]宝兴县" + 3200 county="[-1986]阿坝藏族自治州,[1987-]阿坝藏族羌族自治州" + 3201 county="[2015-]马尔康市" + 3221 county="汶川县" + 3222 county="理县" + 3223 county="[-1986]茂汶羌族自治县,[1987-]茂县" + 3224 county="松潘县" + 3225 county="[-1996]南坪县,[1997-]九寨沟县" + 3226 county="金川县" + 3227 county="小金县" + 3228 county="黑水县" + 3229 county="[-2015]马尔康县" + 3230 county="壤塘县" + 3231 county="阿坝县" + 3232 county="若尔盖县" + 3233 county="红原县" + 3300 county="甘孜藏族自治州" + 3301 county="[2015-]康定市" + 3321 county="[-2015]康定县" + 3322 county="泸定县" + 3323 county="丹巴县" + 3324 county="九龙县" + 3325 county="雅江县" + 3326 county="道孚县" + 3327 county="炉霍县" + 3328 county="甘孜县" + 3329 county="新龙县" + 3330 county="德格县" + 3331 county="白玉县" + 3332 county="石渠县" + 3333 county="色达县" + 3334 county="理塘县" + 3335 county="巴塘县" + 3336 county="乡城县" + 3337 county="稻城县" + 3338 county="得荣县" + 3400 county="凉山彝族自治州" + 3401 county="西昌市" + 3402 county="[2021-]会理市" + 3421 county="[-1986]西昌县" + 3422 county="木里藏族自治县" + 3423 county="盐源县" + 3424 county="德昌县" + 3425 county="[-2021]会理县" + 3426 county="会东县" + 3427 county="宁南县" + 3428 county="普格县" + 3429 county="布拖县" + 3430 county="金阳县" + 3431 county="昭觉县" + 3432 county="喜德县" + 3433 county="冕宁县" + 3434 county="越西县" + 3435 county="甘洛县" + 3436 county="美姑县" + 3437 county="雷波县" + 3500 county="[1988-1997]黔江地区" + 3521 county="[1988-1997]石柱土家族自治县" + 3522 county="[1988-1997]秀山土家族苗族自治县" + 3523 county="[1988-1997]黔江土家族苗族自治县" + 3524 county="[1988-1997]酉阳土家族苗族自治县" + 3525 county="[1988-1997]彭水苗族土家族自治县" + 3600 county="[1993-1998]广安地区" + 3601 county="[1993-1998]华蓥市" + 3621 county="[1993-1998]广安县" + 3622 county="[1993-1998]岳池县" + 3623 county="[1993-1998]武胜县" + 3624 county="[1993-1998]邻水县" + 3700 county="[1993-2000]巴中地区" + 3701 county="[1993-2000]巴中市" + 3721 county="[1993-2000]通江县" + 3722 county="[1993-2000]南江县" + 3723 county="[1993-2000]平昌县" + 3800 county="[1997-2000]眉山地区" + 3821 county="[1997-2000]眉山县" + 3822 county="[1997-2000]仁寿县" + 3823 county="[1997-2000]彭山县" + 3824 county="[1997-2000]洪雅县" + 3825 county="[1997-2000]丹棱县" + 3826 county="[1997-2000]青神县" + 3900 county="[1998-2000]资阳地区" + 3901 county="[1998-2000]资阳市" + 3902 county="[1998-2000]简阳市" + 3921 county="[1998-2000]安岳县" + 3922 county="[1998-2000]乐至县" + 9000 county="[1988-1989]省直辖县级行政单位" + 9001 county="[1988-1989]广汉市" + 9002 county="[1988-1989]江油市" + 9003 county="[1988-1989]都江堰市" + 9004 county="[1988-1989]峨眉山市" +52 province="贵州省" + 0000 county="贵州省" + 0100 county="贵阳市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]南明区" + 0103 county="[1983-]云岩区" + 0111 county="[1983-]花溪区" + 0112 county="[1983-]乌当区" + 0113 county="[1983-]白云区" + 0114 county="[2000-2012]小河区" + 0115 county="[2012-]观山湖区" + 0121 county="[1995-]开阳县" + 0122 county="[1995-]息烽县" + 0123 county="[1995-]修文县" + 0181 county="[1995-]清镇市" + 0200 county="六盘水市" + 0201 county="[-1986]水城特区,[1987-]钟山区" + 0202 county="[-1999]盘县特区" + 0203 county="六枝特区" + 0204 county="[2020-]水城区" + 0221 county="[1987-2020]水城县" + 0222 county="[1999-2017]盘县" + 0281 county="[2017-]盘州市" + 0300 county="[1997-]遵义市" + 0301 county="[1997-]市辖区" + 0302 county="[1997-]红花岗区" + 0303 county="[2003-]汇川区" + 0304 county="[2016-]播州区" + 0321 county="[1997-2016]遵义县" + 0322 county="[1997-]桐梓县" + 0323 county="[1997-]绥阳县" + 0324 county="[1997-]正安县" + 0325 county="[1997-]道真仡佬族苗族自治县" + 0326 county="[1997-]务川仡佬族苗族自治县" + 0327 county="[1997-]凤冈县" + 0328 county="[1997-]湄潭县" + 0329 county="[1997-]余庆县" + 0330 county="[1997-]习水县" + 0381 county="[1997-]赤水市" + 0382 county="[1997-]仁怀市" + 0400 county="[2000-]安顺市" + 0401 county="[2000-]市辖区" + 0402 county="[2000-]西秀区" + 0403 county="[2014-]平坝区" + 0421 county="[2000-2014]平坝县" + 0422 county="[2000-]普定县" + 0423 county="[2000-]镇宁布依族苗族自治县" + 0424 county="[2000-]关岭布依族苗族自治县" + 0425 county="[2000-]紫云苗族布依族自治县" + 0500 county="[2011-]毕节市" + 0501 county="[2011-]市辖区" + 0502 county="[2011-]七星关区" + 0521 county="[2011-]大方县" + 0522 county="[2011-2021]黔西县" + 0523 county="[2011-]金沙县" + 0524 county="[2011-]织金县" + 0525 county="[2011-]纳雍县" + 0526 county="[2011-]威宁彝族回族苗族自治县" + 0527 county="[2011-]赫章县" + 0581 county="[2021-]黔西市" + 0600 county="[2011-]铜仁市" + 0601 county="[2011-]市辖区" + 0602 county="[2011-]碧江区" + 0603 county="[2011-]万山区" + 0621 county="[2011-]江口县" + 0622 county="[2011-]玉屏侗族自治县" + 0623 county="[2011-]石阡县" + 0624 county="[2011-]思南县" + 0625 county="[2011-]印江土家族苗族自治县" + 0626 county="[2011-]德江县" + 0627 county="[2011-]沿河土家族自治县" + 0628 county="[2011-]松桃苗族自治县" + 2100 county="[-1997]遵义地区" + 2101 county="[-1997]遵义市" + 2102 county="[1990-1997]赤水市" + 2103 county="[1995-1997]仁怀市" + 2121 county="[-1997]遵义县" + 2122 county="[-1997]桐梓县" + 2123 county="[-1997]绥阳县" + 2124 county="[-1997]正安县" + 2125 county="[-1985]道真县,[1986-1997]道真仡佬族苗族自治县" + 2126 county="[-1985]务川县,[1986-1997]务川仡佬族苗族自治县" + 2127 county="[-1997]凤冈县" + 2128 county="[-1997]湄潭县" + 2129 county="[-1997]余庆县" + 2130 county="[-1995]仁怀县" + 2131 county="[-1990]赤水县" + 2132 county="[-1997]习水县" + 2200 county="[-2011]铜仁地区" + 2201 county="[1987-2011]铜仁市" + 2221 county="[-1987]铜仁县" + 2222 county="[-2011]江口县" + 2223 county="[-1982]玉屏县,[1983-2011]玉屏侗族自治县" + 2224 county="[-2011]石阡县" + 2225 county="[-2011]思南县" + 2226 county="[-1985]印江县,[1986-2011]印江土家族苗族自治县" + 2227 county="[-2011]德江县" + 2228 county="[-1985]沿河县,[1986-2011]沿河土家族自治县" + 2229 county="[-2011]松桃苗族自治县" + 2230 county="[-2011]万山特区" + 2300 county="[-1980]兴义地区,[1981-]黔西南布依族苗族自治州" + 2301 county="[1987-]兴义市" + 2302 county="[2018-]兴仁市" + 2321 county="[-1987]兴义县" + 2322 county="[-2018]兴仁县" + 2323 county="普安县" + 2324 county="晴隆县" + 2325 county="[-1980]贞丰布依族苗族自治县,[1981-]贞丰县" + 2326 county="[-1980]望谟布依族苗族自治县,[1981-]望谟县" + 2327 county="[-1980]册亨布依族自治县,[1981-]册亨县" + 2328 county="[-1980]安龙布依族苗族自治县,[1981-]安龙县" + 2400 county="[-2011]毕节地区" + 2401 county="[1993-2011]毕节市" + 2421 county="[-1993]毕节县" + 2422 county="[-2011]大方县" + 2423 county="[-2011]黔西县" + 2424 county="[-2011]金沙县" + 2425 county="[-2011]织金县" + 2426 county="[-2011]纳雍县" + 2427 county="[-2011]威宁彝族回族苗族自治县" + 2428 county="[-2011]赫章县" + 2500 county="[-2000]安顺地区" + 2501 county="[-2000]安顺市" + 2502 county="[1992-1995]清镇市" + 2521 county="[-1990]安顺县" + 2522 county="[-1995]开阳县" + 2523 county="[-1995]息烽县" + 2524 county="[-1995]修文县" + 2525 county="[-1992]清镇县" + 2526 county="[-2000]平坝县" + 2527 county="[-2000]普定县" + 2528 county="[-1980]关岭县,[1981-2000]关岭布依族苗族自治县" + 2529 county="[-2000]镇宁布依族苗族自治县" + 2530 county="[-2000]紫云苗族布依族自治县" + 2600 county="黔东南苗族侗族自治州" + 2601 county="[1983-]凯里市" + 2621 county="[-1983]凯里县" + 2622 county="黄平县" + 2623 county="施秉县" + 2624 county="三穗县" + 2625 county="镇远县" + 2626 county="岑巩县" + 2627 county="天柱县" + 2628 county="锦屏县" + 2629 county="剑河县" + 2630 county="台江县" + 2631 county="黎平县" + 2632 county="榕江县" + 2633 county="从江县" + 2634 county="雷山县" + 2635 county="麻江县" + 2636 county="丹寨县" + 2700 county="黔南布依族苗族自治州" + 2701 county="都匀市" + 2702 county="[1996-]福泉市" + 2721 county="[-1983]都匀县" + 2722 county="荔波县" + 2723 county="贵定县" + 2724 county="[-1996]福泉县" + 2725 county="瓮安县" + 2726 county="独山县" + 2727 county="平塘县" + 2728 county="罗甸县" + 2729 county="长顺县" + 2730 county="龙里县" + 2731 county="惠水县" + 2732 county="三都水族自治县" +53 province="云南省" + 0000 county="云南省" + 0100 county="昆明市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]五华区" + 0103 county="[1983-]盘龙区" + 0111 county="[1983-]官渡区" + 0112 county="[1983-]西山区" + 0113 county="[1998-]东川区" + 0114 county="[2011-]呈贡区" + 0115 county="[2016-]晋宁区" + 0120 county="[-1983]市区" + 0121 county="[-2011]呈贡县" + 0122 county="[-2016]晋宁县" + 0123 county="[-1995]安宁县" + 0124 county="富民县" + 0125 county="[1983-]宜良县" + 0126 county="[1983-1997]路南彝族自治县,[1998-]石林彝族自治县" + 0127 county="[1983-]嵩明县" + 0128 county="[1983-1984]禄劝县,[1985-]禄劝彝族苗族自治县" + 0129 county="[1998-]寻甸回族彝族自治县" + 0181 county="[1995-]安宁市" + 0200 county="[-1998]东川市" + 0300 county="[1997-]曲靖市" + 0301 county="[1997-]市辖区" + 0302 county="[1997-]麒麟区" + 0303 county="[2016-]沾益区" + 0304 county="[2018-]马龙区" + 0321 county="[1997-2018]马龙县" + 0322 county="[1997-]陆良县" + 0323 county="[1997-]师宗县" + 0324 county="[1997-]罗平县" + 0325 county="[1997-]富源县" + 0326 county="[1997-]会泽县" + 0327 county="[1997-1998]寻甸县" + 0328 county="[1997-2016]沾益县" + 0381 county="[1997-]宣威市" + 0400 county="[1997-]玉溪市" + 0401 county="[1997-]市辖区" + 0402 county="[1997-]红塔区" + 0403 county="[2015-]江川区" + 0421 county="[1997-2015]江川县" + 0422 county="[1997-2019]澄江县" + 0423 county="[1997-]通海县" + 0424 county="[1997-]华宁县" + 0425 county="[1997-]易门县" + 0426 county="[1997-]峨山彝族自治县" + 0427 county="[1997-]新平彝族傣族自治县" + 0428 county="[1997-]元江哈尼族彝族傣族自治县" + 0481 county="[2019-]澄江市" + 0500 county="[2000-]保山市" + 0501 county="[2000-]市辖区" + 0502 county="[2000-]隆阳区" + 0521 county="[2000-]施甸县" + 0522 county="[2000-2015]腾冲县" + 0523 county="[2000-]龙陵县" + 0524 county="[2000-]昌宁县" + 0581 county="[2015-]腾冲市" + 0600 county="[2001-]昭通市" + 0601 county="[2001-]市辖区" + 0602 county="[2001-]昭阳区" + 0621 county="[2001-]鲁甸县" + 0622 county="[2001-]巧家县" + 0623 county="[2001-]盐津县" + 0624 county="[2001-]大关县" + 0625 county="[2001-]永善县" + 0626 county="[2001-]绥江县" + 0627 county="[2001-]镇雄县" + 0628 county="[2001-]彝良县" + 0629 county="[2001-]威信县" + 0630 county="[2001-2018]水富县" + 0681 county="[2018-]水富市" + 0700 county="[2002-]丽江市" + 0701 county="[2002-]市辖区" + 0702 county="[2002-]古城区" + 0721 county="[2002-]玉龙纳西族自治县" + 0722 county="[2002-]永胜县" + 0723 county="[2002-]华坪县" + 0724 county="[2002-]宁蒗彝族自治县" + 0800 county="[2003-2006]思茅市,[2007-]普洱市" + 0801 county="[2003-]市辖区" + 0802 county="[2003-2006]翠云区,[2007-]思茅区" + 0821 county="[1985-2006]普洱哈尼族彝族自治县,[2007-]宁洱哈尼族彝族自治县" + 0822 county="[2003-]墨江哈尼族自治县" + 0823 county="[2003-]景东彝族自治县" + 0824 county="[2003-]景谷傣族彝族自治县" + 0825 county="[2003-]镇沅彝族哈尼族拉祜族自治县" + 0826 county="[2003-]江城哈尼族彝族自治县" + 0827 county="[2003-]孟连傣族拉祜族佤族自治县" + 0828 county="[2003-]澜沧拉祜族自治县" + 0829 county="[2003-]西盟佤族自治县" + 0900 county="[2003-]临沧市" + 0901 county="[2003-]市辖区" + 0902 county="[2003-]临翔区" + 0921 county="[2003-]凤庆县" + 0922 county="[2003-]云县" + 0923 county="[2003-]永德县" + 0924 county="[2003-]镇康县" + 0925 county="[2003-]双江拉祜族佤族布朗族傣族自治县" + 0926 county="[2003-]耿马傣族佤族自治县" + 0927 county="[2003-]沧源佤族自治县" + 2100 county="[-2001]昭通地区" + 2101 county="[-2001]昭通市" + 2121 county="[-1983]昭通县" + 2122 county="[-2001]鲁甸县" + 2123 county="[-2001]巧家县" + 2124 county="[-2001]盐津县" + 2125 county="[-2001]大关县" + 2126 county="[-2001]永善县" + 2127 county="[-2001]绥江县" + 2128 county="[-2001]镇雄县" + 2129 county="[-2001]彝良县" + 2130 county="[-2001]威信县" + 2131 county="[-2001]水富县" + 2200 county="[-1997]曲靖地区" + 2201 county="[1983-1997]曲靖市" + 2202 county="[1994-1997]宣威市" + 2221 county="[-1983]曲靖县" + 2222 county="[-1983]沾益县" + 2223 county="[-1997]马龙县" + 2224 county="[-1994]宣威县" + 2225 county="[-1997]富源县" + 2226 county="[-1997]罗平县" + 2227 county="[-1997]师宗县" + 2228 county="[-1997]陆良县" + 2229 county="[-1983]宜良县" + 2230 county="[-1983]路南彝族自治县" + 2231 county="[-1997]寻甸回族彝族自治县" + 2232 county="[-1983]嵩明县" + 2233 county="[-1997]会泽县" + 2300 county="楚雄彝族自治州" + 2301 county="[1983-]楚雄市" + 2302 county="[2021-]禄丰市" + 2321 county="[-1983]楚雄县" + 2322 county="双柏县" + 2323 county="牟定县" + 2324 county="南华县" + 2325 county="姚安县" + 2326 county="大姚县" + 2327 county="永仁县" + 2328 county="元谋县" + 2329 county="武定县" + 2330 county="[-1983]禄劝县" + 2331 county="[-2021]禄丰县" + 2400 county="[-1997]玉溪地区" + 2401 county="[1983-1997]玉溪市" + 2421 county="[-1983]玉溪县" + 2422 county="[-1997]江川县" + 2423 county="[-1997]澄江县" + 2424 county="[-1997]通海县" + 2425 county="[-1997]华宁县" + 2426 county="[-1997]易门县" + 2427 county="[-1997]峨山彝族自治县" + 2428 county="[-1997]新平彝族傣族自治县" + 2429 county="[-1997]元江哈尼族彝族傣族自治县" + 2500 county="红河哈尼族彝族自治州" + 2501 county="个旧市" + 2502 county="[1981-]开远市" + 2503 county="[2010-]蒙自市" + 2504 county="[2013-]弥勒市" + 2521 county="[-1981]开远县" + 2522 county="[-2010]蒙自县" + 2523 county="屏边苗族自治县" + 2524 county="建水县" + 2525 county="石屏县" + 2526 county="[-2013]弥勒县" + 2527 county="泸西县" + 2528 county="元阳县" + 2529 county="红河县" + 2530 county="[-1984]金平县,[1985-]金平苗族瑶族傣族自治县" + 2531 county="绿春县" + 2532 county="河口瑶族自治县" + 2600 county="文山壮族苗族自治州" + 2601 county="[2010-]文山市" + 2621 county="[-2010]文山县" + 2622 county="砚山县" + 2623 county="西畴县" + 2624 county="麻栗坡县" + 2625 county="马关县" + 2626 county="丘北县" + 2627 county="广南县" + 2628 county="富宁县" + 2700 county="[-2003]思茅地区" + 2701 county="[1993-2003]思茅市" + 2721 county="[-1993]思茅县" + 2722 county="[-1984]普洱县,[1985-2006]普洱哈尼族彝族自治县" + 2723 county="[-2003]墨江哈尼族自治县" + 2724 county="[-1984]景东县,[1985-2003]景东彝族自治县" + 2725 county="[-1984]景谷县,[1985-2003]景谷傣族彝族自治县" + 2726 county="[-1989]镇沅县,[1990-2003]镇沅彝族哈尼族拉祜族自治县" + 2727 county="[-2003]江城哈尼族彝族自治县" + 2728 county="[-2003]孟连傣族拉祜族佤族自治县" + 2729 county="[-2003]澜沧拉祜族自治县" + 2730 county="[-2003]西盟佤族自治县" + 2800 county="西双版纳傣族自治州" + 2801 county="[1993-]景洪市" + 2821 county="[-1993]景洪县" + 2822 county="勐海县" + 2823 county="勐腊县" + 2900 county="大理白族自治州" + 2901 county="[1983-1982]下关市,[1983-]大理市" + 2921 county="[-1983]大理县" + 2922 county="[-1984]漾濞县,[1985-]漾濞彝族自治县" + 2923 county="祥云县" + 2924 county="宾川县" + 2925 county="弥渡县" + 2926 county="南涧彝族自治县" + 2927 county="巍山彝族回族自治县" + 2928 county="永平县" + 2929 county="云龙县" + 2930 county="洱源县" + 2931 county="剑川县" + 2932 county="鹤庆县" + 3000 county="[-2000]保山地区" + 3001 county="[1983-2000]保山市" + 3021 county="[-1983]保山县" + 3022 county="[-2000]施甸县" + 3023 county="[-2000]腾冲县" + 3024 county="[-2000]龙陵县" + 3025 county="[-2000]昌宁县" + 3100 county="德宏傣族景颇族自治州" + 3101 county="[1985-1999]畹町市" + 3102 county="[1992-]瑞丽市" + 3103 county="[1996-2009]潞西市,[2010-]芒市" + 3121 county="[-1996]潞西县" + 3122 county="梁河县" + 3123 county="盈江县" + 3124 county="陇川县" + 3125 county="[-1992]瑞丽县" + 3126 county="[-1985]畹町镇" + 3200 county="[-2002]丽江地区" + 3221 county="[-2002]丽江纳西族自治县" + 3222 county="[-2002]永胜县" + 3223 county="[-2002]华坪县" + 3224 county="[-2002]宁蒗彝族自治县" + 3300 county="怒江傈僳族自治州" + 3301 county="[2016-]泸水市" + 3321 county="[-2016]泸水县" + 3322 county="[-1986]碧江县" + 3323 county="福贡县" + 3324 county="贡山独龙族怒族自治县" + 3325 county="[-1986]兰坪县,[1987-]兰坪白族普米族自治县" + 3400 county="迪庆藏族自治州" + 3401 county="[2014-]香格里拉市" + 3421 county="[-2000]中甸县,[2001-2013]香格里拉县" + 3422 county="德钦县" + 3423 county="[-1984]维西县,[1985-]维西傈僳族自治县" + 3500 county="[-2003]临沧地区" + 3521 county="[-2003]临沧县" + 3522 county="[-2003]凤庆县" + 3523 county="[-2003]云县" + 3524 county="[-2003]永德县" + 3525 county="[-2003]镇康县" + 3526 county="[-1984]双江县,[1985-2003]双江拉祜族佤族布朗族傣族自治县" + 3527 county="[-2003]耿马傣族佤族自治县" + 3528 county="[-2003]沧源佤族自治县" +54 province="西藏自治区" + 0000 county="西藏自治区" + 0100 county="拉萨市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]城关区" + 0103 county="[2015-]堆龙德庆区" + 0104 county="[2017-]达孜区" + 0120 county="[-1983]市区" + 0121 county="林周县" + 0122 county="当雄县" + 0123 county="尼木县" + 0124 county="曲水县" + 0125 county="[-2015]堆龙德庆县" + 0126 county="[-2017]达孜县" + 0127 county="墨竹工卡县" + 0128 county="[-1983]工布江达县" + 0129 county="[-1983]林芝县" + 0130 county="[-1983]米林县" + 0131 county="[-1983]墨脱县" + 0200 county="[2014-]日喀则市" + 0201 county="[2014-]市辖区" + 0202 county="[2014-]桑珠孜区" + 0221 county="[2014-]南木林县" + 0222 county="[2014-]江孜县" + 0223 county="[2014-]定日县" + 0224 county="[2014-]萨迦县" + 0225 county="[2014-]拉孜县" + 0226 county="[2014-]昂仁县" + 0227 county="[2014-]谢通门县" + 0228 county="[2014-]白朗县" + 0229 county="[2014-]仁布县" + 0230 county="[2014-]康马县" + 0231 county="[2014-]定结县" + 0232 county="[2014-]仲巴县" + 0233 county="[2014-]亚东县" + 0234 county="[2014-]吉隆县" + 0235 county="[2014-]聂拉木县" + 0236 county="[2014-]萨嘎县" + 0237 county="[2014-]岗巴县" + 0300 county="[2014-]昌都市" + 0301 county="[2014-]市辖区" + 0302 county="[2014-]卡若区" + 0321 county="[2014-]江达县" + 0322 county="[2014-]贡觉县" + 0323 county="[2014-]类乌齐县" + 0324 county="[2014-]丁青县" + 0325 county="[2014-]察雅县" + 0326 county="[2014-]八宿县" + 0327 county="[2014-]左贡县" + 0328 county="[2014-]芒康县" + 0329 county="[2014-]洛隆县" + 0330 county="[2014-]边坝县" + 0400 county="[2015-]林芝市" + 0401 county="[2015-]市辖区" + 0402 county="[2015-]巴宜区" + 0421 county="[2015-]工布江达县" + 0422 county="[2015-2023]米林县" + 0423 county="[2015-]墨脱县" + 0424 county="[2015-]波密县" + 0425 county="[2015-]察隅县" + 0426 county="[2015-]朗县" + 0481 county="[2023-]米林市" + 0500 county="[2016-]山南市" + 0501 county="[2016-]市辖区" + 0502 county="[2016-]乃东区" + 0521 county="[2016-]扎囊县" + 0522 county="[2016-]贡嘎县" + 0523 county="[2016-]桑日县" + 0524 county="[2016-]琼结县" + 0525 county="[2016-]曲松县" + 0526 county="[2016-]措美县" + 0527 county="[2016-]洛扎县" + 0528 county="[2016-]加查县" + 0529 county="[2016-]隆子县" + 0530 county="[2016-2023]错那县" + 0531 county="[2016-]浪卡子县" + 0581 county="[2023-]错那市" + 0600 county="[2017-]那曲市" + 0601 county="[2017-]市辖区" + 0602 county="[2017-]色尼区" + 0621 county="[2017-]嘉黎县" + 0622 county="[2017-]比如县" + 0623 county="[2017-]聂荣县" + 0624 county="[2017-]安多县" + 0625 county="[2017-]申扎县" + 0626 county="[2017-]索县" + 0627 county="[2017-]班戈县" + 0628 county="[2017-]巴青县" + 0629 county="[2017-]尼玛县" + 0630 county="[2017-]双湖县" + 2100 county="[-2014]昌都地区" + 2121 county="[-2014]昌都县" + 2122 county="[-2014]江达县" + 2123 county="[-2014]贡觉县" + 2124 county="[-2014]类乌齐县" + 2125 county="[-2014]丁青县" + 2126 county="[-2014]察雅县" + 2127 county="[-2014]八宿县" + 2128 county="[-2014]左贡县" + 2129 county="[-2014]芒康县" + 2130 county="[-1983]波密县" + 2131 county="[-1983]察隅县" + 2132 county="[-2014]洛隆县" + 2133 county="[-2014]边坝县" + 2134 county="[1983-1999]盐井县" + 2135 county="[1983-1999]碧土县" + 2136 county="[1983-1999]妥坝县" + 2137 county="[1983-1999]生达县" + 2200 county="[-2016]山南地区" + 2221 county="[-2016]乃东县" + 2222 county="[-2016]扎囊县" + 2223 county="[-2016]贡嘎县" + 2224 county="[-2016]桑日县" + 2225 county="[-2016]琼结县" + 2226 county="[-2016]曲松县" + 2227 county="[-2016]措美县" + 2228 county="[-2016]洛扎县" + 2229 county="[-2016]加查县" + 2230 county="[-1983]朗县" + 2231 county="[-2016]隆子县" + 2232 county="[-2016]错那县" + 2233 county="[1986-2016]浪卡子县" + 2300 county="[-2014]日喀则地区" + 2301 county="[1986-2014]日喀则市" + 2321 county="[-1986]日喀则县" + 2322 county="[-2014]南木林县" + 2323 county="[1986-2014]江孜县" + 2324 county="[-2014]定日县" + 2325 county="[-2014]萨迦县" + 2326 county="[-2014]拉孜县" + 2327 county="[-2014]昂仁县" + 2328 county="[-2014]谢通门县" + 2329 county="[1986-2014]白朗县" + 2330 county="[1986-2014]仁布县" + 2331 county="[1986-2014]康马县" + 2332 county="[-2014]定结县" + 2333 county="[-2014]仲巴县" + 2334 county="[1986-2014]亚东县" + 2335 county="[-2014]吉隆县" + 2336 county="[-2014]聂拉木县" + 2337 county="[-2014]萨嘎县" + 2338 county="[1986-2014]岗巴县" + 2400 county="[-2017]那曲地区" + 2421 county="[-2017]那曲县" + 2422 county="[-2017]嘉黎县" + 2423 county="[-2017]比如县" + 2424 county="[-2017]聂荣县" + 2425 county="[-2017]安多县" + 2426 county="[-2017]申扎县" + 2427 county="[-2017]索县" + 2428 county="[-2017]班戈县" + 2429 county="[-2017]巴青县" + 2430 county="[1983-2017]尼玛县" + 2431 county="[2012-2017]双湖县" + 2500 county="阿里地区" + 2521 county="普兰县" + 2522 county="札达县" + 2523 county="噶尔县" + 2524 county="日土县" + 2525 county="革吉县" + 2526 county="改则县" + 2527 county="措勤县" + 2528 county="[1983-1999]隆格尔县" + 2600 county="[1983-2015]林芝地区" + 2621 county="[1983-2015]林芝县" + 2622 county="[1983-2015]工布江达县" + 2623 county="[1983-2015]米林县" + 2624 county="[1983-2015]墨脱县" + 2625 county="[1983-2015]波密县" + 2626 county="[1983-2015]察隅县" + 2627 county="[1983-2015]朗县" + 2700 county="[1983-1986]江孜地区" + 2721 county="[1983-1986]江孜县" + 2722 county="[1983-1986]浪卡子县" + 2723 county="[1983-1986]白朗县" + 2724 county="[1983-1986]仁布县" + 2725 county="[1983-1986]康马县" + 2726 county="[1983-1986]亚东县" + 2727 county="[1983-1986]岗巴县" +61 province="陕西省" + 0000 county="陕西省" + 0100 county="西安市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]新城区" + 0103 county="[1983-]碑林区" + 0104 county="[1983-]莲湖区" + 0111 county="[1983-]灞桥区" + 0112 county="[1983-]未央区" + 0113 county="[1983-]雁塔区" + 0114 county="[1983-]阎良区" + 0115 county="[1997-]临潼区" + 0116 county="[2002-]长安区" + 0117 county="[2014-]高陵区" + 0118 county="[2016-]鄠邑区" + 0120 county="[-1983]市区" + 0121 county="[-2002]长安县" + 0122 county="[1983-]蓝田县" + 0123 county="[1983-1997]临潼县" + 0124 county="[1983-]周至县" + 0125 county="[1983-2016]户县" + 0126 county="[1983-2014]高陵县" + 0200 county="铜川市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-1999]城区,[2000-]王益区" + 0203 county="[1983-1999]郊区,[2000-]印台区" + 0204 county="[2002-]耀州区" + 0220 county="[-1983]市区" + 0221 county="[-2002]耀县" + 0222 county="[1983-]宜君县" + 0300 county="宝鸡市" + 0301 county="[1983-]市辖区" + 0302 county="[1983-]渭滨区" + 0303 county="[1983-]金台区" + 0304 county="[2003-]陈仓区" + 0305 county="[2021-]凤翔区" + 0320 county="[-1983]市区" + 0321 county="[-2003]宝鸡县" + 0322 county="[-2021]凤翔县" + 0323 county="岐山县" + 0324 county="扶风县" + 0325 county="[-1983]武功县" + 0326 county="眉县" + 0327 county="陇县" + 0328 county="千阳县" + 0329 county="麟游县" + 0330 county="凤县" + 0331 county="太白县" + 0400 county="[1983-]咸阳市" + 0401 county="[1983-]市辖区" + 0402 county="[1983-]秦都区" + 0403 county="[1983-]杨陵区" + 0404 county="[1986-]渭城区" + 0421 county="[1983-1993]兴平县" + 0422 county="[1983-]三原县" + 0423 county="[1983-]泾阳县" + 0424 county="[1983-]乾县" + 0425 county="[1983-]礼泉县" + 0426 county="[1983-]永寿县" + 0427 county="[1983-2018]彬县" + 0428 county="[1983-]长武县" + 0429 county="[1983-]旬邑县" + 0430 county="[1983-]淳化县" + 0431 county="[1983-]武功县" + 0481 county="[1993-]兴平市" + 0482 county="[2018-]彬州市" + 0500 county="[1994-]渭南市" + 0501 county="[1994-]市辖区" + 0502 county="[1994-]临渭区" + 0503 county="[2015-]华州区" + 0521 county="[1994-2015]华县" + 0522 county="[1994-]潼关县" + 0523 county="[1994-]大荔县" + 0524 county="[1994-]合阳县" + 0525 county="[1994-]澄城县" + 0526 county="[1994-]蒲城县" + 0527 county="[1994-]白水县" + 0528 county="[1994-]富平县" + 0581 county="[1994-]韩城市" + 0582 county="[1994-]华阴市" + 0600 county="[1996-]延安市" + 0601 county="[1996-]市辖区" + 0602 county="[1996-]宝塔区" + 0603 county="[2016-]安塞区" + 0621 county="[1996-]延长县" + 0622 county="[1996-]延川县" + 0623 county="[1996-2019]子长县" + 0624 county="[1996-2016]安塞县" + 0625 county="[1996-]志丹县" + 0626 county="[1996-2004]吴旗县,[2005-]吴起县" + 0627 county="[1996-]甘泉县" + 0628 county="[1996-]富县" + 0629 county="[1996-]洛川县" + 0630 county="[1996-]宜川县" + 0631 county="[1996-]黄龙县" + 0632 county="[1996-]黄陵县" + 0681 county="[2019-]子长市" + 0700 county="[1996-]汉中市" + 0701 county="[1996-]市辖区" + 0702 county="[1996-]汉台区" + 0703 county="[2017-]南郑区" + 0721 county="[1996-2017]南郑县" + 0722 county="[1996-]城固县" + 0723 county="[1996-]洋县" + 0724 county="[1996-]西乡县" + 0725 county="[1996-]勉县" + 0726 county="[1996-]宁强县" + 0727 county="[1996-]略阳县" + 0728 county="[1996-]镇巴县" + 0729 county="[1996-]留坝县" + 0730 county="[1996-]佛坪县" + 0800 county="[1999-]榆林市" + 0801 county="[1999-]市辖区" + 0802 county="[1999-]榆阳区" + 0803 county="[2015-]横山区" + 0821 county="[1999-2017]神木县" + 0822 county="[1999-]府谷县" + 0823 county="[1999-2015]横山县" + 0824 county="[1999-]靖边县" + 0825 county="[1999-]定边县" + 0826 county="[1999-]绥德县" + 0827 county="[1999-]米脂县" + 0828 county="[1999-]佳县" + 0829 county="[1999-]吴堡县" + 0830 county="[1999-]清涧县" + 0831 county="[1999-]子洲县" + 0881 county="[2017-]神木市" + 0900 county="[2000-]安康市" + 0901 county="[2000-]市辖区" + 0902 county="[2000-]汉滨区" + 0921 county="[2000-]汉阴县" + 0922 county="[2000-]石泉县" + 0923 county="[2000-]宁陕县" + 0924 county="[2000-]紫阳县" + 0925 county="[2000-]岚皋县" + 0926 county="[2000-]平利县" + 0927 county="[2000-]镇坪县" + 0928 county="[2000-2021]旬阳县" + 0929 county="[2000-]白河县" + 0981 county="[2021-]旬阳市" + 1000 county="[2001-]商洛市" + 1001 county="[2001-]市辖区" + 1002 county="[2001-]商州区" + 1021 county="[2001-]洛南县" + 1022 county="[2001-]丹凤县" + 1023 county="[2001-]商南县" + 1024 county="[2001-]山阳县" + 1025 county="[2001-]镇安县" + 1026 county="[2001-]柞水县" + 2100 county="[-1994]渭南地区" + 2101 county="[1983-1994]渭南市" + 2102 county="[1983-1994]韩城市" + 2103 county="[1990-1994]华阴市" + 2121 county="[-1983]蓝田县" + 2122 county="[-1983]临潼县" + 2123 county="[-1983]渭南县" + 2124 county="[-1994]华县" + 2125 county="[-1990]华阴县" + 2126 county="[-1994]潼关县" + 2127 county="[-1994]大荔县" + 2128 county="[-1994]蒲城县" + 2129 county="[-1994]澄城县" + 2130 county="[-1994]白水县" + 2131 county="[-1983]韩城县" + 2132 county="[-1994]合阳县" + 2133 county="[-1994]富平县" + 2200 county="[-1983]咸阳地区" + 2201 county="[-1983]咸阳市" + 2221 county="[-1983]兴平县" + 2222 county="[-1983]周至县" + 2223 county="[-1983]户县" + 2224 county="[-1983]三原县" + 2225 county="[-1983]泾阳县" + 2226 county="[-1983]高陵县" + 2227 county="[-1983]乾县" + 2228 county="[-1983]礼泉县" + 2229 county="[-1983]永寿县" + 2230 county="[-1983]彬县" + 2231 county="[-1983]长武县" + 2232 county="[-1983]旬邑县" + 2233 county="[-1983]淳化县" + 2300 county="[-1996]汉中地区" + 2301 county="[-1996]汉中市" + 2321 county="[-1996]南郑县" + 2322 county="[-1996]城固县" + 2323 county="[-1996]洋县" + 2324 county="[-1996]西乡县" + 2325 county="[-1996]勉县" + 2326 county="[-1996]宁强县" + 2327 county="[-1996]略阳县" + 2328 county="[-1996]镇巴县" + 2329 county="[-1996]留坝县" + 2330 county="[-1996]佛坪县" + 2400 county="[-2000]安康地区" + 2401 county="[1988-2000]安康市" + 2421 county="[-1988]安康县" + 2422 county="[-2000]汉阴县" + 2423 county="[-2000]石泉县" + 2424 county="[-2000]宁陕县" + 2425 county="[-2000]紫阳县" + 2426 county="[-2000]岚皋县" + 2427 county="[-2000]平利县" + 2428 county="[-2000]镇坪县" + 2429 county="[-2000]旬阳县" + 2430 county="[-2000]白河县" + 2500 county="[-2001]商洛地区" + 2501 county="[1988-2001]商州市" + 2521 county="[-1988]商县" + 2522 county="[-2001]洛南县" + 2523 county="[-2001]丹凤县" + 2524 county="[-2001]商南县" + 2525 county="[-2001]山阳县" + 2526 county="[-2001]镇安县" + 2527 county="[-2001]柞水县" + 2600 county="[-1996]延安地区" + 2601 county="[-1996]延安市" + 2621 county="[-1996]延长县" + 2622 county="[-1996]延川县" + 2623 county="[-1996]子长县" + 2624 county="[-1996]安塞县" + 2625 county="[-1996]志丹县" + 2626 county="[-1996]吴旗县" + 2627 county="[-1996]甘泉县" + 2628 county="[-1996]富县" + 2629 county="[-1996]洛川县" + 2630 county="[-1996]宜川县" + 2631 county="[-1996]黄龙县" + 2632 county="[-1996]黄陵县" + 2633 county="[-1983]宜君县" + 2700 county="[-1999]榆林地区" + 2701 county="[1988-1999]榆林市" + 2721 county="[-1988]榆林县" + 2722 county="[-1999]神木县" + 2723 county="[-1999]府谷县" + 2724 county="[-1999]横山县" + 2725 county="[-1999]靖边县" + 2726 county="[-1999]定边县" + 2727 county="[-1999]绥德县" + 2728 county="[-1999]米脂县" + 2729 county="[-1999]佳县" + 2730 county="[-1999]吴堡县" + 2731 county="[-1999]清涧县" + 2732 county="[-1999]子洲县" +62 province="甘肃省" + 0000 county="甘肃省" + 0100 county="兰州市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]城关区" + 0103 county="[1983-]七里河区" + 0104 county="[1983-]西固区" + 0105 county="[1983-]安宁区" + 0111 county="[1983-]红古区" + 0112 county="[1983-1985]白银区" + 0120 county="[-1983]市区" + 0121 county="永登县" + 0122 county="皋兰县" + 0123 county="榆中县" + 0200 county="嘉峪关市" + 0300 county="[1981-]金昌市" + 0301 county="[1984-]市辖区" + 0302 county="[1984-]金川区" + 0320 county="[1981-1984]市区" + 0321 county="[1981-]永昌县" + 0400 county="[1985-]白银市" + 0401 county="[1985-]市辖区" + 0402 county="[1985-]白银区" + 0403 county="[1985-]平川区" + 0421 county="[1985-]靖远县" + 0422 county="[1985-]会宁县" + 0423 county="[1985-]景泰县" + 0500 county="[1985-]天水市" + 0501 county="[1985-]市辖区" + 0502 county="[1985-2003]秦城区,[2004-]秦州区" + 0503 county="[1985-2003]北道区,[2004-]麦积区" + 0521 county="[1985-]清水县" + 0522 county="[1985-]秦安县" + 0523 county="[1985-]甘谷县" + 0524 county="[1985-]武山县" + 0525 county="[1985-]张家川回族自治县" + 0600 county="[2001-]武威市" + 0601 county="[2001-]市辖区" + 0602 county="[2001-]凉州区" + 0621 county="[2001-]民勤县" + 0622 county="[2001-]古浪县" + 0623 county="[2001-]天祝藏族自治县" + 0700 county="[2002-]张掖市" + 0701 county="[2002-]市辖区" + 0702 county="[2002-]甘州区" + 0721 county="[2002-]肃南裕固族自治县" + 0722 county="[2002-]民乐县" + 0723 county="[2002-]临泽县" + 0724 county="[2002-]高台县" + 0725 county="[2002-]山丹县" + 0800 county="[2002-]平凉市" + 0801 county="[2002-]市辖区" + 0802 county="[2002-]崆峒区" + 0821 county="[2002-]泾川县" + 0822 county="[2002-]灵台县" + 0823 county="[2002-]崇信县" + 0824 county="[2002-2018]华亭县" + 0825 county="[2002-]庄浪县" + 0826 county="[2002-]静宁县" + 0881 county="[2018-]华亭市" + 0900 county="[2002-]酒泉市" + 0901 county="[2002-]市辖区" + 0902 county="[2002-]肃州区" + 0921 county="[2002-]金塔县" + 0922 county="[2002-2005]安西县,[2006-]瓜州县" + 0923 county="[2002-]肃北蒙古族自治县" + 0924 county="[2002-]阿克塞哈萨克族自治县" + 0981 county="[2002-]玉门市" + 0982 county="[2002-]敦煌市" + 1000 county="[2002-]庆阳市" + 1001 county="[2002-]市辖区" + 1002 county="[2002-]西峰区" + 1021 county="[2002-]庆城县" + 1022 county="[2002-]环县" + 1023 county="[2002-]华池县" + 1024 county="[2002-]合水县" + 1025 county="[2002-]正宁县" + 1026 county="[2002-]宁县" + 1027 county="[2002-]镇原县" + 1100 county="[2003-]定西市" + 1101 county="[2003-]市辖区" + 1102 county="[2003-]安定区" + 1121 county="[2003-]通渭县" + 1122 county="[2003-]陇西县" + 1123 county="[2003-]渭源县" + 1124 county="[2003-]临洮县" + 1125 county="[2003-]漳县" + 1126 county="[2003-]岷县" + 1200 county="[2004-]陇南市" + 1201 county="[2004-]市辖区" + 1202 county="[2004-]武都区" + 1221 county="[2004-]成县" + 1222 county="[2004-]文县" + 1223 county="[2004-]宕昌县" + 1224 county="[2004-]康县" + 1225 county="[2004-]西和县" + 1226 county="[2004-]礼县" + 1227 county="[2004-]徽县" + 1228 county="[2004-]两当县" + 2100 county="[-2002]酒泉地区" + 2101 county="[-2002]玉门市" + 2102 county="[1985-2002]酒泉市" + 2103 county="[1987-2002]敦煌市" + 2121 county="[-1985]酒泉县" + 2122 county="[-1987]敦煌县" + 2123 county="[-2002]金塔县" + 2124 county="[-2002]肃北蒙古族自治县" + 2125 county="[-2002]阿克塞哈萨克族自治县" + 2126 county="[-2002]安西县" + 2200 county="[-2002]张掖地区" + 2201 county="[1985-2002]张掖市" + 2221 county="[-1985]张掖县" + 2222 county="[-2002]肃南裕固族自治县" + 2223 county="[-2002]民乐县" + 2224 county="[-2002]临泽县" + 2225 county="[-2002]高台县" + 2226 county="[-2002]山丹县" + 2300 county="[-2001]武威地区" + 2301 county="[1985-2001]武威市" + 2321 county="[-1985]武威县" + 2322 county="[-2001]民勤县" + 2323 county="[-2001]古浪县" + 2324 county="[-1985]景泰县" + 2325 county="[-1981]永昌县" + 2326 county="[-2001]天祝藏族自治县" + 2400 county="[-2003]定西地区" + 2421 county="[-2003]定西县" + 2422 county="[-1985]靖远县" + 2423 county="[-1985]会宁县" + 2424 county="[-2003]通渭县" + 2425 county="[-2003]陇西县" + 2426 county="[-2003]渭源县" + 2427 county="[-2003]临洮县" + 2428 county="[1985-2003]漳县" + 2429 county="[1985-2003]岷县" + 2500 county="[-1985]天水地区" + 2501 county="[-1985]天水市" + 2521 county="[-1985]张家川回族自治县" + 2522 county="[-1985]天水县" + 2523 county="[-1985]清水县" + 2524 county="[-1985]徽县" + 2525 county="[-1985]两当县" + 2526 county="[-1985]礼县" + 2527 county="[-1985]西和县" + 2528 county="[-1985]武山县" + 2529 county="[-1985]甘谷县" + 2530 county="[-1985]秦安县" + 2531 county="[-1985]漳县" + 2600 county="[-1984]武都地区,[1985-2003]陇南地区" + 2621 county="[-2004]武都县" + 2622 county="[-1985]岷县" + 2623 county="[-2004]宕昌县" + 2624 county="[-2004]成县" + 2625 county="[-2004]康县" + 2626 county="[-2004]文县" + 2627 county="[1985-2004]西和县" + 2628 county="[1985-2004]礼县" + 2629 county="[1985-2004]两当县" + 2630 county="[1985-2004]徽县" + 2700 county="[-2002]平凉地区" + 2701 county="[1983-2002]平凉市" + 2721 county="[-1983]平凉县" + 2722 county="[-2002]泾川县" + 2723 county="[-2002]灵台县" + 2724 county="[-2002]崇信县" + 2725 county="[-2002]华亭县" + 2726 county="[-2002]庄浪县" + 2727 county="[-2002]静宁县" + 2800 county="[-2002]庆阳地区" + 2801 county="[1985-2002]西峰市" + 2821 county="[-2002]庆阳县" + 2822 county="[-2002]环县" + 2823 county="[-2002]华池县" + 2824 county="[-2002]合水县" + 2825 county="[-2002]正宁县" + 2826 county="[-2002]宁县" + 2827 county="[-2002]镇原县" + 2900 county="临夏回族自治州" + 2901 county="[1983-]临夏市" + 2921 county="临夏县" + 2922 county="康乐县" + 2923 county="永靖县" + 2924 county="广河县" + 2925 county="和政县" + 2926 county="东乡族自治县" + 2927 county="积石山保安族东乡族撒拉族自治县" + 3000 county="甘南藏族自治州" + 3001 county="[1996-]合作市" + 3021 county="临潭县" + 3022 county="卓尼县" + 3023 county="舟曲县" + 3024 county="迭部县" + 3025 county="玛曲县" + 3026 county="碌曲县" + 3027 county="夏河县" +63 province="青海省" + 0000 county="青海省" + 0100 county="西宁市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]城东区" + 0103 county="[1983-]城中区" + 0104 county="[1983-]城西区" + 0105 county="[1986-]城北区" + 0106 county="[2019-]湟中区" + 0111 county="[1983-1986]郊区" + 0120 county="[-1983]市区" + 0121 county="[-1984]大通县,[1985-]大通回族土族自治县" + 0122 county="[1999-2019]湟中县" + 0123 county="[1999-]湟源县" + 0200 county="[2013-]海东市" + 0201 county="[2013-]市辖区" + 0202 county="[2013-]乐都区" + 0203 county="[2015-]平安区" + 0221 county="[2013-2015]平安县" + 0222 county="[2013-]民和回族土族自治县" + 0223 county="[2013-]互助土族自治县" + 0224 county="[2013-]化隆回族自治县" + 0225 county="[2013-]循化撒拉族自治县" + 2100 county="[-2013]海东地区" + 2121 county="[-2013]平安县" + 2122 county="[-1984]民和县,[1985-2013]民和回族土族自治县" + 2123 county="[-2013]乐都县" + 2124 county="[-1999]湟中县" + 2125 county="[-1999]湟源县" + 2126 county="[-2013]互助土族自治县" + 2127 county="[-2013]化隆回族自治县" + 2128 county="[-2013]循化撒拉族自治县" + 2200 county="海北藏族自治州" + 2221 county="门源回族自治县" + 2222 county="祁连县" + 2223 county="海晏县" + 2224 county="刚察县" + 2300 county="黄南藏族自治州" + 2301 county="[2020-]同仁市" + 2321 county="[-2020]同仁县" + 2322 county="尖扎县" + 2323 county="泽库县" + 2324 county="[1988-]河南蒙古族自治县" + 2400 county="[-1988]省直辖行政单位" + 2421 county="[-1988]河南蒙古族自治县" + 2500 county="海南藏族自治州" + 2521 county="共和县" + 2522 county="同德县" + 2523 county="贵德县" + 2524 county="兴海县" + 2525 county="贵南县" + 2600 county="果洛藏族自治州" + 2621 county="玛沁县" + 2622 county="班玛县" + 2623 county="甘德县" + 2624 county="达日县" + 2625 county="久治县" + 2626 county="玛多县" + 2700 county="玉树藏族自治州" + 2701 county="[2013-]玉树市" + 2721 county="[-2013]玉树县" + 2722 county="杂多县" + 2723 county="称多县" + 2724 county="治多县" + 2725 county="囊谦县" + 2726 county="曲麻莱县" + 2800 county="[-1984]海西蒙古族藏族哈萨克族自治州,[1985-]海西蒙古族藏族自治州" + 2801 county="格尔木市" + 2802 county="[1988-]德令哈市" + 2803 county="[2018-]茫崖市" + 2821 county="乌兰县" + 2822 county="都兰县" + 2823 county="天峻县" + 2858 county="[1992-2018]冷湖行政委員會" + 2859 county="[1984-2018]茫崖行政委員會" +64 province="宁夏回族自治区" + 0000 county="宁夏回族自治区" + 0100 county="银川市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-2002]城区" + 0103 county="[1983-2002]新城区" + 0104 county="[2002-]兴庆区" + 0105 county="[2002-]西夏区" + 0106 county="[2002-]金凤区" + 0111 county="[1983-2002]郊区" + 0120 county="[-1983]市区" + 0121 county="永宁县" + 0122 county="贺兰县" + 0181 county="[2002-]灵武市" + 0200 county="石嘴山市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]大武口区" + 0203 county="[1983-2003]石嘴山区" + 0204 county="[1983-2002]石炭井区" + 0205 county="[2003-]惠农区" + 0211 county="[1983-1987]郊区" + 0220 county="[-1983]市区" + 0221 county="平罗县" + 0222 county="[-2003]陶乐县" + 0223 county="[1987-2003]惠农县" + 0300 county="[1998-]吴忠市" + 0301 county="[1998-]市辖区" + 0302 county="[1998-]利通区" + 0303 county="[2009-]红寺堡区" + 0321 county="[1998-2003]中卫县" + 0322 county="[1998-2003]中宁县" + 0323 county="[1998-]盐池县" + 0324 county="[1998-]同心县" + 0381 county="[1998-]青铜峡市" + 0382 county="[1998-2002]灵武市" + 0400 county="[2001-]固原市" + 0401 county="[2001-]市辖区" + 0402 county="[2001-]原州区" + 0421 county="[2001-2003]海原县" + 0422 county="[2001-]西吉县" + 0423 county="[2001-]隆德县" + 0424 county="[2001-]泾源县" + 0425 county="[2001-]彭阳县" + 0500 county="[2003-]中卫市" + 0501 county="[2003-]市辖区" + 0502 county="[2003-]沙坡头区" + 0521 county="[2003-]中宁县" + 0522 county="[2003-]海原县" + 2100 county="[-1998]银南地区" + 2101 county="[1983-1998]吴忠市" + 2102 county="[1984-1998]青铜峡市" + 2103 county="[1996-1998]灵武市" + 2121 county="[-1983]吴忠县" + 2122 county="[-1984]青铜峡县" + 2123 county="[-1998]中卫县" + 2124 county="[-1998]中宁县" + 2125 county="[-1996]灵武县" + 2126 county="[-1998]盐池县" + 2127 county="[-1998]同心县" + 2200 county="[-2001]固原地区" + 2221 county="[-2001]固原县" + 2222 county="[-2001]海原县" + 2223 county="[-2001]西吉县" + 2224 county="[-2001]隆德县" + 2225 county="[-2001]泾源县" + 2226 county="[-2001]彭阳县" +65 province="新疆维吾尔自治区" + 0000 county="新疆维吾尔自治区" + 0100 county="乌鲁木齐市" + 0101 county="[1983-]市辖区" + 0102 county="[1983-]天山区" + 0103 county="[1983-]沙依巴克区" + 0104 county="[1983-]新市区" + 0105 county="[1983-]水磨沟区" + 0106 county="[1983-]头屯河区" + 0107 county="[1983-1998]南山矿区,[1999-2001]南泉区,[2002-]达坂城区" + 0108 county="[1987-2007]东山区" + 0109 county="[2007-]米东区" + 0120 county="[-1983]市区" + 0121 county="乌鲁木齐县" + 0200 county="克拉玛依市" + 0201 county="[1983-]市辖区" + 0202 county="[1983-]独山子区" + 0203 county="[1983-]克拉玛依区" + 0204 county="[1983-]白碱滩区" + 0205 county="[1983-]乌尔禾区" + 0300 county="[-1986]石河子市" + 0400 county="[2015-]吐鲁番市" + 0401 county="[2015-]市辖区" + 0402 county="[2015-]高昌区" + 0421 county="[2015-]鄯善县" + 0422 county="[2015-]托克逊县" + 0500 county="[2016-]哈密市" + 0501 county="[2016-]市辖区" + 0502 county="[2016-]伊州区" + 0521 county="[2016-]巴里坤哈萨克自治县" + 0522 county="[2016-]伊吾县" + 2100 county="[-2015]吐鲁番地区" + 2101 county="[1984-2015]吐鲁番市" + 2121 county="[-1984]吐鲁番县" + 2122 county="[-2015]鄯善县" + 2123 county="[-2015]托克逊县" + 2200 county="[-2016]哈密地区" + 2201 county="[-2016]哈密市" + 2221 county="[-1983]哈密县" + 2222 county="[-2016]巴里坤哈萨克自治县" + 2223 county="[-2016]伊吾县" + 2300 county="昌吉回族自治州" + 2301 county="[1983-]昌吉市" + 2302 county="[1992-]阜康市" + 2303 county="[1996-2007]米泉市" + 2321 county="[-1983]昌吉县" + 2322 county="[-1996]米泉县" + 2323 county="呼图壁县" + 2324 county="玛纳斯县" + 2325 county="奇台县" + 2326 county="[-1992]阜康县" + 2327 county="吉木萨尔县" + 2328 county="木垒哈萨克自治县" + 2400 county="[-1984]伊犁哈萨克自治州" + 2401 county="[-1984]伊宁市" + 2402 county="[-1984]奎屯市" + 2421 county="[-1984]伊宁县" + 2422 county="[-1984]察布查尔锡伯自治县" + 2423 county="[-1984]霍城县" + 2424 county="[-1984]巩留县" + 2425 county="[-1984]新源县" + 2426 county="[-1984]昭苏县" + 2427 county="[-1984]特克斯县" + 2428 county="[-1984]尼勒克县" + 2500 county="[-1984]塔城地区" + 2521 county="[-1984]塔城县" + 2522 county="[-1984]额敏县" + 2523 county="[-1984]乌苏县" + 2524 county="[-1984]沙湾县" + 2525 county="[-1984]托里县" + 2526 county="[-1984]裕民县" + 2527 county="[-1984]和布克赛尔蒙古自治县" + 2600 county="[-1984]阿勒泰地区" + 2621 county="[-1984]阿勒泰县" + 2622 county="[-1984]布尔津县" + 2623 county="[-1984]富蕴县" + 2624 county="[-1984]福海县" + 2625 county="[-1984]哈巴河县" + 2626 county="[-1984]青河县" + 2627 county="[-1984]吉木乃县" + 2700 county="博尔塔拉蒙古自治州" + 2701 county="[1985-]博乐市" + 2702 county="[2012-]阿拉山口市" + 2721 county="[-1985]博乐县" + 2722 county="精河县" + 2723 county="温泉县" + 2800 county="巴音郭楞蒙古自治州" + 2801 county="库尔勒市" + 2821 county="[-1983]库尔勒县" + 2822 county="轮台县" + 2823 county="尉犁县" + 2824 county="若羌县" + 2825 county="且末县" + 2826 county="焉耆回族自治县" + 2827 county="和静县" + 2828 county="和硕县" + 2829 county="博湖县" + 2900 county="阿克苏地区" + 2901 county="[1983-]阿克苏市" + 2902 county="[2019-]库车市" + 2921 county="[-1983]阿克苏县" + 2922 county="温宿县" + 2923 county="[-2019]库车县" + 2924 county="沙雅县" + 2925 county="新和县" + 2926 county="拜城县" + 2927 county="乌什县" + 2928 county="阿瓦提县" + 2929 county="柯坪县" + 3000 county="克孜勒苏柯尔克孜自治州" + 3001 county="[1986-]阿图什市" + 3021 county="[-1986]阿图什县" + 3022 county="阿克陶县" + 3023 county="阿合奇县" + 3024 county="乌恰县" + 3100 county="喀什地区" + 3101 county="喀什市" + 3121 county="疏附县" + 3122 county="疏勒县" + 3123 county="英吉沙县" + 3124 county="泽普县" + 3125 county="莎车县" + 3126 county="叶城县" + 3127 county="麦盖提县" + 3128 county="岳普湖县" + 3129 county="伽师县" + 3130 county="巴楚县" + 3131 county="塔什库尔干塔吉克自治县" + 3200 county="和田地区" + 3201 county="[1983-]和田市" + 3221 county="和田县" + 3222 county="墨玉县" + 3223 county="皮山县" + 3224 county="洛浦县" + 3225 county="策勒县" + 3226 county="于田县" + 3227 county="民丰县" + 3228 county="[2024-]和康县" + 3229 county="[2024-]和安县" + 4000 county="[1984-]伊犁哈萨克自治州" + 4001 county="[1984-2001]奎屯市" + 4002 county="[2001-]伊宁市" + 4003 county="[2001-]奎屯市" + 4004 county="[2014-]霍尔果斯市" + 4021 county="[2001-]伊宁县" + 4022 county="[2001-]察布查尔锡伯自治县" + 4023 county="[2001-]霍城县" + 4024 county="[2001-]巩留县" + 4025 county="[2001-]新源县" + 4026 county="[2001-]昭苏县" + 4027 county="[2001-]特克斯县" + 4028 county="[2001-]尼勒克县" + 4100 county="[1984-2001]伊犁地区" + 4101 county="[1984-2001]伊宁市" + 4121 county="[1984-2001]伊宁县" + 4122 county="[1984-2001]察布查尔锡伯自治县" + 4123 county="[1984-2001]霍城县" + 4124 county="[1984-2001]巩留县" + 4125 county="[1984-2001]新源县" + 4126 county="[1984-2001]昭苏县" + 4127 county="[1984-2001]特克斯县" + 4128 county="[1984-2001]尼勒克县" + 4200 county="[1984-]塔城地区" + 4201 county="[1984-]塔城市" + 4202 county="[1996-]乌苏市" + 4203 county="[2021-]沙湾市" + 4221 county="[1984-]额敏县" + 4222 county="[1984-1996]乌苏县" + 4223 county="[1984-2021]沙湾县" + 4224 county="[1984-]托里县" + 4225 county="[1984-]裕民县" + 4226 county="[1984-]和布克赛尔蒙古自治县" + 4300 county="[1984-]阿勒泰地区" + 4301 county="[1984-]阿勒泰市" + 4321 county="[1984-]布尔津县" + 4322 county="[1984-]富蕴县" + 4323 county="[1984-]福海县" + 4324 county="[1984-]哈巴河县" + 4325 county="[1984-]青河县" + 4326 county="[1984-]吉木乃县" + 9000 county="[1986-]自治区直辖县级行政单位" + 9001 county="[1986-]石河子市" + 9002 county="[2002-]阿拉尔市" + 9003 county="[2002-]图木舒克市" + 9004 county="[2002-]五家渠市" + 9005 county="[2011-]北屯市" + 9006 county="[2012-]铁门关市" + 9007 county="[2014-]双河市" + 9008 county="[2015-]可克达拉市" + 9009 county="[2016-]昆玉市" + 9010 county="[2019-]胡杨河市" + 9011 county="[2021-]新星市" + 9012 county="[2022-]白杨市" +71 province="台湾省" + 0000 county="台湾省" +81 province="香港特別行政區" + 0000 county="[1997-]香港特别行政区" +82 province="澳門特別行政區" + 0000 county="[1999-]澳门特别行政区" diff --git a/stdnum/cn/ric.py b/stdnum/cn/ric.py index 4b18ceee..12554b80 100644 --- a/stdnum/cn/ric.py +++ b/stdnum/cn/ric.py @@ -1,6 +1,7 @@ # ric.py - functions for handling Chinese Resident Identity Card Number # # Copyright (C) 2014 Jiangge Zhang +# Copyright (C) 2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,16 +14,14 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RIC No. (Chinese Resident Identity Card Number). The RIC No. is the unique identifier for issued to China (PRC) residents. The number consist of 18 digits in four sections. The first 6 digits refers to -the resident's location, followed by 8 digits represeting the resident's birth +the resident's location, followed by 8 digits representing the resident's birth day in the form YYYY-MM-DD. The next 3 digits is the order code which is the code used to disambiguate people with the same date of birth and address code. Men are assigned to odd numbers, women assigned to even numbers. The final @@ -32,19 +31,21 @@ '360426199101010071' """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number).upper().strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date. Note that in some cases it may return the registration date instead of the birth date and it may be a century off.""" @@ -58,24 +59,39 @@ def get_birth_date(number): raise InvalidComponent() -def get_birth_place(number): +def get_birth_place(number: str) -> dict[str, str]: """Use the number to look up the place of birth of the person.""" from stdnum import numdb number = compact(number) - results = numdb.get('cn/loc').info(number[:6])[0][1] - if not results: + results = numdb.get('cn/loc').info(number[:6]) + info = {k: v for part, props in results for k, v in props.items()} + if not info: raise InvalidComponent() - return results - - -def calc_check_digit(number): + year = get_birth_date(number).year + # check if any found county was assigned at the birth year + for county in info['county'].split(','): + if not county.startswith('['): + return info + startend, county = county[1:].split(']') + start, end = startend.split('-') + if start and year < int(start): + continue + if end and year > int(end): + continue + info['county'] = county + return info + # none of the found counties were valid when the number was assigned + raise InvalidComponent() + + +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should have the check digit included.""" checksum = (1 - 2 * int(number[:-1], 13)) % 11 return 'X' if checksum == 10 else str(checksum) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid RIC number. This checks the length, formatting and birth date and place.""" number = compact(number) @@ -90,7 +106,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid RIC number.""" try: return bool(validate(number)) @@ -98,6 +114,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/cn/uscc.py b/stdnum/cn/uscc.py index a04a553b..a14b93b8 100644 --- a/stdnum/cn/uscc.py +++ b/stdnum/cn/uscc.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """USCC (Unified Social Credit Code, 统一社会信用代码, China tax number). @@ -71,6 +69,8 @@ '91110000600037341L' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -78,7 +78,7 @@ _alphabet = '0123456789ABCDEFGHJKLMNPQRTUWXY' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -87,7 +87,7 @@ def compact(number): return clean(number, ' -').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number.""" weights = (1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28) number = compact(number) @@ -95,7 +95,7 @@ def calc_check_digit(number): return _alphabet[(31 - total) % 31] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid USCC. This checks the length, formatting and check digit. @@ -112,7 +112,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid USCC.""" try: return bool(validate(number)) @@ -120,6 +120,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/co/__init__.py b/stdnum/co/__init__.py index de40a0c5..997ad89e 100644 --- a/stdnum/co/__init__.py +++ b/stdnum/co/__init__.py @@ -14,12 +14,13 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Colombian numbers.""" +from __future__ import annotations + + # provide vat and rut as an alias from stdnum.co import nit as vat # noqa: F401, isort:skip from stdnum.co import nit as rut # noqa: F401, isort:skip diff --git a/stdnum/co/nit.py b/stdnum/co/nit.py index 2b182056..213ed325 100644 --- a/stdnum/co/nit.py +++ b/stdnum/co/nit.py @@ -16,9 +16,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIT (Número De Identificación Tributaria, Colombian identity code). @@ -35,17 +33,19 @@ '213.123.432-1' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separation dash.""" return clean(number, '.,- ').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" weights = (3, 7, 13, 17, 19, 23, 29, 37, 41, 43, 47, 53, 59, 67, 71) @@ -53,7 +53,7 @@ def calc_check_digit(number): return '01987654321'[s] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid NIT. This checks the length, formatting and check digit.""" number = compact(number) @@ -66,7 +66,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid NIT.""" try: return bool(validate(number)) @@ -74,7 +74,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '.'.join( diff --git a/stdnum/cr/__init__.py b/stdnum/cr/__init__.py index d9b149a8..ca027c85 100644 --- a/stdnum/cr/__init__.py +++ b/stdnum/cr/__init__.py @@ -14,9 +14,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Costa Rican numbers.""" + +from __future__ import annotations + from stdnum.cr import cpj as vat # noqa: F401 diff --git a/stdnum/cr/cpf.py b/stdnum/cr/cpf.py index 105a0e1a..8f48df22 100644 --- a/stdnum/cr/cpf.py +++ b/stdnum/cr/cpf.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CPF (Cédula de Persona Física, Costa Rica physical person ID number). @@ -53,11 +51,13 @@ '01-0613-0584' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -67,16 +67,16 @@ def compact(number): parts = number.split('-') if len(parts) == 3: # Pad each group with zeroes - parts[0] = '0' * (2 - len(parts[0])) + parts[0] - parts[1] = '0' * (4 - len(parts[1])) + parts[1] - parts[2] = '0' * (4 - len(parts[2])) + parts[2] + parts[0] = parts[0].zfill(2) + parts[1] = parts[1].zfill(4) + parts[2] = parts[2].zfill(4) number = ''.join(parts) if len(number) == 9: number = '0' + number # Add leading zero return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Costa Rica CPF number. This checks the length and formatting. @@ -91,7 +91,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Costa Rica CPF number.""" try: return bool(validate(number)) @@ -99,7 +99,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[:2], number[2:6], number[6:]]) diff --git a/stdnum/cr/cpj.py b/stdnum/cr/cpj.py index c713a85e..a61ad4f9 100644 --- a/stdnum/cr/cpj.py +++ b/stdnum/cr/cpj.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CPJ (Cédula de Persona Jurídica, Costa Rica tax number). @@ -32,7 +30,7 @@ * https://www.hacienda.go.cr/consultapagos/ayuda_cedulas.htm * https://www.procomer.com/downloads/quiero/guia_solicitud_vuce.pdf (page 11) -* http://www.registronacional.go.cr/personas_juridicas/documentos/Consultas/Listado%20de%20Clases%20y%20Tipos%20Cedulas%20Juridicas.pdf +* https://rnpdigital.com/personas_juridicas/documentos/Consultas/Listado%20de%20Clases%20y%20Tipos%20Cedulas%20Juridicas.pdf * https://www.hacienda.go.cr/ATV/frmConsultaSituTributaria.aspx >>> validate('3-101-999999') @@ -47,13 +45,15 @@ InvalidLength: ... >>> format('4 000 042138') '4-000-042138' -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -62,7 +62,7 @@ def compact(number): return clean(number, ' -').upper().strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Costa Rica CPJ number. This checks the length and formatting. @@ -89,7 +89,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Costa Rica CPJ number.""" try: return bool(validate(number)) @@ -97,7 +97,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[0], number[1:4], number[4:]]) diff --git a/stdnum/cr/cr.py b/stdnum/cr/cr.py index a63e4148..5cbf29e4 100644 --- a/stdnum/cr/cr.py +++ b/stdnum/cr/cr.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CR (Cédula de Residencia, Costa Rica foreigners ID number). @@ -51,11 +49,13 @@ '122200569906' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -64,7 +64,7 @@ def compact(number): return clean(number, ' -').upper().strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Costa Rica CR number. This checks the length and formatting. @@ -79,7 +79,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Costa Rica CR number.""" try: return bool(validate(number)) @@ -87,6 +87,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/cu/__init__.py b/stdnum/cu/__init__.py index aec2e467..1cb6f628 100644 --- a/stdnum/cu/__init__.py +++ b/stdnum/cu/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Cuban numbers.""" diff --git a/stdnum/cu/ni.py b/stdnum/cu/ni.py index 2202e683..c9e8d6bf 100644 --- a/stdnum/cu/ni.py +++ b/stdnum/cu/ni.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NI (Número de identidad, Cuban identity card numbers). @@ -50,19 +48,21 @@ InvalidComponent: ... """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separation dash.""" return clean(number, ' ').strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the date of birth.""" number = compact(number) year = int(number[0:2]) @@ -80,7 +80,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the gender (M/F) from the person's NI.""" number = compact(number) if int(number[9]) % 2: @@ -89,7 +89,7 @@ def get_gender(number): return 'M' -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid NI. This checks the length, formatting and check digit.""" number = compact(number) @@ -101,7 +101,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid NI.""" try: return bool(validate(number)) diff --git a/stdnum/cusip.py b/stdnum/cusip.py index ae69e6aa..b21813ef 100644 --- a/stdnum/cusip.py +++ b/stdnum/cusip.py @@ -1,6 +1,6 @@ # cusip.py - functions for handling CUSIP numbers # -# Copyright (C) 2015-2017 Arthur de Jong +# Copyright (C) 2015-2022 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CUSIP number (financial security identification number). @@ -39,21 +37,22 @@ 'US91324PAE25' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip().upper() -# O and I are not valid but are accounted for in the check digit calculation -_alphabet = '0123456789ABCDEFGH JKLMN PQRSTUVWXYZ*@#' +_alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*@#' -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digits for the number.""" # convert to numeric first, then sum individual digits number = ''.join( @@ -61,7 +60,7 @@ def calc_check_digit(number): return str((10 - sum(int(n) for n in number)) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length and check digit.""" number = compact(number) @@ -74,7 +73,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length and check digit.""" try: @@ -83,7 +82,7 @@ def is_valid(number): return False -def to_isin(number): +def to_isin(number: str) -> str: """Convert the number to an ISIN.""" from stdnum import isin return isin.from_natid('US', number) diff --git a/stdnum/cy/__init__.py b/stdnum/cy/__init__.py index 1d0117b2..095d36e9 100644 --- a/stdnum/cy/__init__.py +++ b/stdnum/cy/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Cypriot numbers.""" diff --git a/stdnum/cy/vat.py b/stdnum/cy/vat.py index ce9115cd..4c2c5214 100644 --- a/stdnum/cy/vat.py +++ b/stdnum/cy/vat.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Αριθμός Εγγραφής Φ.Π.Α. (Cypriot VAT number). @@ -33,11 +31,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -46,7 +46,7 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" translation = { @@ -59,7 +59,7 @@ def calc_check_digit(number): ) % 26] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -74,7 +74,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/cz/__init__.py b/stdnum/cz/__init__.py index fc749019..9e3c0183 100644 --- a/stdnum/cz/__init__.py +++ b/stdnum/cz/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Czech numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.cz import dic as vat # noqa: F401 diff --git a/stdnum/cz/bankaccount.py b/stdnum/cz/bankaccount.py new file mode 100644 index 00000000..ccfee4f8 --- /dev/null +++ b/stdnum/cz/bankaccount.py @@ -0,0 +1,133 @@ +# bankaccount.py - functions for handling Czech bank account numbers +# coding: utf-8 +# +# Copyright (C) 2022 Petr Přikryl +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Czech bank account number. + +The Czech bank account numbers consist of up to 20 digits: + UUUUUK-MMMMMMMMKM/XXXX + +The first part is prefix that is up to 6 digits. The following part is from 2 to 10 digits. +Both parts could be filled with zeros from left if missing. +The final 4 digits represent the bank code. + +More information: + +* https://www.penize.cz/osobni-ucty/424173-tajemstvi-cisla-uctu-klicem-pro-banky-je-11 +* https://www.zlatakoruna.info/zpravy/ucty/cislo-uctu-v-cr + +>>> validate('34278-0727558021/0100') +'034278-0727558021/0100' +>>> validate('4278-727558021/0100') # invalid check digits (prefix) +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('34278-727558021/0000') # invalid bank +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> format('34278-727558021/0100') +'034278-0727558021/0100' +>>> to_bic('34278-727558021/0100') +'KOMBCZPP' +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean + + +_bankaccount_re = re.compile( + r'((?P[0-9]{0,6})-)?(?P[0-9]{2,10})\/(?P[0-9]{4})') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + number = clean(number).strip() + match = _bankaccount_re.match(number) + if match: + # zero-pad valid numbers + prefix = (match.group('prefix') or '').zfill(6) + root = match.group('root').zfill(10) + number = ''.join((prefix, '-', root, '/', match.group('bank'))) + return number + + +def _split(number: str) -> tuple[str | None, str, str]: + """Split valid numbers into prefix, root and bank parts of the number.""" + match = _bankaccount_re.match(number) + if not match: + raise InvalidFormat() + return match.group('prefix'), match.group('root'), match.group('bank') + + +def _info(bank: str) -> dict[str, str]: + """Look up information for the bank.""" + from stdnum import numdb + info = {} + for _nr, found in numdb.get('cz/banks').info(bank): + info.update(found) + return info + + +def info(number: str) -> dict[str, str]: + """Return a dictionary of data about the supplied number. This typically + returns the name of the bank and branch and a BIC if it is valid.""" + prefix, root, bank = _split(compact(number)) + return _info(bank) + + +def to_bic(number: str) -> str | None: + """Return the BIC for the bank that this number refers to.""" + return info(number).get('bic') + + +def _calc_checksum(number: str) -> int: + weights = (6, 3, 7, 9, 10, 5, 8, 4, 2, 1) + return sum(w * int(n) for w, n in zip(weights, number.zfill(10))) % 11 + + +def validate(number: str) -> str: + """Check if the number provided is a valid bank account number.""" + number = compact(number) + prefix, root, bank = _split(number) + # guaranteed to be present because compacts adds a missing prefix + assert prefix + if _calc_checksum(prefix) != 0: + raise InvalidChecksum() + if _calc_checksum(root) != 0: + raise InvalidChecksum() + if 'bank' not in _info(bank): + raise InvalidComponent() + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid bank account number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/cz/banks.dat b/stdnum/cz/banks.dat new file mode 100644 index 00000000..883234fc --- /dev/null +++ b/stdnum/cz/banks.dat @@ -0,0 +1,49 @@ +# generated from kody_bank_CR.csv downloaded from +# https://www.cnb.cz/cs/platebni-styk/.galleries/ucty_kody_bank/download/kody_bank_CR.csv +0100 bic="KOMBCZPP" bank="Komerční banka, a.s." certis="True" +0300 bic="CEKOCZPP" bank="Československá obchodní banka, a. s." certis="True" +0600 bic="AGBACZPP" bank="MONETA Money Bank, a.s." certis="True" +0710 bic="CNBACZPP" bank="ČESKÁ NÁRODNÍ BANKA" certis="True" +0800 bic="GIBACZPX" bank="Česká spořitelna, a.s." certis="True" +2010 bic="FIOBCZPP" bank="Fio banka, a.s." certis="True" +2060 bic="CITFCZPP" bank="Citfin, spořitelní družstvo" certis="True" +2070 bic="MPUBCZPP" bank="TRINITY BANK a.s." certis="True" +2100 bank="ČSOB Hypoteční banka, a.s." certis="True" +2200 bank="Peněžní dům, spořitelní družstvo" certis="True" +2220 bic="ARTTCZPP" bank="Artesa, spořitelní družstvo" certis="True" +2250 bic="CTASCZ22" bank="Banka CREDITAS a.s." certis="True" +2260 bank="NEY spořitelní družstvo" certis="True" +2600 bic="CITICZPX" bank="Citibank Europe plc, organizační složka" +2700 bic="BACXCZPP" bank="UniCredit Bank Czech Republic and Slovakia, a.s." certis="True" +3030 bic="AIRACZPP" bank="Air Bank a.s." certis="True" +3060 bic="BPKOCZPP" bank="PKO BP S.A., Czech Branch" certis="True" +3500 bic="INGBCZPP" bank="ING Bank N.V." certis="True" +4300 bic="NROZCZPP" bank="Národní rozvojová banka, a.s." certis="True" +5500 bic="RZBCCZPP" bank="Raiffeisenbank a.s." certis="True" +5800 bic="JTBPCZPP" bank="J&T BANKA, a.s." +6000 bic="PMBPCZPP" bank="PPF banka a.s." certis="True" +6200 bic="COBACZPX" bank="COMMERZBANK Aktiengesellschaft, pobočka Praha" certis="True" +6210 bic="BREXCZPP" bank="mBank S.A., organizační složka" certis="True" +6300 bic="GEBACZPP" bank="BNP Paribas S.A., pobočka Česká republika" certis="True" +6363 bank="Partners Banka, a.s." certis="True" +6700 bic="SUBACZPP" bank="Všeobecná úverová banka a.s., pobočka Praha" certis="True" +6800 bic="VBOECZ2X" bank="Sberbank CZ, a.s. v likvidaci" certis="True" +7910 bic="DEUTCZPX" bank="Deutsche Bank Aktiengesellschaft Filiale Prag, organizační složka" certis="True" +7950 bank="Raiffeisen stavební spořitelna a.s." certis="True" +7960 bank="ČSOB Stavební spořitelna, a.s." certis="True" +7970 bank="MONETA Stavební Spořitelna, a.s." certis="True" +7990 bank="Modrá pyramida stavební spořitelna, a.s." certis="True" +8030 bic="GENOCZ21" bank="Volksbank Raiffeisenbank Nordoberpfalz eG pobočka Cheb" certis="True" +8040 bic="OBKLCZ2X" bank="Oberbank AG pobočka Česká republika" certis="True" +8060 bank="Stavební spořitelna České spořitelny, a.s." certis="True" +8090 bic="CZEECZPP" bank="Česká exportní banka, a.s." certis="True" +8150 bic="MIDLCZPP" bank="HSBC Continental Europe, Czech Republic" certis="True" +8190 bank="Sparkasse Oberlausitz-Niederschlesien" certis="True" +8198 bic="FFCSCZP1" bank="FAS finance company s.r.o." +8220 bic="PAERCZP1" bank="Payment execution s.r.o." +8250 bic="BKCHCZPP" bank="Bank of China (CEE) Ltd. Prague Branch" certis="True" +8255 bic="COMMCZPP" bank="Bank of Communications Co., Ltd., Prague Branch odštěpný závod" certis="True" +8265 bic="ICBKCZPP" bank="Industrial and Commercial Bank of China Limited, Prague Branch, odštěpný závod" certis="True" +8500 bank="Multitude Bank p.l.c." certis="True" +8610 bank="Devizová burza a.s." +8660 bank="PAYMONT, UAB" certis="True" diff --git a/stdnum/cz/dic.py b/stdnum/cz/dic.py index 475521d7..7b331d21 100644 --- a/stdnum/cz/dic.py +++ b/stdnum/cz/dic.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """DIČ (Daňové identifikační číslo, Czech VAT number). @@ -40,12 +38,14 @@ '640903926' """ +from __future__ import annotations + from stdnum.cz import rc from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' /').upper().strip() @@ -54,21 +54,21 @@ def compact(number): return number -def calc_check_digit_legal(number): +def calc_check_digit_legal(number: str) -> str: """Calculate the check digit for 8 digit legal entities. The number passed should not have the check digit included.""" check = (11 - sum((8 - i) * int(n) for i, n in enumerate(number))) % 11 return str((check or 1) % 10) -def calc_check_digit_special(number): +def calc_check_digit_special(number: str) -> str: """Calculate the check digit for special cases. The number passed should not have the first and last digits included.""" check = sum((8 - i) * int(n) for i, n in enumerate(number)) % 11 return str((8 - (10 - check) % 11) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -92,7 +92,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/cz/rc.py b/stdnum/cz/rc.py index 627c3122..f4d395c6 100644 --- a/stdnum/cz/rc.py +++ b/stdnum/cz/rc.py @@ -1,7 +1,7 @@ # rc.py - functions for handling Czech birth numbers # coding: utf-8 # -# Copyright (C) 2012-2019 Arthur de Jong +# Copyright (C) 2012-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RČ (Rodné číslo, the Czech birth number). @@ -47,19 +45,21 @@ '710319/2745' """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' /').upper().strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) year = 1900 + int(number[0:2]) @@ -81,7 +81,7 @@ def get_birth_date(number): raise InvalidComponent() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid birth number. This checks the length, formatting, embedded date and check digit.""" number = compact(number) @@ -90,20 +90,16 @@ def validate(number): if len(number) not in (9, 10): raise InvalidLength() # check if birth date is valid - birth_date = get_birth_date(number) - # TODO: check that the birth date is not in the future + get_birth_date(number) # check the check digit (10 digit numbers only) if len(number) == 10: - check = int(number[:-1]) % 11 - # before 1985 the checksum could be 0 or 10 - if birth_date < datetime.date(1985, 1, 1): - check = check % 10 + check = int(number[:-1]) % 11 % 10 if number[-1] != str(check): raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid birth number.""" try: return bool(validate(number)) @@ -111,7 +107,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:6] + '/' + number[6:] diff --git a/stdnum/damm.py b/stdnum/damm.py index 9f36e405..2151b099 100644 --- a/stdnum/damm.py +++ b/stdnum/damm.py @@ -1,6 +1,6 @@ # damm.py - functions for performing the Damm checksum algorithm # -# Copyright (C) 2016-2017 Arthur de Jong +# Copyright (C) 2016-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The Damm algorithm. @@ -53,10 +51,18 @@ 9 """ +from __future__ import annotations + from stdnum.exceptions import * -_operation_table = ( +TYPE_CHECKING = False +if TYPE_CHECKING: # pragma: no cover (only used when type checking) + from collections.abc import Sequence + DammTable = Sequence[Sequence[int]] + + +_operation_table: DammTable = ( (0, 3, 1, 7, 5, 9, 8, 6, 4, 2), (7, 0, 9, 2, 1, 5, 4, 8, 6, 3), (4, 2, 0, 6, 8, 7, 1, 3, 5, 9), @@ -69,7 +75,7 @@ (2, 5, 8, 1, 4, 3, 6, 7, 9, 0)) -def checksum(number, table=None): +def checksum(number: str, table: DammTable | None = None) -> int: """Calculate the Damm checksum over the provided number. The checksum is returned as an integer value and should be 0 when valid.""" table = table or _operation_table @@ -79,20 +85,20 @@ def checksum(number, table=None): return i -def validate(number, table=None): +def validate(number: str, table: DammTable | None = None) -> str: """Check if the number provided passes the Damm algorithm.""" if not bool(number): raise InvalidFormat() try: valid = checksum(number, table=table) == 0 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number, table=None): +def is_valid(number: str, table: DammTable | None = None) -> bool: """Check if the number provided passes the Damm algorithm.""" try: return bool(validate(number, table=table)) @@ -100,7 +106,7 @@ def is_valid(number, table=None): return False -def calc_check_digit(number, table=None): +def calc_check_digit(number: str, table: DammTable | None = None) -> str: """Calculate the extra digit that should be appended to the number to make it a valid number.""" return str(checksum(number, table=table)) diff --git a/stdnum/de/__init__.py b/stdnum/de/__init__.py index 1449961d..c684bdde 100644 --- a/stdnum/de/__init__.py +++ b/stdnum/de/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of German numbers.""" +from __future__ import annotations + # provide businessid as an alias from stdnum.de import handelsregisternummer as businessid # noqa: F401 diff --git a/stdnum/de/handelsregisternummer.py b/stdnum/de/handelsregisternummer.py index 5bda74cd..f1dead9f 100644 --- a/stdnum/de/handelsregisternummer.py +++ b/stdnum/de/handelsregisternummer.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Copyright (C) 2015 Holvi Payment Services Oy -# Copyright (C) 2018-2019 Arthur de Jong +# Copyright (C) 2018-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Handelsregisternummer (German company register number). @@ -50,11 +48,18 @@ InvalidComponent: ... """ +from __future__ import annotations + import re import unicodedata from stdnum.exceptions import * -from stdnum.util import clean, to_unicode +from stdnum.util import clean + + +TYPE_CHECKING = False +if TYPE_CHECKING: # pragma: no cover (typechecking only import) + from typing import Any # The known courts that have a Handelsregister @@ -213,10 +218,10 @@ ) -def _to_min(court): +def _to_min(court: str) -> str: """Convert the court name for quick comparison without encoding issues.""" return ''.join( - x for x in unicodedata.normalize('NFD', to_unicode(court).lower()) + x for x in unicodedata.normalize('NFD', court.lower()) if x in 'abcdefghijklmnopqrstuvwxyz') @@ -229,6 +234,7 @@ def _to_min(court): ('Bad Homburg', 'Bad Homburg v.d.H.'), ('Berlin', 'Berlin (Charlottenburg)'), ('Charlottenburg', 'Berlin (Charlottenburg)'), + ('Charlottenburg (Berlin)', 'Berlin (Charlottenburg)'), ('Kaln', 'Köln'), # for encoding issues ('Kempten', 'Kempten (Allgäu)'), ('Ludwigshafen am Rhein (Ludwigshafen)', 'Ludwigshafen a.Rhein (Ludwigshafen)'), @@ -279,7 +285,7 @@ def _to_min(court): ] -def _split(number): +def _split(number: str) -> tuple[str, str, str, str | None]: """Split the number into a court, registry, register number and optionally qualifier.""" number = clean(number).strip() @@ -290,29 +296,28 @@ def _split(number): raise InvalidFormat() -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" court, registry, number, qualifier = _split(number) return ' '.join(x for x in [court, registry, number, qualifier] if x) -def validate(number, company_form=None): +def validate(number: str, company_form: str | None = None) -> str: """Check if the number is a valid company registry number. If a company_form (eg. GmbH or PartG) is given, the number is validated to have the correct registry type.""" + court: str | None court, registry, number, qualifier = _split(number) court = _courts.get(_to_min(court)) if not court: raise InvalidComponent() - if not isinstance(court, type(number)): # pragma: no cover (Python 2 code) - court = court.decode('utf-8') if company_form and COMPANY_FORM_REGISTRY_TYPES.get(company_form) != registry: raise InvalidComponent() return ' '.join(x for x in [court, registry, number, qualifier] if x) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid company registry number.""" try: return bool(validate(number)) @@ -321,26 +326,37 @@ def is_valid(number): # The base URL for performing lookups -_offeneregister_url = 'https://db.offeneregister.de/openregister-ef9e802.json' +_offeneregister_url = 'https://db.offeneregister.de/openregister.json' -def check_offeneregister(number, timeout=30): # pragma: no cover (not part of normal test suite) +def check_offeneregister( + number: str, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, Any] | None: # pragma: no cover (not part of normal test suite) """Retrieve registration information from the OffeneRegister.de web site. + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. + This basically returns the JSON response from the web service as a dict. It will contain something like the following:: { - 'retrieved_at': '2018-06-24T12:34:53Z', - 'native_company_number': 'The number requested', - 'company_number': 'Compact company number', - 'registrar': 'Registar', - 'federal_state': 'State name', - 'registered_office': 'Office', - 'register_art': 'Register type', - 'register_nummer': 'Number' - 'name': 'The name of the organisation', - 'current_status': 'currently registered', + 'companyId': 'U1206_HRB14011', + 'courtCode': 'U1206', + 'courtName': 'Chemnitz', + 'globalId': 'sn_293298', + 'isCurrent': 'True', + 'name': 'Internet hier GmbH Presentation Provider', + 'nativeReferenceNumber': 'Chemnitz HRB 14011', + 'referenceNumberFirstSeen': '2020-06-12', + 'stdRefNo': 'U1206_HRB14011', + 'validFrom': '2020-06-12', + 'validTill': '', } Will return None if the number is invalid or unknown. @@ -349,31 +365,22 @@ def check_offeneregister(number, timeout=30): # pragma: no cover (not part of n # network access for the tests and unnecessarily load the web service import requests court, registry, number, qualifier = _split(number) - # First lookup the registrar code - # (we could look up the number by registrar (court), registry and number - # but it seems those queries are too slow) - response = requests.get( - _offeneregister_url, - params={ - 'sql': 'select company_number from company where registrar = :p0 limit 1', - 'p0': court}, - timeout=timeout) - response.raise_for_status() - try: - registrar = response.json()['rows'][0][0].split('_')[0] - except (KeyError, IndexError) as e: # noqa: F841 - raise InvalidComponent() # unknown registrar code - # Lookup the number - number = '%s_%s%s' % (registrar, registry, number) response = requests.get( _offeneregister_url, params={ - 'sql': 'select * from company where company_number = :p0 limit 1', - 'p0': number}, - timeout=timeout) + 'sql': ''' + select * + from ReferenceNumbers + join Names on ReferenceNumbers.companyId = Names.companyId + where nativeReferenceNumber = :p0 + limit 1 + ''', + 'p0': '%s %s %s' % (court, registry, number)}, + timeout=timeout, + verify=verify) response.raise_for_status() try: json = response.json() return dict(zip(json['columns'], json['rows'][0])) except (KeyError, IndexError) as e: # noqa: F841 - return # number not found + return None # number not found diff --git a/stdnum/de/idnr.py b/stdnum/de/idnr.py index 5c5a1797..4982a46f 100644 --- a/stdnum/de/idnr.py +++ b/stdnum/de/idnr.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IdNr (Steuerliche Identifikationsnummer, German personal tax number). @@ -45,6 +43,8 @@ '36 574 261 809' """ +from __future__ import annotations + from collections import defaultdict from stdnum.exceptions import * @@ -52,13 +52,13 @@ from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -./,').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid tax identification number. This checks the length, formatting and check digit.""" number = compact(number) @@ -70,7 +70,7 @@ def validate(number): raise InvalidFormat() # In the first 10 digits exactly one digit must be repeated two or # three times and other digits can appear only once. - counter = defaultdict(int) + counter: dict[str, int] = defaultdict(int) for n in number[:10]: counter[n] += 1 counts = [c for c in counter.values() if c > 1] @@ -79,7 +79,7 @@ def validate(number): return mod_11_10.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid tax identification number. This checks the length, formatting and check digit.""" try: @@ -88,7 +88,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[:2], number[2:5], number[5:8], number[8:])) diff --git a/stdnum/de/leitweg.py b/stdnum/de/leitweg.py new file mode 100644 index 00000000..b5d80634 --- /dev/null +++ b/stdnum/de/leitweg.py @@ -0,0 +1,91 @@ +# leitweg.py - functions for handling Leitweg-ID +# coding: utf-8 +# +# Copyright (C) 2025 Holvi Payment Services Oy +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Leitweg-ID, a buyer reference or routing identifier for electronic invoices. + +For the successful transmission of an electronic invoice as invoicing party or +sender, a unique identification and addressing of the invoice recipient is +required. The Leitweg-ID must be transmitted as a mandatory requirement for +electronic invoicing to public contracting authorities in the federal +administration. + +More information: + +* https://leitweg-id.de/ +* https://de.wikipedia.org/wiki/Leitweg-ID +* https://xeinkauf.de/app/uploads/2022/11/Leitweg-ID-Formatspezifikation-v2-0-2-1.pdf + +>>> validate('991-03730-19') +'991-03730-19' +>>> validate('1-03730-19') +Traceback (most recent call last): + ... +InvalidFormat: ... +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.iso7064 import mod_97_10 + + +_pattern = re.compile(r'[0-9]{2,12}(-[0-9A-Z]{,30})?-[0-9]{2}') + + +def compact(number: str) -> str: + """ + Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace. + """ + return number.strip().upper() # no valid separators, dashes part of the format + + +def validate(number: str) -> str: + """ + Check if the number provided is valid. This checks the format, state or + federal government code, and check digits. + """ + if not isinstance(number, str): + raise InvalidFormat() + number = compact(number) + # 2.1 Bestandteile der Leitweg-ID + if not 5 <= len(number) <= 46: + raise InvalidLength() + # 2.1 Bestandteile der Leitweg-ID + if not re.fullmatch(_pattern, number): + raise InvalidFormat() + # 2.2.1 Kennzahl des Bundeslandes/des Bundes + if not number[:2] in { + '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', + '11', '12', '13', '14', '15', '16', '99', + }: + raise InvalidComponent() + # 2.4 Prüfziffer + mod_97_10.validate(number.replace('-', '')) + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is valid. This checks the length and + check digit.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/de/stnr.py b/stdnum/de/stnr.py index 78389771..822747dc 100644 --- a/stdnum/de/stnr.py +++ b/stdnum/de/stnr.py @@ -1,4 +1,4 @@ -# steuernummer.py - functions for handling German tax numbers +# stnr.py - functions for handling German tax numbers # coding: utf-8 # # Copyright (C) 2017 Holvi Payment Services @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """St.-Nr. (Steuernummer, German tax number). @@ -50,14 +48,21 @@ InvalidLength: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * from stdnum.util import clean, isdigits +TYPE_CHECKING = False +if TYPE_CHECKING: # pragma: no cover (typechecking only import) + from collections.abc import Iterable + + # The number formats per region (regional and country-wide format) -_number_formats_per_region = { +_number_formats_per_region_raw = { 'Baden-Württemberg': ['FFBBBUUUUP', '28FF0BBBUUUUP'], 'Bayern': ['FFFBBBUUUUP', '9FFF0BBBUUUUP'], 'Berlin': ['FFBBBUUUUP', '11FF0BBBUUUUP'], @@ -76,11 +81,11 @@ 'Thüringen': ['1FFBBBUUUUP', '41FF0BBBUUUUP'], } -REGIONS = sorted(_number_formats_per_region.keys()) +REGIONS = sorted(_number_formats_per_region_raw.keys()) """Valid regions recognised by this module.""" -def _clean_region(region): +def _clean_region(region: str) -> str: """Convert the region name to something that we can use for comparison without running into encoding issues.""" return ''.join( @@ -90,28 +95,28 @@ def _clean_region(region): class _Format(): - def __init__(self, fmt): + def __init__(self, fmt: str) -> None: self._fmt = fmt self._re = re.compile('^%s$' % re.sub( r'([FBUP])\1*', lambda x: r'(\d{%d})' % len(x.group(0)), fmt)) - def match(self, number): + def match(self, number: str) -> re.Match[str] | None: return self._re.match(number) - def replace(self, f, b, u, p): + def replace(self, f: str, b: str, u: str, p: str) -> str: items = iter([f, b, u, p]) return re.sub(r'([FBUP])\1*', lambda x: next(items), self._fmt) # Convert the structure to something that we can easily use _number_formats_per_region = dict( - (_clean_region(region), [ - region, _Format(formats[0]), _Format(formats[1])]) - for region, formats in _number_formats_per_region.items()) + (_clean_region(region), ( + region, _Format(formats[0]), _Format(formats[1]))) + for region, formats in _number_formats_per_region_raw.items()) -def _get_formats(region=None): +def _get_formats(region: str | None = None) -> Iterable[tuple[str, _Format, _Format]]: """Return the formats for the region.""" if region: region = _clean_region(region) @@ -121,13 +126,13 @@ def _get_formats(region=None): return _number_formats_per_region.values() -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -./,').strip() -def validate(number, region=None): +def validate(number: str, region: str | None = None) -> str: """Check if the number is a valid tax number. This checks the length and formatting. The region can be supplied to verify that the number is assigned in that region.""" @@ -142,7 +147,7 @@ def validate(number, region=None): return number -def is_valid(number, region=None): +def is_valid(number: str, region: str | None = None) -> bool: """Check if the number is a valid tax number. This checks the length and formatting. The region can be supplied to verify that the number is assigned in that region.""" @@ -152,7 +157,7 @@ def is_valid(number, region=None): return False -def guess_regions(number): +def guess_regions(number: str) -> list[str]: """Return a list of regions this number is valid for.""" number = compact(number) return sorted( @@ -160,7 +165,7 @@ def guess_regions(number): if region_fmt.match(number) or country_fmt.match(number)) -def to_regional_number(number): +def to_regional_number(number: str) -> str: """Convert the number to a regional (10 or 11 digit) number.""" number = compact(number) for _region, region_fmt, country_fmt in _get_formats(): @@ -170,16 +175,16 @@ def to_regional_number(number): raise InvalidFormat() -def to_country_number(number, region=None): +def to_country_number(number: str, region: str | None = None) -> str: """Convert the number to the nationally unique number. The region is needed if the number is not only valid for one particular region.""" number = compact(number) - formats = ( + formats_iter = ( (region_fmt.match(number), country_fmt) for _region, region_fmt, country_fmt in _get_formats(region)) formats = [ (region_match, country_fmt) - for region_match, country_fmt in formats + for region_match, country_fmt in formats_iter if region_match] if not formats: raise InvalidFormat() @@ -188,7 +193,7 @@ def to_country_number(number, region=None): return formats[0][1].replace(*formats[0][0].groups()) -def format(number, region=None): +def format(number: str, region: str | None = None) -> str: """Reformat the passed number to the standard format.""" number = compact(number) for _region, region_fmt, _country_fmt in _get_formats(region): diff --git a/stdnum/de/vat.py b/stdnum/de/vat.py index f2bfe294..af0587f1 100644 --- a/stdnum/de/vat.py +++ b/stdnum/de/vat.py @@ -13,13 +13,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Ust ID Nr. (Umsatzsteur Identifikationnummer, German VAT number). -The number is 10 digits long and uses the ISO 7064 Mod 11, 10 check digit +The number is 9 digits long and uses the ISO 7064 Mod 11, 10 check digit algorithm. >>> compact('DE 136,695 976') @@ -32,12 +30,14 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_11_10 from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -./,').upper().strip() @@ -46,7 +46,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -58,7 +58,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/de/wkn.py b/stdnum/de/wkn.py index f2242bd6..4d3fe66f 100644 --- a/stdnum/de/wkn.py +++ b/stdnum/de/wkn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Wertpapierkennnummer (German securities identification code). @@ -34,11 +32,13 @@ 'DE000SKWM021' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip().upper() @@ -48,7 +48,7 @@ def compact(number): _alphabet = '0123456789ABCDEFGH JKLMN PQRSTUVWXYZ' -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length and check digit.""" number = compact(number) @@ -59,7 +59,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length and check digit.""" try: @@ -68,7 +68,7 @@ def is_valid(number): return False -def to_isin(number): +def to_isin(number: str) -> str: """Convert the number to an ISIN.""" from stdnum import isin return isin.from_natid('DE', number) diff --git a/stdnum/dk/__init__.py b/stdnum/dk/__init__.py index 4298d222..d594e136 100644 --- a/stdnum/dk/__init__.py +++ b/stdnum/dk/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Danish numbers.""" +from __future__ import annotations + # provide aliases from stdnum.dk import cpr as personalid # noqa: F401 from stdnum.dk import cvr as vat # noqa: F401 diff --git a/stdnum/dk/cpr.py b/stdnum/dk/cpr.py index 97eaf2b6..c547f2df 100644 --- a/stdnum/dk/cpr.py +++ b/stdnum/dk/cpr.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CPR (personnummer, the Danish citizen number). @@ -56,26 +54,28 @@ '211062-5629' """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum. Note that the checksum isn't actually used any more. Valid numbers used to have a checksum of 0.""" weights = (4, 3, 2, 7, 6, 5, 4, 3, 2, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) day = int(number[0:2]) @@ -93,7 +93,7 @@ def get_birth_date(number): raise InvalidComponent('The number does not contain valid birth date information.') -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid CPR number. This checks the length, formatting, embedded date and check digit.""" number = compact(number) @@ -107,7 +107,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid CPR number. This checks the length, formatting, embedded date and check digit.""" try: @@ -116,7 +116,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join((number[:6], number[6:])) diff --git a/stdnum/dk/cvr.py b/stdnum/dk/cvr.py index aa80402d..008ce939 100644 --- a/stdnum/dk/cvr.py +++ b/stdnum/dk/cvr.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CVR (Momsregistreringsnummer, Danish VAT number). @@ -30,11 +28,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.,/:').upper().strip() @@ -43,13 +43,13 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (2, 7, 6, 5, 4, 3, 2, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -62,7 +62,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/do/__init__.py b/stdnum/do/__init__.py index aa210e59..30603c8d 100644 --- a/stdnum/do/__init__.py +++ b/stdnum/do/__init__.py @@ -14,10 +14,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Dominican Republic numbers.""" +from __future__ import annotations + from stdnum.do import rnc as vat # noqa: F401 diff --git a/stdnum/do/cedula.py b/stdnum/do/cedula.py index 7cf46271..98580011 100644 --- a/stdnum/do/cedula.py +++ b/stdnum/do/cedula.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Cedula (Dominican Republic national identification number). @@ -37,6 +35,8 @@ '224-0002211-1' """ +from __future__ import annotations + from stdnum import luhn from stdnum.do import rnc from stdnum.exceptions import * @@ -145,13 +145,13 @@ '''.split()) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid cedula.""" number = compact(number) if not isdigits(number): @@ -163,7 +163,7 @@ def validate(number): return luhn.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid cedula.""" try: return bool(validate(number)) @@ -171,13 +171,17 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join((number[:3], number[3:-1], number[-1])) -def check_dgii(number, timeout=30): # pragma: no cover +def check_dgii( + number: str, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, str] | None: # pragma: no cover """Lookup the number using the DGII online web service. This uses the validation service run by the the Dirección General de @@ -199,7 +203,7 @@ def check_dgii(number, timeout=30): # pragma: no cover # this function isn't automatically tested because it would require # network access for the tests and unnecessarily load the online service # we use the RNC implementation and change the rnc result to cedula - result = rnc.check_dgii(number, timeout) + result = rnc.check_dgii(number, timeout, verify) if result and 'rnc' in result: result['cedula'] = result.pop('rnc') return result diff --git a/stdnum/do/ncf.py b/stdnum/do/ncf.py index a85e4c73..ed8f067d 100644 --- a/stdnum/do/ncf.py +++ b/stdnum/do/ncf.py @@ -1,7 +1,7 @@ # ncf.py - functions for handling Dominican Republic invoice numbers # coding: utf-8 # -# Copyright (C) 2017-2018 Arthur de Jong +# Copyright (C) 2017-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # Development of this functionality was funded by iterativo | https://iterativo.do @@ -27,7 +25,7 @@ digital certificate for the same purpose. The number is either 19, 11 or 13 (e-CF) digits long. -The 19 digit number starts wit a letter (A or P) to indicate that the number +The 19 digit number starts with a letter (A or P) to indicate that the number was assigned by the taxpayer or the DGII, followed a 2-digit business unit number, a 3-digit location number, a 3-digit mechanism identifier, a 2-digit document type and a 8-digit serial number. @@ -56,11 +54,13 @@ InvalidFormat: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip().upper() @@ -90,10 +90,12 @@ def compact(number): '43', # minor expenses invoices (purchases) '44', # invoices for special customers (tourists, free zones) '45', # invoices for the government + '46', # invoices for exports + '47', # invoices for foreign payments ) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid NCF.""" number = compact(number) if len(number) == 13: @@ -116,7 +118,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid NCF.""" try: return bool(validate(number)) @@ -124,7 +126,7 @@ def is_valid(number): return False -def _convert_result(result): # pragma: no cover +def _convert_result(result: dict[str, str]) -> dict[str, str]: # pragma: no cover """Translate SOAP result entries into dictionaries.""" translation = { 'NOMBRE': 'name', @@ -133,20 +135,36 @@ def _convert_result(result): # pragma: no cover 'MENSAJE_VALIDACION': 'validation_message', 'RNC': 'rnc', 'NCF': 'ncf', - u'RNC / Cédula': 'rnc', - u'RNC/Cédula': 'rnc', - u'Nombre / Razón Social': 'name', - u'Nombre/Razón Social': 'name', + 'RNC / Cédula': 'rnc', + 'RNC/Cédula': 'rnc', + 'Nombre / Razón Social': 'name', + 'Nombre/Razón Social': 'name', 'Estado': 'status', 'Tipo de comprobante': 'type', - u'Válido hasta': 'valid_until', + 'Válido hasta': 'valid_until', + 'Código de Seguridad': 'security_code', + 'Rnc Emisor': 'issuing_rnc', + 'Rnc Comprador': 'buyer_rnc', + 'Monto Total': 'total', + 'Total de ITBIS': 'total_itbis', + 'Fecha Emisión': 'issuing_date', + 'Fecha Emisión': 'issuing_date', + 'Fecha de Firma': 'signature_date', + 'e-NCF': 'ncf', } return dict( (translation.get(key, key), value) for key, value in result.items()) -def check_dgii(rnc, ncf, timeout=30): # pragma: no cover +def check_dgii( + rnc: str, + ncf: str, + buyer_rnc: str | None = None, + security_code: str | None = None, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, str] | None: # pragma: no cover """Validate the RNC, NCF combination on using the DGII online web service. This uses the validation service run by the the Dirección General de @@ -154,7 +172,13 @@ def check_dgii(rnc, ncf, timeout=30): # pragma: no cover whether the combination of RNC and NCF is valid. The timeout is in seconds. - Returns a dict with the following structure:: + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. + + Returns a dict with the following structure for a NCF:: { 'name': 'The registered name', @@ -165,14 +189,32 @@ def check_dgii(rnc, ncf, timeout=30): # pragma: no cover 'validation_message': 'El NCF digitado es válido.', } + For an ECNF:: + + { + 'status': 'Aceptado', + 'issuing_rnc': '1234567890123', + 'buyer_rnc': '123456789', + 'ncf': 'E300000000000', + 'security_code': '1+2kP3', + 'issuing_date': '2020-03-25', + 'signature_date': '2020-03-22', + 'total': '2203.50', + 'total_itbis': '305.10', + 'validation_message': 'Aceptado', + } + Will return None if the number is invalid or unknown.""" - import lxml.html + import lxml.html # type: ignore import requests - from stdnum.do.rnc import compact as rnc_compact + from stdnum.do.rnc import compact as rnc_compact # noqa: I003 rnc = rnc_compact(rnc) ncf = compact(ncf) + if buyer_rnc: + buyer_rnc = rnc_compact(buyer_rnc) url = 'https://dgii.gov.do/app/WebApps/ConsultasWeb2/ConsultasWeb/consultas/ncf.aspx' session = requests.Session() + session.verify = verify session.headers.update({ 'User-Agent': 'Mozilla/5.0 (python-stdnum)', }) @@ -188,15 +230,21 @@ def check_dgii(rnc, ncf, timeout=30): # pragma: no cover 'ctl00$cphMain$txtNCF': ncf, 'ctl00$cphMain$txtRNC': rnc, } + if ncf[0] == 'E': + data['ctl00$cphMain$txtRncComprador'] = buyer_rnc + data['ctl00$cphMain$txtCodigoSeg'] = security_code # Do the actual request document = lxml.html.fromstring( session.post(url, data=data, timeout=timeout).text) - result = document.find('.//div[@id="cphMain_pResultado"]') + result_path = './/div[@id="cphMain_PResultadoFE"]' if ncf[0] == 'E' else './/div[@id="cphMain_pResultado"]' + result = document.find(result_path) if result is not None: + lbl_path = './/*[@id="cphMain_lblEstadoFe"]' if ncf[0] == 'E' else './/*[@id="cphMain_lblInformacion"]' data = { - 'validation_message': document.findtext('.//*[@id="cphMain_lblInformacion"]').strip(), + 'validation_message': document.findtext(lbl_path).strip(), } data.update(zip( - [x.text.strip() for x in result.findall('.//th')], - [x.text.strip() for x in result.findall('.//td/span')])) + [x.text.strip() for x in result.findall('.//th') if x.text], + [x.text.strip() for x in result.findall('.//td/span') if x.text])) return _convert_result(data) + return None diff --git a/stdnum/do/rnc.py b/stdnum/do/rnc.py index ddc6c3b6..4d6852c4 100644 --- a/stdnum/do/rnc.py +++ b/stdnum/do/rnc.py @@ -1,7 +1,7 @@ # rnc.py - functions for handling Dominican Republic tax registration # coding: utf-8 # -# Copyright (C) 2015-2018 Arthur de Jong +# Copyright (C) 2015-2024 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # Development of this functionality was funded by iterativo | https://iterativo.do @@ -39,6 +37,8 @@ '1-31-24679-6' """ +from __future__ import annotations + import json from stdnum.exceptions import * @@ -58,20 +58,20 @@ """The WSDL URL of DGII validation service.""" -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (7, 9, 8, 6, 5, 4, 3, 2) check = sum(w * int(n) for w, n in zip(weights, number)) % 11 return str((10 - check) % 9 + 1) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid RNC.""" number = compact(number) if not isdigits(number): @@ -85,7 +85,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid RNC.""" try: return bool(validate(number)) @@ -93,13 +93,13 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join((number[:1], number[1:3], number[3:-1], number[-1])) -def _convert_result(result): # pragma: no cover +def _convert_result(result: str) -> dict[str, str]: # pragma: no cover """Translate SOAP result entries into dicts.""" translation = { 'RGE_RUC': 'rnc', @@ -115,12 +115,22 @@ def _convert_result(result): # pragma: no cover for key, value in json.loads(result.replace('\n', '\\n').replace('\t', '\\t')).items()) -def check_dgii(number, timeout=30): # pragma: no cover +def check_dgii( + number: str, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, str] | None: # pragma: no cover """Lookup the number using the DGII online web service. This uses the validation service run by the the Dirección General de Impuestos Internos, the Dominican Republic tax department to lookup - registration information for the number. The timeout is in seconds. + registration information for the number. + + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. Returns a dict with the following structure:: @@ -137,7 +147,7 @@ def check_dgii(number, timeout=30): # pragma: no cover # this function isn't automatically tested because it would require # network access for the tests and unnecessarily load the online service number = compact(number) - client = get_soap_client(dgii_wsdl, timeout) + client = get_soap_client(dgii_wsdl, timeout=timeout, verify=verify) result = client.GetContribuyentes( value=number, patronBusqueda=0, # search type: 0=by number, 1=by name @@ -147,12 +157,18 @@ def check_dgii(number, timeout=30): # pragma: no cover if result and 'GetContribuyentesResult' in result: result = result['GetContribuyentesResult'] # PySimpleSOAP only if result == '0': - return + return None result = [x for x in result.split('@@@')] return _convert_result(result[0]) -def search_dgii(keyword, end_at=10, start_at=1, timeout=30): # pragma: no cover +def search_dgii( + keyword: str, + end_at: int = 10, + start_at: int = 1, + timeout: float = 30, + verify: bool | str = True, +) -> list[dict[str, str]]: # pragma: no cover """Search the DGII online web service using the keyword. This uses the validation service run by the the Dirección General de @@ -160,7 +176,13 @@ def search_dgii(keyword, end_at=10, start_at=1, timeout=30): # pragma: no cover registration information using the keyword. The number of entries returned can be tuned with the `end_at` and - `start_at` arguments. The timeout is in seconds. + `start_at` arguments. + + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. Returns a list of dicts with the following structure:: @@ -180,7 +202,7 @@ def search_dgii(keyword, end_at=10, start_at=1, timeout=30): # pragma: no cover Will return an empty list if the number is invalid or unknown.""" # this function isn't automatically tested because it would require # network access for the tests and unnecessarily load the online service - client = get_soap_client(dgii_wsdl, timeout) + client = get_soap_client(dgii_wsdl, timeout=timeout, verify=verify) results = client.GetContribuyentes( value=keyword, patronBusqueda=1, # search type: 0=by number, 1=by name diff --git a/stdnum/dz/__init__.py b/stdnum/dz/__init__.py new file mode 100644 index 00000000..60cae228 --- /dev/null +++ b/stdnum/dz/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Algerian numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Algerian numbers.""" + +from __future__ import annotations + +# provide vat as an alias +from stdnum.dz import nif as vat # noqa: F401 diff --git a/stdnum/dz/nif.py b/stdnum/dz/nif.py new file mode 100644 index 00000000..c28173f8 --- /dev/null +++ b/stdnum/dz/nif.py @@ -0,0 +1,99 @@ +# nif.py - functions for handling Algeria NIF numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""NIF, sometimes N.I.F. (Numéro d'Identification Fiscale, Algeria tax number). + +The NIF was adopted by the Algerian tax authorities on 2006, replacing the NIS +number. + +The NIF applies to physical persons, legal persons, legal entities, +administrative entities, local branches for foreign companies, associations, +professional organisations, etc. + +The NIF consists of 15 digits, but sometimes it can be 20 digits long in order +to represent branches or secondary establishments. + +More information: + +* http://www.jecreemonentreprise.dz/index.php?option=com_content&view=article&id=612&Itemid=463&lang=fr +* https://www.mf.gov.dz/index.php/fr/fiscalite +* https://cnrcinfo.cnrc.dz/numero-didentification-fiscale-nif/ +* https://nifenligne.mfdgi.gov.dz/ +* http://nif.mfdgi.gov.dz/nif.asp + +>>> validate('416001000000007') +'416001000000007' +>>> validate('408 020 000 150 039') +'408020000150039' +>>> validate('41201600000606600001') +'41201600000606600001' +>>> validate('000 216 001 808 337 13010') +'00021600180833713010' +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('X1600100000000V') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('408 020 000 150 039') +'408020000150039' +>>> format('000 216 001 808 337 13010') +'00021600180833713010' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators, removes surrounding + whitespace. + """ + return clean(number, ' ') + + +def validate(number: str) -> str: + """Check if the number is a valid Algeria NIF number. + + This checks the length and formatting. + """ + number = compact(number) + if len(number) not in (15, 20): + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Algeria NIF number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/ean.py b/stdnum/ean.py index f7e4b63c..befa2327 100644 --- a/stdnum/ean.py +++ b/stdnum/ean.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """EAN (International Article Number). @@ -30,24 +28,26 @@ '98412345678908' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the EAN to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the EAN check digit for 13-digit numbers. The number passed should not have the check bit included.""" return str((10 - sum((3, 1)[i % 2] * int(n) for i, n in enumerate(reversed(number)))) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid EAN-13. This checks the length and the check bit but does not check whether a known GS1 Prefix and company identifier are referenced.""" @@ -61,7 +61,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid EAN-13. This checks the length and the check bit but does not check whether a known GS1 Prefix and company identifier are referenced.""" diff --git a/stdnum/ec/__init__.py b/stdnum/ec/__init__.py index 6e919064..da334132 100644 --- a/stdnum/ec/__init__.py +++ b/stdnum/ec/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Ecuadorian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.ec import ruc as vat # noqa: F401 diff --git a/stdnum/ec/ci.py b/stdnum/ec/ci.py index c97c1937..0e48fe6b 100644 --- a/stdnum/ec/ci.py +++ b/stdnum/ec/ci.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CI (Cédula de identidad, Ecuadorian personal identity code). @@ -35,24 +33,27 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip() -def _checksum(number): +def _checksum(number: str) -> int: """Calculate a checksum over the number.""" - fold = lambda x: x - 9 if x > 9 else x + def fold(x: int) -> int: + return x - 9 if x > 9 else x return sum(fold((2, 1)[i % 2] * int(n)) for i, n in enumerate(number)) % 10 -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid CI number. This checks the length, formatting and check digit.""" number = compact(number) @@ -69,7 +70,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid CI number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/ec/ruc.py b/stdnum/ec/ruc.py index 6d0c961d..59fdbf65 100644 --- a/stdnum/ec/ruc.py +++ b/stdnum/ec/ruc.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Copyright (C) 2014 Jonathan Finlay -# Copyright (C) 2014-2015 Arthur de Jong +# Copyright (C) 2014-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RUC (Registro Único de Contribuyentes, Ecuadorian company tax number). @@ -36,6 +34,8 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.ec import ci from stdnum.exceptions import * from stdnum.util import isdigits @@ -48,12 +48,38 @@ compact = ci.compact -def _checksum(number, weights): +def _checksum(number: str, weights: list[int]) -> int: """Calculate a checksum over the number given the weights.""" return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def validate(number): +def _validate_natural(number: str) -> str: + """Check if the number is a valid natural RUC (CI plus establishment).""" + if number[-3:] == '000': + raise InvalidComponent() # establishment number wrong + ci.validate(number[:10]) + return number + + +def _validate_public(number: str) -> str: + """Check if the number is a valid public RUC.""" + if number[-4:] == '0000': + raise InvalidComponent() # establishment number wrong + if _checksum(number[:9], [3, 2, 7, 6, 5, 4, 3, 2, 1]) != 0: + raise InvalidChecksum() + return number + + +def _validate_juridical(number: str) -> str: + """Check if the number is a valid juridical RUC.""" + if number[-3:] == '000': + raise InvalidComponent() # establishment number wrong + if _checksum(number[:10], [4, 3, 2, 7, 6, 5, 4, 3, 2, 1]) != 0: + raise InvalidChecksum() + return number + + +def validate(number: str) -> str: """Check if the number provided is a valid RUC number. This checks the length, formatting, check digit and check sum.""" number = compact(number) @@ -65,27 +91,25 @@ def validate(number): raise InvalidComponent() # invalid province code if number[2] < '6': # 0..5 = natural RUC: CI plus establishment number - if number[-3:] == '000': - raise InvalidComponent() # establishment number wrong - ci.validate(number[:10]) + _validate_natural(number) elif number[2] == '6': - # 6 = public RUC - if number[-4:] == '0000': - raise InvalidComponent() # establishment number wrong - if _checksum(number[:9], (3, 2, 7, 6, 5, 4, 3, 2, 1)) != 0: - raise InvalidChecksum() + # 6 = public RUC (or natural RUC) + try: + _validate_public(number) + except ValidationError: + _validate_natural(number) elif number[2] == '9': - # 9 = juridical RUC - if number[-3:] == '000': - raise InvalidComponent() # establishment number wrong - if _checksum(number[:10], (4, 3, 2, 7, 6, 5, 4, 3, 2, 1)) != 0: - raise InvalidChecksum() + # 9 = juridical RUC (or public RUC) + try: + _validate_public(number) + except ValidationError: + _validate_juridical(number) else: raise InvalidComponent() # third digit wrong return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid RUC number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/ee/__init__.py b/stdnum/ee/__init__.py index 7728e2d6..a7444b0b 100644 --- a/stdnum/ee/__init__.py +++ b/stdnum/ee/__init__.py @@ -14,11 +14,13 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Estonian numbers.""" -# provide vat as an alias +from __future__ import annotations + +# provide aliases +from stdnum.ee import ik as personalid # noqa: F401 from stdnum.ee import kmkr as vat # noqa: F401 +from stdnum.ee import registrikood as businessid # noqa: F401 diff --git a/stdnum/ee/ik.py b/stdnum/ee/ik.py index 6eadb84d..10af45dd 100644 --- a/stdnum/ee/ik.py +++ b/stdnum/ee/ik.py @@ -15,11 +15,9 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . -"""Isikukood (Estonian Personcal ID number). +"""Isikukood (Estonian Personal ID number). The number consists of 11 digits: the first indicates the gender and century the person was born in, the following 6 digits the birth date, followed by a @@ -39,19 +37,21 @@ datetime.date(1968, 5, 28) """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) if number[0] in '12': @@ -73,7 +73,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the person's birth gender ('M' or 'F').""" number = compact(number) if number[0] in '1357': @@ -84,7 +84,7 @@ def get_gender(number): raise InvalidComponent() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" check = sum(((i % 9) + 1) * int(n) for i, n in enumerate(number[:-1])) % 11 @@ -94,7 +94,7 @@ def calc_check_digit(number): return str(check % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length, formatting, embedded date and check digit.""" number = compact(number) @@ -108,7 +108,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length, formatting, embedded date and check digit.""" try: diff --git a/stdnum/ee/kmkr.py b/stdnum/ee/kmkr.py index 24ddbb38..85383a80 100644 --- a/stdnum/ee/kmkr.py +++ b/stdnum/ee/kmkr.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """KMKR (Käibemaksukohuslase, Estonian VAT number). @@ -30,11 +28,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' ').upper().strip() @@ -43,13 +43,13 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (3, 7, 1, 3, 7, 1, 3, 7, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 10 -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -62,7 +62,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/ee/registrikood.py b/stdnum/ee/registrikood.py index 8f0ebc1a..0a3228c1 100644 --- a/stdnum/ee/registrikood.py +++ b/stdnum/ee/registrikood.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Registrikood (Estonian organisation registration code). @@ -47,18 +45,20 @@ InvalidComponent: ... """ +from __future__ import annotations + from stdnum.ee.ik import calc_check_digit from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length and check digit.""" number = compact(number) @@ -73,7 +73,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length and check digit.""" try: diff --git a/stdnum/eg/__init__.py b/stdnum/eg/__init__.py new file mode 100644 index 00000000..347c1f36 --- /dev/null +++ b/stdnum/eg/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Egypt numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Egypt numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.eg import tn as vat # noqa: F401 diff --git a/stdnum/eg/tn.py b/stdnum/eg/tn.py new file mode 100644 index 00000000..92e93674 --- /dev/null +++ b/stdnum/eg/tn.py @@ -0,0 +1,110 @@ +# tn.py - functions for handling Egypt Tax Number numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# Copyright (C) 2025 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Tax Registration Number (الرقم الضريبي, Egypt tax number). + +This number consists of 9 digits, usually separated into three groups +using hyphens to make it easier to read, like XXX-XXX-XXX. + +More information: + +* https://emsp.mts.gov.eg:8181/EMDB-web/faces/authoritiesandcompanies/authority/website/SearchAuthority.xhtml?lang=en + +>>> validate('100-531-385') +'100531385' +>>> validate('٣٣١-١٠٥-٢٦٨') +'331105268' +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('VV3456789') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('100531385') +'100-531-385' +""" # noqa: E501 + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +_ARABIC_NUMBERS_MAP = { + # Arabic-indic digits. + '٠': '0', + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + # Extended arabic-indic digits. + '۰': '0', + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', +} + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. It also converts arabic numbers. + """ + return ''.join((_ARABIC_NUMBERS_MAP.get(c, c) for c in clean(number, ' -/').strip())) + + +def validate(number: str) -> str: + """Check if the number is a valid Egypt Tax Number number. + + This checks the length and formatting. + """ + number = compact(number) + if not isdigits(number): + raise InvalidFormat() + if len(number) != 9: + raise InvalidLength() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Egypt Tax Number number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '-'.join([number[:3], number[3:-3], number[-3:]]) diff --git a/stdnum/es/__init__.py b/stdnum/es/__init__.py index e74786c8..247f5526 100644 --- a/stdnum/es/__init__.py +++ b/stdnum/es/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Spanish numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.es import nif as vat # noqa: F401 diff --git a/stdnum/es/cae.py b/stdnum/es/cae.py new file mode 100644 index 00000000..2cfb3407 --- /dev/null +++ b/stdnum/es/cae.py @@ -0,0 +1,239 @@ +# cae.py - functions for handling Spanish CAE number +# coding: utf-8 +# +# Copyright (C) 2024 Quique Porta +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""CAE (Código de Actividad y Establecimiento, Spanish activity establishment code). + +The Código de Actividad y Establecimiento (CAE) is assigned by the Spanish +Tax Agency companies or establishments that carry out activities related to +products subject to excise duty. It identifies an activity and the +establishment in which it is carried out. + +The number consists of 13 characters where the sixth and seventh characters +identify the managing office in which the territorial registration is carried +out and the eighth and ninth characters identify the activity that takes +place. + + +More information: + +* https://www.boe.es/boe/dias/2006/12/28/pdfs/A46098-46100.pdf +* https://www2.agenciatributaria.gob.es/L/inwinvoc/es.aeat.dit.adu.adce.cae.cw.AccW?fAccion=consulta + +>>> validate('ES00008V1488Q') +'ES00008V1488Q' +>>> validate('00008V1488') # invalid check length +Traceback (most recent call last): + ... +InvalidLength: ... +>>> is_valid('ES00008V1488Q') +True +>>> is_valid('00008V1488') +False +>>> compact('ES00008V1488Q') +'ES00008V1488Q' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +_OFFICES = { + '01', # Álava + '02', # Albacete + '03', # Alicante + '04', # Almería + '05', # Ávila + '06', # Badajoz + '07', # Illes Balears + '08', # Barcelona + '09', # Burgos + '10', # Cáceres + '11', # Cádiz + '12', # Castellón + '13', # Ciudad Real + '14', # Córdoba + '15', # A Coruña + '16', # Cuenca + '17', # Girona + '18', # Granada + '19', # Guadalajara + '20', # Guipúzcoa + '21', # Huelva + '22', # Huesca + '23', # Jaén + '24', # León + '25', # Lleida + '26', # La Rioja + '27', # Lugo + '28', # Madrid + '29', # Málaga + '30', # Murcia + '31', # Navarra + '32', # Ourense + '33', # Oviedo + '34', # Palencia + '35', # Las Palmas + '36', # Pontevedra + '37', # Salamanca + '38', # Santa Cruz de Tenerife + '39', # Santander + '40', # Segovia + '41', # Sevilla + '42', # Soria + '43', # Tarragona + '44', # Teruel + '45', # Toledo + '46', # Valencia + '47', # Valladolid + '48', # Bizcaia + '49', # Zamora + '50', # Zaragoza + '51', # Cartagena + '52', # Gijón + '53', # Jerez de la Frontera + '54', # Vigo + '55', # Ceuta + '56', # Melilla +} + +_ACTIVITY_KEYS = { + 'A1', # Fábricas de alcohol + 'B1', # Fábricas de bebidas derivadas + 'B9', # Elaboradores de productos intermedios distintos de los comprendidos en B-0 + 'B0', # Elaboradores de productos intermedios en régimen especial + 'BA', # Fábricas de bebidas alcohólicas + 'C1', # Fábricas de cerveza + 'DA', # Destiladores artesanales + 'EC', # Fábricas de extractos y concentrados alcohólicos + 'F1', # Elaboradores de otras bebidas fermentadas + 'V1', # Elaboradores de vinos + 'A7', # Depósitos fiscales de alcohol + 'AT', # Almacenes fiscales de alcohol + 'B7', # Depósitos fiscales de bebidas derivadas + 'BT', # Almacenes fiscales de bebidas alcohólicas + 'C7', # Depósitos fiscales de cerveza + 'DB', # Depósitos fiscales de bebidas alcohólicas + 'E7', # Depósitos fiscales de extractos y concentrados alcohólicos exclusivamente + 'M7', # Depósitos fiscales de productos intermedios + 'OA', # Operadores registrados de alcohol + 'OB', # Operadores registrados de bebidas alcohólicas + 'OE', # Operadores registrados de extractos y concentrados alcohólicos + 'OV', # Operadores registrados de vinos y de otras bebidas fermentadas + 'V7', # Depósitos fiscales de vinos y de otras bebidas fermentadas + 'B6', # Plantas embotelladoras de bebidas derivadas + 'A2', # Centros de investigación + 'A6', # Usuarios de alcohol totalmente desnaturalizado + 'A9', # Industrias de especialidades farmacéuticas + 'A0', # Centros de atención médica + 'AC', # Usuarios con derecho a devolución + 'AV', # Usuarios de alcohol parcialmente desnaturalizado con desnaturalizante general + 'AW', # Usuarios de alcohol parcialmente desnaturalizado con desnaturalizante especial + 'AX', # Fábricas de vinagre + 'H1', # Refinerías de crudo de petróleo + 'H2', # Fábricas de biocarburante, consistente en alcohol etílico + 'H4', # Fábricas de biocarburante o biocombustible con sistente en biodiesel + 'H6', # Fábricas de biocarburante o biocombustible con sistente en alcohol metílico + 'H9', # Industrias extractoras de gas natural y otros productos gaseosos + 'H0', # Las demás industrias que obtienen productos gravados + 'HD', # Industrias o establecimientos que someten productos a un tratamiento definido o, + # Previa solicitud, a una transformación química + 'HH', # Industrias extractoras de crudo de petróleo + 'H7', # Depósitos fiscales de hidrocarburos + 'H8', # Depósitos fiscales exclusivamente de biocarburantes + 'HB', # Obtención accesoria de productos sujetos alimpuesto + 'HF', # Almacenes fiscales para el suministro directo a instalaciones fijas + 'HI', # Depósitos fiscales exclusivamente para la distribución de querosenos y gasolinas de aviación + 'HJ', # Depósitos fiscales exclusivamente de productos de la tarifa segunda + 'HK', # Instalaciones de venta de gas natural con tipo general y tipo reducido + 'HL', # Almacenes fiscales exclusivamente de productos de la tarifa segunda + 'HM', # Almacenes fiscales para la gestión de aceites usados destinados a su utilización como combustibles + 'HN', # Depósitos fiscales constituidos por una red de oleoductos + 'HT', # Almacenes fiscales para el comercio al por mayor de hidrocarburos + 'HU', # Almacenes fiscales constituidos por redes de transporte o distribución de gas natural + 'HV', # Puntos de suministro marítimo de gasóleo + 'HX', # Depósitos fiscales constituidos por una red de gasoductos + 'HZ', # Detallistas de gasóleo + 'OH', # Operadores registrados de hidrocarburos + 'HA', # Titulares de aeronaves que utilizan instalaciones privadas + 'HC', # Explotaciones industriales y proyectos piloto con derecho a devolución + 'HE', # Los demás usuarios con derecho a exención + 'HP', # Inyección en altos hornos + 'HQ', # Construcción, modificación, pruebas y mantenimiento de aeronaves y embarcaciones + 'HR', # Producción de electricidad en centrales eléctricas o producción de electricidad o + # cogeneración de electricidad y de calor en centrales combinadas + 'HS', # Transporte por ferrocarril + 'HW', # Consumidores de combustibles y carburantes a tipo reducido (artículos 106.4 y 108 + # del Reglamento de los Impuestos Especiales) + 'T1', # Fábricas de labores del tabaco + 'OT', # Operadores registrados de labores del tabaco + 'T7', # Depósitos fiscales de labores del tabaco + 'TT', # Almacenes fiscales de labores del tabaco + 'L1', # Fábricas de electricidad en régimen ordinario + 'L2', # Generadores o conjunto de generadores de potencia total superior a 100 kilovatios + 'L0', # Fábricas de electricidad en régimen especial + 'L3', # Los demás sujetos pasivos + 'L7', # Depósitos fiscales de electricidad + 'AF', # Almacenes fiscales de bebidas alcohólicas y de labores del tabaco + 'DF', # Depósitos fiscales de bebidas alcohólicas y de labores del tabaco + 'DM', # Depósitos fiscales de bebidas alcohólicas y de labores del tabaco situados en + # puertos y aeropuertos y que funcionen exclusivamente como establecimientos minoristas + 'DP', # Depósitos fiscales para el suministro de bebidas alcohólicas y de labores del + # tabaco para consumo o venta a bordo de buques y/o aeronaves + 'OR', # Operadores registrados de bebidas alcohólicas y de labores del tabaco + 'PF', # Industrias o usuarios en régimen de perfeccionamiento fiscal + 'RF', # Representantes fiscales + 'VD', # Empresas de ventas a distancia +} + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number).upper().strip() + + +def validate(number: str) -> str: + """Check if the number provided is a valid CAE number. This checks the + length and formatting.""" + number = compact(number) + if len(number) != 13: + raise InvalidLength() + if number[:2] != 'ES': + raise InvalidFormat() + if number[2:5] != '000': + raise InvalidFormat() + if number[5:7] not in _OFFICES: + raise InvalidFormat() + if number[7:9] not in _ACTIVITY_KEYS: + raise InvalidFormat() + if not isdigits(number[9:12]): + raise InvalidFormat() + if not number[12].isalpha(): + raise InvalidFormat() + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid CAE number. This checks the + length and formatting.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/es/ccc.py b/stdnum/es/ccc.py index 3306c200..952d2506 100644 --- a/stdnum/es/ccc.py +++ b/stdnum/es/ccc.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CCC (Código Cuenta Corriente, Spanish Bank Account Code) @@ -62,17 +60,19 @@ 'ES2121000418450200051331' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join([ @@ -84,13 +84,13 @@ def format(number): ]) -def _calc_check_digit(number): +def _calc_check_digit(number: str) -> str: """Calculate a single check digit on the provided part of the number.""" check = sum(int(n) * 2 ** i for i, n in enumerate(number)) % 11 return str(check if check < 2 else 11 - check) -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the number. The supplied number should have check digits included but are ignored.""" number = compact(number) @@ -98,7 +98,7 @@ def calc_check_digits(number): _calc_check_digit('00' + number[:8]) + _calc_check_digit(number[10:])) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid CCC.""" number = compact(number) if len(number) != 20: @@ -110,7 +110,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid CCC.""" try: return bool(validate(number)) @@ -118,7 +118,7 @@ def is_valid(number): return False -def to_iban(number): +def to_iban(number: str) -> str: """Convert the number to an IBAN.""" from stdnum import iban separator = ' ' if ' ' in number else '' diff --git a/stdnum/es/cif.py b/stdnum/es/cif.py index 395db81c..4072d0e8 100644 --- a/stdnum/es/cif.py +++ b/stdnum/es/cif.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CIF (Código de Identificación Fiscal, Spanish company tax number). @@ -50,6 +48,8 @@ ('A', '13', '58562', '5') """ +from __future__ import annotations + from stdnum import luhn from stdnum.es import dni from stdnum.exceptions import * @@ -63,7 +63,7 @@ compact = dni.compact -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the specified number. The number passed should not have the check digit included. This function returns both the number and character check digit candidates.""" @@ -71,7 +71,7 @@ def calc_check_digits(number): return check + 'JABCDEFGHI'[int(check)] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid DNI number. This checks the length, formatting and check digit.""" number = compact(number) @@ -91,7 +91,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid DNI number. This checks the length, formatting and check digit.""" try: @@ -100,7 +100,7 @@ def is_valid(number): return False -def split(number): +def split(number: str) -> tuple[str, str, str, str]: """Split the provided number into a letter to define the type of organisation, two digits that specify a province, a 5 digit sequence number within the province and a check digit.""" diff --git a/stdnum/es/cups.py b/stdnum/es/cups.py index cbbcacd2..59913d95 100644 --- a/stdnum/es/cups.py +++ b/stdnum/es/cups.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CUPS (Código Unificado de Punto de Suministro, Spanish meter point number). @@ -53,17 +51,19 @@ 'ES 1234 1234 5678 9012 JY 1F' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join(( @@ -77,14 +77,14 @@ def format(number): )).strip() -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the number.""" alphabet = 'TRWAGMYFPDXBNJZSQVHLCKE' check0, check1 = divmod(int(number[2:18]) % 529, 23) return alphabet[check0] + alphabet[check1] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid CUPS. This checks length, formatting and check digits.""" number = compact(number) @@ -94,8 +94,8 @@ def validate(number): raise InvalidComponent() if not isdigits(number[2:18]): raise InvalidFormat() - if number[20:]: - pnumber, ptype = number[20:] + if len(number) == 22: + pnumber, ptype = number[20], number[21] if not isdigits(pnumber): raise InvalidFormat() if ptype not in 'FPRCXYZ': @@ -105,7 +105,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid CUPS.""" try: return bool(validate(number)) diff --git a/stdnum/es/dni.py b/stdnum/es/dni.py index 379ac2f6..66979424 100644 --- a/stdnum/es/dni.py +++ b/stdnum/es/dni.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """DNI (Documento Nacional de Identidad, Spanish personal identity codes). @@ -38,23 +36,25 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" return 'TRWAGMYFPDXBNJZSQVHLCKE'[int(number) % 23] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid DNI number. This checks the length, formatting and check digit.""" number = compact(number) @@ -67,7 +67,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid DNI number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/es/iban.py b/stdnum/es/iban.py index 9c312969..b777f4c3 100644 --- a/stdnum/es/iban.py +++ b/stdnum/es/iban.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Spanish IBAN (International Bank Account Number). @@ -44,6 +42,8 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum import iban from stdnum.es import ccc from stdnum.exceptions import * @@ -56,7 +56,7 @@ format = iban.format -def to_ccc(number): +def to_ccc(number: str) -> str: """Return the CCC (Código Cuenta Corriente) part of the number.""" number = compact(number) if not number.startswith('ES'): @@ -64,14 +64,14 @@ def to_ccc(number): return number[4:] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid Spanish IBAN.""" number = iban.validate(number, check_country=False) ccc.validate(to_ccc(number)) return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid Spanish IBAN.""" try: return bool(validate(number)) diff --git a/stdnum/es/nie.py b/stdnum/es/nie.py index 0c0a73bf..400bc709 100644 --- a/stdnum/es/nie.py +++ b/stdnum/es/nie.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIE (Número de Identificación de Extranjero, Spanish foreigner number). @@ -40,6 +38,8 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.es import dni from stdnum.exceptions import * from stdnum.util import isdigits @@ -52,7 +52,7 @@ compact = dni.compact -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" # replace XYZ with 012 @@ -60,7 +60,7 @@ def calc_check_digit(number): return dni.calc_check_digit(number) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid NIE. This checks the length, formatting and check digit.""" number = compact(number) @@ -73,7 +73,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid NIE. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/es/nif.py b/stdnum/es/nif.py index 76f05706..7eb4c01b 100644 --- a/stdnum/es/nif.py +++ b/stdnum/es/nif.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIF (Número de Identificación Fiscal, Spanish VAT number). @@ -44,12 +42,14 @@ 'M1234567L' """ +from __future__ import annotations + from stdnum.es import cif, dni, nie from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -58,7 +58,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -85,7 +85,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/es/postal_code.py b/stdnum/es/postal_code.py new file mode 100644 index 00000000..a9a4ab80 --- /dev/null +++ b/stdnum/es/postal_code.py @@ -0,0 +1,83 @@ +# postal_code.py - functions for handling Spanish postal code numbers +# coding: utf-8 +# +# Copyright (C) 2023 Víctor Ramos +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Postcode (the Spanish postal code). + +The Spanish postal code consists of five digits where the first two digits, +ranging 01 to 52, correspond either to one of the 50 provinces of Spain or to +one of the two autonomous cities on the African coast. + +More information: + +* https://en.wikipedia.org/wiki/Postal_codes_in_Spain + +>>> validate('01000') +'01000' +>>> validate('52000') +'52000' +>>> validate('00000') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> validate('53000') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> validate('99999') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> validate('5200') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('520000') +Traceback (most recent call last): + ... +InvalidLength: ... +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation.""" + return clean(number, ' ').strip() + + +def validate(number: str) -> str: + """Check if the number provided is a valid postal code.""" + number = compact(number) + if len(number) != 5: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if not '01' <= number[:2] <= '52': + raise InvalidComponent() + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid postal code.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/es/referenciacatastral.py b/stdnum/es/referenciacatastral.py index 8d5ee1fb..82c3d177 100644 --- a/stdnum/es/referenciacatastral.py +++ b/stdnum/es/referenciacatastral.py @@ -2,7 +2,7 @@ # coding: utf-8 # # Copyright (C) 2016 David García Garzón -# Copyright (C) 2016-2017 Arthur de Jong +# Copyright (C) 2016-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Referencia Catastral (Spanish real estate property id) @@ -32,8 +30,8 @@ More information: -* http://www.catastro.meh.es/esp/referencia_catastral_1.asp (Spanish) -* http://www.catastro.meh.es/documentos/05042010_P.pdf (Spanish) +* https://www.catastro.meh.es/ (Spanish) +* https://www.catastro.meh.es/documentos/05042010_P.pdf (Spanish) * https://es.wikipedia.org/wiki/Catastro#Referencia_catastral >>> validate('7837301-VG8173B-0001 TT') # Lanteira town hall @@ -54,20 +52,22 @@ '4A08169 P03PRAT 0001 LR' """ +from __future__ import annotations + from stdnum.exceptions import * -from stdnum.util import clean, to_unicode +from stdnum.util import clean -alphabet = u'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789' +alphabet = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join([ @@ -81,7 +81,7 @@ def format(number): # implementation by Vicente Sancho that can be found at # https://trellat.es/validar-la-referencia-catastral-en-javascript/ -def _check_digit(number): +def _check_digit(number: str) -> str: """Calculate a single check digit on the provided part of the number.""" weights = (13, 15, 12, 5, 4, 17, 9, 21, 3, 7, 1) s = sum(w * (int(n) if n.isdigit() else alphabet.find(n) + 1) @@ -89,29 +89,28 @@ def _check_digit(number): return 'MQWERTYUIOPASDFGHJKLBZX'[s % 23] -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the number.""" - number = to_unicode(compact(number)) + number = compact(number) return ( _check_digit(number[0:7] + number[14:18]) + _check_digit(number[7:14] + number[14:18])) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Cadastral Reference. This checks the length, formatting and check digits.""" number = compact(number) - n = to_unicode(number) - if not all(c in alphabet for c in n): + if not all(c in alphabet for c in number): raise InvalidFormat() - if len(n) != 20: + if len(number) != 20: raise InvalidLength() - if calc_check_digits(n) != n[18:]: + if calc_check_digits(number) != number[18:]: raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Cadastral Reference.""" try: return bool(validate(number)) diff --git a/stdnum/eu/__init__.py b/stdnum/eu/__init__.py index a00e8320..f76f0a21 100644 --- a/stdnum/eu/__init__.py +++ b/stdnum/eu/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of European Union numbers.""" diff --git a/stdnum/eu/at_02.py b/stdnum/eu/at_02.py index a8fa9bca..610ef615 100644 --- a/stdnum/eu/at_02.py +++ b/stdnum/eu/at_02.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """SEPA Identifier of the Creditor (AT-02). @@ -38,6 +36,8 @@ '23' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_97_10 from stdnum.util import clean @@ -47,32 +47,32 @@ _alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' -def compact(number): +def compact(number: str) -> str: """Convert the AT-02 number to the minimal representation. This strips the number of any valid separators and removes invalid characters.""" return clean(number, ' -/?:().m\'+"').strip().upper() -def _to_base10(number): +def _to_base10(number: str) -> str: """Prepare the number to its base10 representation so it can be checked with the ISO 7064 Mod 97, 10 algorithm. That means excluding positions 5 to 7 and moving the first four digits to the end.""" return ''.join(str(_alphabet.index(x)) for x in number[7:] + number[:4]) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid AT-02.""" number = compact(number) try: test_number = _to_base10(number) - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() # ensure that checksum is valid mod_97_10.validate(test_number) return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid AT-02.""" try: return bool(validate(number)) @@ -80,7 +80,7 @@ def is_valid(number): return False -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits that should be put in the number to make it valid. Check digits in the supplied number are ignored.""" number = compact(number) diff --git a/stdnum/eu/banknote.py b/stdnum/eu/banknote.py index 24860e0f..47f83ea6 100644 --- a/stdnum/eu/banknote.py +++ b/stdnum/eu/banknote.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Euro banknote serial numbers. @@ -34,23 +32,25 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').upper().strip() -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum over the number.""" # replace letters by their ASCII number return sum(int(x) if isdigits(x) else ord(x) for x in number) % 9 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid banknote serial number.""" number = compact(number) if not number[:2].isalnum() or not isdigits(number[2:]): @@ -64,7 +64,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid banknote serial number.""" try: return bool(validate(number)) diff --git a/stdnum/eu/ecnumber.py b/stdnum/eu/ecnumber.py new file mode 100644 index 00000000..5255c955 --- /dev/null +++ b/stdnum/eu/ecnumber.py @@ -0,0 +1,83 @@ +# ecnumber.py - functions for handling European Community Numbers + +# Copyright (C) 2023 Daniel Weber +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""EC Number (European Community number). + +The EC Number is a unique seven-digit number assigned to chemical substances +for regulatory purposes within the European Union by the European Commission. + +More information: + +* https://en.wikipedia.org/wiki/European_Community_number + +>>> validate('200-001-8') +'200-001-8' +>>> validate('200-001-9') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('20-0001-8') +Traceback (most recent call last): + ... +InvalidFormat: ... +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean + + +_ec_number_re = re.compile(r'^[0-9]{3}-[0-9]{3}-[0-9]$') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation.""" + number = clean(number, ' ').strip() + if '-' not in number: + number = '-'.join((number[:3], number[3:6], number[6:])) + return number + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit for the number. The passed number should not + have the check digit included.""" + number = compact(number).replace('-', '') + return str( + sum((i + 1) * int(n) for i, n in enumerate(number)) % 11)[0] + + +def validate(number: str) -> str: + """Check if the number provided is a valid EC Number.""" + number = compact(number) + if not len(number) == 9: + raise InvalidLength() + if not _ec_number_re.match(number): + raise InvalidFormat() + if number[-1] != calc_check_digit(number[:-1]): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid EC Number.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/eu/eic.py b/stdnum/eu/eic.py index 63425183..47e69995 100644 --- a/stdnum/eu/eic.py +++ b/stdnum/eu/eic.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """EIC (European Energy Identification Code). @@ -44,6 +42,8 @@ InvalidFormat: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean @@ -51,20 +51,20 @@ _alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding white space.""" return clean(number, ' ').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number.""" number = compact(number) s = sum((16 - i) * _alphabet.index(n) for i, n in enumerate(number[:15])) return _alphabet[36 - ((s - 1) % 37)] -def validate(number): +def validate(number: str) -> str: """Check if the number is valid. This checks the length, format and check digit.""" number = compact(number) @@ -79,7 +79,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is valid. This checks the length, format and check digit.""" try: diff --git a/stdnum/eu/excise.py b/stdnum/eu/excise.py new file mode 100644 index 00000000..736a22a9 --- /dev/null +++ b/stdnum/eu/excise.py @@ -0,0 +1,81 @@ +# excise.py - functions for handling EU Excise numbers +# coding: utf-8 +# +# Copyright (C) 2023 Cédric Krier +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""European Excise Number + +The excise duty identification number assigned to businesses authorised to +operate with excise goods (e.g. alcohol, tobacco, energy products, etc.). + +The number is issued by the national customs or tax authority of the Member +State where the business is established. The number consists of a two-letter +country code followed by up to 13 alphanumeric characters. + +More information: + +* https://ec.europa.eu/taxation_customs/dds2/seed/ + +>>> validate('LU 987ABC') +'LU00000987ABC' +""" + +from __future__ import annotations + +from stdnum.eu.vat import MEMBER_STATES +from stdnum.exceptions import * +from stdnum.util import NumberValidationModule, clean, get_cc_module + + +_country_modules = dict() + + +def _get_cc_module(cc: str) -> NumberValidationModule | None: + """Get the Excise number module based on the country code.""" + cc = cc.lower() + if cc not in MEMBER_STATES: + raise InvalidComponent() + if cc not in _country_modules: + _country_modules[cc] = get_cc_module(cc, 'excise') + return _country_modules[cc] + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the number + of any valid separators and removes surrounding whitespace.""" + number = clean(number, ' ').upper().strip() + if len(number) < 13: + number = number[:2] + number[2:].zfill(11) + return number + + +def validate(number: str) -> str: + """Check if the number is a valid Excise number.""" + number = compact(number) + if len(number) != 13: + raise InvalidLength() + module = _get_cc_module(number[:2]) + if module: + module.validate(number) + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid excise number.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/eu/nace.py b/stdnum/eu/nace.py index 91fc2a4a..e0c9db4c 100644 --- a/stdnum/eu/nace.py +++ b/stdnum/eu/nace.py @@ -1,7 +1,7 @@ # nace.py - functions for handling EU NACE classification # coding: utf-8 # -# Copyright (C) 2017-2019 Arthur de Jong +# Copyright (C) 2017-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NACE (classification for businesses in the European Union). @@ -27,18 +25,20 @@ The first 4 digits are the same in all EU countries while additional levels and digits may be vary between countries. This module validates the numbers -according to revision 2 and based on the registry as published by the EC. +according to revision 2.1 (or 2.0 if that version is supplied) and based on +the registry as published by the EC. More information: * https://en.wikipedia.org/wiki/Statistical_Classification_of_Economic_Activities_in_the_European_Community * https://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=LST_NOM_DTL&StrNom=NACE_REV2&StrLanguageCode=EN&IntPcKey=&StrLayoutCode=HIERARCHIC +* https://showvoc.op.europa.eu/#/datasets/ESTAT_Statistical_Classification_of_Economic_Activities_in_the_European_Community_Rev._2.1._%28NACE_2.1%29/data >>> validate('A') 'A' ->>> validate('62.01') +>>> validate('62.01', revision='2.0') '6201' ->>> str(get_label('62.01')) +>>> get_label('62.10') 'Computer programming activities' >>> validate('62.05') Traceback (most recent call last): @@ -50,7 +50,9 @@ InvalidLength: ... >>> format('6201') '62.01' -""" +""" # noqa: E501 + +from __future__ import annotations import warnings @@ -58,38 +60,43 @@ from stdnum.util import clean, isdigits -def compact(number): +# The revision of the NACE definition to use +DEFAULT_REVISION = '2.1' + + +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '.').strip() -def info(number): +def info(number: str, *, revision: str = DEFAULT_REVISION) -> dict[str, str]: """Lookup information about the specified NACE. This returns a dict.""" number = compact(number) + revision = revision.replace('.', '') from stdnum import numdb info = dict() - for _n, i in numdb.get('eu/nace').info(number): + for _n, i in numdb.get(f'eu/nace{revision}').info(number): if not i: raise InvalidComponent() info.update(i) return info -def get_label(number): +def get_label(number: str, revision: str = DEFAULT_REVISION) -> str: """Lookup the category label for the number.""" - return info(number)['label'] + return info(number, revision=revision)['label'] -def label(number): # pragma: no cover (deprecated function) +def label(number: str) -> str: # pragma: no cover (deprecated function) """DEPRECATED: use `get_label()` instead.""" # noqa: D40 warnings.warn( 'label() has been to get_label()', DeprecationWarning, stacklevel=2) - return get_label(number) + return get_label(number, revision='2.0') -def validate(number): +def validate(number: str, revision: str = DEFAULT_REVISION) -> str: """Check if the number is a valid NACE. This checks the format and searches the registry to see if it exists.""" number = compact(number) @@ -101,19 +108,19 @@ def validate(number): else: if not isdigits(number): raise InvalidFormat() - info(number) + info(number, revision=revision) return number -def is_valid(number): +def is_valid(number: str, revision: str = DEFAULT_REVISION) -> bool: """Check if the number is a valid NACE. This checks the format and searches the registry to see if it exists.""" try: - return bool(validate(number)) + return bool(validate(number, revision=revision)) except ValidationError: return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return '.'.join((number[:2], number[2:])).strip('.') diff --git a/stdnum/eu/nace.dat b/stdnum/eu/nace20.dat similarity index 99% rename from stdnum/eu/nace.dat rename to stdnum/eu/nace20.dat index 2c0ed855..cb81a329 100644 --- a/stdnum/eu/nace.dat +++ b/stdnum/eu/nace20.dat @@ -1,4 +1,4 @@ -# generated from NACE_REV2_20200809_170835.xml, downloaded from +# generated from NACE_REV2_20221113_175805.xml, downloaded from # https://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=ACT_OTH_CLS_DLD&StrNom=NACE_REV2&StrFormat=XML&StrLanguageCode=EN # NACE_REV2: Statistical Classification of Economic Activities in the European Community, Rev. 2 (2008) A label="AGRICULTURE, FORESTRY AND FISHING" isic="A" diff --git a/stdnum/eu/nace21.dat b/stdnum/eu/nace21.dat new file mode 100644 index 00000000..d2210dca --- /dev/null +++ b/stdnum/eu/nace21.dat @@ -0,0 +1,1050 @@ +# generated from NACE_Rev2.1_Heading_All_Languages.tsv, downloaded from +# https://showvoc.op.europa.eu/#/datasets/ESTAT_Statistical_Classification_of_Economic_Activities_in_the_European_Community_Rev._2.1._%28NACE_2.1%29/downloads +# NACE_REV2.1: Statistical Classification of Economic Activities in the European Community, Rev. 2.1 (2025) +A label="AGRICULTURE, FORESTRY AND FISHING" isic="A" +01 section="A" label="Crop and animal production, hunting and related service activities" isic="01" + 1 label="Growing of non-perennial crops" isic="011" + 1 label="Growing of cereals, other than rice, leguminous crops and oil seeds" isic="0111" + 2 label="Growing of rice" isic="0112" + 3 label="Growing of vegetables and melons, roots and tubers" isic="0113" + 4 label="Growing of sugar cane" isic="0114" + 5 label="Growing of tobacco" isic="0115" + 6 label="Growing of fibre crops" isic="0116" + 9 label="Growing of other non-perennial crops" isic="0119" + 2 label="Growing of perennial crops" isic="012" + 1 label="Growing of grapes" isic="0121" + 2 label="Growing of tropical and subtropical fruits" isic="0122" + 3 label="Growing of citrus fruits" isic="0123" + 4 label="Growing of pome fruits and stone fruits" isic="0124" + 5 label="Growing of other tree and bush fruits and nuts" isic="0125" + 6 label="Growing of oleaginous fruits" isic="0126" + 7 label="Growing of beverage crops" isic="0127" + 8 label="Growing of spices, aromatic, drug and pharmaceutical crops" isic="0128" + 9 label="Growing of other perennial crops" isic="0129" + 3 label="Plant propagation" isic="013" + 0 label="Plant propagation" isic="0130" + 4 label="Animal production" isic="014" + 1 label="Raising of dairy cattle" isic="0141" + 2 label="Raising of other cattle and buffaloes" isic="0142" + 3 label="Raising of horses and other equines" isic="0143" + 4 label="Raising of camels and camelids" isic="0144" + 5 label="Raising of sheep and goats" isic="0145" + 6 label="Raising of swine and pigs" isic="0146" + 7 label="Raising of poultry" isic="0147" + 8 label="Raising of other animals" isic="0148" + 5 label="Mixed farming" isic="015" + 0 label="Mixed farming" isic="0150" + 6 label="Support activities to agriculture and post-harvest crop activities" isic="016" + 1 label="Support activities for crop production" isic="0161" + 2 label="Support activities for animal production" isic="0162" + 3 label="Post-harvest crop activities and seed processing for propagation" isic="0163" + 7 label="Hunting, trapping and related service activities" isic="017" + 0 label="Hunting, trapping and related service activities" isic="0170" +02 section="A" label="Forestry and logging" isic="02" + 1 label="Silviculture and other forestry activities" isic="021" + 0 label="Silviculture and other forestry activities" isic="0210" + 2 label="Logging" isic="022" + 0 label="Logging" isic="0220" + 3 label="Gathering of wild growing non-wood products" isic="023" + 0 label="Gathering of wild growing non-wood products" isic="0230" + 4 label="Support services to forestry" isic="024" + 0 label="Support services to forestry" isic="0240" +03 section="A" label="Fishing and aquaculture" isic="03" + 1 label="Fishing" isic="031" + 1 label="Marine fishing" isic="0311" + 2 label="Freshwater fishing" isic="0312" + 2 label="Aquaculture" isic="032" + 1 label="Marine aquaculture" isic="0321" + 2 label="Freshwater aquaculture" isic="0322" + 3 label="Support activities for fishing and aquaculture" isic="033" + 0 label="Support activities for fishing and aquaculture" isic="0330" +B label="MINING AND QUARRYING" isic="B" +05 section="B" label="Mining of coal and lignite" isic="05" + 1 label="Mining of hard coal" isic="051" + 0 label="Mining of hard coal" isic="0510" + 2 label="Mining of lignite" isic="052" + 0 label="Mining of lignite" isic="0520" +06 section="B" label="Extraction of crude petroleum and natural gas" isic="06" + 1 label="Extraction of crude petroleum" isic="061" + 0 label="Extraction of crude petroleum" isic="0610" + 2 label="Extraction of natural gas" isic="062" + 0 label="Extraction of natural gas" isic="0620" +07 section="B" label="Mining of metal ores" isic="07" + 1 label="Mining of iron ores" isic="071" + 0 label="Mining of iron ores" isic="0710" + 2 label="Mining of non-ferrous metal ores" isic="072" + 1 label="Mining of uranium and thorium ores" isic="0721" + 9 label="Mining of other non-ferrous metal ores" isic="0729" +08 section="B" label="Other mining and quarrying" isic="08" + 1 label="Quarrying of stone, sand and clay" isic="081" + 1 label="Quarrying of ornamental stone, limestone, gypsum, slate and other stone" isic="0811" + 2 label="Operation of gravel and sand pits and mining of clay and kaolin" isic="0812" + 9 label="Mining and quarrying n.e.c." isic="089" + 1 label="Mining of chemical and fertiliser minerals" isic="0891" + 2 label="Extraction of peat" isic="0892" + 3 label="Extraction of salt" isic="0893" + 9 label="Other mining and quarrying n.e.c." isic="0899" +09 section="B" label="Mining support service activities" isic="09" + 1 label="Support activities for petroleum and natural gas extraction" isic="091" + 0 label="Support activities for petroleum and natural gas extraction" isic="0910" + 9 label="Support activities for other mining and quarrying" isic="099" + 0 label="Support activities for other mining and quarrying" isic="0990" +C label="MANUFACTURING" isic="C" +10 section="C" label="Manufacture of food products" isic="10" + 1 label="Processing and preserving of meat and production of meat products" isic="101" + 1 label="Processing and preserving of meat, except of poultry meat" isic="1011" + 2 label="Processing and preserving of poultry meat" isic="1012" + 3 label="Production of meat and poultry meat products" isic="1013" + 2 label="Processing and preserving of fish, crustaceans and molluscs" isic="102" + 0 label="Processing and preserving of fish, crustaceans and molluscs" isic="1020" + 3 label="Processing and preserving of fruit and vegetables" isic="103" + 1 label="Processing and preserving of potatoes" isic="1031" + 2 label="Manufacture of fruit and vegetable juice" isic="1032" + 9 label="Other processing and preserving of fruit and vegetables" isic="1039" + 4 label="Manufacture of vegetable and animal oils and fats" isic="104" + 1 label="Manufacture of oils and fats" isic="1041" + 2 label="Manufacture of margarine and similar edible fats" isic="1042" + 5 label="Manufacture of dairy products and edible ice" isic="105" + 1 label="Manufacture of dairy products" isic="1051" + 2 label="Manufacture of ice cream and other edible ice" isic="1052" + 6 label="Manufacture of grain mill products, starches and starch products" isic="106" + 1 label="Manufacture of grain mill products" isic="1061" + 2 label="Manufacture of starches and starch products" isic="1062" + 7 label="Manufacture of bakery and farinaceous products" isic="107" + 1 label="Manufacture of bread; manufacture of fresh pastry goods and cakes" isic="1071" + 2 label="Manufacture of rusks, biscuits, preserved pastries and cakes" isic="1072" + 3 label="Manufacture of farinaceous products" isic="1073" + 8 label="Manufacture of other food products" isic="108" + 1 label="Manufacture of sugar" isic="1081" + 2 label="Manufacture of cocoa, chocolate and sugar confectionery" isic="1082" + 3 label="Processing of tea and coffee" isic="1083" + 4 label="Manufacture of condiments and seasonings" isic="1084" + 5 label="Manufacture of prepared meals and dishes" isic="1085" + 6 label="Manufacture of homogenised food preparations and dietetic food" isic="1086" + 9 label="Manufacture of other food products n.e.c." isic="1089" + 9 label="Manufacture of prepared animal feeds" isic="109" + 1 label="Manufacture of prepared feeds for farm animals" isic="1091" + 2 label="Manufacture of prepared pet foods" isic="1092" +11 section="C" label="Manufacture of beverages" isic="11" + 0 label="Manufacture of beverages" isic="110" + 1 label="Distilling, rectifying and blending of spirits" isic="1101" + 2 label="Manufacture of wine from grape" isic="1102" + 3 label="Manufacture of cider and other fruit fermented beverages" isic="1103" + 4 label="Manufacture of other non-distilled fermented beverages" isic="1104" + 5 label="Manufacture of beer" isic="1105" + 6 label="Manufacture of malt" isic="1106" + 7 label="Manufacture of soft drinks and bottled waters" isic="1107" +12 section="C" label="Manufacture of tobacco products" isic="12" + 0 label="Manufacture of tobacco products" isic="120" + 0 label="Manufacture of tobacco products" isic="1200" +13 section="C" label="Manufacture of textiles" isic="13" + 1 label="Preparation and spinning of textile fibres" isic="131" + 0 label="Preparation and spinning of textile fibres" isic="1310" + 2 label="Weaving of textiles" isic="132" + 0 label="Weaving of textiles" isic="1320" + 3 label="Finishing of textiles" isic="133" + 0 label="Finishing of textiles" isic="1330" + 9 label="Manufacture of other textiles" isic="139" + 1 label="Manufacture of knitted and crocheted fabrics" isic="1391" + 2 label="Manufacture of household textiles and made-up furnishing articles" isic="1392" + 3 label="Manufacture of carpets and rugs" isic="1393" + 4 label="Manufacture of cordage, rope, twine and netting" isic="1394" + 5 label="Manufacture of non-wovens and non-woven articles" isic="1395" + 6 label="Manufacture of other technical and industrial textiles" isic="1396" + 9 label="Manufacture of other textiles n.e.c." isic="1399" +14 section="C" label="Manufacture of wearing apparel" isic="14" + 1 label="Manufacture of knitted and crocheted apparel" isic="141" + 0 label="Manufacture of knitted and crocheted apparel" isic="1410" + 2 label="Manufacture of other wearing apparel and accessories" isic="142" + 1 label="Manufacture of outerwear" isic="1421" + 2 label="Manufacture of underwear" isic="1422" + 3 label="Manufacture of workwear" isic="1423" + 4 label="Manufacture of leather clothes and fur apparel" isic="1424" + 9 label="Manufacture of other wearing apparel and accessories n.e.c." isic="1429" +15 section="C" label="Manufacture of leather and related products of other materials" isic="15" + 1 label="Tanning, dyeing, dressing of leather and fur; manufacture of luggage, handbags, saddlery and harness" isic="151" + 1 label="Tanning, dressing, dyeing of leather and fur" isic="1511" + 2 label="Manufacture of luggage, handbags, saddlery and harness of any material" isic="1512" + 2 label="Manufacture of footwear" isic="152" + 0 label="Manufacture of footwear" isic="1520" +16 section="C" label="Manufacture of wood and of products of wood and cork, except furniture; manufacture of articles of straw and plaiting materials" isic="16" + 1 label="Sawmilling and planing of wood; processing and finishing of wood" isic="161" + 1 label="Sawmilling and planing of wood" isic="1611" + 2 label="Processing and finishing of wood" isic="1612" + 2 label="Manufacture of products of wood, cork, straw and plaiting materials" isic="162" + 1 label="Manufacture of veneer sheets and wood-based panels" isic="1621" + 2 label="Manufacture of assembled parquet floors" isic="1622" + 3 label="Manufacture of other builders' carpentry and joinery" isic="1623" + 4 label="Manufacture of wooden containers" isic="1624" + 5 label="Manufacture of doors and windows of wood" isic="1625" + 6 label="Manufacture of solid fuels from vegetable biomass" isic="1626" + 7 label="Finishing of wooden products" isic="1627" + 8 label="Manufacture of other products of wood and articles of cork, straw and plaiting materials" isic="1628" +17 section="C" label="Manufacture of paper and paper products" isic="17" + 1 label="Manufacture of pulp, paper and paperboard" isic="171" + 1 label="Manufacture of pulp" isic="1711" + 2 label="Manufacture of paper and paperboard" isic="1712" + 2 label="Manufacture of articles of paper and paperboard" isic="172" + 1 label="Manufacture of corrugated paper, paperboard and containers of paper and paperboard" isic="1721" + 2 label="Manufacture of household and sanitary goods and of toilet requisites" isic="1722" + 3 label="Manufacture of paper stationery" isic="1723" + 4 label="Manufacture of wallpaper" isic="1724" + 5 label="Manufacture of other articles of paper and paperboard" isic="1725" +18 section="C" label="Printing and reproduction of recorded media" isic="18" + 1 label="Printing and service activities related to printing" isic="181" + 1 label="Printing of newspapers" isic="1811" + 2 label="Other printing" isic="1812" + 3 label="Pre-press and pre-media services" isic="1813" + 4 label="Binding and related services" isic="1814" + 2 label="Reproduction of recorded media" isic="182" + 0 label="Reproduction of recorded media" isic="1820" +19 section="C" label="Manufacture of coke and refined petroleum products" isic="19" + 1 label="Manufacture of coke oven products" isic="191" + 0 label="Manufacture of coke oven products" isic="1910" + 2 label="Manufacture of refined petroleum products and fossil fuel products" isic="192" + 0 label="Manufacture of refined petroleum products and fossil fuel products" isic="1920" +20 section="C" label="Manufacture of chemicals and chemical products" isic="20" + 1 label="Manufacture of basic chemicals, fertilisers and nitrogen compounds, plastics and synthetic rubber in primary forms" isic="201" + 1 label="Manufacture of industrial gases" isic="2011" + 2 label="Manufacture of dyes and pigments" isic="2012" + 3 label="Manufacture of other inorganic basic chemicals" isic="2013" + 4 label="Manufacture of other organic basic chemicals" isic="2014" + 5 label="Manufacture of fertilisers and nitrogen compounds" isic="2015" + 6 label="Manufacture of plastics in primary forms" isic="2016" + 7 label="Manufacture of synthetic rubber in primary forms" isic="2017" + 2 label="Manufacture of pesticides, disinfectants and other agrochemical products" isic="202" + 0 label="Manufacture of pesticides, disinfectants and other agrochemical products" isic="2020" + 3 label="Manufacture of paints, varnishes and similar coatings, printing ink and mastics" isic="203" + 0 label="Manufacture of paints, varnishes and similar coatings, printing ink and mastics" isic="2030" + 4 label="Manufacture of washing, cleaning and polishing preparations" isic="204" + 1 label="Manufacture of soap and detergents, cleaning and polishing preparations" isic="2041" + 2 label="Manufacture of perfumes and toilet preparations" isic="2042" + 5 label="Manufacture of other chemical products" isic="205" + 1 label="Manufacture of liquid biofuels" isic="2051" + 9 label="Manufacture of other chemical products n.e.c." isic="2059" + 6 label="Manufacture of man-made fibres" isic="206" + 0 label="Manufacture of man-made fibres" isic="2060" +21 section="C" label="Manufacture of basic pharmaceutical products and pharmaceutical preparations" isic="21" + 1 label="Manufacture of basic pharmaceutical products" isic="211" + 0 label="Manufacture of basic pharmaceutical products" isic="2110" + 2 label="Manufacture of pharmaceutical preparations" isic="212" + 0 label="Manufacture of pharmaceutical preparations" isic="2120" +22 section="C" label="Manufacture of rubber and plastic products" isic="22" + 1 label="Manufacture of rubber products" isic="221" + 1 label="Manufacture, retreading and rebuilding of rubber tyres and manufacture of tubes" isic="2211" + 2 label="Manufacture of other rubber products" isic="2212" + 2 label="Manufacture of plastic products" isic="222" + 1 label="Manufacture of plastic plates, sheets, tubes and profiles" isic="2221" + 2 label="Manufacture of plastic packing goods" isic="2222" + 3 label="Manufacture of doors and windows of plastic" isic="2223" + 4 label="Manufacture of builders’ ware of plastic" isic="2224" + 5 label="Processing and finishing of plastic products" isic="2225" + 6 label="Manufacture of other plastic products" isic="2226" +23 section="C" label="Manufacture of other non-metallic mineral products" isic="23" + 1 label="Manufacture of glass and glass products" isic="231" + 1 label="Manufacture of flat glass" isic="2311" + 2 label="Shaping and processing of flat glass" isic="2312" + 3 label="Manufacture of hollow glass" isic="2313" + 4 label="Manufacture of glass fibres" isic="2314" + 5 label="Manufacture and processing of other glass, including technical glassware" isic="2315" + 2 label="Manufacture of refractory products" isic="232" + 0 label="Manufacture of refractory products" isic="2320" + 3 label="Manufacture of clay building materials" isic="233" + 1 label="Manufacture of ceramic tiles and flags" isic="2331" + 2 label="Manufacture of bricks, tiles and construction products, in baked clay" isic="2332" + 4 label="Manufacture of other porcelain and ceramic products" isic="234" + 1 label="Manufacture of ceramic household and ornamental articles" isic="2341" + 2 label="Manufacture of ceramic sanitary fixtures" isic="2342" + 3 label="Manufacture of ceramic insulators and insulating fittings" isic="2343" + 4 label="Manufacture of other technical ceramic products" isic="2344" + 5 label="Manufacture of other ceramic products" isic="2345" + 5 label="Manufacture of cement, lime and plaster" isic="235" + 1 label="Manufacture of cement" isic="2351" + 2 label="Manufacture of lime and plaster" isic="2352" + 6 label="Manufacture of articles of concrete, cement and plaster" isic="236" + 1 label="Manufacture of concrete products for construction purposes" isic="2361" + 2 label="Manufacture of plaster products for construction purposes" isic="2362" + 3 label="Manufacture of ready-mixed concrete" isic="2363" + 4 label="Manufacture of mortars" isic="2364" + 5 label="Manufacture of fibre cement" isic="2365" + 6 label="Manufacture of other articles of concrete, cement and plaster" isic="2366" + 7 label="Cutting, shaping and finishing of stone" isic="237" + 0 label="Cutting, shaping and finishing of stone" isic="2370" + 9 label="Manufacture of abrasive products and non-metallic mineral products n.e.c." isic="239" + 1 label="Manufacture of abrasive products" isic="2391" + 9 label="Manufacture of other non-metallic mineral products n.e.c." isic="2399" +24 section="C" label="Manufacture of basic metals" isic="24" + 1 label="Manufacture of basic iron and steel and of ferro-alloys" isic="241" + 0 label="Manufacture of basic iron and steel and of ferro-alloys" isic="2410" + 2 label="Manufacture of tubes, pipes, hollow profiles and related fittings, of steel" isic="242" + 0 label="Manufacture of tubes, pipes, hollow profiles and related fittings, of steel" isic="2420" + 3 label="Manufacture of other products of first processing of steel" isic="243" + 1 label="Cold drawing of bars" isic="2431" + 2 label="Cold rolling of narrow strip" isic="2432" + 3 label="Cold forming or folding" isic="2433" + 4 label="Cold drawing of wire" isic="2434" + 4 label="Manufacture of basic precious and other non-ferrous metals" isic="244" + 1 label="Precious metals production" isic="2441" + 2 label="Aluminium production" isic="2442" + 3 label="Lead, zinc and tin production" isic="2443" + 4 label="Copper production" isic="2444" + 5 label="Other non-ferrous metal production" isic="2445" + 6 label="Processing of nuclear fuel" isic="2446" + 5 label="Casting of metals" isic="245" + 1 label="Casting of iron" isic="2451" + 2 label="Casting of steel" isic="2452" + 3 label="Casting of light metals" isic="2453" + 4 label="Casting of other non-ferrous metals" isic="2454" +25 section="C" label="Manufacture of fabricated metal products, except machinery and equipment" isic="25" + 1 label="Manufacture of structural metal products" isic="251" + 1 label="Manufacture of metal structures and parts of structures" isic="2511" + 2 label="Manufacture of doors and windows of metal" isic="2512" + 2 label="Manufacture of tanks, reservoirs and containers of metal" isic="252" + 1 label="Manufacture of central heating radiators, steam generators and boilers" isic="2521" + 2 label="Manufacture of other tanks, reservoirs and containers of metal" isic="2522" + 3 label="Manufacture of weapons and ammunition" isic="253" + 0 label="Manufacture of weapons and ammunition" isic="2530" + 4 label="Forging and shaping metal and powder metallurgy" isic="254" + 0 label="Forging and shaping metal and powder metallurgy" isic="2540" + 5 label="Treatment and coating of metals; machining" isic="255" + 1 label="Coating of metals" isic="2551" + 2 label="Heat treatment of metals" isic="2552" + 3 label="Machining of metals" isic="2553" + 6 label="Manufacture of cutlery, tools and general hardware" isic="256" + 1 label="Manufacture of cutlery" isic="2561" + 2 label="Manufacture of locks and hinges" isic="2562" + 3 label="Manufacture of tools" isic="2563" + 9 label="Manufacture of other fabricated metal products" isic="259" + 1 label="Manufacture of steel drums and similar containers" isic="2591" + 2 label="Manufacture of light metal packaging" isic="2592" + 3 label="Manufacture of wire products, chain and springs" isic="2593" + 4 label="Manufacture of fasteners and screw machine products" isic="2594" + 9 label="Manufacture of other fabricated metal products n.e.c." isic="2599" +26 section="C" label="Manufacture of computer, electronic and optical products" isic="26" + 1 label="Manufacture of electronic components and boards" isic="261" + 1 label="Manufacture of electronic components" isic="2611" + 2 label="Manufacture of loaded electronic boards" isic="2612" + 2 label="Manufacture of computers and peripheral equipment" isic="262" + 0 label="Manufacture of computers and peripheral equipment" isic="2620" + 3 label="Manufacture of communication equipment" isic="263" + 0 label="Manufacture of communication equipment" isic="2630" + 4 label="Manufacture of consumer electronics" isic="264" + 0 label="Manufacture of consumer electronics" isic="2640" + 5 label="Manufacture of measuring testing instruments, clocks and watches" isic="265" + 1 label="Manufacture of instruments and appliances for measuring, testing and navigation" isic="2651" + 2 label="Manufacture of watches and clocks" isic="2652" + 6 label="Manufacture of irradiation, electromedical and electrotherapeutic equipment" isic="266" + 0 label="Manufacture of irradiation, electromedical and electrotherapeutic equipment" isic="2660" + 7 label="Manufacture of optical instruments, magnetic and optical media and photographic equipment" isic="267" + 0 label="Manufacture of optical instruments, magnetic and optical media and photographic equipment" isic="2670" +27 section="C" label="Manufacture of electrical equipment" isic="27" + 1 label="Manufacture of electric motors, generators, transformers and electricity distribution and control apparatus" isic="271" + 1 label="Manufacture of electric motors, generators and transformers" isic="2711" + 2 label="Manufacture of electricity distribution and control apparatus" isic="2712" + 2 label="Manufacture of batteries and accumulators" isic="272" + 0 label="Manufacture of batteries and accumulators" isic="2720" + 3 label="Manufacture of wiring and wiring devices" isic="273" + 1 label="Manufacture of fibre optic cables" isic="2731" + 2 label="Manufacture of other electronic and electric wires and cables" isic="2732" + 3 label="Manufacture of wiring devices" isic="2733" + 4 label="Manufacture of lighting equipment" isic="274" + 0 label="Manufacture of lighting equipment" isic="2740" + 5 label="Manufacture of domestic appliances" isic="275" + 1 label="Manufacture of electric domestic appliances" isic="2751" + 2 label="Manufacture of non-electric domestic appliances" isic="2752" + 9 label="Manufacture of other electrical equipment" isic="279" + 0 label="Manufacture of other electrical equipment" isic="2790" +28 section="C" label="Manufacture of machinery and equipment n.e.c." isic="28" + 1 label="Manufacture of general-purpose machinery" isic="281" + 1 label="Manufacture of engines and turbines, except aircraft, vehicle and cycle engines" isic="2811" + 2 label="Manufacture of fluid power equipment" isic="2812" + 3 label="Manufacture of other pumps and compressors" isic="2813" + 4 label="Manufacture of other taps and valves" isic="2814" + 5 label="Manufacture of bearings, gears, gearing and driving elements" isic="2815" + 2 label="Manufacture of other general-purpose machinery" isic="282" + 1 label="Manufacture of ovens, furnaces and permanent household heating equipment" isic="2821" + 2 label="Manufacture of lifting and handling equipment" isic="2822" + 3 label="Manufacture of office machinery and equipment, except computers and peripheral equipment" isic="2823" + 4 label="Manufacture of power-driven hand tools" isic="2824" + 5 label="Manufacture of non-domestic air conditioning equipment" isic="2825" + 9 label="Manufacture of other general-purpose machinery n.e.c." isic="2829" + 3 label="Manufacture of agricultural and forestry machinery" isic="283" + 0 label="Manufacture of agricultural and forestry machinery" isic="2830" + 4 label="Manufacture of metal forming machinery and machine tools" isic="284" + 1 label="Manufacture of metal forming machinery and machine tools for metal work" isic="2841" + 2 label="Manufacture of other machine tools" isic="2842" + 9 label="Manufacture of other special-purpose machinery" isic="289" + 1 label="Manufacture of machinery for metallurgy" isic="2891" + 2 label="Manufacture of machinery for mining, quarrying and construction" isic="2892" + 3 label="Manufacture of machinery for food, beverage and tobacco processing" isic="2893" + 4 label="Manufacture of machinery for textile, apparel and leather production" isic="2894" + 5 label="Manufacture of machinery for paper and paperboard production" isic="2895" + 6 label="Manufacture of plastics and rubber machinery" isic="2896" + 7 label="Manufacture of additive manufacturing machinery" isic="2897" + 9 label="Manufacture of other special-purpose machinery n.e.c." isic="2899" +29 section="C" label="Manufacture of motor vehicles, trailers and semi-trailers" isic="29" + 1 label="Manufacture of motor vehicles" isic="291" + 0 label="Manufacture of motor vehicles" isic="2910" + 2 label="Manufacture of bodies and coachwork for motor vehicles; manufacture of trailers and semi-trailers" isic="292" + 0 label="Manufacture of bodies and coachwork for motor vehicles; manufacture of trailers and semi-trailers" isic="2920" + 3 label="Manufacture of motor vehicle parts and accessories" isic="293" + 1 label="Manufacture of electrical and electronic equipment for motor vehicles" isic="2931" + 2 label="Manufacture of other parts and accessories for motor vehicles" isic="2932" +30 section="C" label="Manufacture of other transport equipment" isic="30" + 1 label="Building of ships and boats" isic="301" + 1 label="Building of civilian ships and floating structures" isic="3011" + 2 label="Building of pleasure and sporting boats" isic="3012" + 3 label="Building of military ships and vessels" isic="3013" + 2 label="Manufacture of railway locomotives and rolling stock" isic="302" + 0 label="Manufacture of railway locomotives and rolling stock" isic="3020" + 3 label="Manufacture of air and spacecraft and related machinery" isic="303" + 1 label="Manufacture of civilian air and spacecraft and related machinery" isic="3031" + 2 label="Manufacture of military air and spacecraft and related machinery" isic="3032" + 4 label="Manufacture of military fighting vehicles" isic="304" + 0 label="Manufacture of military fighting vehicles" isic="3040" + 9 label="Manufacture of transport equipment n.e.c." isic="309" + 1 label="Manufacture of motorcycles" isic="3091" + 2 label="Manufacture of bicycles and invalid carriages" isic="3092" + 9 label="Manufacture of other transport equipment n.e.c." isic="3099" +31 section="C" label="Manufacture of furniture" isic="31" + 0 label="Manufacture of furniture" isic="310" + 0 label="Manufacture of furniture" isic="3100" +32 section="C" label="Other manufacturing" isic="32" + 1 label="Manufacture of jewellery, bijouterie and related articles" isic="321" + 1 label="Striking of coins" isic="3211" + 2 label="Manufacture of jewellery and related articles" isic="3212" + 3 label="Manufacture of imitation jewellery and related articles" isic="3213" + 2 label="Manufacture of musical instruments" isic="322" + 0 label="Manufacture of musical instruments" isic="3220" + 3 label="Manufacture of sports goods" isic="323" + 0 label="Manufacture of sports goods" isic="3230" + 4 label="Manufacture of games and toys" isic="324" + 0 label="Manufacture of games and toys" isic="3240" + 5 label="Manufacture of medical and dental instruments and supplies" isic="325" + 0 label="Manufacture of medical and dental instruments and supplies" isic="3250" + 9 label="Manufacturing n.e.c." isic="329" + 1 label="Manufacture of brooms and brushes" isic="3291" + 9 label="Other manufacturing n.e.c." isic="3299" +33 section="C" label="Repair, maintenance and installation of machinery and equipment" isic="33" + 1 label="Repair and maintenance of fabricated metal products, machinery and equipment" isic="331" + 1 label="Repair and maintenance of fabricated metal products" isic="3311" + 2 label="Repair and maintenance of machinery" isic="3312" + 3 label="Repair and maintenance of electronic and optical equipment" isic="3313" + 4 label="Repair and maintenance of electrical equipment" isic="3314" + 5 label="Repair and maintenance of civilian ships and boats" isic="3315" + 6 label="Repair and maintenance of civilian air and spacecraft" isic="3316" + 7 label="Repair and maintenance of other civilian transport equipment" isic="3317" + 8 label="Repair and maintenance of military fighting vehicles, ships, boats, air and spacecraft" isic="3318" + 9 label="Repair and maintenance of other equipment" isic="3319" + 2 label="Installation of industrial machinery and equipment" isic="332" + 0 label="Installation of industrial machinery and equipment" isic="3320" +D label="ELECTRICITY, GAS, STEAM AND AIR CONDITIONING SUPPLY" isic="D" +35 section="D" label="Electricity, gas, steam and air conditioning supply" isic="35" + 1 label="Electric power generation, transmission and distribution" isic="351" + 1 label="Production of electricity from non-renewable sources" isic="3511" + 2 label="Production of electricity from renewable sources" isic="3512" + 3 label="Transmission of electricity" isic="3513" + 4 label="Distribution of electricity" isic="3514" + 5 label="Trade of electricity" isic="3515" + 6 label="Storage of electricity" isic="3516" + 2 label="Manufacture of gas, and distribution of gaseous fuels through mains" isic="352" + 1 label="Manufacture of gas" isic="3521" + 2 label="Distribution of gaseous fuels through mains" isic="3522" + 3 label="Trade of gas through mains" isic="3523" + 4 label="Storage of gas as part of network supply services" isic="3524" + 3 label="Steam and air conditioning supply" isic="353" + 0 label="Steam and air conditioning supply" isic="3530" + 4 label="Activities of brokers and agents for electric power and natural gas" isic="354" + 0 label="Activities of brokers and agents for electric power and natural gas" isic="3540" +E label="WATER SUPPLY; SEWERAGE, WASTE MANAGEMENT AND REMEDIATION ACTIVITIES" isic="E" +36 section="E" label="Water collection, treatment and supply" isic="36" + 0 label="Water collection, treatment and supply" isic="360" + 0 label="Water collection, treatment and supply" isic="3600" +37 section="E" label="Sewerage" isic="37" + 0 label="Sewerage" isic="370" + 0 label="Sewerage" isic="3700" +38 section="E" label="Waste collection, recovery and disposal activities" isic="38" + 1 label="Waste collection" isic="381" + 1 label="Collection of non-hazardous waste" isic="3811" + 2 label="Collection of hazardous waste" isic="3812" + 2 label="Waste recovery" isic="382" + 1 label="Materials recovery" isic="3821" + 2 label="Energy recovery" isic="3822" + 3 label="Other waste recovery" isic="3823" + 3 label="Waste disposal without recovery" isic="383" + 1 label="Incineration without energy recovery" isic="3831" + 2 label="Landfilling or permanent storage" isic="3832" + 3 label="Other waste disposal" isic="3833" +39 section="E" label="Remediation activities and other waste management service activities" isic="39" + 0 label="Remediation activities and other waste management service activities" isic="390" + 0 label="Remediation activities and other waste management service activities" isic="3900" +F label="CONSTRUCTION" isic="F" +41 section="F" label="Construction of residential and non-residential buildings" isic="41" + 0 label="Construction of residential and non-residential buildings" isic="410" + 0 label="Construction of residential and non-residential buildings" isic="4100" +42 section="F" label="Civil engineering" isic="42" + 1 label="Construction of roads and railways" isic="421" + 1 label="Construction of roads and motorways" isic="4211" + 2 label="Construction of railways and underground railways" isic="4212" + 3 label="Construction of bridges and tunnels" isic="4213" + 2 label="Construction of utility projects" isic="422" + 1 label="Construction of utility projects for fluids" isic="4221" + 2 label="Construction of utility projects for electricity and telecommunications" isic="4222" + 9 label="Construction of other civil engineering projects" isic="429" + 1 label="Construction of water projects" isic="4291" + 9 label="Construction of other civil engineering projects n.e.c." isic="4299" +43 section="F" label="Specialised construction activities" isic="43" + 1 label="Demolition and site preparation" isic="431" + 1 label="Demolition" isic="4311" + 2 label="Site preparation" isic="4312" + 3 label="Test drilling and boring" isic="4313" + 2 label="Electrical, plumbing and other construction installation activities" isic="432" + 1 label="Electrical installation" isic="4321" + 2 label="Plumbing, heat and air-conditioning installation" isic="4322" + 3 label="Installation of insulation" isic="4323" + 4 label="Other construction installation" isic="4324" + 3 label="Building completion and finishing" isic="433" + 1 label="Plastering" isic="4331" + 2 label="Joinery installation" isic="4332" + 3 label="Floor and wall covering" isic="4333" + 4 label="Painting and glazing" isic="4334" + 5 label="Other building completion and finishing" isic="4335" + 4 label="Specialised construction activities in construction of buildings" isic="434" + 1 label="Roofing activities" isic="4341" + 2 label="Other specialised construction activities in construction of buildings" isic="4342" + 5 label="Specialised construction activities in civil engineering" isic="435" + 0 label="Specialised construction activities in civil engineering" isic="4350" + 6 label="Intermediation service activities for specialised construction services" isic="436" + 0 label="Intermediation service activities for specialised construction services" isic="4360" + 9 label="Other specialised construction activities" isic="439" + 1 label="Masonry and bricklaying activities" isic="4391" + 9 label="Other specialised construction activities n.e.c." isic="4399" +G label="WHOLESALE AND RETAIL TRADE" isic="G" +46 section="G" label="Wholesale trade" isic="46" + 1 label="Wholesale on a fee or contract basis" isic="461" + 1 label="Activities of agents involved in the wholesale of agricultural raw materials, live animals, textile raw materials and semi-finished goods" isic="4611" + 2 label="Activities of agents involved in the wholesale of fuels, ores, metals and industrial chemicals" isic="4612" + 3 label="Activities of agents involved in the wholesale of timber and building materials" isic="4613" + 4 label="Activities of agents involved in the wholesale of machinery, industrial equipment, ships and aircraft" isic="4614" + 5 label="Activities of agents involved in the wholesale of furniture, household goods, hardware and ironmongery" isic="4615" + 6 label="Activities of agents involved in the wholesale of textiles, clothing, fur, footwear and leather goods" isic="4616" + 7 label="Activities of agents involved in the wholesale of food, beverages and tobacco" isic="4617" + 8 label="Activities of agents involved in the wholesale of other particular products" isic="4618" + 9 label="Activities of agents involved in non-specialised wholesale" isic="4619" + 2 label="Wholesale of agricultural raw materials and live animals" isic="462" + 1 label="Wholesale of grain, unmanufactured tobacco, seeds and animal feeds" isic="4621" + 2 label="Wholesale of flowers and plants" isic="4622" + 3 label="Wholesale of live animals" isic="4623" + 4 label="Wholesale of hides, skins and leather" isic="4624" + 3 label="Wholesale of food, beverages and tobacco" isic="463" + 1 label="Wholesale of fruit and vegetables" isic="4631" + 2 label="Wholesale of meat, meat products, fish and fish products" isic="4632" + 3 label="Wholesale of dairy products, eggs and edible oils and fats" isic="4633" + 4 label="Wholesale of beverages" isic="4634" + 5 label="Wholesale of tobacco products" isic="4635" + 6 label="Wholesale of sugar, chocolate and sugar confectionery" isic="4636" + 7 label="Wholesale of coffee, tea, cocoa and spices" isic="4637" + 8 label="Wholesale of other food" isic="4638" + 9 label="Non-specialised wholesale of food, beverages and tobacco" isic="4639" + 4 label="Wholesale of household goods" isic="464" + 1 label="Wholesale of textiles" isic="4641" + 2 label="Wholesale of clothing and footwear" isic="4642" + 3 label="Wholesale of electrical household appliances" isic="4643" + 4 label="Wholesale of china and glassware and cleaning materials" isic="4644" + 5 label="Wholesale of perfume and cosmetics" isic="4645" + 6 label="Wholesale of pharmaceutical and medical goods" isic="4646" + 7 label="Wholesale of household, office and shop furniture, carpets and lighting equipment" isic="4647" + 8 label="Wholesale of watches and jewellery" isic="4648" + 9 label="Wholesale of other household goods" isic="4649" + 5 label="Wholesale of information and communication equipment" isic="465" + 0 label="Wholesale of information and communication equipment" isic="4650" + 6 label="Wholesale of other machinery, equipment and supplies" isic="466" + 1 label="Wholesale of agricultural machinery, equipment and supplies" isic="4661" + 2 label="Wholesale of machine tools" isic="4662" + 3 label="Wholesale of mining, construction and civil engineering machinery" isic="4663" + 4 label="Wholesale of other machinery and equipment" isic="4664" + 7 label="Wholesale of motor vehicles, motorcycles and related parts and accessories" isic="467" + 1 label="Wholesale of motor vehicles" isic="4671" + 2 label="Wholesale of motor vehicle parts and accessories" isic="4672" + 3 label="Wholesale of motorcycles, motorcycle parts and accessories" isic="4673" + 8 label="Other specialised wholesale" isic="468" + 1 label="Wholesale of solid, liquid and gaseous fuels and related products" isic="4681" + 2 label="Wholesale of metals and metal ores" isic="4682" + 3 label="Wholesale of wood, construction materials and sanitary equipment" isic="4683" + 4 label="Wholesale of hardware, plumbing and heating equipment and supplies" isic="4684" + 5 label="Wholesale of chemical products" isic="4685" + 6 label="Wholesale of other intermediate products" isic="4686" + 7 label="Wholesale of waste and scrap" isic="4687" + 9 label="Other specialised wholesale n.e.c." isic="4689" + 9 label="Non-specialised wholesale trade" isic="469" + 0 label="Non-specialised wholesale trade" isic="4690" +47 section="G" label="Retail trade" isic="47" + 1 label="Non-specialised retail sale" isic="471" + 1 label="Non-specialised retail sale of predominately food, beverages or tobacco" isic="4711" + 2 label="Other non-specialised retail sale" isic="4712" + 2 label="Retail sale of food, beverages and tobacco" isic="472" + 1 label="Retail sale of fruit and vegetables" isic="4721" + 2 label="Retail sale of meat and meat products" isic="4722" + 3 label="Retail sale of fish, crustaceans and molluscs" isic="4723" + 4 label="Retail sale of bread, cake and confectionery" isic="4724" + 5 label="Retail sale of beverages" isic="4725" + 6 label="Retail sale of tobacco products" isic="4726" + 7 label="Retail sale of other food" isic="4727" + 3 label="Retail sale of automotive fuel" isic="473" + 0 label="Retail sale of automotive fuel" isic="4730" + 4 label="Retail sale of information and communication equipment" isic="474" + 0 label="Retail sale of information and communication equipment" isic="4740" + 5 label="Retail sale of other household equipment" isic="475" + 1 label="Retail sale of textiles" isic="4751" + 2 label="Retail sale of hardware, building materials, paints and glass" isic="4752" + 3 label="Retail sale of carpets, rugs, wall and floor coverings" isic="4753" + 4 label="Retail sale of electrical household appliances" isic="4754" + 5 label="Retail sale of furniture, lighting equipment, tableware and other household goods" isic="4755" + 6 label="Retail sale of cultural and recreational goods" isic="476" + 1 label="Retail sale of books" isic="4761" + 2 label="Retail sale of newspapers, and other periodical publications and stationery" isic="4762" + 3 label="Retail sale of sporting equipment" isic="4763" + 4 label="Retail sale of games and toys" isic="4764" + 9 label="Retail sale of cultural and recreational goods n.e.c." isic="4769" + 7 label="Retail sale of other goods, except motor vehicles and motorcycles" isic="477" + 1 label="Retail sale of clothing" isic="4771" + 2 label="Retail sale of footwear and leather goods" isic="4772" + 3 label="Retail sale of pharmaceutical products" isic="4773" + 4 label="Retail sale of medical and orthopaedic goods" isic="4774" + 5 label="Retail sale of cosmetic and toilet articles" isic="4775" + 6 label="Retail sale of flowers, plants, fertilisers, pets and pet food" isic="4776" + 7 label="Retail sale of watches and jewellery" isic="4777" + 8 label="Retail sale of other new goods" isic="4778" + 9 label="Retail sale of second-hand goods" isic="4779" + 8 label="Retail sale of motor vehicles, motorcycles and related parts and accessories" isic="478" + 1 label="Retail sale of motor vehicles" isic="4781" + 2 label="Retail sale of motor vehicle parts and accessories" isic="4782" + 3 label="Retail sale of motorcycles, motorcycle parts and accessories" isic="4783" + 9 label="Intermediation service activities for retail sale" isic="479" + 1 label="Intermediation service activities for non-specialised retail sale" isic="4791" + 2 label="Intermediation service activities for specialised retail sale" isic="4792" +H label="TRANSPORTATION AND STORAGE" isic="H" +49 section="H" label="Land transport and transport via pipelines" isic="49" + 1 label="Passenger rail transport" isic="491" + 1 label="Passenger heavy rail transport" isic="4911" + 2 label="Other passenger rail transport" isic="4912" + 2 label="Freight rail transport" isic="492" + 0 label="Freight rail transport" isic="4920" + 3 label="Other passenger land transport" isic="493" + 1 label="Scheduled passenger transport by road" isic="4931" + 2 label="Non-scheduled passenger transport by road" isic="4932" + 3 label="On-demand passenger transport service activities by vehicle with driver" isic="4933" + 4 label="Passenger transport by cableways and ski lifts" isic="4934" + 9 label="Other passenger land transport n.e.c." isic="4939" + 4 label="Freight transport by road and removal services" isic="494" + 1 label="Freight transport by road" isic="4941" + 2 label="Removal services" isic="4942" + 5 label="Transport via pipeline" isic="495" + 0 label="Transport via pipeline" isic="4950" +50 section="H" label="Water transport" isic="50" + 1 label="Sea and coastal passenger water transport" isic="501" + 0 label="Sea and coastal passenger water transport" isic="5010" + 2 label="Sea and coastal freight water transport" isic="502" + 0 label="Sea and coastal freight water transport" isic="5020" + 3 label="Inland passenger water transport" isic="503" + 0 label="Inland passenger water transport" isic="5030" + 4 label="Inland freight water transport" isic="504" + 0 label="Inland freight water transport" isic="5040" +51 section="H" label="Air transport" isic="51" + 1 label="Passenger air transport" isic="511" + 0 label="Passenger air transport" isic="5110" + 2 label="Freight air transport and space transport" isic="512" + 1 label="Freight air transport" isic="5121" + 2 label="Space transport" isic="5122" +52 section="H" label="Warehousing, storage and support activities for transportation" isic="52" + 1 label="Warehousing and storage" isic="521" + 0 label="Warehousing and storage" isic="5210" + 2 label="Support activities for transportation" isic="522" + 1 label="Service activities incidental to land transportation" isic="5221" + 2 label="Service activities incidental to water transportation" isic="5222" + 3 label="Service activities incidental to air transportation" isic="5223" + 4 label="Cargo handling" isic="5224" + 5 label="Logistics service activities" isic="5225" + 6 label="Other support activities for transportation" isic="5226" + 3 label="Intermediation service activities for transportation" isic="523" + 1 label="Intermediation service activities for freight transportation" isic="5231" + 2 label="Intermediation service activities for passenger transportation" isic="5232" +53 section="H" label="Postal and courier activities" isic="53" + 1 label="Postal activities under universal service obligation" isic="531" + 0 label="Postal activities under universal service obligation" isic="5310" + 2 label="Other postal and courier activities" isic="532" + 0 label="Other postal and courier activities" isic="5320" + 3 label="Intermediation service activities for postal and courier activities" isic="533" + 0 label="Intermediation service activities for postal and courier activities" isic="5330" +I label="ACCOMMODATION AND FOOD SERVICE ACTIVITIES" isic="I" +55 section="I" label="Accommodation" isic="55" + 1 label="Hotels and similar accommodation" isic="551" + 0 label="Hotels and similar accommodation" isic="5510" + 2 label="Holiday and other short-stay accommodation" isic="552" + 0 label="Holiday and other short-stay accommodation" isic="5520" + 3 label="Camping grounds and recreational vehicle parks" isic="553" + 0 label="Camping grounds and recreational vehicle parks" isic="5530" + 4 label="Intermediation service activities for accommodation" isic="554" + 0 label="Intermediation service activities for accommodation" isic="5540" + 9 label="Other accommodation" isic="559" + 0 label="Other accommodation" isic="5590" +56 section="I" label="Food and beverage service activities" isic="56" + 1 label="Restaurants and mobile food service activities" isic="561" + 1 label="Restaurant activities" isic="5611" + 2 label="Mobile food service activities" isic="5612" + 2 label="Event catering, contract catering service activities and other food service activities" isic="562" + 1 label="Event catering activities" isic="5621" + 2 label="Contract catering service activities and other food service activities" isic="5622" + 3 label="Beverage serving activities" isic="563" + 0 label="Beverage serving activities" isic="5630" + 4 label="Intermediation service activities for food and beverage services activities" isic="564" + 0 label="Intermediation service activities for food and beverage services activities" isic="5640" +J label="PUBLISHING, BROADCASTING, AND CONTENT PRODUCTION AND DISTRIBUTION ACTIVITIES" isic="J" +58 section="J" label="Publishing activities" isic="58" + 1 label="Publishing of books, newspapers and other publishing activities, except software publishing" isic="581" + 1 label="Publishing of books" isic="5811" + 2 label="Publishing of newspapers" isic="5812" + 3 label="Publishing of journals and periodicals" isic="5813" + 9 label="Other publishing activities, except software publishing" isic="5819" + 2 label="Software publishing" isic="582" + 1 label="Publishing of video games" isic="5821" + 9 label="Other software publishing" isic="5829" +59 section="J" label="Motion picture, video and television programme production, sound recording and music publishing activities" isic="59" + 1 label="Motion picture, video and television programme activities" isic="591" + 1 label="Motion picture, video and television programme production activities" isic="5911" + 2 label="Motion picture, video and television programme post-production activities" isic="5912" + 3 label="Motion picture and video distribution activities" isic="5913" + 4 label="Motion picture projection activities" isic="5914" + 2 label="Sound recording and music publishing activities" isic="592" + 0 label="Sound recording and music publishing activities" isic="5920" +60 section="J" label="Programming, broadcasting, news agency and other content distribution activities" isic="60" + 1 label="Radio broadcasting and audio distribution activities" isic="601" + 0 label="Radio broadcasting and audio distribution activities" isic="6010" + 2 label="Television programming, broadcasting and video distribution activities" isic="602" + 0 label="Television programming, broadcasting and video distribution activities" isic="6020" + 3 label="News agency and other content distribution activities" isic="603" + 1 label="News agency activities" isic="6031" + 9 label="Other content distribution activities" isic="6039" +K label="TELECOMMUNICATION, COMPUTER PROGRAMMING, CONSULTING, COMPUTING INFRASTRUCTURE AND OTHER INFORMATION SERVICE ACTIVITIES" isic="K" +61 section="K" label="Telecommunication" isic="61" + 1 label="Wired, wireless, and satellite telecommunication activities" isic="611" + 0 label="Wired, wireless, and satellite telecommunication activities" isic="6110" + 2 label="Telecommunication reselling activities and intermediation service activities for telecommunication" isic="612" + 0 label="Telecommunication reselling activities and intermediation service activities for telecommunication" isic="6120" + 9 label="Other telecommunication activities" isic="619" + 0 label="Other telecommunication activities" isic="6190" +62 section="K" label="Computer programming, consultancy and related activities" isic="62" + 1 label="Computer programming activities" isic="621" + 0 label="Computer programming activities" isic="6210" + 2 label="Computer consultancy and computer facilities management activities" isic="622" + 0 label="Computer consultancy and computer facilities management activities" isic="6220" + 9 label="Other information technology and computer service activities" isic="629" + 0 label="Other information technology and computer service activities" isic="6290" +63 section="K" label="Computing infrastructure, data processing, hosting and other information service activities" isic="63" + 1 label="Computing infrastructure, data processing, hosting and related activities" isic="631" + 0 label="Computing infrastructure, data processing, hosting and related activities" isic="6310" + 9 label="Web search portal activities and other information service activities" isic="639" + 1 label="Web search portal activities" isic="6391" + 2 label="Other information service activities" isic="6392" +L label="FINANCIAL AND INSURANCE ACTIVITIES" isic="L" +64 section="L" label="Financial service activities, except insurance and pension funding" isic="64" + 1 label="Monetary intermediation" isic="641" + 1 label="Central banking" isic="6411" + 9 label="Other monetary intermediation" isic="6419" + 2 label="Activities of holding companies and financing conduits" isic="642" + 1 label="Activities of holding companies" isic="6421" + 2 label="Activities of financing conduits" isic="6422" + 3 label="Activities of trusts, funds and similar financial entities" isic="643" + 1 label="Activities of money market and non-money market investments funds" isic="6431" + 2 label="Activities of trust, estate and agency accounts" isic="6432" + 9 label="Other financial service activities, except insurance and pension funding" isic="649" + 1 label="Financial leasing" isic="6491" + 2 label="Other credit granting" isic="6492" + 9 label="Other financial service activities, except insurance and pension funding n.e.c." isic="6499" +65 section="L" label="Insurance, reinsurance and pension funding, except compulsory social security" isic="65" + 1 label="Insurance" isic="651" + 1 label="Life insurance" isic="6511" + 2 label="Non-life insurance" isic="6512" + 2 label="Reinsurance" isic="652" + 0 label="Reinsurance" isic="6520" + 3 label="Pension funding" isic="653" + 0 label="Pension funding" isic="6530" +66 section="L" label="Activities auxiliary to financial services and insurance activities" isic="66" + 1 label="Activities auxiliary to financial services, except insurance and pension funding" isic="661" + 1 label="Administration of financial markets" isic="6611" + 2 label="Security and commodity contracts brokerage" isic="6612" + 9 label="Other activities auxiliary to financial services, except insurance and pension funding" isic="6619" + 2 label="Activities auxiliary to insurance and pension funding" isic="662" + 1 label="Risk and damage evaluation" isic="6621" + 2 label="Activities of insurance agents and brokers" isic="6622" + 9 label="Activities auxiliary to insurance and pension funding n.e.c." isic="6629" + 3 label="Fund management activities" isic="663" + 0 label="Fund management activities" isic="6630" +M label="REAL ESTATE ACTIVITIES" isic="M" +68 section="M" label="Real estate activities" isic="68" + 1 label="Real estate activities with own property and development of building projects" isic="681" + 1 label="Buying and selling of own real estate" isic="6811" + 2 label="Development of building projects" isic="6812" + 2 label="Rental and operating of own or leased real estate" isic="682" + 0 label="Rental and operating of own or leased real estate" isic="6820" + 3 label="Real estate activities on a fee or contract basis" isic="683" + 1 label="Intermediation service activities for real estate activities" isic="6831" + 2 label="Other real estate activities on a fee or contract basis" isic="6832" +N label="PROFESSIONAL, SCIENTIFIC AND TECHNICAL ACTIVITIES" isic="N" +69 section="N" label="Legal and accounting activities" isic="69" + 1 label="Legal activities" isic="691" + 0 label="Legal activities" isic="6910" + 2 label="Accounting, bookkeeping and auditing activities; tax consultancy" isic="692" + 0 label="Accounting, bookkeeping and auditing activities; tax consultancy" isic="6920" +70 section="N" label="Activities of head offices and management consultancy" isic="70" + 1 label="Activities of head offices" isic="701" + 0 label="Activities of head offices" isic="7010" + 2 label="Business and other management consultancy activities" isic="702" + 0 label="Business and other management consultancy activities" isic="7020" +71 section="N" label="Architectural and engineering activities; technical testing and analysis" isic="71" + 1 label="Architectural and engineering activities and related technical consultancy" isic="711" + 1 label="Architectural activities" isic="7111" + 2 label="Engineering activities and related technical consultancy" isic="7112" + 2 label="Technical testing and analysis" isic="712" + 0 label="Technical testing and analysis" isic="7120" +72 section="N" label="Scientific research and development" isic="72" + 1 label="Research and experimental development on natural sciences and engineering" isic="721" + 0 label="Research and experimental development on natural sciences and engineering" isic="7210" + 2 label="Research and experimental development on social sciences and humanities" isic="722" + 0 label="Research and experimental development on social sciences and humanities" isic="7220" +73 section="N" label="Activities of advertising, market research and public relations" isic="73" + 1 label="Advertising" isic="731" + 1 label="Activities of advertising agencies" isic="7311" + 2 label="Media representation" isic="7312" + 2 label="Market research and public opinion polling" isic="732" + 0 label="Market research and public opinion polling" isic="7320" + 3 label="Public relations and communication activities" isic="733" + 0 label="Public relations and communication activities" isic="7330" +74 section="N" label="Other professional, scientific and technical activities" isic="74" + 1 label="Specialised design activities" isic="741" + 1 label="Industrial product and fashion design activities" isic="7411" + 2 label="Graphic design and visual communication activities" isic="7412" + 3 label="Interior design activities" isic="7413" + 4 label="Other specialised design activities" isic="7414" + 2 label="Photographic activities" isic="742" + 0 label="Photographic activities" isic="7420" + 3 label="Translation and interpretation activities" isic="743" + 0 label="Translation and interpretation activities" isic="7430" + 9 label="Other professional, scientific and technical activities n.e.c." isic="749" + 1 label="Patent brokering and marketing service activities" isic="7491" + 9 label="All other professional, scientific and technical activities n.e.c." isic="7499" +75 section="N" label="Veterinary activities" isic="75" + 0 label="Veterinary activities" isic="750" + 0 label="Veterinary activities" isic="7500" +O label="ADMINISTRATIVE AND SUPPORT SERVICE ACTIVITIES" isic="O" +77 section="O" label="Rental and leasing activities" isic="77" + 1 label="Rental and leasing of motor vehicles" isic="771" + 1 label="Rental and leasing of cars and light motor vehicles" isic="7711" + 2 label="Rental and leasing of trucks" isic="7712" + 2 label="Rental and leasing of personal and household goods" isic="772" + 1 label="Rental and leasing of recreational and sports goods" isic="7721" + 2 label="Rental and leasing of other personal and household goods" isic="7722" + 3 label="Rental and leasing of other machinery, equipment and tangible goods" isic="773" + 1 label="Rental and leasing of agricultural machinery and equipment" isic="7731" + 2 label="Rental and leasing of construction and civil engineering machinery and equipment" isic="7732" + 3 label="Rental and leasing of office machinery, equipment and computers" isic="7733" + 4 label="Rental and leasing of water transport equipment" isic="7734" + 5 label="Rental and leasing of air transport equipment" isic="7735" + 9 label="Rental and leasing of other machinery, equipment and tangible goods n.e.c." isic="7739" + 4 label="Leasing of intellectual property and similar products, except copyrighted works" isic="774" + 0 label="Leasing of intellectual property and similar products, except copyrighted works" isic="7740" + 5 label="Intermediation service activities for rental and leasing of tangible goods and non-financial intangible assets" isic="775" + 1 label="Intermediation service activities for rental and leasing of cars, motorhomes and trailers" isic="7751" + 2 label="Intermediation service activities for rental and leasing of other tangible goods and non-financial intangible assets" isic="7752" +78 section="O" label="Employment activities" isic="78" + 1 label="Activities of employment placement agencies" isic="781" + 0 label="Activities of employment placement agencies" isic="7810" + 2 label="Temporary employment agency activities and other human resource provisions" isic="782" + 0 label="Temporary employment agency activities and other human resource provisions" isic="7820" +79 section="O" label="Travel agency, tour operator and other reservation service and related activities" isic="79" + 1 label="Travel agency and tour operator activities" isic="791" + 1 label="Travel agency activities" isic="7911" + 2 label="Tour operator activities" isic="7912" + 9 label="Other reservation service and related activities" isic="799" + 0 label="Other reservation service and related activities" isic="7990" +80 section="O" label="Investigation and security activities" isic="80" + 0 label="Investigation and security activities" isic="800" + 1 label="Investigation and private security activities" isic="8001" + 9 label="Security activities n.e.c." isic="8009" +81 section="O" label="Services to buildings and landscape activities" isic="81" + 1 label="Combined facilities support activities" isic="811" + 0 label="Combined facilities support activities" isic="8110" + 2 label="Cleaning activities" isic="812" + 1 label="General cleaning of buildings" isic="8121" + 2 label="Other building and industrial cleaning activities" isic="8122" + 3 label="Other cleaning activities" isic="8123" + 3 label="Landscape service activities" isic="813" + 0 label="Landscape service activities" isic="8130" +82 section="O" label="Office administrative, office support and other business support activities" isic="82" + 1 label="Office administrative and support activities" isic="821" + 0 label="Office administrative and support activities" isic="8210" + 2 label="Activities of call centres" isic="822" + 0 label="Activities of call centres" isic="8220" + 3 label="Organisation of conventions and trade shows" isic="823" + 0 label="Organisation of conventions and trade shows" isic="8230" + 4 label="Intermediation service activities for business support service activities n.e.c." isic="824" + 0 label="Intermediation service activities for business support service activities n.e.c." isic="8240" + 9 label="Business support service activities n.e.c." isic="829" + 1 label="Activities of collection agencies and credit bureaus" isic="8291" + 2 label="Packaging activities" isic="8292" + 9 label="Other business support service activities n.e.c." isic="8299" +P label="PUBLIC ADMINISTRATION AND DEFENCE; COMPULSORY SOCIAL SECURITY" isic="P" +84 section="P" label="Public administration and defence; compulsory social security" isic="84" + 1 label="Administration of the State and the economic, social and environmental policies of the community" isic="841" + 1 label="General public administration activities" isic="8411" + 2 label="Regulation of health care, education, cultural services and other social services" isic="8412" + 3 label="Regulation of and contribution to more efficient operation of businesses" isic="8413" + 2 label="Provision of services to the community as a whole" isic="842" + 1 label="Foreign affairs" isic="8421" + 2 label="Defence activities" isic="8422" + 3 label="Justice and judicial activities" isic="8423" + 4 label="Public order and safety activities" isic="8424" + 5 label="Fire service activities" isic="8425" + 3 label="Compulsory social security activities" isic="843" + 0 label="Compulsory social security activities" isic="8430" +Q label="EDUCATION" isic="Q" +85 section="Q" label="Education" isic="85" + 1 label="Pre-primary education" isic="851" + 0 label="Pre-primary education" isic="8510" + 2 label="Primary education" isic="852" + 0 label="Primary education" isic="8520" + 3 label="Secondary and post-secondary non-tertiary education" isic="853" + 1 label="General secondary education" isic="8531" + 2 label="Vocational secondary education" isic="8532" + 3 label="Post-secondary non-tertiary education" isic="8533" + 4 label="Tertiary education" isic="854" + 0 label="Tertiary education" isic="8540" + 5 label="Other education" isic="855" + 1 label="Sports and recreation education" isic="8551" + 2 label="Cultural education" isic="8552" + 3 label="Driving school activities" isic="8553" + 9 label="Other education n.e.c." isic="8559" + 6 label="Educational support activities" isic="856" + 1 label="Intermediation service activities for courses and tutors" isic="8561" + 9 label="Educational support activities n.e.c." isic="8569" +R label="HUMAN HEALTH AND SOCIAL WORK ACTIVITIES" isic="R" +86 section="R" label="Human health activities" isic="86" + 1 label="Hospital activities" isic="861" + 0 label="Hospital activities" isic="8610" + 2 label="Medical and dental practice activities" isic="862" + 1 label="General medical practice activities" isic="8621" + 2 label="Medical specialists activities" isic="8622" + 3 label="Dental practice care activities" isic="8623" + 9 label="Other human health activities" isic="869" + 1 label="Diagnostic imaging services and medical laboratory activities" isic="8691" + 2 label="Patient transportation by ambulance" isic="8692" + 3 label="Activities of psychologists and psychotherapists, except medical doctors" isic="8693" + 4 label="Nursing and midwifery activities" isic="8694" + 5 label="Physiotherapy activities" isic="8695" + 6 label="Traditional, complementary and alternative medicine activities" isic="8696" + 7 label="Intermediation service activities for medical, dental and other human health services" isic="8697" + 9 label="Other human health activities n.e.c." isic="8699" +87 section="R" label="Residential care activities" isic="87" + 1 label="Residential nursing care activities" isic="871" + 0 label="Residential nursing care activities" isic="8710" + 2 label="Residential care activities for persons living with or having a diagnosis of a mental illness or substance abuse" isic="872" + 0 label="Residential care activities for persons living with or having a diagnosis of a mental illness or substance abuse" isic="8720" + 3 label="Residential care activities for older persons or persons with physical disabilities" isic="873" + 0 label="Residential care activities for older persons or persons with physical disabilities" isic="8730" + 9 label="Other residential care activities" isic="879" + 1 label="Intermediation service activities for residential care activities" isic="8791" + 9 label="Other residential care activities n.e.c." isic="8799" +88 section="R" label="Social work activities without accommodation" isic="88" + 1 label="Social work activities without accommodation for older persons or persons with disabilities" isic="881" + 0 label="Social work activities without accommodation for older persons or persons with disabilities" isic="8810" + 9 label="Other social work activities without accommodation" isic="889" + 1 label="Child day-care activities" isic="8891" + 9 label="Other social work activities without accommodation n.e.c." isic="8899" +S label="ARTS, SPORTS AND RECREATION" isic="S" +90 section="S" label="Arts creation and performing arts activities" isic="90" + 1 label="Arts creation activities" isic="901" + 1 label="Literary creation and musical composition activities" isic="9011" + 2 label="Visual arts creation activities" isic="9012" + 3 label="Other arts creation activities" isic="9013" + 2 label="Activities of performing arts" isic="902" + 0 label="Activities of performing arts" isic="9020" + 3 label="Support activities to arts creation and performing arts" isic="903" + 1 label="Operation of arts facilities and sites" isic="9031" + 9 label="Other support activities to arts and performing arts" isic="9039" +91 section="S" label="Libraries, archives, museums and other cultural activities" isic="91" + 1 label="Library and archive activities" isic="911" + 1 label="Library activities" isic="9111" + 2 label="Archive activities" isic="9112" + 2 label="Museum, collection, historical site and monument activities" isic="912" + 1 label="Museum and collection activities" isic="9121" + 2 label="Historical site and monument activities" isic="9122" + 3 label="Conservation, restoration and other support activities for cultural heritage" isic="913" + 0 label="Conservation, restoration and other support activities for cultural heritage" isic="9130" + 4 label="Botanical and zoological garden and nature reserve activities" isic="914" + 1 label="Botanical and zoological garden activities" isic="9141" + 2 label="Nature reserve activities" isic="9142" +92 section="S" label="Gambling and betting activities" isic="92" + 0 label="Gambling and betting activities" isic="920" + 0 label="Gambling and betting activities" isic="9200" +93 section="S" label="Sports activities and amusement and recreation activities" isic="93" + 1 label="Sports activities" isic="931" + 1 label="Operation of sports facilities" isic="9311" + 2 label="Activities of sports clubs" isic="9312" + 3 label="Activities of fitness centres" isic="9313" + 9 label="Sports activities n.e.c." isic="9319" + 2 label="Amusement and recreation activities" isic="932" + 1 label="Activities of amusement parks and theme parks" isic="9321" + 9 label="Amusement and recreation activities n.e.c." isic="9329" +T label="OTHER SERVICE ACTIVITIES" isic="T" +94 section="T" label="Activities of membership organisations" isic="94" + 1 label="Activities of business, employers and professional membership organisations" isic="941" + 1 label="Activities of business and employers membership organisations" isic="9411" + 2 label="Activities of professional membership organisations" isic="9412" + 2 label="Activities of trade unions" isic="942" + 0 label="Activities of trade unions" isic="9420" + 9 label="Activities of other membership organisations" isic="949" + 1 label="Activities of religious organisations" isic="9491" + 2 label="Activities of political organisations" isic="9492" + 9 label="Activities of other membership organisations n.e.c." isic="9499" +95 section="T" label="Repair and maintenance of computers, personal and household goods, and motor vehicles and motorcycles" isic="95" + 1 label="Repair and maintenance of computers and communication equipment" isic="951" + 0 label="Repair and maintenance of computers and communication equipment" isic="9510" + 2 label="Repair and maintenance of personal and household goods" isic="952" + 1 label="Repair and maintenance of consumer electronics" isic="9521" + 2 label="Repair and maintenance of household appliances and home and garden equipment" isic="9522" + 3 label="Repair and maintenance of footwear and leather goods" isic="9523" + 4 label="Repair and maintenance of furniture and home furnishings" isic="9524" + 5 label="Repair and maintenance of watches, clocks and jewellery" isic="9525" + 9 label="Repair and maintenance of personal and household goods n.e.c." isic="9529" + 3 label="Repair and maintenance of motor vehicles and motorcycles" isic="953" + 1 label="Repair and maintenance of motor vehicles" isic="9531" + 2 label="Repair and maintenance of motorcycles" isic="9532" + 4 label="Intermediation service activities for repair and maintenance of computers, personal and household goods, and motor vehicles and motorcycles" isic="954" + 0 label="Intermediation service activities for repair and maintenance of computers, personal and household goods, and motor vehicles and motorcycles" isic="9540" +96 section="T" label="Personal service activities" isic="96" + 1 label="Washing and cleaning of textile and fur products" isic="961" + 0 label="Washing and cleaning of textile and fur products" isic="9610" + 2 label="Hairdressing, beauty treatment, day spa and similar activities" isic="962" + 1 label="Hairdressing and barber activities" isic="9621" + 2 label="Beauty care and other beauty treatment activities" isic="9622" + 3 label="Day spa, sauna and steam bath activities" isic="9623" + 3 label="Funeral and related activities" isic="963" + 0 label="Funeral and related activities" isic="9630" + 4 label="Intermediation service activities for personal services" isic="964" + 0 label="Intermediation service activities for personal services" isic="9640" + 9 label="Other personal service activities" isic="969" + 1 label="Provision of domestic personal service activities" isic="9691" + 9 label="Other personal service activities n.e.c." isic="9699" +U label="ACTIVITIES OF HOUSEHOLDS AS EMPLOYERS AND UNDIFFERENTIATED GOODS - AND SERVICE-PRODUCING ACTIVITIES OF HOUSEHOLDS FOR OWN USE" isic="U" +97 section="U" label="Activities of households as employers of domestic personnel" isic="97" + 0 label="Activities of households as employers of domestic personnel" isic="970" + 0 label="Activities of households as employers of domestic personnel" isic="9700" +98 section="U" label="Undifferentiated goods- and service-producing activities of private households for own use" isic="98" + 1 label="Undifferentiated goods-producing activities of private households for own use" isic="981" + 0 label="Undifferentiated goods-producing activities of private households for own use" isic="9810" + 2 label="Undifferentiated service-producing activities of private households for own use" isic="982" + 0 label="Undifferentiated service-producing activities of private households for own use" isic="9820" +V label="ACTIVITIES OF EXTRATERRITORIAL ORGANISATIONS AND BODIES" isic="V" +99 section="V" label="Activities of extraterritorial organisations and bodies" isic="99" + 0 label="Activities of extraterritorial organisations and bodies" isic="990" + 0 label="Activities of extraterritorial organisations and bodies" isic="9900" diff --git a/stdnum/eu/oss.py b/stdnum/eu/oss.py new file mode 100644 index 00000000..40524f50 --- /dev/null +++ b/stdnum/eu/oss.py @@ -0,0 +1,119 @@ +# oss.py - functions for handling European VAT numbers +# coding: utf-8 +# +# Copyright (C) 2023 Arthur de Jong +# Copyright (C) 2023 Sergi Almacellas Abellana +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""OSS (European VAT on e-Commerce - One Stop Shop). + +This covers number that have been issued under the non-union scheme and the +import scheme of the European VAT on e-Commerce one stop shop. Numbers under +the non-union scheme are assigned to foreign companies providing digital +services to European Union consumers. Numbers under the import scheme are +assigned for importing goods from a third country (through an intermediary). + +This is also called MOSS (mini One Stop Shop) and VoeS (VAT on e-Services). +The number under the import scheme is also called IOSS (Import One Stop Shop) +number. + +Numbers under the non-union scheme are in the format EUxxxyyyyyz. For the +import scheme the format is IMxxxyyyyyyz. An intermediary will also get an +number in the format INxxxyyyyyyz but that may not be used as VAT +identification number. + +There appears to be a check digit algorithm but the FITSDEV2-SC12-TS-Mini1SS +(Mini-1SS – Technical Specifications) document that describes the algorithm +appears to not be publicly available. + +More information: + +* https://vat-one-stop-shop.ec.europa.eu/one-stop-shop/register-oss_en +* https://europa.eu/youreurope/business/taxation/vat/vat-digital-services-moss-scheme/index_en.htm +* https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32002L0038 + +>>> validate('EU 372022452') +'EU372022452' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +ISO_3166_1_MEMBER_STATES = ( + '040', # Austria + '056', # Belgium + '100', # Bulgaria + '191', # Croatia + '196', # Cyprus + '203', # Czechia + '208', # Denmark + '233', # Estonia + '246', # Finland + '250', # France + '276', # Germany + '300', # Greece + '348', # Hungary + '372', # Ireland + '380', # Italy + '428', # Latvia + '440', # Lithuania + '442', # Luxembourg + '470', # Malta + '528', # Netherland + '616', # Poland + '620', # Portugal + '642', # Romania + '703', # Slovakia + '705', # Slovenia + '724', # Spain + '752', # Sweden + '900', # N. Ireland +) +"""The collection of member state codes (for MSI) that may make up a VAT number.""" + + +def compact(number: str) -> str: + """Compact European VAT Number""" + return clean(number, ' -').upper().strip() + + +def validate(number: str) -> str: + """Validate European VAT Number""" + number = compact(number) + if number.startswith('EU'): + if len(number) != 11: + raise InvalidLength() + elif number.startswith('IM'): + if len(number) != 12: + raise InvalidLength() + else: + raise InvalidComponent() + if not isdigits(number[2:]): + raise InvalidFormat() + if number[2:5] not in ISO_3166_1_MEMBER_STATES: + raise InvalidComponent() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid VAT number. This performs the + country-specific check for the number.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/eu/vat.py b/stdnum/eu/vat.py index 987d8fcc..6c2e5a26 100644 --- a/stdnum/eu/vat.py +++ b/stdnum/eu/vat.py @@ -1,7 +1,7 @@ # vat.py - functions for handling European VAT numbers # coding: utf-8 # -# Copyright (C) 2012-2020 Arthur de Jong +# Copyright (C) 2012-2024 Arthur de Jong # Copyright (C) 2015 Lionel Elie Mamane # # This library is free software; you can redistribute it and/or @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VAT (European Union VAT number). @@ -39,17 +37,24 @@ ['nl'] """ +from __future__ import annotations + +import datetime + +from stdnum.eu import oss from stdnum.exceptions import * -from stdnum.util import clean, get_cc_module, get_soap_client +from stdnum.util import ( + NumberValidationModule, clean, get_cc_module, get_soap_client) MEMBER_STATES = set([ - 'at', 'be', 'bg', 'cy', 'cz', 'de', 'dk', 'ee', 'es', 'fi', 'fr', 'gb', - 'gr', 'hr', 'hu', 'ie', 'it', 'lt', 'lu', 'lv', 'mt', 'nl', 'pl', 'pt', - 'ro', 'se', 'si', 'sk', + 'at', 'be', 'bg', 'cy', 'cz', 'de', 'dk', 'ee', 'es', 'fi', 'fr', 'gr', + 'hr', 'hu', 'ie', 'it', 'lt', 'lu', 'lv', 'mt', 'nl', 'pl', 'pt', 'ro', + 'se', 'si', 'sk', 'xi', ]) -"""The collection of country codes that are queried. Greece is listed with -a country code of gr while for VAT purposes el is used instead.""" +"""The collection of country codes that are queried. Greece is listed with a +country code of gr while for VAT purposes el is used instead. For Northern +Ireland numbers are prefixed with xi of United Kingdom numbers.""" _country_modules = dict() @@ -57,40 +62,52 @@ """The WSDL URL of the VAT Information Exchange System (VIES).""" -def _get_cc_module(cc): +def _get_cc_module(cc: str) -> NumberValidationModule | None: """Get the VAT number module based on the country code.""" # Greece uses a "wrong" country code cc = cc.lower() + if cc in ('eu', 'im'): + return oss if cc == 'el': cc = 'gr' if cc not in MEMBER_STATES: - return + return None + if cc == 'xi': + cc = 'gb' if cc not in _country_modules: _country_modules[cc] = get_cc_module(cc, 'vat') return _country_modules[cc] -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, '').upper().strip() - module = _get_cc_module(number[:2]) + cc = number[:2] + module = _get_cc_module(cc) if not module: raise InvalidComponent() - return number[:2] + module.compact(number[2:]) + number = module.compact(number) + if not number.startswith(cc): + number = cc + number + return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This performs the country-specific check for the number.""" number = clean(number, '').upper().strip() - module = _get_cc_module(number[:2]) + cc = number[:2] + module = _get_cc_module(cc) if not module: raise InvalidComponent() - return number[:2] + module.validate(number[2:]) + number = module.validate(number) + if not number.startswith(cc): + number = cc + number + return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number. This performs the country-specific check for the number.""" try: @@ -99,40 +116,69 @@ def is_valid(number): return False -def guess_country(number): +def guess_country(number: str) -> list[str]: """Guess the country code based on the number. This checks the number against each of the validation routines and returns the list of countries for which it is valid. This returns lower case codes and returns gr (not el) for Greece.""" return [cc for cc in MEMBER_STATES - if _get_cc_module(cc).is_valid(number)] + if _get_cc_module(cc).is_valid(number)] # type: ignore[union-attr] + +def check_vies( + number: str, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, str | bool | datetime.date]: # pragma: no cover (not part of normal test suite) + """Use the EU VIES service to validate the provided number. -def check_vies(number, timeout=30): # pragma: no cover (not part of normal test suite) - """Query the online European Commission VAT Information Exchange System + Query the online European Commission VAT Information Exchange System (VIES) for validity of the provided number. Note that the service has - usage limitations (see the VIES website for details). The timeout is in - seconds. This returns a dict-like object.""" + usage limitations (see the VIES website for details). + + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. + + Returns a dict-like object. + """ # this function isn't automatically tested because it would require # network access for the tests and unnecessarily load the VIES website number = compact(number) - client = get_soap_client(vies_wsdl, timeout) - return client.checkVat(number[:2], number[2:]) + client = get_soap_client(vies_wsdl, timeout=timeout, verify=verify) + return client.checkVat(number[:2], number[2:]) # type: ignore[no-any-return] + +def check_vies_approx( + number: str, + requester: str, + timeout: float = 30, + verify: bool | str = True, +) -> dict[str, str | bool | datetime.date]: # pragma: no cover + """Use the EU VIES service to validate the provided number. -def check_vies_approx(number, requester, timeout=30): # pragma: no cover - """Query the online European Commission VAT Information Exchange System + Query the online European Commission VAT Information Exchange System (VIES) for validity of the provided number, providing a validity certificate as proof. You will need to give your own VAT number for this to work. Note that the service has usage limitations (see the VIES - website for details). The timeout is in seconds. This returns a dict-like - object.""" + website for details). + + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. + + Returns a dict-like object. + """ # this function isn't automatically tested because it would require # network access for the tests and unnecessarily load the VIES website number = compact(number) requester = compact(requester) - client = get_soap_client(vies_wsdl, timeout) - return client.checkVatApprox( + client = get_soap_client(vies_wsdl, timeout=timeout, verify=verify) + return client.checkVatApprox( # type: ignore[no-any-return] countryCode=number[:2], vatNumber=number[2:], requesterCountryCode=requester[:2], requesterVatNumber=requester[2:]) diff --git a/stdnum/exceptions.py b/stdnum/exceptions.py index dd2a695a..20c8ef0c 100644 --- a/stdnum/exceptions.py +++ b/stdnum/exceptions.py @@ -1,7 +1,7 @@ # exceptions.py - collection of stdnum exceptions # coding: utf-8 # -# Copyright (C) 2013 Arthur de Jong +# Copyright (C) 2013-2022 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of exceptions. @@ -24,19 +22,25 @@ when validation of the number fails. """ +from __future__ import annotations -class ValidationError(Exception): + +__all__ = ['ValidationError', 'InvalidFormat', 'InvalidChecksum', + 'InvalidLength', 'InvalidComponent'] + + +class ValidationError(ValueError): """Top-level error for validating numbers. This exception should normally not be raised, only subclasses of this exception.""" - def __str__(self): + def __str__(self) -> str: """Return the exception message.""" return ''.join(self.args[:1]) or getattr(self, 'message', '') -class InvalidFormat(ValidationError): +class InvalidFormat(ValidationError): # noqa N818 """Something is wrong with the format of the number. This generally means characters or delimiters that are not allowed are @@ -45,19 +49,19 @@ class InvalidFormat(ValidationError): message = 'The number has an invalid format.' -class InvalidChecksum(ValidationError): +class InvalidChecksum(ValidationError): # noqa N818 """The number's internal checksum or check digit does not match.""" message = "The number's checksum or check digit is invalid." -class InvalidLength(InvalidFormat): +class InvalidLength(InvalidFormat): # noqa N818 """The length of the number is wrong.""" message = 'The number has an invalid length.' -class InvalidComponent(ValidationError): +class InvalidComponent(ValidationError): # noqa N818 """One of the parts of the number has an invalid reference. Some part of the number refers to some external entity like a country diff --git a/stdnum/fi/__init__.py b/stdnum/fi/__init__.py index 80129fc8..aa25af5a 100644 --- a/stdnum/fi/__init__.py +++ b/stdnum/fi/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Finnish numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.fi import alv as vat # noqa: F401 from stdnum.fi import hetu as personalid # noqa: F401 diff --git a/stdnum/fi/alv.py b/stdnum/fi/alv.py index 6e3515c0..07cbfb89 100644 --- a/stdnum/fi/alv.py +++ b/stdnum/fi/alv.py @@ -1,4 +1,4 @@ -# vat.py - functions for handling Finnish VAT numbers +# alv.py - functions for handling Finnish VAT numbers # coding: utf-8 # # Copyright (C) 2012-2015 Arthur de Jong @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ALV nro (Arvonlisäveronumero, Finnish VAT number). @@ -30,11 +28,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -43,13 +43,13 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (7, 9, 10, 5, 8, 4, 2, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -62,7 +62,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/fi/associationid.py b/stdnum/fi/associationid.py index 4374671b..b7b9cc5c 100644 --- a/stdnum/fi/associationid.py +++ b/stdnum/fi/associationid.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Finnish Association Identifier. @@ -42,6 +40,8 @@ '1.234' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -53,13 +53,13 @@ 83, 84, 85, 89, 92)) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -._+').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Finnish association register number. This checks the length and format.""" number = compact(number) @@ -72,7 +72,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid association register number.""" try: return bool(validate(number)) @@ -80,7 +80,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) if len(number) <= 3: diff --git a/stdnum/fi/hetu.py b/stdnum/fi/hetu.py index 26c538f1..d3772933 100644 --- a/stdnum/fi/hetu.py +++ b/stdnum/fi/hetu.py @@ -16,9 +16,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """HETU (Henkilötunnus, Finnish personal identity code). @@ -41,6 +39,8 @@ '131052A308T' """ +from __future__ import annotations + import datetime import re @@ -50,29 +50,29 @@ _century_codes = { '+': 1800, - '-': 1900, - 'A': 2000, } +_century_codes.update(dict.fromkeys(('-', 'Y', 'X', 'W', 'V', 'U'), 1900)) +_century_codes.update(dict.fromkeys(('A', 'B', 'C', 'D', 'E', 'F'), 2000)) # Finnish personal identity codes are composed of date part, century # indicating sign, individual number and control character. # ddmmyyciiiC _hetu_re = re.compile(r'^(?P[0123]\d)(?P[01]\d)(?P\d\d)' - r'(?P[-+A])(?P\d\d\d)' + r'(?P[-+ABCDEFYXWVU])(?P\d\d\d)' r'(?P[0-9ABCDEFHJKLMNPRSTUVWXY])$') -def compact(number): +def compact(number: str) -> str: """Convert the HETU to the minimal representation. This strips surrounding whitespace and converts it to upper case.""" return clean(number, '').upper().strip() -def _calc_checksum(number): +def _calc_checksum(number: str) -> str: return '0123456789ABCDEFHJKLMNPRSTUVWXY'[int(number) % 31] -def validate(number, allow_temporary=False): +def validate(number: str, allow_temporary: bool = False) -> str: """Check if the number is a valid HETU. It checks the format, whether a valid date is given and whether the check digit is correct. Allows temporary identifier range for individuals (900-999) if allow_temporary @@ -104,7 +104,7 @@ def validate(number, allow_temporary=False): return number -def is_valid(number, allow_temporary=False): +def is_valid(number: str, allow_temporary: bool = False) -> bool: """Check if the number is a valid HETU.""" try: return bool(validate(number, allow_temporary)) diff --git a/stdnum/fi/veronumero.py b/stdnum/fi/veronumero.py index 4513df9b..ca0e92c2 100644 --- a/stdnum/fi/veronumero.py +++ b/stdnum/fi/veronumero.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ Veronumero (Finnish individual tax number). @@ -43,17 +41,19 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the Veronumero to the minimal representation. This strips surrounding whitespace and removes separators.""" return clean(number, ' ').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid tax number. This checks the length and formatting.""" number = compact(number) @@ -65,7 +65,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid tax number.""" try: return bool(validate(number)) diff --git a/stdnum/fi/ytunnus.py b/stdnum/fi/ytunnus.py index 2f38241d..3e8cd8c6 100644 --- a/stdnum/fi/ytunnus.py +++ b/stdnum/fi/ytunnus.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Y-tunnus (Finnish business identifier). @@ -33,23 +31,25 @@ '2077474-0' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.fi import alv -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return alv.compact(number) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid business identifier. This checks the length, formatting and check digit.""" return alv.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid business identifier.""" try: return bool(validate(number)) @@ -57,7 +57,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:7] + '-' + number[7:] diff --git a/stdnum/figi.py b/stdnum/figi.py index de5d6482..240b345e 100644 --- a/stdnum/figi.py +++ b/stdnum/figi.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """FIGI (Financial Instrument Global Identifier). @@ -37,17 +35,19 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip().upper() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digits for the number.""" # we use the full alphabet for the check digit calculation alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -58,7 +58,7 @@ def calc_check_digit(number): return str((10 - sum(int(n) for n in number)) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid FIGI.""" number = compact(number) if not all(x in '0123456789BCDFGHJKLMNPQRSTVWXYZ' for x in number): @@ -76,7 +76,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid FIGI.""" try: return bool(validate(number)) diff --git a/stdnum/fo/__init__.py b/stdnum/fo/__init__.py new file mode 100644 index 00000000..e39b2576 --- /dev/null +++ b/stdnum/fo/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Faroe Islands numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Faroe Islands numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.fo import vn as vat # noqa: F401 diff --git a/stdnum/fo/vn.py b/stdnum/fo/vn.py new file mode 100644 index 00000000..fa7232b7 --- /dev/null +++ b/stdnum/fo/vn.py @@ -0,0 +1,84 @@ +# vn.py - functions for handling Faroe Islands V-number numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""V-number (Vinnutal, Faroe Islands tax number). + +In the Faroe Islands the legal persons TIN equals the V number issued by the +Faroese Tax Administration. It is a consecutive number. + +More information: + +* https://www.taks.fo/fo/borgari/bolkar/at-stovna-virki/ +* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Faroe-islands-TIN.pdf + +>>> validate('623857') +'623857' +>>> validate('1234') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('12345X') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('602 590') +'602590' +""" # noqa: E501 + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. + """ + number = clean(number, ' -.').upper().strip() + if number.startswith('FO'): + return number[2:] + return number + + +def validate(number: str) -> str: + """Check if the number is a valid Faroe Islands V-number number. + + This checks the length and formatting. + """ + number = compact(number) + if len(number) != 6: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Faroe Islands V-number number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/fr/__init__.py b/stdnum/fr/__init__.py index 14abaa51..4ecbfe82 100644 --- a/stdnum/fr/__init__.py +++ b/stdnum/fr/__init__.py @@ -14,11 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of French numbers.""" -# provide vat as an alias +from __future__ import annotations + +# provide excise and vat as an alias +from stdnum.fr import accise as excise # noqa: F401 from stdnum.fr import tva as vat # noqa: F401 diff --git a/stdnum/fr/accise.py b/stdnum/fr/accise.py new file mode 100644 index 00000000..fcdd63b8 --- /dev/null +++ b/stdnum/fr/accise.py @@ -0,0 +1,77 @@ +# accise.py - functions for handling French Accise numbers +# coding: utf-8 +# +# Copyright (C) 2023 Cédric Krier +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""n° d'accise (French number to identify taxpayers of excise taxes). + +The n° d'accise always start by FR0 following by the 2 ending digits of the +year, 3 number of customs office, one letter for the type and an ordering +number of 4 digits. + +>>> validate('FR023004N9448') +'FR023004N9448' +>>> validate('FR0XX907E0820') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> validate('FR012907A0820') +Traceback (most recent call last): + ... +InvalidComponent: ... +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +OPERATORS = set(['E', 'N', 'C', 'B']) + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the number + of any valid separators and removes surrounding whitespace.""" + return clean(number, ' ').upper().strip() + + +def validate(number: str) -> str: + """Check if the number is a valid accise number. This checks the length, + formatting.""" + number = compact(number) + code = number[:3] + if code != 'FR0': + raise InvalidFormat() + if len(number) != 13: + raise InvalidLength() + if not isdigits(number[3:5]): + raise InvalidFormat() + if not isdigits(number[5:8]): + raise InvalidFormat() + if number[8] not in OPERATORS: + raise InvalidComponent() + if not isdigits(number[9:12]): + raise InvalidFormat() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid accise number.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/fr/nif.py b/stdnum/fr/nif.py index 131c8738..9dd4c468 100644 --- a/stdnum/fr/nif.py +++ b/stdnum/fr/nif.py @@ -1,7 +1,7 @@ # nif.py - functions for handling French tax identification numbers # coding: utf-8 # -# Copyright (C) 2016 Dimitri Papadopoulos +# Copyright (C) 2016-2021 Dimitri Papadopoulos # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,53 +14,70 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIF (Numéro d'Immatriculation Fiscale, French tax identification number). -The NIF (Numéro d'Immatriculation Fiscale, Numéro d'Identité Fiscale or -Numéro d'Identification Fiscale) also known as numéro fiscal de référence or -SPI (Simplification des Procédures d'Identification) is a 13-digit number -issued by the French tax authorities to people for tax reporting purposes. +The NIF (Numéro d'Immatriculation Fiscale or Numéro d'Identification Fiscale) +also known as numéro fiscal de référence or SPI (Simplification des +Procédures d'Identification) is a 13-digit number issued by the French tax +authorities to people for tax reporting purposes. More information: * https://ec.europa.eu/taxation_customs/tin/tinByCountry.html * https://fr.wikipedia.org/wiki/Numéro_d%27Immatriculation_Fiscale#France ->>> validate('0701987765432') -'0701987765432' +>>> validate('3023217600053') +'3023217600053' +>>> validate('3023217600054') +Traceback (most recent call last): + ... +InvalidChecksum: ... >>> validate('070198776543') Traceback (most recent call last): ... InvalidLength: ... ->>> format('0701987765432') -'07 01 987 765 432' +>>> validate('9701987765432') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> format('3023217600053') +'30 23 217 600 053' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def validate(number): +def calc_check_digits(number: str) -> str: + """Calculate the check digits for the number.""" + return '%03d' % (int(number[:10]) % 511) + + +def validate(number: str) -> str: """Check if the number provided is a valid NIF.""" number = compact(number) if not isdigits(number): raise InvalidFormat() + if number[0] not in ('0', '1', '2', '3'): + raise InvalidComponent() if len(number) != 13: raise InvalidLength() + if calc_check_digits(number) != number[-3:]: + raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid NIF.""" try: return bool(validate(number)) @@ -68,7 +85,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[:2], number[2:4], number[4:7], diff --git a/stdnum/fr/nir.py b/stdnum/fr/nir.py index 5f8bf44f..24f14a32 100644 --- a/stdnum/fr/nir.py +++ b/stdnum/fr/nir.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIR (French personal identification number). @@ -35,7 +33,7 @@ * https://www.insee.fr/en/metadonnees/definition/c1409 * https://en.wikipedia.org/wiki/INSEE_code -* http://resoo.org/docs/_docs/regles-numero-insee.pdf +* https://web.archive.org/web/20160910153938/http://resoo.org/docs/_docs/regles-numero-insee.pdf * https://fr.wikipedia.org/wiki/Numéro_de_sécurité_sociale_en_France * https://xml.insee.fr/schema/nir.html @@ -61,17 +59,19 @@ '2 95 10 99 126 111 93' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' .').strip().upper() -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the number.""" department = number[5:7] if department == '2A': @@ -81,7 +81,7 @@ def calc_check_digits(number): return '%02d' % (97 - (int(number[:13]) % 97)) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length and check digits.""" number = compact(number) @@ -96,7 +96,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid.""" try: return bool(validate(number)) @@ -104,7 +104,7 @@ def is_valid(number): return False -def format(number, separator=' '): +def format(number: str, separator: str = ' ') -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return separator.join(( diff --git a/stdnum/fr/rcs.py b/stdnum/fr/rcs.py new file mode 100644 index 00000000..5e397496 --- /dev/null +++ b/stdnum/fr/rcs.py @@ -0,0 +1,115 @@ +# rcs.py - functions for handling French NIR numbers +# coding: utf-8 +# +# Copyright (C) 2025 Fabien Michel +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""RCS (French trade registration number for commercial companies). + +The RCS number (Registre du commerce et des sociétés) is given by INSEE to a +company with commercial activity when created. It is required for most of +administrative procedures. + +The number consists of "RCS" letters followed by name of the city where the company was registered +followed by letter A for a retailer or B for society +followed by the SIREN number + +More information: + +* https://entreprendre.service-public.fr/vosdroits/F31190 +* https://fr.wikipedia.org/wiki/Registre_du_commerce_et_des_sociétés_(France) + +>>> validate('RCS Nancy B 323 159 715') +'RCS Nancy B 323159715' +>>> validate('RCS Nancy B 323 159 716') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('RCSNancy B 323 159 716') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('RCS Nancy B323159715') +'RCS Nancy B 323 159 715' +>>> to_siren('RCS Nancy B 323159 715') +'323159715' +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.fr import siren +from stdnum.util import clean + + +_rcs_validation_regex = re.compile( + r'^ *(?PRCS|rcs) +(?P.*?) +(?P[AB]) *(?P(?:\d *){9})\b *$', +) + + +def compact(number: str) -> str: + """Convert the number to the minimal representation.""" + parts = clean(number).strip().split() + rest = ''.join(parts[2:]) + return ' '.join(parts[:2] + [rest[:1], siren.compact(rest[1:])]) + + +def validate(number: str) -> str: + """Validate number is a valid French RCS number.""" + number = compact(number) + match = _rcs_validation_regex.match(number) + if not match: + raise InvalidFormat() + siren_number = siren.validate(match.group('siren')) + siren_number = siren.format(siren_number) + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is valid.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + match = _rcs_validation_regex.match(number) + if not match: + raise InvalidFormat() + return ' '.join( + ( + 'RCS', + match.group('city'), + match.group('letter'), + siren.format(match.group('siren')), + ), + ) + + +def to_siren(number: str) -> str: + """Extract SIREN number from the RCS number. + + The SIREN number is the 9 last digits of the RCS number. + """ + number = compact(number) + match = _rcs_validation_regex.match(clean(number)) + if not match: + raise InvalidFormat() + return match.group('siren') diff --git a/stdnum/fr/siren.py b/stdnum/fr/siren.py index afd83682..4964d2b1 100644 --- a/stdnum/fr/siren.py +++ b/stdnum/fr/siren.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """SIREN (a French company identification number). @@ -34,8 +32,12 @@ InvalidChecksum: ... >>> to_tva('443 121 975') '46 443 121 975' +>>> format('404833048') +'404 833 048' """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -47,13 +49,13 @@ # https://avis-situation-sirene.insee.fr/ -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' .').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid SIREN. This checks the length, formatting and check digit.""" number = compact(number) @@ -65,7 +67,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid SIREN.""" try: return bool(validate(number)) @@ -73,7 +75,7 @@ def is_valid(number): return False -def to_tva(number): +def to_tva(number: str) -> str: """Return a TVA that prepends the two extra check digits to the SIREN.""" # note that this always returns numeric check digits # it is unclean when the alphabetic ones are used @@ -81,3 +83,9 @@ def to_tva(number): int(compact(number) + '12') % 97, ' ' if ' ' in number else '', number) + + +def format(number: str, separator: str = ' ') -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return separator.join((number[:3], number[3:6], number[6:])) diff --git a/stdnum/fr/siret.py b/stdnum/fr/siret.py index 7c4e0f58..41d1cef7 100644 --- a/stdnum/fr/siret.py +++ b/stdnum/fr/siret.py @@ -14,15 +14,18 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """SIRET (a French company establishment identification number). The SIRET (Système d'Identification du Répertoire des ETablissements) is a 14 digit number used to identify French companies' establishments -and facilities. The Luhn checksum is used to validate the numbers. +and facilities. The Luhn checksum is used to validate the numbers (except +for La Poste). + +More information: + +* https://fr.wikipedia.org/wiki/Système_d'identification_du_répertoire_des_établissements >>> validate('73282932000074') '73282932000074' @@ -42,19 +45,21 @@ '732 829 320 00074' """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.fr import siren from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' .').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid SIRET. This checks the length, formatting and check digit.""" number = compact(number) @@ -62,12 +67,18 @@ def validate(number): raise InvalidFormat() if len(number) != 14: raise InvalidLength() - luhn.validate(number) + # La Poste SIRET (except the head office) do not use the Luhn checksum + # but the sum of digits must be a multiple of 5 + if number.startswith('356000000') and number != '35600000000048': + if sum(map(int, number)) % 5 != 0: + raise InvalidChecksum() + else: + luhn.validate(number) siren.validate(number[:9]) return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid SIRET.""" try: return bool(validate(number)) @@ -75,7 +86,7 @@ def is_valid(number): return False -def to_siren(number): +def to_siren(number: str) -> str: """Convert the SIRET number to a SIREN number. The SIREN number is the 9 first digits of the SIRET number. @@ -90,7 +101,7 @@ def to_siren(number): return ''.join(_siren) -def to_tva(number): +def to_tva(number: str) -> str: """Convert the SIRET number to a TVA number. The TVA number is built from the SIREN number, prepended by two extra @@ -99,7 +110,7 @@ def to_tva(number): return siren.to_tva(to_siren(number)) -def format(number, separator=' '): +def format(number: str, separator: str = ' ') -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return separator.join((number[0:3], number[3:6], number[6:9], number[9:])) diff --git a/stdnum/fr/tva.py b/stdnum/fr/tva.py index b224aae2..52b10d26 100644 --- a/stdnum/fr/tva.py +++ b/stdnum/fr/tva.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """n° TVA (taxe sur la valeur ajoutée, French VAT number). @@ -41,8 +39,12 @@ Traceback (most recent call last): ... InvalidFormat: ... +>>> to_siren('Fr 40 303 265 045') +'303265045' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.fr import siren from stdnum.util import clean, isdigits @@ -52,7 +54,7 @@ _alphabet = '0123456789ABCDEFGHJKLMNPQRSTUVWXYZ' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.').upper().strip() @@ -61,7 +63,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -93,9 +95,21 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) except ValidationError: return False + + +def to_siren(number: str) -> str: + """Convert the VAT number to a SIREN number. + + The SIREN number is the 9 last digits of the VAT number. + """ + number = compact(number) + if number[2:5] == '000': + # numbers from Monaco are valid TVA but not SIREN + raise InvalidComponent() + return number[2:] diff --git a/stdnum/gb/__init__.py b/stdnum/gb/__init__.py index 2c3ec3c3..ed9c51db 100644 --- a/stdnum/gb/__init__.py +++ b/stdnum/gb/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of United Kingdom numbers.""" diff --git a/stdnum/gb/nhs.py b/stdnum/gb/nhs.py index ac6382d6..0ed3477c 100644 --- a/stdnum/gb/nhs.py +++ b/stdnum/gb/nhs.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NHS (United Kingdom National Health Service patient identifier). @@ -41,23 +39,25 @@ '943 476 5870' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum. The checksum is only used for the 9 digits of the number and the result can either be 0 or 42.""" return sum(i * int(n) for i, n in enumerate(reversed(number), 1)) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number is valid. This checks the length and check digit.""" number = compact(number) @@ -70,7 +70,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is valid.""" try: return bool(validate(number)) @@ -78,7 +78,7 @@ def is_valid(number): return False -def format(number, separator=' '): +def format(number: str, separator: str = ' ') -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return separator.join((number[0:3], number[3:6], number[6:])) diff --git a/stdnum/gb/sedol.py b/stdnum/gb/sedol.py index a9c27272..6d66255e 100644 --- a/stdnum/gb/sedol.py +++ b/stdnum/gb/sedol.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """SEDOL number (Stock Exchange Daily Official List number). @@ -33,6 +31,8 @@ 'GB00B15KXQ89' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -41,20 +41,20 @@ _alphabet = '0123456789 BCD FGH JKLMN PQRST VWXYZ' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip().upper() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digits for the number.""" weights = (1, 3, 1, 7, 3, 9) s = sum(w * _alphabet.index(n) for w, n in zip(weights, number)) return str((10 - s) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is valid. This checks the length and check digit.""" number = compact(number) @@ -71,7 +71,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is valid.""" try: return bool(validate(number)) @@ -79,7 +79,7 @@ def is_valid(number): return False -def to_isin(number): +def to_isin(number: str) -> str: """Convert the number to an ISIN.""" from stdnum import isin return isin.from_natid('GB', number) diff --git a/stdnum/gb/upn.py b/stdnum/gb/upn.py index c0684bee..a3f22a15 100644 --- a/stdnum/gb/upn.py +++ b/stdnum/gb/upn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """UPN (English Unique Pupil Number). @@ -48,6 +46,8 @@ InvalidComponent: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -72,20 +72,20 @@ 919, 921, 925, 926, 928, 929, 931, 933, 935, 936, 937, 938)) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number.""" check = sum(i * _alphabet.index(n) for i, n in enumerate(number[-12:], 2)) % 23 return _alphabet[check] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid UPN. This checks length, formatting and check digits.""" number = compact(number) @@ -100,7 +100,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid UPN.""" try: return bool(validate(number)) diff --git a/stdnum/gb/utr.py b/stdnum/gb/utr.py index 958c7230..00911e83 100644 --- a/stdnum/gb/utr.py +++ b/stdnum/gb/utr.py @@ -1,4 +1,4 @@ -# upn.py - functions for handling English UTRs +# utr.py - functions for handling English UTRs # # Copyright (C) 2020 Holvi Payment Services # Copyright (C) 2020 Arthur de Jong @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """UTR (United Kingdom Unique Taxpayer Reference). @@ -35,24 +33,26 @@ InvalidChecksum: .. """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').upper().strip().lstrip('K') -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number. The passed number should not have the check digit (the first one) included.""" weights = (6, 7, 8, 9, 10, 5, 4, 3, 2) return '21987654321'[sum(int(n) * w for n, w in zip(number, weights)) % 11] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid UTR.""" number = compact(number) if not isdigits(number): @@ -64,7 +64,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid UTR.""" try: return bool(validate(number)) diff --git a/stdnum/gb/vat.py b/stdnum/gb/vat.py index 2c09da2a..9111917c 100644 --- a/stdnum/gb/vat.py +++ b/stdnum/gb/vat.py @@ -1,6 +1,6 @@ # vat.py - functions for handling United Kingdom VAT numbers # -# Copyright (C) 2012-2015 Arthur de Jong +# Copyright (C) 2012-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VAT (United Kingdom (and Isle of Man) VAT registration number). @@ -35,27 +33,29 @@ '980 7806 84' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.').upper().strip() - if number.startswith('GB'): + if number.startswith('GB') or number.startswith('XI'): number = number[2:] return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum. The checksum is only used for the 9 digits of the number and the result can either be 0 or 42.""" weights = (8, 7, 6, 5, 4, 3, 2, 10, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 97 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -100,7 +100,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) @@ -108,7 +108,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) if len(number) == 5: diff --git a/stdnum/gh/__init__.py b/stdnum/gh/__init__.py new file mode 100644 index 00000000..268cdda7 --- /dev/null +++ b/stdnum/gh/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Ghana numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Ghana numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.gh import tin as vat # noqa: F401 diff --git a/stdnum/gh/tin.py b/stdnum/gh/tin.py new file mode 100644 index 00000000..f048c997 --- /dev/null +++ b/stdnum/gh/tin.py @@ -0,0 +1,91 @@ +# tin.py - functions for handling Ghana TIN numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# Copyright (C) 2022 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""TIN (Taxpayer Identification Number, Ghana tax number). + +This number is issued by the Ghana Revenue Authority (GRA) to individuals who +are not eligible for the Ghanacard PIN and other entities. + +This number consists of 11 alphanumeric characters. It begins with one of the +following prefixes: + + P00 For Individuals. + C00 For Companies limited by guarantee, shares, Unlimited (i.e organisation required to register with the RGD). + G00 Government Agencies, MDAs. + Q00 Foreign Missions, Employees of foreign missions. + V00 Public Institutions, Trusts, Co-operatives, Foreign Shareholder (Offshore), (Entities not registered by RGD). + +More information: + +* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Ghana-TIN.pdf +* https://gra.gov.gh/tin/ +* https://gra.gov.gh/tin/tin-faq/ + +>>> validate('C0000803561') +'C0000803561' +>>> validate('C0000803562') +Traceback (most recent call last): + ... +InvalidChecksum: ... +""" # noqa: E501 + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean + + +_gh_tin_re = re.compile(r'^[PCGQV]{1}00[A-Z0-9]{8}$') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. + """ + return clean(number, ' ').upper() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit for the TIN.""" + check = sum((i + 1) * int(n) for i, n in enumerate(number[1:10])) % 11 + return 'X' if check == 10 else str(check) + + +def validate(number: str) -> str: + """Check if the number is a valid Ghana TIN.""" + number = compact(number) + if len(number) != 11: + raise InvalidLength() + if not _gh_tin_re.match(number): + raise InvalidFormat() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Ghana TIN.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/gn/__init__.py b/stdnum/gn/__init__.py new file mode 100644 index 00000000..2e3c212d --- /dev/null +++ b/stdnum/gn/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Guinea numbers +# coding: utf-8 +# +# Copyright (C) 2023 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Guinea numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.gn import nifp as vat # noqa: F401 diff --git a/stdnum/gn/nifp.py b/stdnum/gn/nifp.py new file mode 100644 index 00000000..29a17519 --- /dev/null +++ b/stdnum/gn/nifp.py @@ -0,0 +1,86 @@ +# nifp.py - functions for handling Guinea NIFp numbers +# coding: utf-8 +# +# Copyright (C) 2023 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""NIFp (Numéro d'Identification Fiscale Permanent, Guinea tax number). + +This number consists of 9 digits, usually separated into three groups using +hyphens to make it easier to read. The first eight digits are assigned in a +pseudorandom manner. The last digit is the check digit. + +More information: + +* https://dgi.gov.gn/wp-content/uploads/2022/09/N%C2%B0-12-Cahier-de-Charges-NIF-p.pdf + +>>> validate('693770885') +'693770885' +>>> validate('693-770-885') +'693770885' +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('693770880') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('693770885') +'693-770-885' +""" + +from __future__ import annotations + +from stdnum import luhn +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. + """ + return clean(number, ' -').strip() + + +def validate(number: str) -> str: + """Check if the number is a valid Guinea NIFp number. + + This checks the length, formatting and check digit. + """ + number = compact(number) + if len(number) != 9: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + luhn.validate(number) + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Guinea NIFp number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '-'.join([number[:3], number[3:-3], number[-3:]]) diff --git a/stdnum/gr/__init__.py b/stdnum/gr/__init__.py index 89aae30f..a01ea35c 100644 --- a/stdnum/gr/__init__.py +++ b/stdnum/gr/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Greek numbers.""" diff --git a/stdnum/gr/amka.py b/stdnum/gr/amka.py index e04efeb4..629e0393 100644 --- a/stdnum/gr/amka.py +++ b/stdnum/gr/amka.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """AMKA (Αριθμός Μητρώου Κοινωνικής Ασφάλισης, Greek social security number). @@ -41,6 +39,8 @@ 'M' """ +from __future__ import annotations + import datetime from stdnum import luhn @@ -48,13 +48,13 @@ from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the date of birth. Since only two digits are used for the year, the century may be incorrect.""" @@ -71,7 +71,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the gender (M/F) from the person's AMKA.""" number = compact(number) if int(number[9]) % 2: @@ -80,7 +80,7 @@ def get_gender(number): return 'F' -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid AMKA. This checks the length, formatting and check digit.""" number = compact(number) @@ -93,7 +93,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid AMKA.""" try: return bool(validate(number)) diff --git a/stdnum/gr/vat.py b/stdnum/gr/vat.py index dc13c0c4..ff2a6abc 100644 --- a/stdnum/gr/vat.py +++ b/stdnum/gr/vat.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """FPA, ΦΠΑ, ΑΦΜ (Αριθμός Φορολογικού Μητρώου, the Greek VAT number). @@ -32,11 +30,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -./:').upper().strip() @@ -47,7 +47,7 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" checksum = 0 @@ -56,7 +56,7 @@ def calc_check_digit(number): return str(checksum * 2 % 11 % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -69,7 +69,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/grid.py b/stdnum/grid.py index cb948796..3cfedc34 100644 --- a/stdnum/grid.py +++ b/stdnum/grid.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """GRid (Global Release Identifier). @@ -37,11 +35,13 @@ 'A1-2425G-ABC1234002-M' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the GRid to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').strip().upper() @@ -50,7 +50,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid GRid.""" from stdnum.iso7064 import mod_37_36 number = compact(number) @@ -59,7 +59,7 @@ def validate(number): return mod_37_36.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid GRid.""" try: return bool(validate(number)) @@ -67,8 +67,8 @@ def is_valid(number): return False -def format(number, separator='-'): +def format(number: str, separator: str = '-') -> str: """Reformat the number to the standard presentation format.""" number = compact(number) - number = (number[0:2], number[2:7], number[7:17], number[17:]) - return separator.join(x for x in number if x) + parts = (number[0:2], number[2:7], number[7:17], number[17:]) + return separator.join(x for x in parts if x) diff --git a/stdnum/gs1_128.py b/stdnum/gs1_128.py index aee11d27..001dd584 100644 --- a/stdnum/gs1_128.py +++ b/stdnum/gs1_128.py @@ -1,7 +1,7 @@ # gs1_128.py - functions for handling GS1-128 codes # # Copyright (C) 2019 Sergi Almacellas Abellana -# Copyright (C) 2020 Arthur de Jong +# Copyright (C) 2020-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """GS1-128 (Standard to encode product information in Code 128 barcodes). @@ -47,6 +45,8 @@ '013842587609507417181119371' """ +from __future__ import annotations + import datetime import decimal import re @@ -56,6 +56,12 @@ from stdnum.util import clean +TYPE_CHECKING = False +if TYPE_CHECKING: # pragma: no cover (only used when type checking) + from collections.abc import Mapping + from typing import Any + + # our open copy of the application identifier database _gs1_aidb = numdb.get('gs1_ai') @@ -68,7 +74,7 @@ } -def compact(number): +def compact(number: str) -> str: """Convert the GS1-128 to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -78,83 +84,138 @@ def compact(number): return clean(number, '()').strip() -def _encode_value(fmt, _type, value): +def _encode_decimal(ai: str, fmt: str, value: object) -> tuple[str, str]: + """Encode the specified decimal value given the format.""" + # For decimal types the last digit of the AI is used to encode the + # number of decimal places (we replace the last digit) + if isinstance(value, (list, tuple)) and fmt.startswith('N3+'): + # Two numbers, where the number of decimal places is expected to apply + # to the second value + ai, number = _encode_decimal(ai, fmt[3:], value[1]) + return ai, str(value[0]).rjust(3, '0') + number + value = str(value) + if fmt.startswith('N..'): + # Variable length number up to a certain length + length = int(fmt[3:]) + value = value[:length + 1] + number, decimals = (value.split('.') + [''])[:2] + decimals = decimals[:9] + return ai[:-1] + str(len(decimals)), number + decimals + else: + # Fixed length numeric + length = int(fmt[1:]) + value = value[:length + 1] + number, decimals = (value.split('.') + [''])[:2] + decimals = decimals[:9] + return ai[:-1] + str(len(decimals)), (number + decimals).rjust(length, '0') + + +def _encode_date(fmt: str, value: object) -> str: + """Encode the specified date value given the format.""" + if isinstance(value, (list, tuple)) and fmt in ('N6..12', 'N6[+N6]'): + # Two date values + return '%s%s' % ( + _encode_date('N6', value[0]), + _encode_date('N6', value[1]), + ) + elif isinstance(value, datetime.date): + # Format date in different formats + if fmt in ('N6', 'N6..12', 'N6[+N6]'): + return value.strftime('%y%m%d') + elif fmt == 'N10': + return value.strftime('%y%m%d%H%M') + elif fmt in ('N6+N..4', 'N6[+N..4]', 'N6[+N4]'): + value = value.strftime('%y%m%d%H%M') + if value.endswith('00'): + value = value[:-2] + if value.endswith('00'): + value = value[:-2] + return value + elif fmt in ('N8+N..4', 'N8[+N..4]'): + value = value.strftime('%y%m%d%H%M%S') + if value.endswith('00'): + value = value[:-2] + if value.endswith('00'): + value = value[:-2] + return value + else: # pragma: no cover (all formats should be covered) + raise ValueError('unsupported format: %s' % fmt) + else: + # Value is assumed to be in the correct format already + return str(value) + + +def _encode_value(ai: str, fmt: str, _type: str, value: object) -> tuple[str, str]: """Encode the specified value given the format and type.""" if _type == 'decimal': - if isinstance(value, (list, tuple)) and fmt.startswith('N3+'): - number = _encode_value(fmt[3:], _type, value[1]) - return number[0] + value[0].rjust(3, '0') + number[1:] - value = str(value) - if fmt.startswith('N..'): - length = int(fmt[3:]) - value = value[:length + 1] - number, digits = (value.split('.') + [''])[:2] - digits = digits[:9] - return str(len(digits)) + number + digits - else: - length = int(fmt[1:]) - value = value[:length + 1] - number, digits = (value.split('.') + [''])[:2] - digits = digits[:9] - return str(len(digits)) + (number + digits).rjust(length, '0') + return _encode_decimal(ai, fmt, value) elif _type == 'date': - if isinstance(value, (list, tuple)) and fmt == 'N6..12': - return '%s%s' % ( - _encode_value('N6', _type, value[0]), - _encode_value('N6', _type, value[1])) - elif isinstance(value, datetime.date): - if fmt == 'N10': - return value.strftime('%y%m%d%H%M') - elif fmt == 'N8+N..4': - value = datetime.datetime.strftime(value, '%y%m%d%H%M%S') - if value.endswith('00'): - value = value[:-2] - if value.endswith('00'): - value = value[:-2] - return value - return value.strftime('%y%m%d') - return str(value) + return ai, _encode_date(fmt, value) + else: # str or int types + return ai, str(value) -def _max_length(fmt, _type): - """Determine the maximum length based on the format ad type.""" - length = sum(int(re.match(r'^[NXY][0-9]*?[.]*([0-9]+)$', x).group(1)) for x in fmt.split('+')) - if _type == 'decimal': - length += 1 - return length +def _max_length(fmt: str) -> int: + """Determine the maximum length based on the format.""" + return sum( + int(re.match(r'^[NXY][0-9]*?[.]*([0-9]+)[\[\]]?$', x).group(1)) # type: ignore[misc, union-attr] + for x in fmt.split('+') + ) -def _pad_value(fmt, _type, value): +def _pad_value(fmt: str, _type: str, value: str) -> str: """Pad the value to the maximum length for the format.""" if _type in ('decimal', 'int'): - return value.rjust(_max_length(fmt, _type), '0') - return value.ljust(_max_length(fmt, _type)) + return value.rjust(_max_length(fmt), '0') + else: + return value.ljust(_max_length(fmt)) + + +def _decode_decimal(ai: str, fmt: str, value: str) -> decimal.Decimal | tuple[str, decimal.Decimal]: + """Decode the specified decimal value given the fmt.""" + if fmt.startswith('N3+'): + # If the number consists of two parts, it is assumed that the decimal + # from the AI applies to the second part + return (value[:3], _decode_decimal(ai, fmt[3:], value[3:])) # type: ignore[return-value] + decimals = int(ai[-1]) + if decimals: + value = value[:-decimals] + '.' + value[-decimals:] + return decimal.Decimal(value) + + +def _decode_date(fmt: str, value: str) -> datetime.date | datetime.datetime | tuple[datetime.date, datetime.date]: + """Decode the specified date value given the fmt.""" + if len(value) == 6: + if value[4:] == '00': + # When day == '00', it must be interpreted as last day of month + date = datetime.datetime.strptime(value[:4], '%y%m') + if date.month == 12: + date = date.replace(day=31) + else: + date = date.replace(month=date.month + 1, day=1) - datetime.timedelta(days=1) + return date.date() + else: + return datetime.datetime.strptime(value, '%y%m%d').date() + elif len(value) == 12 and fmt in ('N12', 'N6..12', 'N6[+N6]'): + return (_decode_date('N6', value[:6]), _decode_date('N6', value[6:])) # type: ignore[return-value] + else: + # Other lengths are interpreted as variable-length datetime values + return datetime.datetime.strptime(value, '%y%m%d%H%M%S'[:len(value)]) -def _decode_value(fmt, _type, value): +def _decode_value(ai: str, fmt: str, _type: str, value: str) -> Any: """Decode the specified value given the fmt and type.""" if _type == 'decimal': - if fmt.startswith('N3+'): - return (value[1:4], _decode_value(fmt[3:], _type, value[0] + value[4:])) - digits = int(value[0]) - value = value[1:] - if digits: - value = value[:-digits] + '.' + value[-digits:] - return decimal.Decimal(value) + return _decode_decimal(ai, fmt, value) elif _type == 'date': - if fmt == 'N8+N..4': - return datetime.datetime.strptime(value, '%y%m%d%H%M%S'[:len(value)]) - elif len(value) == 10: - return datetime.datetime.strptime(value, '%y%m%d%H%M') - elif len(value) == 12: - return (_decode_value(fmt, _type, value[:6]), _decode_value(fmt, _type, value[6:])) - return datetime.datetime.strptime(value, '%y%m%d').date() + return _decode_date(fmt, value) elif _type == 'int': return int(value) - return value.strip() + else: # str + return value.strip() -def info(number, separator=''): +def info(number: str, separator: str = '') -> dict[str, Any]: """Return a dictionary containing the information from the GS1-128 code. The returned dictionary maps application identifiers to values with the @@ -177,8 +238,8 @@ def info(number, separator=''): raise InvalidComponent() number = number[len(ai):] # figure out the value part - value = number[:_max_length(info['format'], info['type'])] - if separator and info.get('fnc1', False): + value = number[:_max_length(info['format'])] + if separator and info.get('fnc1'): idx = number.find(separator) if idx > 0: value = number[:idx] @@ -188,14 +249,14 @@ def info(number, separator=''): mod = __import__(_ai_validators[ai], globals(), locals(), ['validate']) mod.validate(value) # convert the number - data[ai] = _decode_value(info['format'], info['type'], value) + data[ai] = _decode_value(ai, info['format'], info['type'], value) # skip separator if separator and number.startswith(separator): number = number[len(separator):] return data -def encode(data, separator='', parentheses=False): +def encode(data: Mapping[str, object], separator: str = '', parentheses: bool = False) -> str: """Generate a GS1-128 for the application identifiers supplied. The provided dictionary is expected to map application identifiers to @@ -215,19 +276,19 @@ def encode(data, separator='', parentheses=False): fixed_values = [] variable_values = [] for inputai, value in sorted(data.items()): - ai, info = _gs1_aidb.info(inputai)[0] + ai, info = _gs1_aidb.info(str(inputai))[0] if not info: raise InvalidComponent() # validate the value if we have a custom module for it if ai in _ai_validators: mod = __import__(_ai_validators[ai], globals(), locals(), ['validate']) mod.validate(value) - value = _encode_value(info['format'], info['type'], value) + ai, value = _encode_value(ai, info['format'], info['type'], value) # store variable-sized values separate from fixed-size values - if info.get('fnc1', False): - variable_values.append((ai_fmt % ai, info['format'], info['type'], value)) - else: + if not info.get('fnc1'): fixed_values.append(ai_fmt % ai + value) + else: + variable_values.append((ai_fmt % ai, info['format'], info['type'], value)) # we need the separator for all but the last variable-sized value # (or pad values if we don't have a separator) return ''.join( @@ -240,7 +301,7 @@ def encode(data, separator='', parentheses=False): ]) -def validate(number, separator=''): +def validate(number: str, separator: str = '') -> str: """Check if the number provided is a valid GS1-128. This checks formatting of the number and values and returns a stable @@ -253,7 +314,7 @@ def validate(number, separator=''): return encode(info(number, separator), separator) except ValidationError: raise - except Exception: + except Exception: # noqa: B902 # We wrap all other exceptions to ensure that we only return # exceptions that are a subclass of ValidationError # (the info() and encode() functions expect some semblance of valid @@ -261,7 +322,7 @@ def validate(number, separator=''): raise InvalidFormat() -def is_valid(number, separator=''): +def is_valid(number: str, separator: str = '') -> bool: """Check if the number provided is a valid GS1-128.""" try: return bool(validate(number)) diff --git a/stdnum/gs1_ai.dat b/stdnum/gs1_ai.dat index 9f47395b..35836a24 100644 --- a/stdnum/gs1_ai.dat +++ b/stdnum/gs1_ai.dat @@ -1,170 +1,226 @@ -# generated from https://www.gs1.org/standards/barcodes/application-identifiers -# on 2020-08-09 15:09:08.187669 +# generated from https://ref.gs1.org/ai/ +# on 2026-01-04 16:48:51.071859+00:00 00 format="N18" type="str" name="SSCC" description="Serial Shipping Container Code (SSCC)" 01 format="N14" type="str" name="GTIN" description="Global Trade Item Number (GTIN)" -02 format="N14" type="str" name="CONTENT" description="GTIN of contained trade items" +02 format="N14" type="str" name="CONTENT" description="Global Trade Item Number (GTIN) of contained trade items" +03 format="N14" type="str" name="MTO GTIN" description="Identification of a Made-to-Order (MtO) trade item (GTIN)" 10 format="X..20" type="str" fnc1="1" name="BATCH/LOT" description="Batch or lot number" 11 format="N6" type="date" name="PROD DATE" description="Production date (YYMMDD)" 12 format="N6" type="date" name="DUE DATE" description="Due date (YYMMDD)" 13 format="N6" type="date" name="PACK DATE" description="Packaging date (YYMMDD)" 15 format="N6" type="date" name="BEST BEFORE or BEST BY" description="Best before date (YYMMDD)" 16 format="N6" type="date" name="SELL BY" description="Sell by date (YYMMDD)" -17 format="N6" type="date" name="USE BY OR EXPIRY" description="Expiration date (YYMMDD)" +17 format="N6" type="date" name="USE BY or EXPIRY" description="Expiration date (YYMMDD)" 20 format="N2" type="str" name="VARIANT" description="Internal product variant" 21 format="X..20" type="str" fnc1="1" name="SERIAL" description="Serial number" 22 format="X..20" type="str" fnc1="1" name="CPV" description="Consumer product variant" -235 format="X..28" type="str" fnc1="1" name="TPX" description="Third Party Controlled, Serialised Extension of GTIN (TPX)" +235 format="X..28" type="str" fnc1="1" name="TPX" description="Third Party Controlled, Serialised Extension of Global Trade Item Number (GTIN) (TPX)" 240 format="X..30" type="str" fnc1="1" name="ADDITIONAL ID" description="Additional product identification assigned by the manufacturer" -241 format="X..30" type="str" fnc1="1" name="CUST. PART NO." description="Customer part number" +241 format="X..30" type="str" fnc1="1" name="CUST. PART No." description="Customer part number" 242 format="N..6" type="str" fnc1="1" name="MTO VARIANT" description="Made-to-Order variation number" 243 format="X..20" type="str" fnc1="1" name="PCN" description="Packaging component number" 250 format="X..30" type="str" fnc1="1" name="SECONDARY SERIAL" description="Secondary serial number" 251 format="X..30" type="str" fnc1="1" name="REF. TO SOURCE" description="Reference to source entity" -253 format="N13+X..17" type="str" fnc1="1" name="GDTI" description="Global Document Type Identifier (GDTI)" -254 format="X..20" type="str" fnc1="1" name="GLN EXTENSION COMPONENT" description="GLN extension component" -255 format="N13+N..12" type="str" fnc1="1" name="GCN" description="Global Coupon Number (GCN)" +253 format="N13[+X..17]" type="str" fnc1="1" name="GDTI" description="Global Document Type Identifier (GDTI)" +254 format="X..20" type="str" fnc1="1" name="GLN EXTENSION COMPONENT" description="Global Location Number (GLN) extension component" +255 format="N13[+N..12]" type="str" fnc1="1" name="GCN" description="Global Coupon Number (GCN)" 30 format="N..8" type="int" fnc1="1" name="VAR. COUNT" description="Variable count of items (variable measure trade item)" -310 format="N6" type="decimal" name="NET WEIGHT (kg)" description="Net weight, kilograms (variable measure trade item)" -311 format="N6" type="decimal" name="LENGTH (m)" description="Length or first dimension, metres (variable measure trade item)" -312 format="N6" type="decimal" name="WIDTH (m)" description="Width, diameter, or second dimension, metres (variable measure trade item)" -313 format="N6" type="decimal" name="HEIGHT (m)" description="Depth, thickness, height, or third dimension, metres (variable measure trade item)" -314 format="N6" type="decimal" name="AREA (m2)" description="Area, square metres (variable measure trade item)" -315 format="N6" type="decimal" name="NET VOLUME (l)" description="Net volume, litres (variable measure trade item)" -316 format="N6" type="decimal" name="NET VOLUME (m3)" description="Net volume, cubic metres (variable measure trade item)" -320 format="N6" type="decimal" name="NET WEIGHT (lb)" description="Net weight, pounds (variable measure trade item)" -321 format="N6" type="decimal" name="LENGTH (in)" description="Length or first dimension, inches (variable measure trade item)" -322 format="N6" type="decimal" name="LENGTH (ft)" description="Length or first dimension, feet (variable measure trade item)" -323 format="N6" type="decimal" name="LENGTH (yd)" description="Length or first dimension, yards (variable measure trade item)" -324 format="N6" type="decimal" name="WIDTH (in)" description="Width, diameter, or second dimension, inches (variable measure trade item)" -325 format="N6" type="decimal" name="WIDTH (ft)" description="Width, diameter, or second dimension, feet (variable measure trade item)" -326 format="N6" type="decimal" name="WIDTH (yd)" description="Width, diameter, or second dimension, yards (variable measure trade item)" -327 format="N6" type="decimal" name="HEIGHT (in)" description="Depth, thickness, height, or third dimension, inches (variable measure trade item)" -328 format="N6" type="decimal" name="HEIGHT (ft)" description="Depth, thickness, height, or third dimension, feet (variable measure trade item)" -329 format="N6" type="decimal" name="HEIGHT (yd)" description="Depth, thickness, height, or third dimension, yards (variable measure trade item)" -330 format="N6" type="decimal" name="GROSS WEIGHT (kg)" description="Logistic weight, kilograms" -331 format="N6" type="decimal" name="LENGTH (m), log" description="Length or first dimension, metres" -332 format="N6" type="decimal" name="WIDTH (m), log" description="Width, diameter, or second dimension, metres" -333 format="N6" type="decimal" name="HEIGHT (m), log" description="Depth, thickness, height, or third dimension, metres" -334 format="N6" type="decimal" name="AREA (m2), log" description="Area, square metres" -335 format="N6" type="decimal" name="VOLUME (l), log" description="Logistic volume, litres" -336 format="N6" type="decimal" name="VOLUME (m3), log" description="Logistic volume, cubic metres" -337 format="N6" type="decimal" name="KG PER m2" description="Kilograms per square metre" -340 format="N6" type="decimal" name="GROSS WEIGHT (lb)" description="Logistic weight, pounds" -341 format="N6" type="decimal" name="LENGTH (in), log" description="Length or first dimension, inches" -342 format="N6" type="decimal" name="LENGTH (ft), log" description="Length or first dimension, feet" -343 format="N6" type="decimal" name="LENGTH (yd), log" description="Length or first dimension, yards" -344 format="N6" type="decimal" name="WIDTH (in), log" description="Width, diameter, or second dimension, inches" -345 format="N6" type="decimal" name="WIDTH (ft), log" description="Width, diameter, or second dimension, feet" -346 format="N6" type="decimal" name="WIDTH (yd), log" description="Width, diameter, or second dimension, yard" -347 format="N6" type="decimal" name="HEIGHT (in), log" description="Depth, thickness, height, or third dimension, inches" -348 format="N6" type="decimal" name="HEIGHT (ft), log" description="Depth, thickness, height, or third dimension, feet" -349 format="N6" type="decimal" name="HEIGHT (yd), log" description="Depth, thickness, height, or third dimension, yards" -350 format="N6" type="decimal" name="AREA (in2)" description="Area, square inches (variable measure trade item)" -351 format="N6" type="decimal" name="AREA (ft2)" description="Area, square feet (variable measure trade item)" -352 format="N6" type="decimal" name="AREA (yd2)" description="Area, square yards (variable measure trade item)" -353 format="N6" type="decimal" name="AREA (in2), log" description="Area, square inches" -354 format="N6" type="decimal" name="AREA (ft2), log" description="Area, square feet" -355 format="N6" type="decimal" name="AREA (yd2), log" description="Area, square yards" -356 format="N6" type="decimal" name="NET WEIGHT (t oz)" description="Net weight, troy ounces (variable measure trade item)" -357 format="N6" type="decimal" name="NET VOLUME (oz)" description="Net weight (or volume), ounces (variable measure trade item)" -360 format="N6" type="decimal" name="NET VOLUME (qt)" description="Net volume, quarts (variable measure trade item)" -361 format="N6" type="decimal" name="NET VOLUME (gal.)" description="Net volume, gallons U.S. (variable measure trade item)" -362 format="N6" type="decimal" name="VOLUME (qt), log" description="Logistic volume, quarts" -363 format="N6" type="decimal" name="VOLUME (gal.), log" description="Logistic volume, gallons U.S." -364 format="N6" type="decimal" name="VOLUME (in3)" description="Net volume, cubic inches (variable measure trade item)" -365 format="N6" type="decimal" name="VOLUME (ft3)" description="Net volume, cubic feet (variable measure trade item)" -366 format="N6" type="decimal" name="VOLUME (yd3)" description="Net volume, cubic yards (variable measure trade item)" -367 format="N6" type="decimal" name="VOLUME (in3), log" description="Logistic volume, cubic inches" -368 format="N6" type="decimal" name="VOLUME (ft3), log" description="Logistic volume, cubic feet" -369 format="N6" type="decimal" name="VOLUME (yd3), log" description="Logistic volume, cubic yards" +3100-3105 format="N6" type="decimal" name="NET WEIGHT (kg)" description="Net weight, kilograms (variable measure trade item)" +3110-3115 format="N6" type="decimal" name="LENGTH (m)" description="Length or first dimension, metres (variable measure trade item)" +3120-3125 format="N6" type="decimal" name="WIDTH (m)" description="Width, diameter, or second dimension, metres (variable measure trade item)" +3130-3135 format="N6" type="decimal" name="HEIGHT (m)" description="Depth, thickness, height, or third dimension, metres (variable measure trade item)" +3140-3145 format="N6" type="decimal" name="AREA (m²)" description="Area, square metres (variable measure trade item)" +3150-3155 format="N6" type="decimal" name="NET VOLUME (l)" description="Net volume, litres (variable measure trade item)" +3160-3165 format="N6" type="decimal" name="NET VOLUME (m³)" description="Net volume, cubic metres (variable measure trade item)" +3200-3205 format="N6" type="decimal" name="NET WEIGHT (lb)" description="Net weight, pounds (variable measure trade item)" +3210-3215 format="N6" type="decimal" name="LENGTH (in)" description="Length or first dimension, inches (variable measure trade item)" +3220-3225 format="N6" type="decimal" name="LENGTH (ft)" description="Length or first dimension, feet (variable measure trade item)" +3230-3235 format="N6" type="decimal" name="LENGTH (yd)" description="Length or first dimension, yards (variable measure trade item)" +3240-3245 format="N6" type="decimal" name="WIDTH (in)" description="Width, diameter, or second dimension, inches (variable measure trade item)" +3250-3255 format="N6" type="decimal" name="WIDTH (ft)" description="Width, diameter, or second dimension, feet (variable measure trade item)" +3260-3265 format="N6" type="decimal" name="WIDTH (yd)" description="Width, diameter, or second dimension, yards (variable measure trade item)" +3270-3275 format="N6" type="decimal" name="HEIGHT (in)" description="Depth, thickness, height, or third dimension, inches (variable measure trade item)" +3280-3285 format="N6" type="decimal" name="HEIGHT (ft)" description="Depth, thickness, height, or third dimension, feet (variable measure trade item)" +3290-3295 format="N6" type="decimal" name="HEIGHT (yd)" description="Depth, thickness, height, or third dimension, yards (variable measure trade item)" +3300-3305 format="N6" type="decimal" name="GROSS WEIGHT (kg)" description="Logistic weight, kilograms" +3310-3315 format="N6" type="decimal" name="LENGTH (m), log" description="Length or first dimension, metres" +3320-3325 format="N6" type="decimal" name="WIDTH (m), log" description="Width, diameter, or second dimension, metres" +3330-3335 format="N6" type="decimal" name="HEIGHT (m), log" description="Depth, thickness, height, or third dimension, metres" +3340-3345 format="N6" type="decimal" name="AREA (m²), log" description="Area, square metres" +3350-3355 format="N6" type="decimal" name="VOLUME (l), log" description="Logistic volume, litres" +3360-3365 format="N6" type="decimal" name="VOLUME (m³), log" description="Logistic volume, cubic metres" +3370-3375 format="N6" type="decimal" name="KG PER m²" description="Kilograms per square metre" +3400-3405 format="N6" type="decimal" name="GROSS WEIGHT (lb)" description="Logistic weight, pounds" +3410-3415 format="N6" type="decimal" name="LENGTH (in), log" description="Length or first dimension, inches" +3420-3425 format="N6" type="decimal" name="LENGTH (ft), log" description="Length or first dimension, feet" +3430-3435 format="N6" type="decimal" name="LENGTH (yd), log" description="Length or first dimension, yards" +3440-3445 format="N6" type="decimal" name="WIDTH (in), log" description="Width, diameter, or second dimension, inches" +3450-3455 format="N6" type="decimal" name="WIDTH (ft), log" description="Width, diameter, or second dimension, feet" +3460-3465 format="N6" type="decimal" name="WIDTH (yd), log" description="Width, diameter, or second dimension, yard" +3470-3475 format="N6" type="decimal" name="HEIGHT (in), log" description="Depth, thickness, height, or third dimension, inches" +3480-3485 format="N6" type="decimal" name="HEIGHT (ft), log" description="Depth, thickness, height, or third dimension, feet" +3490-3495 format="N6" type="decimal" name="HEIGHT (yd), log" description="Depth, thickness, height, or third dimension, yards" +3500-3505 format="N6" type="decimal" name="AREA (in²)" description="Area, square inches (variable measure trade item)" +3510-3515 format="N6" type="decimal" name="AREA (ft²)" description="Area, square feet (variable measure trade item)" +3520-3525 format="N6" type="decimal" name="AREA (yd²)" description="Area, square yards (variable measure trade item)" +3530-3535 format="N6" type="decimal" name="AREA (in²), log" description="Area, square inches" +3540-3545 format="N6" type="decimal" name="AREA (ft²), log" description="Area, square feet" +3550-3555 format="N6" type="decimal" name="AREA (yd²), log" description="Area, square yards" +3560-3565 format="N6" type="decimal" name="NET WEIGHT (troy oz)" description="Net weight, troy ounces (variable measure trade item)" +3570-3575 format="N6" type="decimal" name="NET VOLUME (oz)" description="Net weight (or volume), ounces (variable measure trade item)" +3600-3605 format="N6" type="decimal" name="NET VOLUME (qt)" description="Net volume, quarts (variable measure trade item)" +3610-3615 format="N6" type="decimal" name="NET VOLUME (gal.)" description="Net volume, gallons U.S. (variable measure trade item)" +3620-3625 format="N6" type="decimal" name="VOLUME (qt), log" description="Logistic volume, quarts" +3630-3635 format="N6" type="decimal" name="VOLUME (gal.), log" description="Logistic volume, gallons U.S." +3640-3645 format="N6" type="decimal" name="VOLUME (in³)" description="Net volume, cubic inches (variable measure trade item)" +3650-3655 format="N6" type="decimal" name="VOLUME (ft³)" description="Net volume, cubic feet (variable measure trade item)" +3660-3665 format="N6" type="decimal" name="VOLUME (yd³)" description="Net volume, cubic yards (variable measure trade item)" +3670-3675 format="N6" type="decimal" name="VOLUME (in³), log" description="Logistic volume, cubic inches" +3680-3685 format="N6" type="decimal" name="VOLUME (ft³), log" description="Logistic volume, cubic feet" +3690-3695 format="N6" type="decimal" name="VOLUME (yd³), log" description="Logistic volume, cubic yards" 37 format="N..8" type="int" fnc1="1" name="COUNT" description="Count of trade items or trade item pieces contained in a logistic unit" -390 format="N..15" type="decimal" fnc1="1" name="AMOUNT" description="Applicable amount payable or Coupon value, local currency" -391 format="N3+N..15" type="decimal" fnc1="1" name="AMOUNT" description="Applicable amount payable with ISO currency code" -392 format="N..15" type="decimal" fnc1="1" name="PRICE" description="Applicable amount payable, single monetary area (variable measure trade item)" -393 format="N3+N..15" type="decimal" fnc1="1" name="PRICE" description="Applicable amount payable with ISO currency code (variable measure trade item)" -394 format="N4" type="decimal" fnc1="1" name="PRCNT OFF" description="Percentage discount of a coupon" +3900-3909 format="N..15" type="decimal" fnc1="1" name="AMOUNT" description="Applicable amount payable or Coupon value, local currency" +3910-3919 format="N3+N..15" type="decimal" fnc1="1" name="AMOUNT" description="Applicable amount payable with ISO currency code" +3920-3929 format="N..15" type="decimal" fnc1="1" name="PRICE" description="Applicable amount payable, single monetary area (variable measure trade item)" +3930-3939 format="N3+N..15" type="decimal" fnc1="1" name="PRICE" description="Applicable amount payable with ISO currency code (variable measure trade item)" +3940-3943 format="N4" type="decimal" fnc1="1" name="PRCNT OFF" description="Percentage discount of a coupon" +3950-3955 format="N6" type="decimal" fnc1="1" name="PRICE/UoM" description="Amount Payable per unit of measure single monetary area (variable measure trade item)" 400 format="X..30" type="str" fnc1="1" name="ORDER NUMBER" description="Customers purchase order number" 401 format="X..30" type="str" fnc1="1" name="GINC" description="Global Identification Number for Consignment (GINC)" 402 format="N17" type="str" fnc1="1" name="GSIN" description="Global Shipment Identification Number (GSIN)" 403 format="X..30" type="str" fnc1="1" name="ROUTE" description="Routing code" -410 format="N13" type="str" name="SHIP TO LOC" description="Ship to - Deliver to Global Location Number" -411 format="N13" type="str" name="BILL TO" description="Bill to - Invoice to Global Location Number" -412 format="N13" type="str" name="PURCHASE FROM" description="Purchased from Global Location Number" -413 format="N13" type="str" name="SHIP FOR LOC" description="Ship for - Deliver for - Forward to Global Location Number" -414 format="N13" type="str" name="LOC No" description="Identification of a physical location - Global Location Number" -415 format="N13" type="str" name="PAY TO" description="Global Location Number of the invoicing party" -416 format="N13" type="str" name="PROD/SERV LOC" description="GLN of the production or service location" -417 format="N13" type="str" name="PARTY" description="Party GLN" -420 format="X..20" type="str" fnc1="1" name="SHIP TO POST" description="Ship to - Deliver to postal code within a single postal authority" -421 format="N3+X..9" type="str" fnc1="1" name="SHIP TO POST" description="Ship to - Deliver to postal code with ISO country code" +410 format="N13" type="str" name="SHIP TO LOC" description="Ship to / Deliver to Global Location Number (GLN)" +411 format="N13" type="str" name="BILL TO" description="Bill to / Invoice to Global Location Number (GLN)" +412 format="N13" type="str" name="PURCHASE FROM" description="Purchased from Global Location Number (GLN)" +413 format="N13" type="str" name="SHIP FOR LOC" description="Ship for / Deliver for - Forward to Global Location Number (GLN)" +414 format="N13" type="str" name="LOC No." description="Identification of a physical location - Global Location Number (GLN)" +415 format="N13" type="str" name="PAY TO" description="Global Location Number (GLN) of the invoicing party" +416 format="N13" type="str" name="PROD/SERV LOC" description="Global Location Number (GLN) of the production or service location" +417 format="N13" type="str" name="PARTY" description="Party Global Location Number (GLN)" +420 format="X..20" type="str" fnc1="1" name="SHIP TO POST" description="Ship to / Deliver to postal code within a single postal authority" +421 format="N3+X..9" type="str" fnc1="1" name="SHIP TO POST" description="Ship to / Deliver to postal code with ISO country code" 422 format="N3" type="int" fnc1="1" name="ORIGIN" description="Country of origin of a trade item" -423 format="N3+N..12" type="str" fnc1="1" name="COUNTRY - INITIAL PROCESS." description="Country of initial processing" -424 format="N3" type="int" fnc1="1" name="COUNTRY - PROCESS." description="Country of processing" +423 format="N3+N..12" type="str" fnc1="1" name="COUNTRY - INITIAL PROCESS" description="Country of initial processing" +424 format="N3" type="int" fnc1="1" name="COUNTRY - PROCESS" description="Country of processing" 425 format="N3+N..12" type="str" fnc1="1" name="COUNTRY - DISASSEMBLY" description="Country of disassembly" 426 format="N3" type="int" fnc1="1" name="COUNTRY - FULL PROCESS" description="Country covering full process chain" 427 format="X..3" type="str" fnc1="1" name="ORIGIN SUBDIVISION" description="Country subdivision Of origin" +4300 format="X..35" type="str" fnc1="1" name="SHIP TO COMP" description="Ship-to / Deliver-to company name" +4301 format="X..35" type="str" fnc1="1" name="SHIP TO NAME" description="Ship-to / Deliver-to contact" +4302 format="X..70" type="str" fnc1="1" name="SHIP TO ADD1" description="Ship-to / Deliver-to address line 1" +4303 format="X..70" type="str" fnc1="1" name="SHIP TO ADD2" description="Ship-to / Deliver-to address line 2" +4304 format="X..70" type="str" fnc1="1" name="SHIP TO SUB" description="Ship-to / Deliver-to suburb" +4305 format="X..70" type="str" fnc1="1" name="SHIP TO LOC" description="Ship-to / Deliver-to locality" +4306 format="X..70" type="str" fnc1="1" name="SHIP TO REG" description="Ship-to / Deliver-to region" +4307 format="X2" type="str" fnc1="1" name="SHIP TO COUNTRY" description="Ship-to / Deliver-to country code" +4308 format="X..30" type="str" fnc1="1" name="SHIP TO PHONE" description="Ship-to / Deliver-to telephone number" +4309 format="N20" type="str" fnc1="1" name="SHIP TO GEO" description="Ship-to / Deliver-to GEO location" +4310 format="X..35" type="str" fnc1="1" name="RTN TO COMP" description="Return-to company name" +4311 format="X..35" type="str" fnc1="1" name="RTN TO NAME" description="Return-to contact" +4312 format="X..70" type="str" fnc1="1" name="RTN TO ADD1" description="Return-to address line 1" +4313 format="X..70" type="str" fnc1="1" name="RTN TO ADD2" description="Return-to address line 2" +4314 format="X..70" type="str" fnc1="1" name="RTN TO SUB" description="Return-to suburb" +4315 format="X..70" type="str" fnc1="1" name="RTN TO LOC" description="Return-to locality" +4316 format="X..70" type="str" fnc1="1" name="RTN TO REG" description="Return-to region" +4317 format="X2" type="str" fnc1="1" name="RTN TO COUNTRY" description="Return-to country code" +4318 format="X..20" type="str" fnc1="1" name="RTN TO POST" description="Return-to postal code" +4319 format="X..30" type="str" fnc1="1" name="RTN TO PHONE" description="Return-to telephone number" +4320 format="X..35" type="str" fnc1="1" name="SRV DESCRIPTION" description="Service code description" +4321 format="N1" type="str" fnc1="1" name="DANGEROUS GOODS" description="Dangerous goods flag" +4322 format="N1" type="str" fnc1="1" name="AUTH LEAVE" description="Authority to leave" +4323 format="N1" type="str" fnc1="1" name="SIG REQUIRED" description="Signature required flag" +4324 format="N10" type="date" fnc1="1" name="NBEF DEL DT" description="Not before delivery date time (YYMMDDhhmm)" +4325 format="N10" type="date" fnc1="1" name="NAFT DEL DT" description="Not after delivery date time (YYMMDDhhmm)" +4326 format="N6" type="date" fnc1="1" name="REL DATE" description="Release date (YYMMDD)" +4330 format="N6+[-]" type="str" fnc1="1" name="MAX TEMP F" description="Maximum temperature in Fahrenheit (expressed in hundredths of degrees)" +4331 format="N6+[-]" type="str" fnc1="1" name="MAX TEMP C" description="Maximum temperature in Celsius (expressed in hundredths of degrees)" +4332 format="N6+[-]" type="str" fnc1="1" name="MIN TEMP F" description="Minimum temperature in Fahrenheit (expressed in hundredths of degrees)" +4333 format="N6+[-]" type="str" fnc1="1" name="MIN TEMP C" description="Minimum temperature in Celsius (expressed in hundredths of degrees)" 7001 format="N13" type="str" fnc1="1" name="NSN" description="NATO Stock Number (NSN)" 7002 format="X..30" type="str" fnc1="1" name="MEAT CUT" description="UN/ECE meat carcasses and cuts classification" -7003 format="N10" type="date" fnc1="1" name="EXPIRY TIME" description="Expiration date and time" +7003 format="N10" type="date" fnc1="1" name="EXPIRY TIME" description="Expiration date and time (YYMMDDhhmm)" 7004 format="N..4" type="str" fnc1="1" name="ACTIVE POTENCY" description="Active potency" 7005 format="X..12" type="str" fnc1="1" name="CATCH AREA" description="Catch area" -7006 format="N6" type="date" fnc1="1" name="FIRST FREEZE DATE" description="First freeze date" -7007 format="N6..12" type="date" fnc1="1" name="HARVEST DATE" description="Harvest date" +7006 format="N6" type="date" fnc1="1" name="FIRST FREEZE DATE" description="First freeze date (YYMMDD)" +7007 format="N6[+N6]" type="date" fnc1="1" name="HARVEST DATE" description="Harvest date (YYMMDD[YYMMDD])" 7008 format="X..3" type="str" fnc1="1" name="AQUATIC SPECIES" description="Species for fishery purposes" 7009 format="X..10" type="str" fnc1="1" name="FISHING GEAR TYPE" description="Fishing gear type" 7010 format="X..2" type="str" fnc1="1" name="PROD METHOD" description="Production method" +7011 format="N6[+N4]" type="date" fnc1="1" name="TEST BY DATE" description="Test by date (YYMMDD[hhmm])" 7020 format="X..20" type="str" fnc1="1" name="REFURB LOT" description="Refurbishment lot ID" 7021 format="X..20" type="str" fnc1="1" name="FUNC STAT" description="Functional status" 7022 format="X..20" type="str" fnc1="1" name="REV STAT" description="Revision status" 7023 format="X..30" type="str" fnc1="1" name="GIAI - ASSEMBLY" description="Global Individual Asset Identifier (GIAI) of an assembly" -7030 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 0" description="Number of processor with ISO Country Code" -7031 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 1" description="Number of processor with ISO Country Code" -7032 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 2" description="Number of processor with ISO Country Code" -7033 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 3" description="Number of processor with ISO Country Code" -7034 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 4" description="Number of processor with ISO Country Code" -7035 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 5" description="Number of processor with ISO Country Code" -7036 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 6" description="Number of processor with ISO Country Code" -7037 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 7" description="Number of processor with ISO Country Code" -7038 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 8" description="Number of processor with ISO Country Code" -7039 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 9" description="Number of processor with ISO Country Code" +7030 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 0" description="Number of processor with three-digit ISO country code" +7031 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 1" description="Number of processor with three-digit ISO country code" +7032 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 2" description="Number of processor with three-digit ISO country code" +7033 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 3" description="Number of processor with three-digit ISO country code" +7034 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 4" description="Number of processor with three-digit ISO country code" +7035 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 5" description="Number of processor with three-digit ISO country code" +7036 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 6" description="Number of processor with three-digit ISO country code" +7037 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 7" description="Number of processor with three-digit ISO country code" +7038 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 8" description="Number of processor with three-digit ISO country code" +7039 format="N3+X..27" type="str" fnc1="1" name="PROCESSOR # 9" description="Number of processor with three-digit ISO country code" 7040 format="N1+X3" type="str" fnc1="1" name="UIC+EXT" description="GS1 UIC with Extension 1 and Importer index" +7041 format="X..4" type="str" fnc1="1" name="UFRGT UNIT TYPE" description="UN/CEFACT freight unit type" 710 format="X..20" type="str" fnc1="1" name="NHRN PZN" description="National Healthcare Reimbursement Number (NHRN) - Germany PZN" 711 format="X..20" type="str" fnc1="1" name="NHRN CIP" description="National Healthcare Reimbursement Number (NHRN) - France CIP" 712 format="X..20" type="str" fnc1="1" name="NHRN CN" description="National Healthcare Reimbursement Number (NHRN) - Spain CN" 713 format="X..20" type="str" fnc1="1" name="NHRN DRN" description="National Healthcare Reimbursement Number (NHRN) - Brasil DRN" 714 format="X..20" type="str" fnc1="1" name="NHRN AIM" description="National Healthcare Reimbursement Number (NHRN) - Portugal AIM" -7230 format="X2+X..28" type="str" fnc1="1" name="CERT #1" description="Certification reference" -7231 format="X2+X..28" type="str" fnc1="1" name="CERT #2" description="Certification reference" -7232 format="X2+X..28" type="str" fnc1="1" name="CERT #3" description="Certification reference" -7233 format="X2+X..28" type="str" fnc1="1" name="CERT #4" description="Certification reference" -7234 format="X2+X..28" type="str" fnc1="1" name="CERT #5" description="Certification reference" -7235 format="X2+X..28" type="str" fnc1="1" name="CERT #6" description="Certification reference" -7236 format="X2+X..28" type="str" fnc1="1" name="CERT #7" description="Certification reference" -7237 format="X2+X..28" type="str" fnc1="1" name="CERT #8" description="Certification reference" -7238 format="X2+X..28" type="str" fnc1="1" name="CERT #9" description="Certification reference" -7239 format="X2+X..28" type="str" fnc1="1" name="CERT #10" description="Certification reference" +715 format="X..20" type="str" fnc1="1" name="NHRN NDC" description="National Healthcare Reimbursement Number (NHRN) - United States of America NDC" +716 format="X..20" type="str" fnc1="1" name="NHRN AIC" description="National Healthcare Reimbursement Number (NHRN) - Italy AIC" +717 format="X..20" type="str" fnc1="1" name="NHRN SRN" description="National Healthcare Reimbursement Number (NHRN) - Costa Rica Sanitary Register Number" +7230 format="X2+X..28" type="str" fnc1="1" name="CERT # 0" description="Certification Reference" +7231 format="X2+X..28" type="str" fnc1="1" name="CERT # 1" description="Certification Reference" +7232 format="X2+X..28" type="str" fnc1="1" name="CERT # 2" description="Certification Reference" +7233 format="X2+X..28" type="str" fnc1="1" name="CERT # 3" description="Certification Reference" +7234 format="X2+X..28" type="str" fnc1="1" name="CERT # 4" description="Certification Reference" +7235 format="X2+X..28" type="str" fnc1="1" name="CERT # 5" description="Certification Reference" +7236 format="X2+X..28" type="str" fnc1="1" name="CERT # 6" description="Certification Reference" +7237 format="X2+X..28" type="str" fnc1="1" name="CERT # 7" description="Certification Reference" +7238 format="X2+X..28" type="str" fnc1="1" name="CERT # 8" description="Certification Reference" +7239 format="X2+X..28" type="str" fnc1="1" name="CERT # 9" description="Certification Reference" 7240 format="X..20" type="str" fnc1="1" name="PROTOCOL" description="Protocol ID" +7241 format="N2" type="str" fnc1="1" name="AIDC MEDIA TYPE" description="AIDC media type" +7242 format="X..25" type="str" fnc1="1" name="VCN" description="Version Control Number (VCN)" +7250 format="N8" type="date" fnc1="1" name="DOB" description="Date of birth (YYYYMMDD)" +7251 format="N12" type="date" fnc1="1" name="DOB TIME" description="Date and time of birth (YYYYMMDDhhmm)" +7252 format="N1" type="str" fnc1="1" name="BIO SEX" description="Biological sex" +7253 format="X..40" type="str" fnc1="1" name="FAMILY NAME" description="Family name of person" +7254 format="X..40" type="str" fnc1="1" name="GIVEN NAME" description="Given name of person" +7255 format="X..10" type="str" fnc1="1" name="SUFFIX" description="Name suffix of person" +7256 format="X..90" type="str" fnc1="1" name="FULL NAME" description="Full name of person" +7257 format="X..70" type="str" fnc1="1" name="PERSON ADDR" description="Address of person" +7258 format="N1+X1+N1" type="str" fnc1="1" name="BIRTH SEQUENCE" description="Baby birth sequence" +7259 format="X..40" type="str" fnc1="1" name="BABY" description="Baby of family name" 8001 format="N14" type="str" fnc1="1" name="DIMENSIONS" description="Roll products (width, length, core diameter, direction, splices)" -8002 format="X..20" type="str" fnc1="1" name="CMT No" description="Cellular mobile telephone identifier" -8003 format="N14+X..16" type="str" fnc1="1" name="GRAI" description="Global Returnable Asset Identifier (GRAI)" +8002 format="X..20" type="str" fnc1="1" name="CMT No." description="Cellular mobile telephone identifier" +8003 format="N14[+X..16]" type="str" fnc1="1" name="GRAI" description="Global Returnable Asset Identifier (GRAI)" 8004 format="X..30" type="str" fnc1="1" name="GIAI" description="Global Individual Asset Identifier (GIAI)" 8005 format="N6" type="str" fnc1="1" name="PRICE PER UNIT" description="Price per unit of measure" -8006 format="N14+N2+N2" type="str" fnc1="1" name="ITIP" description="Identification of an individual trade item piece" +8006 format="N14+N2+N2" type="str" fnc1="1" name="ITIP" description="Identification of an individual trade item piece (ITIP)" 8007 format="X..34" type="str" fnc1="1" name="IBAN" description="International Bank Account Number (IBAN)" -8008 format="N8+N..4" type="date" fnc1="1" name="PROD TIME" description="Date and time of production" +8008 format="N8[+N..4]" type="date" fnc1="1" name="PROD TIME" description="Date and time of production (YYMMDDhh[mm[ss]])" 8009 format="X..50" type="str" fnc1="1" name="OPTSEN" description="Optically Readable Sensor Indicator" 8010 format="Y..30" type="str" fnc1="1" name="CPID" description="Component/Part Identifier (CPID)" 8011 format="N..12" type="str" fnc1="1" name="CPID SERIAL" description="Component/Part Identifier serial number (CPID SERIAL)" 8012 format="X..20" type="str" fnc1="1" name="VERSION" description="Software version" -8013 format="X..30" type="str" fnc1="1" name="GMN (for medical devices, the default, global data title is BUDI-DI)" description="Global Model Number (GMN)" -8017 format="N18" type="str" fnc1="1" name="GSRN - PROVIDER" description="Global Service Relation Number to identify the relationship between an organisation offering services and the provider of services" -8018 format="N18" type="str" fnc1="1" name="GSRN - RECIPIENT" description="Global Service Relation Number to identify the relationship between an organisation offering services and the recipient of services" +8013 format="X..25" type="str" fnc1="1" name="GMN" description="Global Model Number (GMN)" +8014 format="X..25" type="str" fnc1="1" name="MUDI" description="Highly Individualised Device Registration Identifier (HIDRI)" +8017 format="N18" type="str" fnc1="1" name="GSRN - PROVIDER" description="Global Service Relation Number (GSRN) to identify the relationship between an organisation offering services and the provider of services" +8018 format="N18" type="str" fnc1="1" name="GSRN - RECIPIENT" description="Global Service Relation Number (GSRN) to identify the relationship between an organisation offering services and the recipient of services" 8019 format="N..10" type="str" fnc1="1" name="SRIN" description="Service Relation Instance Number (SRIN)" -8020 format="X..25" type="str" fnc1="1" name="REF No" description="Payment slip reference number" +8020 format="X..25" type="str" fnc1="1" name="REF No." description="Payment slip reference number" 8026 format="N14+N2+N2" type="str" fnc1="1" name="ITIP CONTENT" description="Identification of pieces of a trade item (ITIP) contained in a logistic unit" +8030 format="Z..90" type="str" fnc1="1" name="DIGSIG" description="Digital Signature (DigSig)" +8040 format="N15" type="str" fnc1="1" name="IMEI" description="Internatinal Mobile Equipment Identity (IMEI)" +8041 format="N15" type="str" fnc1="1" name="IMEI2" description="Internatinal Mobile Equipment Identity 2 (IMEI2)" +8042 format="N32" type="str" fnc1="1" name="ESIM" description="Embedded SIM number" +8043 format="N18+[N1..N2]" type="str" fnc1="1" name="PSIM" description="Physical SIM number" 8110 format="X..70" type="str" fnc1="1" name="" description="Coupon code identification for use in North America" 8111 format="N4" type="str" fnc1="1" name="POINTS" description="Loyalty points of a coupon" -8112 format="X..70" type="str" fnc1="1" name="" description="Paperless coupon code identification for use in North America" +8112 format="X..70" type="str" fnc1="1" name="" description="Positive offer file coupon code identification for use in North America" 8200 format="X..70" type="str" fnc1="1" name="PRODUCT URL" description="Extended Packaging URL" 90 format="X..30" type="str" fnc1="1" name="INTERNAL" description="Information mutually agreed between trading partners" 91-99 format="X..90" type="str" fnc1="1" name="INTERNAL" description="Company internal information" diff --git a/stdnum/gt/__init__.py b/stdnum/gt/__init__.py index c1f38d93..3d942809 100644 --- a/stdnum/gt/__init__.py +++ b/stdnum/gt/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Guatemalan numbers.""" +from __future__ import annotations + # provide aliases from stdnum.gt import nit as vat # noqa: F401 diff --git a/stdnum/gt/cui.txt b/stdnum/gt/cui.txt new file mode 100644 index 00000000..b9441680 --- /dev/null +++ b/stdnum/gt/cui.txt @@ -0,0 +1,121 @@ +# cui.py - functions for handling Guatemala CUI numbers +# +# Copyright (C) 2025 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +""" + +Guatemala – National ID Number (Código Único de Identificación, CUI) + + + + +The Guatemalan National ID Number (Código Único de Identificación, CUI) is the official identification number issued to Guatemalan nationals and permanent residents. The CUI appears on the Personal Identification Document (Documento Personal de Identificación, DPI), which all Guatemalan nationals can obtain when they turn 18 years old. In other words, the DPI is the identification document itself, and the CUI is the number on that document. + +The CUI comprises a 13-digit numeric code: + + The first eight digits (A) are randomly assigned numbers (número correlativo asignado). + The ninth digit (B) is a checksum digit (dígito verificador). + The tenth and eleventh digits (C) comprise a two-digit code denoting the department of birth. + The twelfth and thirteenth digits (D) comprise a two-digit code indicating the municipality of birth. A list of two-digit codes for departments and municipalities in Guatemala can be found here. + +The resulting ID number is structured as follows: + +AAAAAAAABCCDD + +Note that for naturalized citizens and permanent residents, the last four digits correspond to the department and municipality where they registered for the DPI. + + +https://www.renap.gob.gt/noticias/codigo-unico-de-identificacion-cui#:~:text=Est%C3%A1%20compuesto%20por%2013%20d%C3%ADgitos,del%20municipio%20de%20su%20nacimiento + +""" + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + + + + + + + +def check_vat(self): + """ Extention of the validation method to cover DPI/CUI and NIT. """ + l10n_gt_partners = self.filtered(lambda p: p.country_code == 'GT') + l10n_gt_partners.l10n_gt_identification_validation() + return super(ResPartner, self - l10n_gt_partners).check_vat() + + +def l10n_gt_identification_validation(self): + for record in self.filtered('vat'): + record.ensure_one() + if record.l10n_latam_identification_type_id == self.env.ref('l10n_gt.it_cui'): + cui_sum = sum(int(a) * b for a, b in zip(record.vat[:8], range(2, 10))) + cui_res = '0123456789K'[(cui_sum % 11)] + if record.vat[8] != cui_res: + raise ValidationError(_("Incorrect verification digit for the CUI identification type.")) + elif record.l10n_latam_identification_type_id == self.env.ref('l10n_gt.it_nit'): + stdnum.gt.nit.validate(record.vat) + + + + + + + +def compact(number): + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').upper().strip().lstrip('0') + # FIXME: check + + +def calc_check_digit(number): + """Calculate the check digit. The number passed should not have the + check digit included.""" + c = -sum(i * int(n) for i, n in enumerate(reversed(number), 2)) % 11 + return 'K' if c == 10 else str(c) + + +def validate(number): + """Check if the number is a valid Guatemala NIT number. + + This checks the length, formatting and check digit. + """ + number = compact(number) + if len(number) < 2 or len(number) > 12: + raise InvalidLength() + if not isdigits(number[:-1]): + raise InvalidFormat() + if number[-1] != 'K' and not isdigits(number[-1]): + raise InvalidFormat() + if number[-1] != calc_check_digit(number[:-1]): + raise InvalidChecksum() + return number + + +def is_valid(number): + """Check if the number is a valid Guatemala NIT number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number): + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '-'.join([number[:-1], number[-1]]) diff --git a/stdnum/gt/nit.py b/stdnum/gt/nit.py index efbe1b05..64416e20 100644 --- a/stdnum/gt/nit.py +++ b/stdnum/gt/nit.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIT (Número de Identificación Tributaria, Guatemala tax number). @@ -48,24 +46,26 @@ '3952550-3' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip().lstrip('0') -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" c = -sum(i * int(n) for i, n in enumerate(reversed(number), 2)) % 11 return 'K' if c == 10 else str(c) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Guatemala NIT number. This checks the length, formatting and check digit. @@ -82,7 +82,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Guatemala NIT number.""" try: return bool(validate(number)) @@ -90,7 +90,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[:-1], number[-1]]) diff --git a/stdnum/hr/__init__.py b/stdnum/hr/__init__.py index 54a21c2f..51d85d04 100644 --- a/stdnum/hr/__init__.py +++ b/stdnum/hr/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Croatian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.hr import oib as vat # noqa: F401 diff --git a/stdnum/hr/oib.py b/stdnum/hr/oib.py index 092c58c7..4be93a39 100644 --- a/stdnum/hr/oib.py +++ b/stdnum/hr/oib.py @@ -1,4 +1,4 @@ -# cnp.py - functions for handling Croatian OIB numbers +# oib.py - functions for handling Croatian OIB numbers # coding: utf-8 # # Copyright (C) 2012, 2013 Arthur de Jong @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """OIB (Osobni identifikacijski broj, Croatian identification number). @@ -32,12 +30,14 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_11_10 from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -46,7 +46,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid OIB number. This checks the length, formatting and check digit.""" number = compact(number) @@ -58,7 +58,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid OIB number.""" try: return bool(validate(number)) diff --git a/stdnum/hu/__init__.py b/stdnum/hu/__init__.py index 58735a03..4b57b2bb 100644 --- a/stdnum/hu/__init__.py +++ b/stdnum/hu/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Hungarian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.hu import anum as vat # noqa: F401 diff --git a/stdnum/hu/anum.py b/stdnum/hu/anum.py index bb9b863c..77da79e5 100644 --- a/stdnum/hu/anum.py +++ b/stdnum/hu/anum.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ANUM (Közösségi adószám, Hungarian VAT number). @@ -31,11 +29,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -44,13 +44,13 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum. Valid numbers should have a checksum of 0.""" weights = (9, 7, 3, 1, 9, 7, 3, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 10 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -63,7 +63,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/iban.dat b/stdnum/iban.dat index ce656b7b..aa80e7fc 100644 --- a/stdnum/iban.dat +++ b/stdnum/iban.dat @@ -1,4 +1,4 @@ -# generated from swift_standards_infopaper_ibanregistry_1.txt, +# generated from iban-registry-v101.txt # downloaded from https://www.swift.com/node/11971 AD country="Andorra" bban="4!n4!n12!c" AE country="United Arab Emirates (The)" bban="3!n16!n" @@ -9,19 +9,22 @@ BA country="Bosnia and Herzegovina" bban="3!n3!n8!n2!n" BE country="Belgium" bban="3!n7!n2!n" BG country="Bulgaria" bban="4!a4!n2!n8!c" BH country="Bahrain" bban="4!a14!c" +BI country="Burundi" bban="5!n5!n11!n2!n" BR country="Brazil" bban="8!n5!n10!n1!a1!c" -BY country="Republic of Belarus" bban="4!c4!n16!c" +BY country="Belarus" bban="4!c4!n16!c" CH country="Switzerland" bban="5!n12!c" CR country="Costa Rica" bban="4!n14!n" CY country="Cyprus" bban="3!n5!n16!c" -CZ country="Czechia" bban="4!n6!n10!n" +CZ country="Czechia" bban="4!n16!n" DE country="Germany" bban="8!n10!n" +DJ country="Djibouti" bban="5!n5!n11!n2!n" DK country="Denmark" bban="4!n9!n1!n" DO country="Dominican Republic" bban="4!c20!n" -EE country="Estonia" bban="2!n2!n11!n1!n" +EE country="Estonia" bban="2!n14!n" EG country="Egypt" bban="4!n4!n17!n" ES country="Spain" bban="4!n4!n1!n1!n10!n" FI country="Finland" bban="3!n11!n" +FK country="Falkland Islands (Malvinas)" bban="2!a12!n" FO country="Faroe Islands" bban="4!n9!n1!n" FR country="France" bban="5!n5!n11!c2!n" GB country="United Kingdom" bban="4!a6!n8!n" @@ -30,6 +33,7 @@ GI country="Gibraltar" bban="4!a15!c" GL country="Greenland" bban="4!n9!n1!n" GR country="Greece" bban="3!n4!n16!c" GT country="Guatemala" bban="4!c20!c" +HN country="Honduras" bban="4!a20!n" HR country="Croatia" bban="7!n10!n" HU country="Hungary" bban="3!n4!n1!n15!n1!n" IE country="Ireland" bban="4!a6!n8!n" @@ -46,15 +50,19 @@ LI country="Liechtenstein" bban="5!n12!c" LT country="Lithuania" bban="5!n11!n" LU country="Luxembourg" bban="3!n13!c" LV country="Latvia" bban="4!a13!c" +LY country="Libya" bban="3!n3!n15!n" MC country="Monaco" bban="5!n5!n11!c2!n" -MD country="Moldova" bban="2!c18!c" +MD country="Moldova, Republic of" bban="2!c18!c" ME country="Montenegro" bban="3!n13!n2!n" -MK country="Macedonia" bban="3!n10!c2!n" +MK country="North Macedonia" bban="3!n10!c2!n" +MN country="Mongolia" bban="4!n12!n" MR country="Mauritania" bban="5!n5!n11!n2!n" MT country="Malta" bban="4!a5!n18!c" MU country="Mauritius" bban="4!a2!n2!n12!n3!n3!a" +NI country="Nicaragua" bban="4!a20!n" NL country="Netherlands (The)" bban="4!a10!n" NO country="Norway" bban="4!n6!n1!n" +OM country="Oman" bban="3!n16!c" PK country="Pakistan" bban="4!a16!c" PL country="Poland" bban="8!n16!n" PS country="Palestine, State of" bban="4!a21!c" @@ -62,18 +70,22 @@ PT country="Portugal" bban="4!n4!n11!n2!n" QA country="Qatar" bban="4!a21!c" RO country="Romania" bban="4!a16!c" RS country="Serbia" bban="3!n13!n2!n" +RU country="Russian Federation" bban="9!n5!n15!c" SA country="Saudi Arabia" bban="2!n18!c" SC country="Seychelles" bban="4!a2!n2!n16!n3!a" +SD country="Sudan" bban="2!n12!n" SE country="Sweden" bban="3!n16!n1!n" SI country="Slovenia" bban="5!n8!n2!n" SK country="Slovakia" bban="4!n6!n10!n" SM country="San Marino" bban="1!a5!n5!n12!c" -ST country="Sao Tome and Principe" bban="8!n11!n2!n" +SO country="Somalia" bban="4!n3!n12!n" +ST country="Sao Tome and Principe" bban="4!n4!n11!n2!n" SV country="El Salvador" bban="4!a20!n" TL country="Timor-Leste" bban="3!n14!n2!n" TN country="Tunisia" bban="2!n3!n13!n2!n" -TR country="Turkey" bban="5!n1!n16!c" +TR country="Turkiye" bban="5!n1!n16!c" UA country="Ukraine" bban="6!n19!c" -VA country="Vatican City State" bban="3!n15!n" -VG country="Virgin Islands" bban="4!a16!n" +VA country="Holy See" bban="3!n15!n" +VG country="Virgin Islands (British)" bban="4!a16!n" XK country="Kosovo" bban="4!n10!n2!n" +YE country="Yemen" bban="4!a4!n18!c" diff --git a/stdnum/iban.py b/stdnum/iban.py index ccc5626f..7aa1db4e 100644 --- a/stdnum/iban.py +++ b/stdnum/iban.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IBAN (International Bank Account Number). @@ -44,12 +42,14 @@ '31' """ +from __future__ import annotations + import re from stdnum import numdb from stdnum.exceptions import * from stdnum.iso7064 import mod_97_10 -from stdnum.util import clean, get_cc_module +from stdnum.util import NumberValidationModule, clean, get_cc_module # our open copy of the IBAN database @@ -62,23 +62,23 @@ _country_modules = {} -def compact(number): +def compact(number: str) -> str: """Convert the iban number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -.').strip().upper() -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits that should be put in the number to make it valid. Check digits in the supplied number are ignored.""" number = compact(number) return mod_97_10.calc_check_digits(number[4:] + number[:2]) -def _struct_to_re(structure): +def _struct_to_re(structure: str) -> re.Pattern[str]: """Convert an IBAN structure to a regular expression that can be used to validate the number.""" - def conv(match): + def conv(match: re.Match[str]) -> str: chars = { 'n': '[0-9]', 'a': '[A-Z]', @@ -88,7 +88,7 @@ def conv(match): return re.compile('^%s$' % _struct_re.sub(conv, structure)) -def _get_cc_module(cc): +def _get_cc_module(cc: str) -> NumberValidationModule | None: """Get the IBAN module based on the country code.""" cc = cc.lower() if cc not in _country_modules: @@ -96,7 +96,7 @@ def _get_cc_module(cc): return _country_modules[cc] -def validate(number, check_country=True): +def validate(number: str, check_country: bool = True) -> str: """Check if the number provided is a valid IBAN. The country-specific check can be disabled with the check_country argument.""" number = compact(number) @@ -119,7 +119,7 @@ def validate(number, check_country=True): return number -def is_valid(number, check_country=True): +def is_valid(number: str, check_country: bool = True) -> bool: """Check if the number provided is a valid IBAN.""" try: return bool(validate(number, check_country=check_country)) @@ -127,7 +127,7 @@ def is_valid(number, check_country=True): return False -def format(number, separator=' '): +def format(number: str, separator: str = ' ') -> str: """Reformat the passed number to the space-separated format.""" number = compact(number) return separator.join(number[i:i + 4] for i in range(0, len(number), 4)) diff --git a/stdnum/id/__init__.py b/stdnum/id/__init__.py index a574bd54..50e6cd2c 100644 --- a/stdnum/id/__init__.py +++ b/stdnum/id/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Indonesian numbers.""" +from __future__ import annotations + # provide aliases from stdnum.id import npwp as vat # noqa: F401 diff --git a/stdnum/id/loc.dat b/stdnum/id/loc.dat new file mode 100644 index 00000000..f38f8844 --- /dev/null +++ b/stdnum/id/loc.dat @@ -0,0 +1,538 @@ +# List of provinces and cities/regencies in Indonesia +# Manually generated, based on data from: +# https://github.com/perlancar/perl-Locale-ID-Province/blob/master/lib/Locale/ID/Province.pm +# https://github.com/perlancar/perl-Locale-ID-Locality/blob/master/lib/Locale/ID/Locality.pm +# The https://github.com/sharyanto/gudang-data-interim/ repository is sadly no longer available +# Apparently the data should also be available on https://www.kemendagri.go.id/pages/data-world +# but that page currently doesn't work at all + +11 iso3166_2="ID-AC" name_id="Aceh" name_en="Aceh" + 01 name_id="SIMEULUE" + 02 name_id="ACEH SINGKIL" + 03 name_id="ACEH SELATAN" + 04 name_id="ACEH TENGGARA" + 05 name_id="ACEH TIMUR" + 06 name_id="ACEH TENGAH" + 07 name_id="ACEH BARAT" + 08 name_id="ACEH BESAR" + 09 name_id="PIDIE" + 10 name_id="BIREUEN" + 11 name_id="ACEH UTARA" + 12 name_id="ACEH BARAT DAYA" + 13 name_id="GAYO LUES" + 14 name_id="ACEH TAMIANG" + 15 name_id="NAGAN RAYA" + 16 name_id="ACEH JAYA" + 17 name_id="BENER MERIAH" + 18 name_id="PIDIE JAYA" + 71 name_id="BANDA ACEH" + 72 name_id="SABANG" + 73 name_id="LANGSA" + 74 name_id="LHOKSEUMAWE" + 75 name_id="SUBULUSSALAM" +12 iso3166_2="ID-SU" name_id="Sumatera Utara" name_en="North Sumatra" + 01 name_id="NIAS" + 02 name_id="MANDAILING NATAL" + 03 name_id="TAPANULI SELATAN" + 04 name_id="TAPANULI TENGAH" + 05 name_id="TAPANULI UTARA" + 06 name_id="TOBA SAMOSIR" + 07 name_id="LABUHAN BATU" + 08 name_id="ASAHAN" + 09 name_id="SIMALUNGUN" + 10 name_id="DAIRI" + 11 name_id="KARO" + 12 name_id="DELI SERDANG" + 13 name_id="LANGKAT" + 14 name_id="NIAS SELATAN" + 15 name_id="HUMBANG HASUNDUTAN" + 16 name_id="PAKPAK BHARAT" + 17 name_id="SAMOSIR" + 18 name_id="SERDANG BEDAGAI" + 19 name_id="BATU BARA" + 20 name_id="PADANG LAWAS UTARA" + 21 name_id="PADANG LAWAS" + 22 name_id="LABUHAN BATU SELATAN" + 23 name_id="LABUHAN BATU UTARA" + 24 name_id="NIAS UTARA" + 25 name_id="NIAS BARAT" + 71 name_id="SIBOLGA" + 72 name_id="TANJUNG BALAI" + 73 name_id="PEMATANG SIANTAR" + 74 name_id="TEBING TINGGI" + 75 name_id="MEDAN" + 76 name_id="BINJAI" + 77 name_id="PADANGSIDIMPUAN" + 78 name_id="GUNUNGSITOLI" +13 iso3166_2="ID-SB" name_id="Sumatera Barat" name_en="West Sumatra" + 01 name_id="KEPULAUAN MENTAWAI" + 02 name_id="PESISIR SELATAN" + 03 name_id="SOLOK" + 04 name_id="SIJUNJUNG" + 05 name_id="TANAH DATAR" + 06 name_id="PADANG PARIAMAN" + 07 name_id="AGAM" + 08 name_id="LIMA PULUH KOTA" + 09 name_id="PASAMAN" + 10 name_id="SOLOK SELATAN" + 11 name_id="DHARMAS RAYA" + 12 name_id="PASAMAN BARAT" + 71 name_id="PADANG" + 72 name_id="SOLOK" + 73 name_id="SAWAH LUNTO" + 74 name_id="PADANG PANJANG" + 75 name_id="BUKITTINGGI" + 76 name_id="PAYAKUMBUH" + 77 name_id="PARIAMAN" +14 iso3166_2="ID-RI" name_id="Riau" name_en="Riau" + 01 name_id="KUANTAN SINGINGI" + 02 name_id="INDRAGIRI HULU" + 03 name_id="INDRAGIRI HILIR" + 04 name_id="PELALAWAN" + 05 name_id="SIAK" + 06 name_id="KAMPAR" + 07 name_id="ROKAN HULU" + 08 name_id="BENGKALIS" + 09 name_id="ROKAN HILIR" + 10 name_id="KEPULAUAN MERANTI" + 71 name_id="PEKANBARU" + 73 name_id="DUMAI" +15 iso3166_2="ID-JA" name_id="Jambi" name_en="Jambi" + 01 name_id="KERINCI" + 02 name_id="MERANGIN" + 03 name_id="SAROLANGUN" + 04 name_id="BATANG HARI" + 05 name_id="MUARO JAMBI" + 06 name_id="TANJUNG JABUNG TIMUR" + 07 name_id="TANJUNG JABUNG BARAT" + 08 name_id="TEBO" + 09 name_id="BUNGO" + 71 name_id="JAMBI" + 72 name_id="SUNGAI PENUH" +16 iso3166_2="ID-SS" name_id="Sumatera Selatan" name_en="South Sumatra" + 01 name_id="OGAN KOMERING ULU" + 02 name_id="OGAN KOMERING ILIR" + 03 name_id="MUARA ENIM" + 04 name_id="LAHAT" + 05 name_id="MUSI RAWAS" + 06 name_id="MUSI BANYUASIN" + 07 name_id="BANYU ASIN" + 08 name_id="OGAN KOMERING ULU SELATAN" + 09 name_id="OGAN KOMERING ULU TIMUR" + 10 name_id="OGAN ILIR" + 11 name_id="EMPAT LAWANG" + 71 name_id="PALEMBANG" + 72 name_id="PRABUMULIH" + 73 name_id="PAGAR ALAM" + 74 name_id="LUBUKLINGGAU" +17 iso3166_2="ID-BE" name_id="Bengkulu" name_en="Bengkulu" + 01 name_id="BENGKULU SELATAN" + 02 name_id="REJANG LEBONG" + 03 name_id="BENGKULU UTARA" + 04 name_id="KAUR" + 05 name_id="SELUMA" + 06 name_id="MUKOMUKO" + 07 name_id="LEBONG" + 08 name_id="KEPAHIANG" + 09 name_id="BENGKULU TENGAH" + 71 name_id="BENGKULU" +18 iso3166_2="ID-LA" name_id="Lampung" name_en="Lampung" + 01 name_id="LAMPUNG BARAT" + 02 name_id="TANGGAMUS" + 03 name_id="LAMPUNG SELATAN" + 04 name_id="LAMPUNG TIMUR" + 05 name_id="LAMPUNG TENGAH" + 06 name_id="LAMPUNG UTARA" + 07 name_id="WAY KANAN" + 08 name_id="TULANGBAWANG" + 09 name_id="PESAWARAN" + 10 name_id="PRINGSEWU" + 11 name_id="MESUJI" + 12 name_id="TULANGBAWANG BARAT" + 71 name_id="BANDAR LAMPUNG" + 72 name_id="METRO" +19 iso3166_2="ID-BB" name_id="Kepulauan Bangka Belitung" name_en="Bangka Belitung Islands" + 01 name_id="BANGKA" + 02 name_id="BELITUNG" + 03 name_id="BANGKA BARAT" + 04 name_id="BANGKA TENGAH" + 05 name_id="BANGKA SELATAN" + 06 name_id="BELITUNG TIMUR" + 71 name_id="PANGKAL PINANG" +21 iso3166_2="ID-KR" name_id="Kepulauan Riau" name_en="Riau Islands" + 01 name_id="KARIMUN" + 02 name_id="BINTAN" + 03 name_id="NATUNA" + 04 name_id="LINGGA" + 05 name_id="KEPULAUAN ANAMBAS" + 71 name_id="BATAM" + 72 name_id="TANJUNG PINANG" +31 iso3166_2="ID-JK" name_id="Daerah Khusus Ibukota Jakarta" name_en="Jakarta Special Capital Territory" + 01 name_id="KEPULAUAN SERIBU" + 71 name_id="JAKARTA SELATAN" + 72 name_id="JAKARTA TIMUR" + 73 name_id="JAKARTA PUSAT" + 74 name_id="JAKARTA BARAT" + 75 name_id="JAKARTA UTARA" +32 iso3166_2="ID-JB" name_id="Jawa Barat" name_en="West Java" + 01 name_id="BOGOR" + 02 name_id="SUKABUMI" + 03 name_id="CIANJUR" + 04 name_id="BANDUNG" + 05 name_id="GARUT" + 06 name_id="TASIKMALAYA" + 07 name_id="CIAMIS" + 08 name_id="KUNINGAN" + 09 name_id="CIREBON" + 10 name_id="MAJALENGKA" + 11 name_id="SUMEDANG" + 12 name_id="INDRAMAYU" + 13 name_id="SUBANG" + 14 name_id="PURWAKARTA" + 15 name_id="KARAWANG" + 16 name_id="BEKASI" + 17 name_id="BANDUNG BARAT" + 71 name_id="BOGOR" + 72 name_id="SUKABUMI" + 73 name_id="BANDUNG" + 74 name_id="CIREBON" + 75 name_id="BEKASI" + 76 name_id="DEPOK" + 77 name_id="CIMAHI" + 78 name_id="TASIKMALAYA" + 79 name_id="BANJAR" +33 iso3166_2="ID-JT" name_id="Jawa Tengah" name_en="Central Java" + 01 name_id="CILACAP" + 02 name_id="BANYUMAS" + 03 name_id="PURBALINGGA" + 04 name_id="BANJARNEGARA" + 05 name_id="KEBUMEN" + 06 name_id="PURWOREJO" + 07 name_id="WONOSOBO" + 08 name_id="MAGELANG" + 09 name_id="BOYOLALI" + 10 name_id="KLATEN" + 11 name_id="SUKOHARJO" + 12 name_id="WONOGIRI" + 13 name_id="KARANGANYAR" + 14 name_id="SRAGEN" + 15 name_id="GROBOGAN" + 16 name_id="BLORA" + 17 name_id="REMBANG" + 18 name_id="PATI" + 19 name_id="KUDUS" + 20 name_id="JEPARA" + 21 name_id="DEMAK" + 22 name_id="SEMARANG" + 23 name_id="TEMANGGUNG" + 24 name_id="KENDAL" + 25 name_id="BATANG" + 26 name_id="PEKALONGAN" + 27 name_id="PEMALANG" + 28 name_id="TEGAL" + 29 name_id="BREBES" + 71 name_id="MAGELANG" + 72 name_id="SURAKARTA" + 73 name_id="SALATIGA" + 74 name_id="SEMARANG" + 75 name_id="PEKALONGAN" + 76 name_id="TEGAL" +34 iso3166_2="ID-YO" name_id="Daerah Istimewa Yogyakarta" name_en="Yogyakarta Special Territory" + 01 name_id="KULON PROGO" + 02 name_id="BANTUL" + 03 name_id="GUNUNG KIDUL" + 04 name_id="SLEMAN" + 71 name_id="YOGYAKARTA" +35 iso3166_2="ID-JI" name_id="Jawa Timur" name_en="East Java" + 01 name_id="PACITAN" + 02 name_id="PONOROGO" + 03 name_id="TRENGGALEK" + 04 name_id="TULUNGAGUNG" + 05 name_id="BLITAR" + 06 name_id="KEDIRI" + 07 name_id="MALANG" + 08 name_id="LUMAJANG" + 09 name_id="JEMBER" + 10 name_id="BANYUWANGI" + 11 name_id="BONDOWOSO" + 12 name_id="SITUBONDO" + 13 name_id="PROBOLINGGO" + 14 name_id="PASURUAN" + 15 name_id="SIDOARJO" + 16 name_id="MOJOKERTO" + 17 name_id="JOMBANG" + 18 name_id="NGANJUK" + 19 name_id="MADIUN" + 20 name_id="MAGETAN" + 21 name_id="NGAWI" + 22 name_id="BOJONEGORO" + 23 name_id="TUBAN" + 24 name_id="LAMONGAN" + 25 name_id="GRESIK" + 26 name_id="BANGKALAN" + 27 name_id="SAMPANG" + 28 name_id="PAMEKASAN" + 29 name_id="SUMENEP" + 71 name_id="KEDIRI" + 72 name_id="BLITAR" + 73 name_id="MALANG" + 74 name_id="PROBOLINGGO" + 75 name_id="PASURUAN" + 76 name_id="MOJOKERTO" + 77 name_id="MADIUN" + 78 name_id="SURABAYA" + 79 name_id="BATU" +36 iso3166_2="ID-BT" name_id="Banten" name_en="Banten" + 01 name_id="PANDEGLANG" + 02 name_id="LEBAK" + 03 name_id="TANGERANG" + 04 name_id="SERANG" + 71 name_id="TANGERANG" + 72 name_id="CILEGON" + 73 name_id="SERANG" + 74 name_id="TANGERANG SELATAN" +51 iso3166_2="ID-BA" name_id="Bali" name_en="Bali" + 01 name_id="JEMBRANA" + 02 name_id="TABANAN" + 03 name_id="BADUNG" + 04 name_id="GIANYAR" + 05 name_id="KLUNGKUNG" + 06 name_id="BANGLI" + 07 name_id="KARANG ASEM" + 08 name_id="BULELENG" + 71 name_id="DENPASAR" +52 iso3166_2="ID-NB" name_id="Nusa Tenggara Barat" name_en="West Nusa Tenggara" + 01 name_id="LOMBOK BARAT" + 02 name_id="LOMBOK TENGAH" + 03 name_id="LOMBOK TIMUR" + 04 name_id="SUMBAWA" + 05 name_id="DOMPU" + 06 name_id="BIMA" + 07 name_id="SUMBAWA BARAT" + 08 name_id="LOMBOK UTARA" + 71 name_id="MATARAM" + 72 name_id="BIMA" +53 iso3166_2="ID-NT" name_id="Nusa Tenggara Timur" name_en="East Nusa Tenggara" + 01 name_id="SUMBA BARAT" + 02 name_id="SUMBA TIMUR" + 03 name_id="KUPANG" + 04 name_id="TIMOR TENGAH SELATAN" + 05 name_id="TIMOR TENGAH UTARA" + 06 name_id="BELU" + 07 name_id="ALOR" + 08 name_id="LEMBATA" + 09 name_id="FLORES TIMUR" + 10 name_id="SIKKA" + 11 name_id="ENDE" + 12 name_id="NGADA" + 13 name_id="MANGGARAI" + 14 name_id="ROTE NDAO" + 15 name_id="MANGGARAI BARAT" + 16 name_id="SUMBA TENGAH" + 17 name_id="SUMBA BARAT DAYA" + 18 name_id="NAGEKEO" + 19 name_id="MANGGARAI TIMUR" + 20 name_id="SABU RAIJUA" + 71 name_id="KUPANG" +61 iso3166_2="ID-KB" name_id="Kalimantan Barat" name_en="West Kalimantan" + 01 name_id="SAMBAS" + 02 name_id="BENGKAYANG" + 03 name_id="LANDAK" + 04 name_id="PONTIANAK" + 05 name_id="SANGGAU" + 06 name_id="KETAPANG" + 07 name_id="SINTANG" + 08 name_id="KAPUAS HULU" + 09 name_id="SEKADAU" + 10 name_id="MELAWI" + 11 name_id="KAYONG UTARA" + 12 name_id="KUBU RAYA" + 71 name_id="PONTIANAK" + 72 name_id="SINGKAWANG" +62 iso3166_2="ID-KT" name_id="Kalimantan Tengah" name_en="Central Kalimantan" + 01 name_id="KOTAWARINGIN BARAT" + 02 name_id="KOTAWARINGIN TIMUR" + 03 name_id="KAPUAS" + 04 name_id="BARITO SELATAN" + 05 name_id="BARITO UTARA" + 06 name_id="SUKAMARA" + 07 name_id="LAMANDAU" + 08 name_id="SERUYAN" + 09 name_id="KATINGAN" + 10 name_id="PULANG PISAU" + 11 name_id="GUNUNG MAS" + 12 name_id="BARITO TIMUR" + 13 name_id="MURUNG RAYA" + 71 name_id="PALANGKA RAYA" +63 iso3166_2="ID-KS" name_id="Kalimantan Selatan" name_en="South Kalimantan" + 01 name_id="TANAH LAUT" + 02 name_id="BARU" + 03 name_id="BANJAR" + 04 name_id="BARITO KUALA" + 05 name_id="TAPIN" + 06 name_id="HULU SUNGAI SELATAN" + 07 name_id="HULU SUNGAI TENGAH" + 08 name_id="HULU SUNGAI UTARA" + 09 name_id="TABALONG" + 10 name_id="TANAH BUMBU" + 11 name_id="BALANGAN" + 71 name_id="BANJARMASIN" + 72 name_id="BANJAR BARU" +64 iso3166_2="ID-KI" name_id="Kalimantan Timur" name_en="East Kalimantan" + 01 name_id="PASIR" + 02 name_id="KUTAI BARAT" + 03 name_id="KUTAI KARTANEGARA" + 04 name_id="KUTAI TIMUR" + 05 name_id="BERAU" + 06 name_id="MALINAU" + 07 name_id="BULUNGAN" + 08 name_id="NUNUKAN" + 09 name_id="PENAJAM PASER UTARA" + 10 name_id="TANA TIDUNG" + 71 name_id="BALIKPAPAN" + 72 name_id="SAMARINDA" + 73 name_id="TARAKAN" + 74 name_id="BONTANG" +71 iso3166_2="ID-SA" name_id="Sulawesi Utara" name_en="North Sulawesi" + 01 name_id="BOLAANG MONGONDOW" + 02 name_id="MINAHASA" + 03 name_id="KEPULAUAN SANGIHE" + 04 name_id="KEPULAUAN TALAUD" + 05 name_id="MINAHASA SELATAN" + 06 name_id="MINAHASA UTARA" + 07 name_id="BOLAANG MONGONDOW UTARA" + 08 name_id="SIAU TAGULANDANG BIARO" + 09 name_id="MINAHASA TENGGARA" + 10 name_id="BOLAANG MONGONDOW SELATAN" + 11 name_id="BOLAANG MONGONDOW TIMUR" + 71 name_id="MANADO" + 72 name_id="BITUNG" + 73 name_id="TOMOHON" + 74 name_id="KOTAMOBAGU" +72 iso3166_2="ID-ST" name_id="Sulawesi Tengah" name_en="Central Sulawesi" + 01 name_id="BANGGAI KEPULAUAN" + 02 name_id="BANGGAI" + 03 name_id="MOROWALI" + 04 name_id="POSO" + 05 name_id="DONGGALA" + 06 name_id="TOLI-TOLI" + 07 name_id="BUOL" + 08 name_id="PARIGI MOUTONG" + 09 name_id="TOJO UNA-UNA" + 10 name_id="SIGI" + 71 name_id="PALU" +73 iso3166_2="ID-SN" name_id="Sulawesi Selatan" name_en="South Sulawesi" + 01 name_id="KEPULAUAN SELAYAR" + 02 name_id="BULUKUMBA" + 03 name_id="BANTAENG" + 04 name_id="JENEPONTO" + 05 name_id="TAKALAR" + 06 name_id="GOWA" + 07 name_id="SINJAI" + 08 name_id="MAROS" + 09 name_id="PANGKAJENE DAN KEPULAUAN" + 10 name_id="BARRU" + 11 name_id="BONE" + 12 name_id="SOPPENG" + 13 name_id="WAJO" + 14 name_id="SIDENRENG RAPPANG" + 15 name_id="PINRANG" + 16 name_id="ENREKANG" + 17 name_id="LUWU" + 18 name_id="TANA TORAJA" + 22 name_id="LUWU UTARA" + 25 name_id="LUWU TIMUR" + 26 name_id="TORAJA UTARA" + 71 name_id="MAKASSAR" + 72 name_id="PAREPARE" + 73 name_id="PALOPO" +74 iso3166_2="ID-SG" name_id="Sulawesi Tenggara" name_en="South East Sulawesi" + 01 name_id="BUTON" + 02 name_id="MUNA" + 03 name_id="KONAWE" + 04 name_id="KOLAKA" + 05 name_id="KONAWE SELATAN" + 06 name_id="BOMBANA" + 07 name_id="WAKATOBI" + 08 name_id="KOLAKA UTARA" + 09 name_id="BUTON UTARA" + 10 name_id="KONAWE UTARA" + 71 name_id="KENDARI" + 72 name_id="BAU-BAU" +75 iso3166_2="ID-GO" name_id="Gorontalo" name_en="Gorontalo" + 01 name_id="BOALEMO" + 02 name_id="GORONTALO" + 03 name_id="POHUWATO" + 04 name_id="BONE BOLANGO" + 05 name_id="GORONTALO UTARA" + 71 name_id="GORONTALO" +76 iso3166_2="ID-SR" name_id="Sulawesi Barat" name_en="West Sulawesi" + 01 name_id="MAJENE" + 02 name_id="POLEWALI MANDAR" + 03 name_id="MAMASA" + 04 name_id="MAMUJU" + 05 name_id="MAMUJU UTARA" +81 iso3166_2="ID-MA" name_id="Maluku" name_en="Maluku" + 01 name_id="MALUKU TENGGARA BARAT" + 02 name_id="MALUKU TENGGARA" + 03 name_id="MALUKU TENGAH" + 04 name_id="BURU" + 05 name_id="KEPULAUAN ARU" + 06 name_id="SERAM BAGIAN BARAT" + 07 name_id="SERAM BAGIAN TIMUR" + 08 name_id="MALUKU BARAT DAYA" + 09 name_id="BURU SELATAN" + 71 name_id="AMBON" + 72 name_id="TUAL" +82 iso3166_2="ID-MU" name_id="Maluku Utara" name_en="North Maluku" + 01 name_id="HALMAHERA BARAT" + 02 name_id="HALMAHERA TENGAH" + 03 name_id="KEPULAUAN SULA" + 04 name_id="HALMAHERA SELATAN" + 05 name_id="HALMAHERA UTARA" + 06 name_id="HALMAHERA TIMUR" + 07 name_id="PULAU MOROTAI" + 71 name_id="TERNATE" + 72 name_id="TIDORE KEPULAUAN" +91 iso3166_2="ID-PB" name_id="Papua Barat" name_en="West Papua" + 01 name_id="FAKFAK" + 02 name_id="KAIMANA" + 03 name_id="TELUK WONDAMA" + 04 name_id="TELUK BINTUNI" + 05 name_id="MANOKWARI" + 06 name_id="SORONG SELATAN" + 07 name_id="SORONG" + 08 name_id="RAJA AMPAT" + 09 name_id="TAMBRAUW" + 10 name_id="MAYBRAT" + 71 name_id="SORONG" +94 iso3166_2="ID-PA" name_id="Papua" name_en="Papua" + 01 name_id="MERAUKE" + 02 name_id="JAYAWIJAYA" + 03 name_id="JAYAPURA" + 04 name_id="NABIRE" + 08 name_id="YAPEN WAROPEN" + 09 name_id="BIAK NUMFOR" + 10 name_id="PANIAI" + 11 name_id="PUNCAK JAYA" + 12 name_id="MIMIKA" + 13 name_id="BOVEN DIGOEL" + 14 name_id="MAPPI" + 15 name_id="ASMAT" + 16 name_id="YAHUKIMO" + 17 name_id="PEGUNUNGAN BINTANG" + 18 name_id="TOLIKARA" + 19 name_id="SARMI" + 20 name_id="KEEROM" + 26 name_id="WAROPEN" + 27 name_id="SUPIORI" + 28 name_id="MAMBERAMO RAYA" + 29 name_id="NDUGA" + 30 name_id="LANNY JAYA" + 31 name_id="MAMBERAMO TENGAH" + 32 name_id="YALIMO" + 33 name_id="PUNCAK" + 34 name_id="DOGIYAI" + 35 name_id="INTAN JAYA" + 36 name_id="DEIYAI" + 71 name_id="JAYAPURA" diff --git a/stdnum/id/nik.py b/stdnum/id/nik.py new file mode 100644 index 00000000..6090237f --- /dev/null +++ b/stdnum/id/nik.py @@ -0,0 +1,119 @@ +# nik.py - functions for handling Indonesian NIK numbers +# coding: utf-8 +# +# Copyright (C) 2024 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""NIK (Nomor Induk Kependudukan, Indonesian identity number). + + +The Nomor Induk Kependudukan (NIK, Population Identification Number, +sometimes known as Nomor Kartu Tanda Penduduk or Nomor KTP) is issued to +Indonesian citizens. + +The number consists of 16 digits in the format PPRRSSDDMMYYXXXX where PPRRSS +(province, city/district, sub-district) indicates the place of residence when +the number was issued. It is followed by a DDMMYY date of birth (for female +40 is added to the day). The last 4 digits are used to make the number +unique. + +More information: + +* https://id.wikipedia.org/wiki/Nomor_Induk_Kependudukan + +>>> validate('3171011708450001') +'3171011708450001' +>>> validate('31710117084500') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('9971011708450001') # invalid province +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> get_birth_date('3171015708450001') +datetime.date(1945, 8, 17) +>>> get_birth_date('3171012902001234') # 1900-02-29 doesn't exist +datetime.date(2000, 2, 29) +>>> get_birth_date('3171013002001234') # 1900-20-30 doesn't exist +Traceback (most recent call last): + ... +InvalidComponent: ... +""" + +from __future__ import annotations + +import datetime + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes + surrounding whitespace. + """ + return clean(number, ' -.').strip() + + +def get_birth_date(number: str, minyear: int = 1920) -> datetime.date: + """Get the birth date from the person's NIK. + + Note that the number only encodes the last two digits of the year so + this may be a century off. + """ + number = compact(number) + day = int(number[6:8]) % 40 + month = int(number[8:10]) + year = int(number[10:12]) + try: + return datetime.date(year + 1900, month, day) + except ValueError: + pass + try: + return datetime.date(year + 2000, month, day) + except ValueError: + raise InvalidComponent() + + +def _check_registration_place(number: str) -> dict[str, str]: + """Use the number to look up the place of registration of the person.""" + from stdnum import numdb + results = numdb.get('id/loc').info(number[:4])[0][1] + if not results: + raise InvalidComponent() + return results + + +def validate(number: str) -> str: + """Check if the number is a valid Indonesian NIK.""" + number = compact(number) + if not isdigits(number): + raise InvalidFormat() + if len(number) != 16: + raise InvalidLength() + get_birth_date(number) + _check_registration_place(number) + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Indonesian NIK.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/id/npwp.py b/stdnum/id/npwp.py index de14a545..fe7a4dff 100644 --- a/stdnum/id/npwp.py +++ b/stdnum/id/npwp.py @@ -2,6 +2,7 @@ # coding: utf-8 # # Copyright (C) 2020 Leandro Regueiro +# Copyright (C) 2024 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NPWP (Nomor Pokok Wajib Pajak, Indonesian VAT Number). @@ -24,11 +23,15 @@ individuals (families) by the Indonesian Tax Office after registration by the tax payers. -The number consists of 15 digits of which the first 2 denote the type of +The number consists of 16 digits and is either a NIK (Nomor Induk Kependudukan) +or a number that starts with a 0, followed by 2 digits that denote the type of entity, 6 digits to identify the tax payer, a check digit over the first 8 digits followed by 3 digits to identify the local tax office and 3 digits for branch code. +This module also accepts the old 15 digit format which is just the 16 digit +format without the starting 0. + More information: * https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/Indonesia-TIN.pdf @@ -45,14 +48,17 @@ InvalidLength: ... >>> format('013000666091000') '01.300.066.6-091.000' -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum import luhn from stdnum.exceptions import * +from stdnum.id import nik from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes @@ -61,18 +67,26 @@ def compact(number): return clean(number, ' -.').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Indonesia NPWP number.""" number = compact(number) - if len(number) != 15: - raise InvalidLength() if not isdigits(number): raise InvalidFormat() - luhn.validate(number[:9]) - return number - - -def is_valid(number): + if len(number) == 15: + # Old 15 digit format + luhn.validate(number[:9]) + return number + if len(number) == 16: + # New format since 2024: either a NIK (for Indonesian citizens) or + # the old number with a 0 at the beginning + if not number.startswith('0'): + return nik.validate(number) + luhn.validate(number[:10]) + return number + raise InvalidLength() + + +def is_valid(number: str) -> bool: """Check if the number is a valid Indonesia NPWP number.""" try: return bool(validate(number)) @@ -80,7 +94,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '%s.%s.%s.%s-%s.%s' % ( diff --git a/stdnum/ie/__init__.py b/stdnum/ie/__init__.py index 8adc4771..5f874370 100644 --- a/stdnum/ie/__init__.py +++ b/stdnum/ie/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Irish numbers.""" diff --git a/stdnum/ie/pps.py b/stdnum/ie/pps.py index e64514cc..7ad007ab 100644 --- a/stdnum/ie/pps.py +++ b/stdnum/ie/pps.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PPS No (Personal Public Service Number, Irish personal number). @@ -25,8 +23,11 @@ When present (which should be the case for new numbers as of 2013), the second letter can be 'A' (for individuals) or 'H' (for non-individuals, such as limited companies, trusts, partnerships -and unincorporated bodies). Pre-2013 values may have 'W', 'T', -or 'X' as the second letter ; it is ignored by the check. +and unincorporated bodies). As of 2024, B was accepted as a second +letter on all new PPS numbers. + +Pre-2013 values may have 'W', 'T', or 'X' as the second letter ; +it is ignored by the check. >>> validate('6433435F') # pre-2013 '6433435F' @@ -48,6 +49,8 @@ InvalidChecksum: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -55,23 +58,23 @@ from stdnum.util import clean -pps_re = re.compile(r'^\d{7}[A-W][AHWTX]?$') +pps_re = re.compile(r'^\d{7}[A-W][ABHWTX]?$') """Regular expression used to check syntax of PPS numbers.""" -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid PPS number. This checks the length, formatting and check digit.""" number = compact(number) if not pps_re.match(number): raise InvalidFormat() - if len(number) == 9 and number[8] in 'AH': + if len(number) == 9 and number[8] in 'ABH': # new 2013 format if number[7] != vat.calc_check_digit(number[:7] + number[8:]): raise InvalidChecksum() @@ -82,7 +85,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid PPS number. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/ie/vat.py b/stdnum/ie/vat.py index 8db582c1..59e3ed58 100644 --- a/stdnum/ie/vat.py +++ b/stdnum/ie/vat.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VAT (Irish tax reference number). @@ -41,11 +39,13 @@ '0234561T' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -57,7 +57,7 @@ def compact(number): _alphabet = 'WABCDEFGHIJKLMNOPQRSTUV' -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" number = compact(number).zfill(7) @@ -66,7 +66,7 @@ def calc_check_digit(number): 9 * _alphabet.index(number[7:])) % 23] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -89,7 +89,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid VAT number. This checks the length, formatting and check digit.""" try: @@ -98,7 +98,7 @@ def is_valid(number): return False -def convert(number): +def convert(number: str) -> str: """Convert an "old" style 8-digit VAT number where the second character is a letter to the new 8-digit format where only the last digit is a character.""" diff --git a/stdnum/il/__init__.py b/stdnum/il/__init__.py index b002751c..185affee 100644 --- a/stdnum/il/__init__.py +++ b/stdnum/il/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Israeli numbers.""" +from __future__ import annotations + # provide aliases from stdnum.il import hp as vat # noqa: F401 diff --git a/stdnum/il/hp.py b/stdnum/il/hp.py index 28386c5e..ada52d79 100644 --- a/stdnum/il/hp.py +++ b/stdnum/il/hp.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Company Number (מספר חברה, or short ח.פ. Israeli company number). @@ -46,20 +44,22 @@ Traceback (most recent call last): ... InvalidComponent: ... -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid ID. This checks the length, formatting and check digit.""" number = compact(number) @@ -73,7 +73,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ID. This checks the length, formatting and check digit.""" try: @@ -82,6 +82,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/il/idnr.py b/stdnum/il/idnr.py index 544d6df3..38fb541e 100644 --- a/stdnum/il/idnr.py +++ b/stdnum/il/idnr.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Identity Number (Mispar Zehut, מספר זהות, Israeli identity number). @@ -43,20 +41,20 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" - number = clean(number, ' -').strip() - # pad with leading zeroes - return (9 - len(number)) * '0' + number + return clean(number, ' -').strip().zfill(9) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid ID. This checks the length, formatting and check digit.""" number = compact(number) @@ -68,7 +66,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ID. This checks the length, formatting and check digit.""" try: @@ -77,7 +75,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:-1] + '-' + number[-1:] diff --git a/stdnum/imei.py b/stdnum/imei.py index 2ea1210d..3954f7f7 100644 --- a/stdnum/imei.py +++ b/stdnum/imei.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IMEI (International Mobile Equipment Identity). @@ -46,18 +44,20 @@ ('35686800', '004141', '') """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the IMEI number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid IMEI (or IMEISV) number.""" number = compact(number) if not isdigits(number): @@ -71,7 +71,7 @@ def validate(number): return number -def imei_type(number): +def imei_type(number: str) -> str | None: """Check the passed number and return 'IMEI', 'IMEISV' or None (for invalid) for checking the type of number passed.""" try: @@ -84,7 +84,7 @@ def imei_type(number): return 'IMEISV' -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid IMEI (or IMEISV) number.""" try: return bool(validate(number)) @@ -92,7 +92,7 @@ def is_valid(number): return False -def split(number): +def split(number: str) -> tuple[str, str, str]: """Split the number into a Type Allocation Code (TAC), serial number and either the checksum (for IMEI) or the software version number (for IMEISV).""" @@ -100,10 +100,10 @@ def split(number): return (number[:8], number[8:14], number[14:]) -def format(number, separator='-', add_check_digit=False): +def format(number: str, separator: str = '-', add_check_digit: bool = False) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) if len(number) == 14 and add_check_digit: number += luhn.calc_check_digit(number) - number = (number[:2], number[2:8], number[8:14], number[14:]) - return separator.join(x for x in number if x) + parts = (number[:2], number[2:8], number[8:14], number[14:]) + return separator.join(x for x in parts if x) diff --git a/stdnum/imo.py b/stdnum/imo.py index c4b380ac..8d5bcad3 100644 --- a/stdnum/imo.py +++ b/stdnum/imo.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IMO number (International Maritime Organization number). @@ -40,11 +38,13 @@ 'IMO 8814275' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' ').upper().strip() @@ -53,12 +53,12 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digits for the number.""" return str(sum(int(n) * (7 - i) for i, n in enumerate(number[:6])) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length and check digit.""" number = compact(number) @@ -71,7 +71,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length and check digit.""" try: @@ -80,6 +80,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return 'IMO ' + compact(number) diff --git a/stdnum/imsi.dat b/stdnum/imsi.dat index 21aa96eb..f2aab6a3 100644 --- a/stdnum/imsi.dat +++ b/stdnum/imsi.dat @@ -4,130 +4,185 @@ 001 bands="any" brand="TEST" country="Test networks" operator="Test network" status="Operational" 01 bands="any" brand="TEST" country="Test networks" operator="Test network" status="Operational" 202 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Cosmote" cc="gr" country="Greece" operator="COSMOTE - Mobile Telecommunications S.A." status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Cosmote" cc="gr" country="Greece" operator="COSMOTE - Mobile Telecommunications S.A." status="Operational" + 00 bands="MVNO" cc="gr" country="Greece" operator="Inter Telecom" status="Operational" + 01 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500" brand="Cosmote" cc="gr" country="Greece" operator="OTE" status="Operational" + 02 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500" brand="Cosmote" cc="gr" country="Greece" operator="OTE" status="Operational" 03 cc="gr" country="Greece" operator="OTE" 04 bands="GSM-R" cc="gr" country="Greece" operator="OSE" - 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Vodafone" cc="gr" country="Greece" operator="Vodafone Greece" status="Operational" - 06 cc="gr" country="Greece" operator="Cosmoline" status="Not operational" + 05 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Vodafone" cc="gr" country="Greece" operator="Vodafone Greece" status="Operational" + 06 cc="gr" country="Greece" operator="Vodafone Greece" 07 cc="gr" country="Greece" operator="AMD Telecom" - 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Wind" cc="gr" country="Greece" operator="Wind Hellas Telecommunications S.A." status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Wind" cc="gr" country="Greece" operator="Wind Hellas Telecommunications S.A." status="Operational" - 11 cc="gr" country="Greece" operator="interConnect" - 12 bands="MVNO" cc="gr" country="Greece" operator="Yuboto" status="Operational" - 13 cc="gr" country="Greece" operator="Compatel Limited" - 14 bands="MVNO" brand="Cyta Hellas" cc="gr" country="Greece" operator="CYTA" status="Operational" - 15 cc="gr" country="Greece" operator="BWS" - 16 bands="MVNO" cc="gr" country="Greece" operator="Inter Telecom" status="Operational" + 08 cc="gr" country="Greece" operator="RC" + 09 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="NOVA" cc="gr" country="Greece" operator="NOVA" status="Operational" + 10 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="NOVA" cc="gr" country="Greece" operator="NOVA" status="Operational" + 11 cc="gr" country="Greece" operator="interConnect" status="Not operational" + 12 bands="MVNO" cc="gr" country="Greece" operator="Yuboto" status="Not operational" + 13 cc="gr" country="Greece" operator="Compatel Limited" status="Not operational" + 14 cc="gr" country="Greece" operator="Vodafone Greece" + 15 cc="gr" country="Greece" operator="BWS" status="Not operational" + 16 cc="gr" country="Greece" operator="interConnect" + 17 brand="NOVA" cc="gr" country="Greece" operator="NOVA" + 21 cc="gr" country="Greece" operator="Cell Mobile" 00-99 204 - 01 cc="nl" country="Netherlands" operator="RadioAccess Network Services" - 02 bands="LTE 800 / LTE 2600" brand="Tele2" cc="nl" country="Netherlands" operator="Tele2 Nederland B.V." status="Operational" - 03 bands="MVNE / PrivateGSM 1800" brand="Voiceworks" cc="nl" country="Netherlands" operator="Voiceworks B.V." status="Operational" - 04 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 1800" brand="Vodafone" cc="nl" country="Netherlands" operator="Vodafone Libertel B.V." status="Operational" - 05 cc="nl" country="Netherlands" operator="Elephant Talk Communications Premium Rate Services" - 06 bands="MVNO" brand="Vectone Mobile" cc="nl" country="Netherlands" operator="Mundio Mobile (Netherlands) Ltd" status="Operational" - 07 bands="MVNE" cc="nl" country="Netherlands" operator="Teleena (MVNE)" status="Operational" - 08 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="KPN" cc="nl" country="Netherlands" operator="KPN Mobile The Netherlands B.V." status="Operational" + 00 cc="nl" country="Netherlands" operator="Intovoice B.V." + 01 cc="nl" country="Netherlands" operator="RadioAccess Network Services" status="Not operational" + 02 bands="LTE 800 / LTE 2600" brand="Odido" cc="nl" country="Netherlands" operator="T-Mobile Netherlands B.V" status="Operational" + 03 bands="MVNE" brand="Enreach" cc="nl" country="Netherlands" operator="Enreach Netherlands B.V." status="Operational" + 04 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 1800" brand="Vodafone" cc="nl" country="Netherlands" operator="Vodafone Libertel B.V." status="Operational" + 05 cc="nl" country="Netherlands" operator="Elephant Talk Communications Premium Rate Services" status="Not operational" + 06 bands="MVNO" cc="nl" country="Netherlands" operator="Private Mobility Nederland B.V." + 07 bands="MVNO" brand="Teleena" cc="nl" country="Netherlands" operator="Tata Communications MOVE B.V." status="Operational" + 08 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700" brand="KPN" cc="nl" country="Netherlands" operator="KPN Mobile The Netherlands B.V." status="Operational" 09 bands="MVNO" brand="Lycamobile" cc="nl" country="Netherlands" operator="Lycamobile Netherlands Limited" status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="KPN" cc="nl" country="Netherlands" operator="KPN B.V." status="Operational" - 11 cc="nl" country="Netherlands" operator="VoipIT B.V." + 10 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2600" brand="KPN" cc="nl" country="Netherlands" operator="KPN B.V." status="Operational" + 11 bands="LTE" cc="nl" country="Netherlands" operator="Greenet Netwerk B.V" status="Operational" 12 bands="MVNO" brand="Telfort" cc="nl" country="Netherlands" operator="KPN Mobile The Netherlands B.V." status="Operational" 13 cc="nl" country="Netherlands" operator="Unica Installatietechniek B.V." - 14 cc="nl" country="Netherlands" operator="6GMOBILE B.V." status="Reserved" + 14 bands="5G" cc="nl" country="Netherlands" operator="Venus & Mercury Telecom" 15 bands="LTE 2600" brand="Ziggo" cc="nl" country="Netherlands" operator="Ziggo B.V." status="Operational" - 16 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="T-Mobile (BEN)" cc="nl" country="Netherlands" operator="T-Mobile Netherlands B.V" status="Operational" - 17 bands="MVNE" brand="Intercity Zakelijk" cc="nl" country="Netherlands" operator="Intercity Mobile Communications B.V." status="Operational" - 18 bands="MVNO" brand="upc" cc="nl" country="Netherlands" operator="UPC Nederland B.V." status="Operational" + 16 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700" brand="Odido" cc="nl" country="Netherlands" operator="T-Mobile Netherlands B.V" status="Operational" + 17 bands="MVNO" cc="nl" country="Netherlands" operator="Lebara Ltd" status="Operational" + 18 bands="MVNO" brand="Ziggo" cc="nl" country="Netherlands" operator="Ziggo Services B.V." status="Operational" 19 cc="nl" country="Netherlands" operator="Mixe Communication Solutions B.V." - 20 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="T-Mobile" cc="nl" country="Netherlands" operator="T-Mobile Netherlands B.V" status="Operational" + 20 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700" brand="Odido" cc="nl" country="Netherlands" operator="T-Mobile Netherlands B.V" status="Operational" 21 bands="GSM-R 900" cc="nl" country="Netherlands" operator="ProRail B.V." status="Operational" 22 cc="nl" country="Netherlands" operator="Ministerie van Defensie" - 23 bands="MVNE" cc="nl" country="Netherlands" operator="Wyless Nederland B.V." status="Operational" - 24 cc="nl" country="Netherlands" operator="Private Mobility Nederland B.V." - 25 bands="PrivateGSM 1800" cc="nl" country="Netherlands" operator="CapX B.V." status="Operational" + 23 bands="MVNO" cc="nl" country="Netherlands" operator="KORE Wireless Nederland B.V." status="Operational" + 24 cc="nl" country="Netherlands" operator="PM Factory B.V." + 25 bands="GSM 1800" cc="nl" country="Netherlands" operator="CapX B.V." status="Operational" 26 cc="nl" country="Netherlands" operator="SpeakUp B.V." - 27 cc="nl" country="Netherlands" operator="Breezz Nederland B.V." + 27 bands="MVNO" brand="L-mobi" cc="nl" country="Netherlands" operator="L-Mobi Mobile B.V." status="Operational" 28 cc="nl" country="Netherlands" operator="Lancelot B.V." - 29 cc="nl" country="Netherlands" operator="Private Mobile Ltd" - 60 cc="nl" country="Netherlands" operator="Nextgen Mobile Ltd" - 61 bands="MVNO" cc="nl" country="Netherlands" operator="BodyTrace Netherlands B.V." status="Operational" - 62 bands="MVNO" brand="Voxbone" cc="nl" country="Netherlands" operator="Voxbone mobile" status="Operational" + 29 cc="nl" country="Netherlands" operator="Tismi B.V." + 30 cc="nl" country="Netherlands" operator="ASpider Solutions Nederland B.V." + 32 cc="nl" country="Netherlands" operator="Cubic Telecom Limited" + 33 bands="MVNO" cc="nl" country="Netherlands" operator="Truphone B.V." status="Operational" + 60 cc="nl" country="Netherlands" operator="Nextgen Mobile Ltd" status="Not operational" + 61 cc="nl" country="Netherlands" operator="Alcadis B.V." + 62 bands="MVNO" brand="RGTN" cc="nl" country="Netherlands" operator="RGTN Wholesale Netherlands B.V." status="Operational" + 63 cc="nl" country="Netherlands" operator="Messagebird BV" 64 cc="nl" country="Netherlands" operator="Zetacom B.V." - 65 cc="nl" country="Netherlands" operator="AGMS Netherlands B.V." + 65 cc="nl" country="Netherlands" operator="AGMS Netherlands B.V." status="Not operational" 66 bands="CDMA 450" cc="nl" country="Netherlands" operator="Utility Connect B.V." status="Operational" - 67 bands="PrivateGSM 1800" cc="nl" country="Netherlands" operator="Koning en Hartman B.V." status="Operational" - 68 cc="nl" country="Netherlands" operator="Roamware (Netherlands) B.V." + 67 bands="GSM 1800, LTE, 5G" cc="nl" country="Netherlands" operator="Koning en Hartman B.V." status="Operational" + 68 cc="nl" country="Netherlands" operator="Roamware (Netherlands) B.V." status="Not operational" 69 cc="nl" country="Netherlands" operator="KPN Mobile The Netherlands B.V." + 91 cc="nl" country="Netherlands" operator="Enexis Netbeheer B.V." 00-99 206 - 00 brand="Proximus" cc="be" country="Belgium" operator="Belgacom Mobile" status="Not operational" - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Proximus" cc="be" country="Belgium" operator="Belgacom Mobile" status="Operational" + 00 brand="Proximus" cc="be" country="Belgium" operator="Proximus SA" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500" brand="Proximus" cc="be" country="Belgium" operator="Proximus SA" status="Operational" 02 bands="GSM-R" cc="be" country="Belgium" operator="Infrabel" status="Operational" - 03 bands="LTE 3500" cc="be" country="Belgium" operator="Citymesh NV" status="Operational" + 03 bands="LTE 2600 / LTE 3500" brand="Citymesh Connect" cc="be" country="Belgium" operator="Citymesh NV" status="Operational" + 04 brand="MWingz" cc="be" country="Belgium" operator="Proximus SA" status="Planned" 05 bands="MVNO" brand="Telenet" cc="be" country="Belgium" operator="Telenet" status="Operational" 06 bands="MVNO" brand="Lycamobile" cc="be" country="Belgium" operator="Lycamobile sprl" status="Operational" 07 bands="MVNO" brand="Vectone Mobile" cc="be" country="Belgium" operator="Mundio Mobile Belgium nv" status="Reserved" 08 bands="MVNO" brand="VOO" cc="be" country="Belgium" status="Operational" - 09 bands="MVNO" brand="Voxbone" cc="be" country="Belgium" operator="Voxbone mobile" status="Not operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Orange Belgium" cc="be" country="Belgium" operator="Orange S.A." status="Operational" + 09 cc="be" country="Belgium" operator="Proximus SA" + 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Orange Belgium" cc="be" country="Belgium" operator="Orange S.A." status="Operational" + 11 bands="MVNO" brand="L-mobi" cc="be" country="Belgium" operator="L-Mobi Mobile" status="Not operational" + 12 brand="DIGI Belgium" cc="be" country="Belgium" operator="DIGI Communications Belgium NV" status="Operational" + 13 cc="be" country="Belgium" operator="CWave" 15 cc="be" country="Belgium" operator="Elephant Talk Communications Schweiz GmbH" status="Not operational" 16 cc="be" country="Belgium" operator="NextGen Mobile Ltd." status="Not operational" - 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Base" cc="be" country="Belgium" operator="Telenet" status="Operational" - 25 bands="TD-LTE 2600" cc="be" country="Belgium" operator="Dense Air Belgium SPRL" + 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Base" cc="be" country="Belgium" operator="Telenet" status="Operational" + 22 bands="MVNO" brand="Febo.mobi" cc="be" country="Belgium" operator="FEBO Telecom" status="Not operational" + 23 bands="MVNO" cc="be" country="Belgium" operator="Dust Mobile" + 25 bands="5G 2600" cc="be" country="Belgium" operator="Citymesh Air" 28 cc="be" country="Belgium" operator="BICS" - 30 bands="MVNO" brand="Mobile Vikings" cc="be" country="Belgium" operator="Unleashed NV" status="Operational" + 29 bands="MVNO" cc="be" country="Belgium" operator="TISMI" status="Not operational" + 30 cc="be" country="Belgium" operator="Proximus SA" 33 cc="be" country="Belgium" operator="Ericsson NV" status="Not operational" + 34 bands="MVNO" cc="be" country="Belgium" operator="ONOFFAPP OÜ" 40 bands="MVNO" brand="JOIN" cc="be" country="Belgium" operator="JOIN Experience (Belgium)" status="Not operational" + 48 bands="5G 3500" cc="be" country="Belgium" operator="Network Research Belgium" 50 bands="MVNO" cc="be" country="Belgium" operator="IP Nexia" status="Not operational" + 70 bands="5G 700" cc="be" country="Belgium" operator="iSea" 71 cc="be" country="Belgium" operator="test" status="Not operational" 72 cc="be" country="Belgium" operator="test" status="Not operational" 73 cc="be" country="Belgium" operator="test" status="Not operational" 74 cc="be" country="Belgium" operator="test" status="Not operational" + 99 bands="5G" cc="be" country="Belgium" operator="e-BO Enterprises" 00-99 208 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="Orange" cc="fr" country="France" operator="Orange S.A." status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="Orange" cc="fr" country="France" operator="Orange S.A." status="Operational" - 03 bands="MVNO" brand="MobiquiThings" cc="fr" country="France" operator="MobiquiThings" status="Operational" - 04 bands="MVNO" brand="Sisteer" cc="fr" country="France" operator="Societe d'ingenierie systeme telecom et reseaux" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Orange" cc="fr" country="France" operator="Orange S.A." status="Operational" + 02 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Orange" cc="fr" country="France" operator="Orange S.A." status="Operational" + 03 bands="MVNO" brand="Sierra Wireless" cc="fr" country="France" operator="Sierra Wireless France" status="Operational" + 04 bands="MVNO" cc="fr" country="France" operator="Netcom Group" status="Operational" 05 bands="Satellite" cc="fr" country="France" operator="Globalstar Europe" status="Operational" - 06 bands="Satellite" cc="fr" country="France" operator="Globalstar Europe" status="Operational" - 07 bands="Satellite" cc="fr" country="France" operator="Globalstar Europe" status="Operational" + 06 bands="Satellite" cc="fr" country="France" operator="Globalstar Europe" status="Not operational" + 07 bands="Satellite" cc="fr" country="France" operator="Globalstar Europe" status="Not operational" 08 bands="MVNO" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" - 09 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 LTE 2600" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" + 09 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" + 10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" 11 bands="UMTS 2100" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" - 12 bands="MVNO" brand="Truphone" cc="fr" country="France" operator="Truphone France" status="Operational" - 13 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" + 12 bands="MVNO" brand="Truphone" cc="fr" country="France" operator="TP France" status="Operational" + 13 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="SFR" cc="fr" country="France" operator="Altice" status="Operational" 14 bands="GSM-R" brand="SNCF Réseau" cc="fr" country="France" operator="SNCF Réseau" status="Operational" - 15 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational" - 16 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational" + 15 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational" + 16 bands="LTE 700 / LTE 1800 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational" 17 brand="LEGOS" cc="fr" country="France" operator="Local Exchange Global Operation Services" 18 bands="MVNO" brand="Voxbone" cc="fr" country="France" operator="Voxbone mobile" status="Not operational" 19 bands="LTE" cc="fr" country="France" operator="Haute-Garonne numérique" status="Operational" - 20 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2600" brand="Bouygues" cc="fr" country="France" operator="Bouygues Telecom" status="Operational" - 21 bands="GSM 900 / GSM 1800 / UMTS 2100 / UMTS 900" brand="Bouygues" cc="fr" country="France" operator="Bouygues Telecom" + 20 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Bouygues" cc="fr" country="France" operator="Bouygues Telecom" status="Operational" + 21 bands="GSM 900 / GSM 1800 / UMTS 2100 / UMTS 900" brand="Bouygues" cc="fr" country="France" operator="Bouygues Telecom" status="Not operational" 22 bands="MVNO" brand="Transatel Mobile" cc="fr" country="France" operator="Transatel" 23 bands="TD-LTE" cc="fr" country="France" operator="Syndicat mixte ouvert Charente Numérique" status="Operational" - 24 bands="MVNO" brand="MobiquiThings" cc="fr" country="France" operator="MobiquiThings" status="Operational" + 24 bands="MVNO" brand="Sierra Wireless" cc="fr" country="France" operator="Sierra Wireless France" status="Operational" 25 bands="MVNO" brand="LycaMobile" cc="fr" country="France" operator="LycaMobile" status="Operational" - 26 bands="MVNO" brand="NRJ Mobile" cc="fr" country="France" operator="Euro-Information Telecom SAS" status="Operational" + 26 bands="MVNO" brand="NRJ Mobile" cc="fr" country="France" operator="Bouygues Telecom - Distribution" status="Operational" 27 bands="MVNO" cc="fr" country="France" operator="Coriolis Telecom" status="Operational" - 28 cc="fr" country="France" operator="Airbus Defence and Space SAS" + 28 bands="FULL MVNO" brand="AIF" cc="fr" country="France" operator="Airmob Infra Full" status="Operational" 29 bands="MVNO" cc="fr" country="France" operator="Cubic télécom France" status="Operational" 30 bands="MVNO" cc="fr" country="France" operator="Syma Mobile" status="Operational" - 31 bands="MVNO" brand="Vectone Mobile" cc="fr" country="France" operator="Mundio Mobile" status="Operational" - 32 brand="Orange" cc="fr" country="France" operator="Orange S.A." + 31 bands="MVNO" brand="Vectone Mobile" cc="fr" country="France" operator="Mundio Mobile" status="Not operational" + 32 brand="Orange" cc="fr" country="France" operator="Orange S.A." status="Not operational" 33 bands="WiMAX" brand="Fibre64" cc="fr" country="France" operator="Département des Pyrénées-Atlantiques" 34 bands="MVNO" cc="fr" country="France" operator="Cellhire France" status="Operational" 35 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational" 36 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="fr" country="France" operator="Free Mobile" status="Operational" 37 cc="fr" country="France" operator="IP Directions" - 50 cc="fr" country="France" operator="EDF" - 70 cc="fr" country="France" operator="Weaccess group" + 38 bands="MVNO" cc="fr" country="France" operator="Lebara France Ltd" status="Operational" + 39 cc="fr" country="France" operator="Netwo" + 500 cc="fr" country="France" operator="EDF" + 50144 cc="fr" country="France" operator="TotalEnergies Global Information Technology services" + 50164 cc="fr" country="France" operator="TotalEnergies Global Information Technology services" + 50168 cc="fr" country="France" operator="Butachimie" + 50169 cc="fr" country="France" operator="Eiffage Énergie Systèmes" + 50176 cc="fr" country="France" operator="Grand port fluvio-maritime de l'axe Seine" + 50194 cc="fr" country="France" operator="Société du Grand Paris" + 50244 cc="fr" country="France" operator="EDF" + 50277 cc="fr" country="France" operator="Celeste" + 50430 cc="fr" country="France" operator="Centre à l'énergie atomique et aux énergies alternatives" + 50484 cc="fr" country="France" operator="Centre à l'énergie atomique et aux énergies alternatives" + 50531 cc="fr" country="France" operator="Alsatis" + 50549 cc="fr" country="France" operator="Thales SIX GTS France" + 50591 cc="fr" country="France" operator="Société du Grand Paris" + 50631 cc="fr" country="France" operator="Airbus" + 50644 cc="fr" country="France" operator="Airbus" + 50692 cc="fr" country="France" operator="Axione" + 50778 cc="fr" country="France" operator="GTS France" + 670 cc="fr" country="France" operator="P1 Security" + 700 cc="fr" country="France" operator="Weaccess group" + 701 cc="fr" country="France" operator="GIP Vendée numérique" + 702 cc="fr" country="France" operator="17-Numerique" + 703 cc="fr" country="France" operator="Nivertel" + 704 cc="fr" country="France" operator="Axione Limousin" + 705 cc="fr" country="France" operator="Hautes-Pyrénées Numérique" + 706 cc="fr" country="France" operator="Tours Métropole Numérique" + 707 cc="fr" country="France" operator="Sartel THD" + 708 cc="fr" country="France" operator="Melis@ territoires ruraux" + 709 cc="fr" country="France" operator="Quimper communauté télécom" + 710 cc="fr" country="France" operator="Losange" status="Not operational" + 711 cc="fr" country="France" operator="Nomotech" + 712 cc="fr" country="France" operator="Syndicat Audois d'énergies et du Numérique" + 713 cc="fr" country="France" operator="SD NUM SAS" + 714 cc="fr" country="France" operator="Département de l'Isère" 86 cc="fr" country="France" operator="SEM@FOR77" - 87 brand="RATP" cc="fr" country="France" operator="Régie autonome des transports parisiens" - 88 bands="GSM 900 / GSM 1800" brand="Bouygues" cc="fr" country="France" operator="Bouygues Telecom" status="Operational" + 87 cc="fr" country="France" operator="Airbus defence and space SAS" + 88 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Bouygues" cc="fr" country="France" operator="Bouygues Telecom" status="Operational" 89 cc="fr" country="France" operator="Hub One" 90 cc="fr" country="France" operator="Images & Réseaux" status="Not operational" 91 cc="fr" country="France" operator="Orange S.A." @@ -136,154 +191,176 @@ 94 cc="fr" country="France" operator="Halys" 95 cc="fr" country="France" operator="Orange S.A." status="Not operational" 96 bands="LTE" cc="fr" country="France" operator="Région Bourgogne-Franche-Comté" status="Operational" - 97 cc="fr" country="France" operator="Thales Communications & Security SAS" + 97 cc="fr" country="France" operator="Thales Communications & Security SAS" status="Not operational" 98 cc="fr" country="France" operator="Société Air France" status="Not operational" - 00-99 212 - 10 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Office des Telephones" cc="mc" country="Monaco" operator="Monaco Telecom" status="Operational" + 10 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Monaco Telecom" cc="mc" country="Monaco" operator="Monaco Telecom" status="Operational" 00-99 213 - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Som, Mobiland" cc="ad" country="Andorra" operator="Andorra Telecom" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G" brand="Som, Mobiland" cc="ad" country="Andorra" operator="Andorra Telecom" status="Operational" 00-99 214 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Vodafone" cc="es" country="Spain" operator="Vodafone Spain" status="Operational" - 02 bands="TD-LTE 2600" brand="Altecom/Fibracat" cc="es" country="Spain" operator="Alta Tecnologia en Comunicacions SL" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Orange" cc="es" country="Spain" operator="Orange Espagne S.A.U" status="Operational" - 04 bands="LTE 1800 / LTE 2100" brand="Yoigo" cc="es" country="Spain" operator="Xfera Moviles SA" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700 / 5G 3500" brand="Vodafone" cc="es" country="Spain" operator="Vodafone Spain" status="Operational" + 02 bands="MVNO" brand="Cube Móvil" cc="es" country="Spain" operator="Olamo Mobile S.L.U." status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="Orange" cc="es" country="Spain" operator="Orange Espagne S.A.U" status="Operational" + 04 bands="LTE 1800 / LTE 2100 / 5G 3500" brand="Yoigo" cc="es" country="Spain" operator="Xfera Moviles SA" status="Operational" 05 bands="MVNO" brand="Movistar" cc="es" country="Spain" operator="Telefónica Móviles España" status="Operational" 06 bands="MVNO" brand="Vodafone" cc="es" country="Spain" operator="Vodafone Spain" status="Operational" - 07 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Movistar" cc="es" country="Spain" operator="Telefónica Móviles España" status="Operational" - 08 bands="MVNO" brand="Euskaltel" cc="es" country="Spain" status="Operational" + 07 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500 / 5G 26000" brand="Movistar" cc="es" country="Spain" operator="Telefónica Móviles España" status="Operational" + 08 bands="MVNO" brand="Euskaltel" cc="es" country="Spain" operator="Euskaltel, S.A." status="Operational" 09 bands="MVNO" brand="Orange" cc="es" country="Spain" operator="Orange Espagne S.A.U" status="Operational" 10 cc="es" country="Spain" operator="ZINNIA TELECOMUNICACIONES, S.L.U." 11 cc="es" country="Spain" operator="TELECOM CASTILLA-LA MANCHA, S.A." - 12 cc="es" country="Spain" operator="SAC CONVERGENT AGGREGATION SERVICES, S.L.U." - 13 bands="MVNO" cc="es" country="Spain" operator="SYMA MOBILE ESPAÑA, S.L." - 14 cc="es" country="Spain" operator="Incotel Servicioz Avanzados SL" status="Not operational" - 15 bands="MVNO" brand="BT" cc="es" country="Spain" operator="BT Group España Compañia de Servicios Globales de Telecomunicaciones S.A.U." status="Not operational" + 12 cc="es" country="Spain" operator="VENUS MOVIL, S.L. UNIPERSONAL" status="Not operational" + 13 bands="MVNO" cc="es" country="Spain" operator="FOOTBALLERISTA MOBILE SPAIN, S.A." + 14 bands="WiMAX" cc="es" country="Spain" operator="AVATEL MÓVIL, S.L.U." status="Operational" + 15 cc="es" country="Spain" operator="PROCONO, S.A." 16 bands="MVNO" brand="TeleCable" cc="es" country="Spain" operator="R Cable y Telecomunicaciones Galicia S.A." status="Operational" - 17 bands="MVNO" brand="Móbil R" cc="es" country="Spain" operator="R Cable y Telecomunicaciones Galicia S.A." status="Operational" + 17 bands="MVNO / 5G" brand="Móbil R" cc="es" country="Spain" operator="R Cable y Telecomunicaciones Galicia S.A." status="Operational" 18 bands="MVNO" brand="ONO" cc="es" country="Spain" operator="Vodafone Spain" status="Not operational" 19 bands="MVNO" brand="Simyo" cc="es" country="Spain" operator="Orange España Virtual Sl." status="Operational" 20 bands="MVNO" brand="Fonyou" cc="es" country="Spain" operator="Fonyou Telecom S.L." status="Not operational" - 21 bands="MVNO" brand="Jazztel" cc="es" country="Spain" operator="Orange Espagne S.A.U." status="Operational" + 21 bands="MVNO" brand="Jazztel" cc="es" country="Spain" operator="Orange Espagne S.A.U." status="Not operational" 22 bands="MVNO" brand="DIGI mobil" cc="es" country="Spain" operator="Best Spain Telecom" status="Operational" 23 cc="es" country="Spain" operator="Xfera Moviles S.A.U." 24 bands="MVNO" cc="es" country="Spain" operator="VODAFONE ESPAÑA, S.A.U." status="Operational" - 25 bands="MVNO" brand="Lycamobile" cc="es" country="Spain" operator="LycaMobile S.L." status="Operational" + 25 cc="es" country="Spain" operator="Xfera Moviles S.A.U." status="Not operational" 26 cc="es" country="Spain" operator="Lleida Networks Serveis Telemátics, SL" 27 bands="MVNO" brand="Truphone" cc="es" country="Spain" operator="SCN Truphone, S.L." status="Operational" - 28 bands="TD-LTE 2600" brand="Murcia4G" cc="es" country="Spain" operator="Consorcio de Telecomunicaciones Avanzadas, S.A." status="Operational" - 29 bands="TD-LTE 3500" cc="es" country="Spain" operator="Xfera Moviles S.A.U." status="Operational" - 30 cc="es" country="Spain" operator="Compatel Limited" + 28 bands="TD-LTE 2600" brand="Murcia4G" cc="es" country="Spain" operator="Consorcio de Telecomunicaciones Avanzadas, S.A." status="Not operational" + 29 bands="TD-LTE 3500" cc="es" country="Spain" operator="Xfera Moviles S.A.U." status="Not operational" + 30 cc="es" country="Spain" operator="Compatel Limited" status="Not operational" 31 cc="es" country="Spain" operator="Red Digital De Telecomunicaciones de las Islas Baleares, S.L." 32 bands="MVNO" brand="Tuenti" cc="es" country="Spain" operator="Telefónica Móviles España" status="Not operational" - 33 bands="WiMAX" cc="es" country="Spain" operator="Xfera Móviles, S.A.U." + 33 bands="WiMAX" cc="es" country="Spain" operator="Xfera Móviles, S.A.U." status="Not operational" 34 bands="LTE 2600" cc="es" country="Spain" operator="Aire Networks del Mediterráneo, S.L.U." status="Operational" 35 bands="MVNO" cc="es" country="Spain" operator="INGENIUM OUTSOURCING SERVICES, S.L." 36 bands="MVNO" cc="es" country="Spain" operator="ALAI OPERADOR DE TELECOMUNICACIONES, S.L" 37 cc="es" country="Spain" operator="Vodafone Spain" 38 cc="es" country="Spain" operator="Telefónica Móviles España, S.A.U." 51 bands="GSM-R" brand="ADIF" cc="es" country="Spain" operator="Administrador de Infraestructuras Ferroviarias" status="Operational" - 00-99 + 700 cc="es" country="Spain" operator="Iberdrola" + 701 cc="es" country="Spain" operator="Endesa" + 702 cc="es" country="Spain" operator="Universidad de Málaga" + 703 cc="es" country="Spain" operator="ENDESA GENERACIÓN, S.A." + 704 cc="es" country="Spain" operator="Amper Sistemas, S.A.U." status="Not operational" + 705 cc="es" country="Spain" operator="Administrador de Infraestructuras Ferroviarias" + 706 cc="es" country="Spain" operator="Gobierno Vasco" + 707 cc="es" country="Spain" operator="Centro de Sistemas y Tecnologías de la Información y las Comunicaciones" + 709 brand="CTTI" cc="es" country="Spain" operator="Centre de Telecomunicacions i Tecnologies de la Informació de la Generalitat de Catalunya" 216 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Telenor Hungary" cc="hu" country="Hungary" operator="Telenor Magyarország Zrt." status="Operational" - 02 bands="LTE 450" cc="hu" country="Hungary" operator="MVM Net Ltd." status="Operational" - 03 bands="LTE 1800 / TD-LTE 3700" brand="DIGI" cc="hu" country="Hungary" operator="DIGI Telecommunication Ltd." status="Operational" - 04 cc="hu" country="Hungary" operator="Invitech ICT Services Ltd." status="Not operational" - 30 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telekom" cc="hu" country="Hungary" operator="Magyar Telekom Plc" status="Operational" - 70 bands="GSM 900 / GSM 1800 / UMTS 2100 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Vodafone" cc="hu" country="Hungary" operator="Vodafone Magyarország Zrt." status="Operational" - 71 bands="MVNO" brand="upc" cc="hu" country="Hungary" operator="Vodafone Magyarország Zrt." status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Yettel Hungary" cc="hu" country="Hungary" operator="Telenor Magyarország Zrt." status="Operational" + 02 bands="LTE 450" cc="hu" country="Hungary" operator="HM EI Zrt." status="Operational" + 03 bands="LTE 1800 / TD-LTE 3700" brand="one" cc="hu" country="Hungary" operator="One Hungary Ltd." status="Operational" + 04 cc="hu" country="Hungary" operator="Pro-M PrCo. Ltd." + 20 brand="Yettel Hungary" cc="hu" country="Hungary" operator="Telenor Magyarország Zrt." + 25 brand="Yettel Hungary" cc="hu" country="Hungary" operator="Telenor Magyarország Zrt." + 30 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Telekom" cc="hu" country="Hungary" operator="Magyar Telekom Plc" status="Operational" + 70 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="one" cc="hu" country="Hungary" operator="One Hungary Ltd." status="Operational" + 71 bands="MVNO" brand="one" cc="hu" country="Hungary" operator="One Hungary Ltd." status="Operational" 99 bands="GSM-R 900" brand="MAV GSM-R" cc="hu" country="Hungary" operator="Magyar Államvasutak" status="Operational" 00-99 218 - 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="HT-ERONET" cc="ba" country="Bosnia and Herzegovina" operator="Public Enterprise Croatian Telecom Ltd." status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="m:tel BiH" cc="ba" country="Bosnia and Herzegovina" operator="RS Telecommunications JSC Banja Luka" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="HT-ERONET" cc="ba" country="Bosnia and Herzegovina" operator="Public Enterprise Croatian Telecom Ltd." status="Operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="m:tel" cc="ba" country="Bosnia and Herzegovina" operator="RS Telecommunications JSC Banja Luka" status="Operational" 90 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="BH Mobile" cc="ba" country="Bosnia and Herzegovina" operator="BH Telecom" status="Operational" 00-99 219 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="T-Mobile" cc="hr" country="Croatia" operator="T-Hrvatski Telekom" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Tele2" cc="hr" country="Croatia" operator="Tele2" status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="A1" cc="hr" country="Croatia" operator="A1 Hrvatska" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 2100 / 5G 3500 / 5G 26000" brand="HT HR" cc="hr" country="Croatia" operator="T-Hrvatski Telekom" status="Operational" + 02 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500" cc="hr" country="Croatia" operator="Telemach" status="Operational" + 03 cc="hr" country="Croatia" operator="ALTAVOX d.o.o." + 04 bands="MVNO" cc="hr" country="Croatia" operator="NTH Mobile d.o.o." + 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 700 / 5G 3500" brand="A1 HR" cc="hr" country="Croatia" operator="A1 Hrvatska" status="Operational" 12 bands="MVNO" cc="hr" country="Croatia" operator="TELE FOCUS d.o.o." + 13 cc="hr" country="Croatia" operator="FENICE TELEKOM GRUPA d.o.o." + 19 cc="hr" country="Croatia" operator="YATECO" + 20 brand="T-Mobile HR" cc="hr" country="Croatia" operator="T-Hrvatski Telekom" + 22 brand="Mobile One" cc="hr" country="Croatia" operator="Mobile One Ltd." + 28 cc="hr" country="Croatia" operator="Lancelot B.V." + 30 cc="hr" country="Croatia" operator="INNOVACOM OÜ" 00-99 220 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Telenor" cc="rs" country="Serbia" operator="Telenor Serbia" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Telenor" cc="rs" country="Serbia" operator="Telenor Montenegro" status="Not operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / TETRA" brand="mts" cc="rs" country="Serbia" operator="Telekom Srbija" status="Operational" - 04 bands="GSM" brand="T-Mobile" cc="rs" country="Serbia" operator="T-Mobile Montenegro LLC" status="Not operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="VIP" cc="rs" country="Serbia" operator="VIP Mobile" status="Operational" - 07 bands="CDMA 450" cc="rs" country="Serbia" operator="Orion Telekom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Yettel" cc="rs" country="Serbia" operator="Yettel Serbia" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="One" cc="rs" country="Serbia" operator="Telenor Montenegro" status="Not operational" + 03 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / TETRA" brand="mt:s" cc="rs" country="Serbia" operator="Telekom Srbija" status="Operational" + 04 bands="GSM" brand="T-Mobile CG" cc="rs" country="Serbia" operator="T-Mobile Montenegro LLC" status="Not operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="A1 SRB" cc="rs" country="Serbia" operator="A1 Srbija d.o.o." status="Operational" + 07 bands="CDMA 450" brand="Orion" cc="rs" country="Serbia" operator="Orion Telekom" status="Not operational" 09 bands="MVNO" brand="Vectone Mobile" cc="rs" country="Serbia" operator="MUNDIO MOBILE d.o.o." status="Not operational" - 11 bands="MVNO" brand="GLOBALTEL" cc="rs" country="Serbia" operator="GLOBALTEL d.o.o." status="Operational" + 11 bands="MVNO" brand="Globaltel" cc="rs" country="Serbia" operator="Telekom Srbija" status="Not operational" + 12 bands="MVNO" brand="STmobile" cc="rs" country="Serbia" operator="Sat-Trakt d.o.o. Bačka Topola" status="Operational" + 20 brand="A1 SRB" cc="rs" country="Serbia" operator="A1 Srbija d.o.o." + 21 bands="GSM-R" cc="rs" country="Serbia" operator="Infrastruktura železnice Srbije a.d." 00-99 221 01 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800" brand="Vala" cc="xk" country="Kosovo" operator="Telecom of Kosovo J.S.C." status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800" brand="IPKO" cc="xk" country="Kosovo" operator="IPKO" status="Operational" - 06 bands="MVNO" brand="Z Mobile" cc="xk" country="Kosovo" operator="Dardaphone.Net LLC" status="Operational" + 02 bands="GSM 900 / UMTS 900 / LTE 1800" brand="IPKO" cc="xk" country="Kosovo" operator="IPKO" status="Operational" + 06 bands="MVNO" brand="Z Mobile" cc="xk" country="Kosovo" operator="Dardaphone.Net LLC" status="Not operational" 07 bands="MVNO" brand="D3 Mobile" cc="xk" country="Kosovo" operator="Dukagjini Telecommunications LLC" status="Operational" 00-99 222 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1500 / LTE 1800 / LTE 2600" brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A" status="Operational" + 01 bands="GSM 900 / LTE 800 / LTE 1500 / LTE 1800 / LTE 2600" brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A." status="Operational" 02 bands="Satellite (Globalstar)" brand="Elsacom" cc="it" country="Italy" status="Not operational" - 04 brand="Intermatica" cc="it" country="Italy" - 05 brand="Telespazio" cc="it" country="Italy" - 06 bands="5G 3500" brand="Vodafone" cc="it" country="Italy" operator="Vodafone Italia S.p.A." status="Operational" - 07 bands="MVNO" brand="Kena Mobile" cc="it" country="Italy" operator="Noverca" status="Operational" + 04 brand="Intermatica" cc="it" country="Italy" operator="Intermatica S.p.A." + 05 brand="Telespazio" cc="it" country="Italy" operator="Telespazio S.p.A." + 06 brand="Vodafone" cc="it" country="Italy" operator="Vodafone Italia S.p.A." status="Operational" + 07 bands="MVNO" brand="Kena Mobile" cc="it" country="Italy" operator="Nòverca S.r.l." status="Operational" 08 bands="MVNO" brand="Fastweb" cc="it" country="Italy" operator="Fastweb S.p.A." status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1500 / LTE 1800 / LTE 2100 / LTE 2600" brand="Vodafone" cc="it" country="Italy" operator="Vodafone Italia S.p.A." status="Operational" - 30 bands="GSM-R 900" brand="RFI" cc="it" country="Italy" operator="Rete Ferroviaria Italiana" status="Operational" - 33 bands="MVNO" brand="Poste Mobile" cc="it" country="Italy" operator="Poste Mobile S.p.A." status="Operational" - 34 bands="MVNO" brand="BT Italia" cc="it" country="Italy" operator="BT Italia" status="Operational" - 35 bands="MVNO" brand="Lycamobile" cc="it" country="Italy" operator="Lycamobile" status="Operational" + 10 bands="GSM 900 / LTE 800 / LTE 1500 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Vodafone" cc="it" country="Italy" operator="Vodafone Italia S.p.A." status="Operational" + 30 bands="GSM-R 900" brand="RFI" cc="it" country="Italy" operator="Ferrovie dello Stato S.p.A." status="Operational" + 33 bands="MVNO" brand="PosteMobile" cc="it" country="Italy" operator="PosteMobile S.p.A." status="Operational" + 34 bands="MVNO" brand="BT Mobile/BT Enìa" cc="it" country="Italy" operator="BT Italia S.p.A." status="Operational" + 35 bands="MVNO" brand="Lycamobile" cc="it" country="Italy" operator="Lycamobile S.r.l." status="Operational" 36 bands="MVNO" brand="Digi Mobil" cc="it" country="Italy" operator="Digi Italy S.r.l." status="Operational" - 37 brand="3 Italia" cc="it" country="Italy" operator="Wind Tre" - 38 bands="TD-LTE 3500" brand="LINKEM" cc="it" country="Italy" operator="Linkem S.p.A." status="Operational" - 39 brand="SMS Italia" cc="it" country="Italy" operator="SMS Italia S.r.l." - 43 bands="5G 3500 / 5G 26000" brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A." status="Operational" - 47 bands="TD-LTE 3500" brand="Tiscali" cc="it" country="Italy" operator="Tiscali S.p.A." status="Operational" + 37 brand="Wind Tre" cc="it" country="Italy" operator="Wind Tre S.p.A." + 38 bands="TD-LTE 3500 / 5G 3500 / 5G 26000" brand="Linkem" cc="it" country="Italy" operator="Linkem S.p.A." status="Operational" + 39 brand="SMS Italia" cc="it" country="Italy" operator="SMS Group" + 41 bands="TD-LTE 3500 / 5G 3500" brand="GO Internet" cc="it" country="Italy" operator="Tiscali S.p.A." status="Operational" + 43 bands="5G 700 / 5G 2100 / 5G 3500 / 5G 26000" brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A." status="Operational" + 47 bands="TD-LTE 3500 / 5G 3500 / 5G 26000" brand="Fastweb" cc="it" country="Italy" operator="Fastweb S.p.A." status="Operational" 48 brand="TIM" cc="it" country="Italy" operator="Telecom Italia S.p.A." 49 bands="MVNO" brand="Vianova" cc="it" country="Italy" operator="Welcome Italia S.p.A." - 50 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Iliad" cc="it" country="Italy" operator="Iliad Italia" status="Operational" - 53 bands="MVNO" brand="COOP Voce" cc="it" country="Italy" operator="COOP Voce" status="Not Operational" - 54 bands="MVNO" brand="Plintron" cc="it" country="Italy" status="Operational" - 56 bands="MVNO" cc="it" country="Italy" operator="Mass Response GMBH" status="Not operational" + 50 bands="UMTS 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="Iliad" cc="it" country="Italy" operator="Iliad Italia S.p.A." status="Operational" + 53 bands="MVNO" brand="CoopVoce" cc="it" country="Italy" operator="Coop Italia S.c.a.r.l." status="Operational" + 54 bands="MVNO" brand="Plintron" cc="it" country="Italy" operator="Plintron Italy S.r.l." status="Operational" + 56 bands="MVNO" brand="spusu" cc="it" country="Italy" operator="MASS Response Service GmbH" status="Operational" 77 bands="UMTS 2100" brand="IPSE 2000" cc="it" country="Italy" status="Not operational" - 88 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Wind" cc="it" country="Italy" operator="Wind Tre" status="Operational" - 98 bands="GSM 900" brand="BLU" cc="it" country="Italy" operator="BLU S.p.A." status="Not operational" - 99 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="3 Italia" cc="it" country="Italy" operator="Wind Tre" status="Operational" + 88 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 1800 / 5G 2600 / 5G 3500" brand="Wind Tre" cc="it" country="Italy" operator="Wind Tre S.p.A." status="Operational" + 98 bands="GSM 900" brand="Blu" cc="it" country="Italy" operator="Blu S.p.A." status="Not operational" + 99 bands="UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Wind Tre" cc="it" country="Italy" operator="Wind Tre S.p.A." status="Operational" 00-99 226 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / TD-LTE 2600 / 5G 3500" brand="Vodafone" cc="ro" country="Romania" operator="Vodafone România" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 2100 / 5G 3500" brand="Vodafone" cc="ro" country="Romania" operator="Vodafone România" status="Operational" 02 bands="CDMA 420" brand="Clicknet Mobile" cc="ro" country="Romania" operator="Telekom Romania" status="Not operational" - 03 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600" brand="Telekom" cc="ro" country="Romania" operator="Telekom Romania" status="Operational" - 04 bands="CDMA 450" brand="Cosmote/Zapp" cc="ro" country="Romania" operator="Telekom Romania" status="Not operational" - 05 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 2100 / TD-LTE 2600 / 5G 3500" brand="Digi.Mobil" cc="ro" country="Romania" operator="RCS&RDS" status="Operational" - 06 bands="UMTS 900 / UMTS 2100" brand="Telekom/Zapp" cc="ro" country="Romania" operator="Telekom Romania" status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Orange" cc="ro" country="Romania" operator="Orange România" status="Operational" + 03 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / 5G 2100" brand="Telekom" cc="ro" country="Romania" operator="Telekom Romania Mobile" status="Operational" + 04 bands="CDMA 450" brand="Cosmote/Zapp" cc="ro" country="Romania" operator="Telekom Romania Mobile" status="Not operational" + 05 bands="GSM 900 / LTE 800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 2600 / 5G 3500" brand="Digi.Mobil" cc="ro" country="Romania" operator="RCS&RDS" status="Operational" + 06 bands="UMTS 900 / UMTS 2100" brand="Telekom" cc="ro" country="Romania" operator="Telekom Romania Mobile" status="Not operational" + 10 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Orange" cc="ro" country="Romania" operator="Orange România" status="Operational" 11 bands="MVNO" cc="ro" country="Romania" operator="Enigma-System" - 15 bands="WiMAX / TD-LTE 2600" brand="Idilis" cc="ro" country="Romania" operator="Idilis" status="Operational" - 16 bands="MVNO" brand="Lycamobile" cc="ro" country="Romania" operator="Lycamobile Romania" status="Operational" - 19 bands="GSM-R 900" brand="CFR" cc="ro" country="Romania" operator="Căile Ferate Române" status="Testing" + 15 bands="WiMAX / TD-LTE 2600" brand="Idilis" cc="ro" country="Romania" operator="Idilis" status="Not operational" + 16 bands="MVNO" brand="Lycamobile" cc="ro" country="Romania" operator="Lycamobile Romania" status="Not operational" + 19 bands="GSM-R 900" brand="CFR" cc="ro" country="Romania" operator="Căile Ferate Române" status="Operational" 00-99 228 - 01 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Swisscom" cc="ch" country="Switzerland" operator="Swisscom AG" status="Operational" - 02 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Sunrise" cc="ch" country="Switzerland" operator="Sunrise Communications AG" status="Operational" - 03 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Salt" cc="ch" country="Switzerland" operator="Salt Mobile SA" status="Operational" + 01 bands="UMTS 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Swisscom" cc="ch" country="Switzerland" operator="Swisscom AG" status="Operational" + 02 bands="LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="Sunrise" cc="ch" country="Switzerland" operator="Sunrise UPC" status="Operational" + 03 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="Salt" cc="ch" country="Switzerland" operator="Salt Mobile SA" status="Operational" 05 cc="ch" country="Switzerland" operator="Comfone AG" status="Not operational" 06 bands="GSM-R 900" brand="SBB-CFF-FFS" cc="ch" country="Switzerland" operator="SBB AG" status="Operational" 07 bands="GSM 1800" brand="IN&Phone" cc="ch" country="Switzerland" operator="IN&Phone SA" status="Not operational" - 08 bands="GSM 1800" brand="Tele4u" cc="ch" country="Switzerland" operator="TelCommunication Services AG" status="Operational" + 08 bands="GSM 1800" brand="Tele4u" cc="ch" country="Switzerland" operator="Sunrise Communications AG" status="Not operational" 09 cc="ch" country="Switzerland" operator="Comfone AG" - 10 cc="ch" country="Switzerland" operator="Stadt Polizei Zürich" status="Operational" + 10 cc="ch" country="Switzerland" operator="Stadt Polizei Zürich" status="Not operational" 11 cc="ch" country="Switzerland" operator="Swisscom Broadcast AG" 12 brand="Sunrise" cc="ch" country="Switzerland" operator="Sunrise Communications AG" status="Not operational" + 13 bands="FRMCS 900 / 1900" brand="SBB-CFF-FFS" cc="ch" country="Switzerland" operator="SBB AG" status="Not operational" 50 bands="UMTS 2100" cc="ch" country="Switzerland" operator="3G Mobile AG" status="Not operational" 51 bands="MVNO" cc="ch" country="Switzerland" operator="relario AG" status="Operational" 52 brand="Barablu" cc="ch" country="Switzerland" operator="Barablu" status="Not operational" - 53 bands="MVNO" brand="upc cablecom" cc="ch" country="Switzerland" operator="UPC Schweiz GmbH" status="Operational" + 53 bands="MVNO" brand="upc cablecom" cc="ch" country="Switzerland" operator="Sunrise UPC GmbH" status="Operational" 54 bands="MVNO" brand="Lycamobile" cc="ch" country="Switzerland" operator="Lycamobile AG" status="Operational" - 55 cc="ch" country="Switzerland" operator="WeMobile SA" + 55 cc="ch" country="Switzerland" operator="Komodos SA" status="Not operational" 56 cc="ch" country="Switzerland" operator="SMSRelay AG" status="Not operational" 57 cc="ch" country="Switzerland" operator="Mitto AG" 58 bands="MVNO" brand="beeone" cc="ch" country="Switzerland" operator="Beeone Communications SA" status="Operational" @@ -293,144 +370,172 @@ 62 bands="MVNO" cc="ch" country="Switzerland" operator="Telecom26 AG" status="Operational" 63 brand="FTS" cc="ch" country="Switzerland" operator="Fink Telecom Services" status="Operational" 64 bands="MVNO" cc="ch" country="Switzerland" operator="Nth AG" status="Operational" + 65 bands="MVNO" cc="ch" country="Switzerland" operator="Nexphone AG" status="Operational" + 66 cc="ch" country="Switzerland" operator="Inovia Services SA" status="Not operational" + 67 cc="ch" country="Switzerland" operator="Datatrade Managed AG" + 68 cc="ch" country="Switzerland" operator="Intellico AG" + 69 cc="ch" country="Switzerland" operator="MTEL Schweiz GmbH" + 70 cc="ch" country="Switzerland" operator="Tismi BV" + 71 bands="MVNO" brand="spusu" cc="ch" country="Switzerland" operator="MASS Response Service GmbH" + 72 brand="SolNet" cc="ch" country="Switzerland" operator="BSE Software GmbH" + 73 bands="MVNO" brand="iWay" cc="ch" country="Switzerland" operator="iWay AG" status="Operational" + 74 bands="MVNO" brand="net+" cc="ch" country="Switzerland" operator="netplus.ch SA" status="Operational" + 80 cc="ch" country="Switzerland" operator="Phonegroup SA" + 98 cc="ch" country="Switzerland" operator="Etablissement Cantonal d'Assurance" 99 cc="ch" country="Switzerland" operator="Swisscom Broadcast AG" status="Not operational" 00-99 230 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="T-Mobile" cc="cz" country="Czech Republic" operator="T-Mobile Czech Republic" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="O2" cc="cz" country="Czech Republic" operator="O2 Czech Republic" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Vodafone" cc="cz" country="Czech Republic" operator="Vodafone Czech Republic" status="Operational" - 04 bands="MVNO / LTE 410" cc="cz" country="Czech Republic" operator="Nordic Telecom s.r.o." status="Operational" - 05 bands="TD-LTE 3700" cc="cz" country="Czech Republic" operator="PODA a.s." - 06 bands="TD-LTE 3700" cc="cz" country="Czech Republic" operator="Nordic Telecom 5G a.s." status="Operational" - 07 bands="MVNO" cc="cz" country="Czech Republic" operator="ASTELNET, s.r.o." status="Not operational" + 01 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100" brand="T-Mobile" cc="cz" country="Czech Republic" operator="T-Mobile Czech Republic" status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / TD-LTE 2600 / 5G 1800 / 5G 2100 / 5G 3700" brand="O2" cc="cz" country="Czech Republic" operator="O2 Czech Republic" status="Operational" + 03 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500" brand="Vodafone" cc="cz" country="Czech Republic" operator="Vodafone Czech Republic" status="Operational" + 04 bands="MVNO / LTE 410" cc="cz" country="Czech Republic" operator="Nordic Telecom Regional s.r.o." status="Operational" + 05 bands="TD-LTE 3700" cc="cz" country="Czech Republic" operator="PODA a.s." status="Operational" + 06 bands="TD-LTE 3700 / 5G 3500" cc="cz" country="Czech Republic" operator="Nordic Telecom 5G a.s." status="Operational" + 07 bands="LTE 800" brand="T-Mobile" cc="cz" country="Czech Republic" operator="T-Mobile Czech Republic" status="Operational" 08 cc="cz" country="Czech Republic" operator="Compatel s.r.o." - 09 bands="MVNO" brand="Vectone Mobile" cc="cz" country="Czech Republic" operator="Mundio Distribution Czech Republic s.r.o." status="Not operational" + 09 bands="MVNO" brand="Unimobile" cc="cz" country="Czech Republic" operator="Uniphone, s.r.o." + 10 cc="cz" country="Czech Republic" operator="DataCell s.r.o." + 11 bands="5G 700 / 5G 3500" cc="cz" country="Czech Republic" operator="incrate s.r.o." status="Not operational" + 22 brand="O2" cc="cz" country="Czech Republic" operator="O2 Czech Republic" + 53 cc="cz" country="Czech Republic" operator="Škoda Auto a.s." 98 bands="GSM-R 900" cc="cz" country="Czech Republic" operator="Správa železniční dopravní cesty, s.o." status="Operational" 99 bands="GSM 1800" brand="Vodafone" cc="cz" country="Czech Republic" operator="Vodafone Czech Republic" status="Not operational" 00-99 231 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="Orange" cc="sk" country="Slovakia" operator="Orange Slovensko" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / TD-LTE 3700" brand="Telekom" cc="sk" country="Slovakia" operator="Slovak Telekom" status="Operational" - 03 bands="LTE 1800 / TD-LTE 3500 / TD-LTE 3700" brand="4ka" cc="sk" country="Slovakia" operator="SWAN Mobile, a.s." status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Telekom" cc="sk" country="Slovakia" operator="Slovak Telekom" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="Orange" cc="sk" country="Slovakia" operator="Orange Slovensko" status="Operational" - 06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / TD-LTE 3500 / TD-LTE 3700" brand="O2" cc="sk" country="Slovakia" operator="O2 Slovakia" status="Operational" - 07 cc="sk" country="Slovakia" operator="Towercom, a. s." status="Not operational" + 01 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Orange" cc="sk" country="Slovakia" operator="Orange Slovensko" status="Operational" + 02 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 3700 / 5G 2100" brand="Telekom" cc="sk" country="Slovakia" operator="Slovak Telekom" status="Operational" + 03 bands="LTE 1800 / TD-LTE 3500 / TD-LTE 3700 / 5G 3500" brand="4ka" cc="sk" country="Slovakia" operator="SWAN Mobile, a.s." status="Operational" + 04 bands="GSM 900" brand="Telekom" cc="sk" country="Slovakia" operator="Slovak Telekom" status="Operational" + 05 bands="GSM 900" brand="Orange" cc="sk" country="Slovakia" operator="Orange Slovensko" status="Operational" + 06 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / TD-LTE 3500 / TD-LTE 3700 / 5G 3500" brand="O2" cc="sk" country="Slovakia" operator="O2 Slovakia" status="Operational" + 07 brand="Orange" cc="sk" country="Slovakia" operator="Orange Slovensko" 08 bands="MVNO" brand="Unimobile" cc="sk" country="Slovakia" operator="Uniphone, s.r.o." status="Testing" 09 cc="sk" country="Slovakia" operator="DSI DATA, a.s." - 10 cc="sk" country="Slovakia" operator="HMZ RÁDIOKOMUNIKÁCIE, spol. s r.o." + 10 cc="sk" country="Slovakia" operator="HMZ RÁDIOKOMUNIKÁCIE, spol. s r.o." status="Not operational" + 50 brand="Telekom" cc="sk" country="Slovakia" operator="Slovak Telekom" + 51 cc="sk" country="Slovakia" operator="CETIN Networks, s. r. o." status="Operational" 99 bands="GSM-R" brand="ŽSR" cc="sk" country="Slovakia" operator="Železnice Slovenskej Republiky" status="Operational" 00-99 232 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="A1.net" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="A1.net" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational" 02 cc="at" country="Austria" operator="A1 Telekom Austria" status="Reserved" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" status="Operational" + 03 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" status="Operational" 04 brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" - 05 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="3" cc="at" country="Austria" operator="Hutchison Drei Austria" status="Operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="3" cc="at" country="Austria" operator="Hutchison Drei Austria" status="Operational" 06 brand="Orange AT" cc="at" country="Austria" operator="Orange Austria GmbH" status="Not operational" - 07 bands="MVNO" brand="Magenta-T" cc="at" country="Austria" operator="T-Mobile Austria" status="Operational" + 07 bands="MVNO" brand="Hofer Telekom" cc="at" country="Austria" operator="T-Mobile Austria" status="Operational" 08 bands="MVNO" brand="Lycamobile" cc="at" country="Austria" operator="Lycamobile Austria" status="Operational" 09 bands="MVNO" brand="Tele2Mobil" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational" - 10 bands="UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="3" cc="at" country="Austria" operator="Hutchison Drei Austria" status="Operational" + 10 bands="UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="3" cc="at" country="Austria" operator="Hutchison Drei Austria" status="Operational" 11 bands="MVNO" brand="bob" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational" 12 bands="MVNO" brand="yesss!" cc="at" country="Austria" operator="A1 Telekom Austria" status="Operational" 13 bands="MVNO" brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" status="Operational" 14 cc="at" country="Austria" operator="Hutchison Drei Austria" status="Reserved" - 15 bands="MVNO" brand="Vectone Mobile" cc="at" country="Austria" operator="Mundio Mobile Austria" status="Operational" + 15 bands="MVNO" brand="Vectone Mobile" cc="at" country="Austria" operator="Mundio Mobile Austria" status="Not operational" 16 cc="at" country="Austria" operator="Hutchison Drei Austria" status="Reserved" - 17 cc="at" country="Austria" operator="MASS Response Service GmbH" + 17 bands="MVNO" brand="spusu" cc="at" country="Austria" operator="MASS Response Service GmbH" status="Operational" 18 bands="MVNO" cc="at" country="Austria" operator="smartspace GmbH" 19 cc="at" country="Austria" operator="Hutchison Drei Austria" 20 bands="MVNO" brand="m:tel" cc="at" country="Austria" operator="MTEL Austrija GmbH" status="Operational" 21 cc="at" country="Austria" operator="Salzburg AG für Energie, Verkehr und Telekommunikation" 22 bands="MVNO" cc="at" country="Austria" operator="Plintron Austria Limited" - 23 brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" status="Not operational" - 24 cc="at" country="Austria" operator="Smartel Services GmbH" + 23 brand="Magenta" cc="at" country="Austria" operator="T-Mobile Austria GmbH" + 24 cc="at" country="Austria" operator="Smartel Services GmbH" status="Not operational" 25 cc="at" country="Austria" operator="Holding Graz Kommunale Dienstleistungen GmbH" + 26 cc="at" country="Austria" operator="LIWEST Kabelmedien GmbH" + 27 cc="at" country="Austria" operator="TISMI B.V." + 28 cc="at" country="Austria" operator="MASS Response Service GmbH" 91 bands="GSM-R" brand="GSM-R A" cc="at" country="Austria" operator="ÖBB" status="Operational" 92 bands="CDMA450 / LTE450" brand="ArgoNET" cc="at" country="Austria" operator="ArgoNET GmbH" status="Operational" 00-99 234 00 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="BT" cc="gb" country="United Kingdom" operator="BT Group" status="Operational" 01 bands="MVNO" brand="Vectone Mobile" cc="gb" country="United Kingdom" operator="Mundio Mobile Limited" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 3500" brand="O2 (UK)" cc="gb" country="United Kingdom" operator="Telefónica Europe" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Airtel-Vodafone" cc="gb" country="United Kingdom" operator="Jersey Airtel Ltd" status="Operational" - 04 bands="GSM 1800" brand="FMS Solutions Ltd" cc="gb" country="United Kingdom" operator="FMS Solutions Ltd" status="Reserved" - 05 cc="gb" country="United Kingdom" operator="COLT Mobile Telecommunications Limited" status="Not operational" + 02 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 700 / 5G 900 / TD-5G 2600 / 5G 3500" brand="O2 (UK)" cc="gb" country="United Kingdom" operator="Telefónica Europe" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Airtel-Vodafone" cc="gb" country="United Kingdom" operator="Jersey Airtel Ltd" status="Operational" + 04 cc="gb" country="United Kingdom" operator="Wave Mobile Ltd" + 05 cc="gb" country="United Kingdom" operator="Spitfire Network Services Limited" 06 cc="gb" country="United Kingdom" operator="Internet Computer Bureau Limited" status="Not operational" 07 bands="GSM 1800" brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone" status="Not operational" 08 bands="MVNO" brand="BT OnePhone" cc="gb" country="United Kingdom" operator="BT OnePhone (UK) Ltd" status="Operational" 09 cc="gb" country="United Kingdom" operator="Tismi BV" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 3500" brand="O2 (UK)" cc="gb" country="United Kingdom" operator="Telefónica Europe" status="Operational" - 11 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 3500" brand="O2 (UK)" cc="gb" country="United Kingdom" operator="Telefónica Europe" status="Operational" + 10 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 700 / 5G 900 / TD-5G 2600 / 5G 3500" brand="O2 (UK)" cc="gb" country="United Kingdom" operator="Telefónica Europe" status="Operational" + 11 bands="GSM 900 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 700 / 5G 900 / TD-5G 2600 / 5G 3500" brand="O2 (UK)" cc="gb" country="United Kingdom" operator="Telefónica Europe" status="Operational" 12 bands="GSM-R" brand="Railtrack" cc="gb" country="United Kingdom" operator="Network Rail Infrastructure Ltd" status="Operational" 13 bands="GSM-R" brand="Railtrack" cc="gb" country="United Kingdom" operator="Network Rail Infrastructure Ltd" status="Operational" 14 bands="GSM 1800" cc="gb" country="United Kingdom" operator="Link Mobility UK Ltd" status="Operational" - 15 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 3500" brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone" status="Operational" + 15 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 900 / 5G 2100 / 5G 3500" brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone" status="Operational" 16 bands="MVNO" brand="Talk Talk" cc="gb" country="United Kingdom" operator="TalkTalk Communications Limited" status="Operational" 17 cc="gb" country="United Kingdom" operator="FleXtel Limited" status="Not operational" - 18 bands="MVNO" brand="Cloud9" cc="gb" country="United Kingdom" operator="Cloud9" status="Operational" - 19 bands="GSM 1800" brand="Private Mobile Networks PMN" cc="gb" country="United Kingdom" operator="Teleware plc" status="Operational" - 20 bands="UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 3500" brand="3" cc="gb" country="United Kingdom" operator="Hutchison 3G UK Ltd" status="Operational" + 18 bands="MVNO" brand="Cloud9" cc="gb" country="United Kingdom" operator="Wireless Logic Limited" status="Operational" + 19 bands="GSM 1800" brand="PMN" cc="gb" country="United Kingdom" operator="Teleware plc" status="Operational" + 20 bands="LTE 800 / LTE 1500 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2100 / 5G 3500" brand="3" cc="gb" country="United Kingdom" operator="Three UK" status="Operational" 21 cc="gb" country="United Kingdom" operator="LogicStar Ltd" status="Not operational" 22 cc="gb" country="United Kingdom" operator="Telesign Mobile Limited" 23 cc="gb" country="United Kingdom" operator="Icron Network Limited" 24 bands="MVNO" brand="Greenfone" cc="gb" country="United Kingdom" operator="Stour Marine Limited" status="Operational" 25 bands="MVNO" brand="Truphone" cc="gb" country="United Kingdom" operator="Truphone" status="Operational" 26 bands="MVNO" brand="Lycamobile" cc="gb" country="United Kingdom" operator="Lycamobile UK Limited" status="Operational" - 27 bands="MVNE" cc="gb" country="United Kingdom" operator="Teleena UK Limited" status="Operational" + 27 bands="MVNO" brand="Teleena" cc="gb" country="United Kingdom" operator="Tata Communications Move UK Ltd" status="Operational" 28 bands="MVNO" cc="gb" country="United Kingdom" operator="Marathon Telecom Limited" status="Operational" 29 brand="aql" cc="gb" country="United Kingdom" operator="(aq) Limited" - 30 bands="GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="T-Mobile UK" cc="gb" country="United Kingdom" operator="EE" status="Operational" - 31 bands="GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="T-Mobile UK" cc="gb" country="United Kingdom" operator="EE" status="Allocated" - 32 bands="GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="T-Mobile UK" cc="gb" country="United Kingdom" operator="EE" status="Allocated" - 33 bands="GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Orange" cc="gb" country="United Kingdom" operator="EE" status="Operational" - 34 bands="GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Orange" cc="gb" country="United Kingdom" operator="EE" status="Operational" + 30 bands="GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / 5G 3500" brand="EE" cc="gb" country="United Kingdom" operator="EE Limited" status="Operational" + 31 bands="GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / 5G 3500" brand="EE" cc="gb" country="United Kingdom" operator="EE Limited" status="Allocated" + 32 bands="GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / 5G 3500" brand="EE" cc="gb" country="United Kingdom" operator="EE Limited" status="Allocated" + 33 bands="GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / 5G 3500" brand="EE" cc="gb" country="United Kingdom" operator="EE Limited" status="Operational" + 34 bands="GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / 5G 3500" brand="EE" cc="gb" country="United Kingdom" operator="EE Limited" status="Operational" 35 cc="gb" country="United Kingdom" operator="JSC Ingenium (UK) Limited" status="Not operational" - 36 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100" brand="Sure Mobile" cc="gb" country="United Kingdom" operator="Sure Isle of Man Ltd." status="Operational" + 36 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100" brand="Sure Mobile" cc="gb" country="United Kingdom" operator="Sure Isle of Man Ltd." status="Operational" 37 cc="gb" country="United Kingdom" operator="Synectiv Ltd" 38 brand="Virgin Mobile" cc="gb" country="United Kingdom" operator="Virgin Media" 39 cc="gb" country="United Kingdom" operator="Gamma Telecom Holdings Ltd." + 40 bands="MVNO" brand="spusu" cc="gb" country="United Kingdom" operator="MASS Response Service GmbH" status="Operational" 50 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="JT" cc="gb" country="United Kingdom" operator="JT Group Limited" status="Operational" 51 bands="TD-LTE 3500 / TD-LTE 3700" brand="Relish" cc="gb" country="United Kingdom" operator="UK Broadband Limited" status="Operational" 52 cc="gb" country="United Kingdom" operator="Shyam Telecom UK Ltd" - 53 bands="MVNO" cc="gb" country="United Kingdom" operator="Limitless Mobile Ltd" status="Operational" + 53 bands="MVNO" brand="Tango Extend" cc="gb" country="United Kingdom" operator="Tango Networks UK Ltd" status="Operational" 54 bands="MVNO" brand="iD Mobile" cc="gb" country="United Kingdom" operator="The Carphone Warehouse Limited" status="Operational" - 55 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Sure Mobile" cc="gb" country="United Kingdom" operator="Sure (Guernsey) Limited" status="Operational" - 56 cc="gb" country="United Kingdom" operator="CESG" - 57 cc="gb" country="United Kingdom" operator="Sky UK Limited" + 55 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Sure Mobile" cc="gb" country="United Kingdom" operator="Sure (Guernsey) Limited" status="Operational" + 56 cc="gb" country="United Kingdom" operator="National Cyber Security Centre" + 57 brand="Sky" cc="gb" country="United Kingdom" operator="Sky UK Limited" 58 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Pronto GSM" cc="gb" country="United Kingdom" operator="Manx Telecom" status="Operational" - 59 bands="MVNO" cc="gb" country="United Kingdom" operator="Limitless Mobile Ltd" status="Operational" + 59 bands="MVNO" cc="gb" country="United Kingdom" operator="Limitless Mobile Ltd" status="Not operational" 70 cc="gb" country="United Kingdom" operator="AMSUK Ltd." status="Not operational" 71 cc="gb" country="United Kingdom" operator="Home Office" 72 bands="MVNO" brand="Hanhaa Mobile" cc="gb" country="United Kingdom" operator="Hanhaa Limited" status="Operational" 73 bands="TD-LTE 3500" cc="gb" country="United Kingdom" operator="Bluewave Communications Ltd" status="Operational" - 74 cc="gb" country="United Kingdom" operator="Pareteum Europe B.V." + 74 bands="MVNO" cc="gb" country="United Kingdom" operator="Circles MVNE International B.V." + 75 cc="gb" country="United Kingdom" operator="MASS Response Service GmbH" status="Not operational" 76 bands="GSM 900 / GSM 1800" brand="BT" cc="gb" country="United Kingdom" operator="BT Group" status="Operational" + 77 brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone United Kingdom" 78 bands="TETRA" brand="Airwave" cc="gb" country="United Kingdom" operator="Airwave Solutions Ltd" status="Operational" - 86 cc="gb" country="United Kingdom" operator="EE" + 79 brand="UKTL" cc="gb" country="United Kingdom" operator="UK Telecoms Lab" + 86 cc="gb" country="United Kingdom" operator="EE Limited" + 87 bands="MVNO" cc="gb" country="United Kingdom" operator="Lebara" status="Operational" + 88 bands="GSM 1800/LTE 1800/ LTE 2600/ 5G 2600/ 5G 3800" brand="telet" cc="gb" country="United Kingdom" operator="Telet Research (N.I.) Limited" status="Operational" 00-99 235 - 01 cc="gb" country="United Kingdom" operator="EE" - 02 cc="gb" country="United Kingdom" operator="EE" + 01 brand="EE" cc="gb" country="United Kingdom" operator="EE Limited" + 02 brand="EE" cc="gb" country="United Kingdom" operator="EE Limited" 03 brand="Relish" cc="gb" country="United Kingdom" operator="UK Broadband Limited" - 04 bands="various" cc="gb" country="United Kingdom" operator="University of Strathclyde" status="4G and 5G pilot networks" - 06 bands="various" cc="gb" country="United Kingdom" operator="University of Strathclyde" status="4G and 5G pilot networks" - 07 bands="various" cc="gb" country="United Kingdom" operator="University of Strathclyde" status="4G and 5G pilot networks" + 04 bands="5G" cc="gb" country="United Kingdom" operator="University of Strathclyde" + 06 bands="5G" cc="gb" country="United Kingdom" operator="University of Strathclyde" + 07 bands="5G" cc="gb" country="United Kingdom" operator="University of Strathclyde" + 08 cc="gb" country="United Kingdom" operator="Spitfire Network Services Limited" status="Not operational" 77 brand="BT" cc="gb" country="United Kingdom" operator="BT Group" - 88 bands="LTE" cc="gb" country="United Kingdom" operator="Telet Research (N.I.) Limited" status="Not operational" + 88 bands="LTE / 5G" brand="telet" cc="gb" country="United Kingdom" operator="Telet Research (N.I.) Limited" status="Operational" 91 brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone United Kingdom" 92 brand="Vodafone UK" cc="gb" country="United Kingdom" operator="Vodafone United Kingdom" status="Not operational" 94 cc="gb" country="United Kingdom" operator="Hutchison 3G UK Ltd" 95 bands="GSM-R" cc="gb" country="United Kingdom" operator="Network Rail Infrastructure Limited" status="Test Network" 00-99 238 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="TDC" cc="dk" country="Denmark" operator="TDC A/S" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Telenor" cc="dk" country="Denmark" operator="Telenor Denmark" status="Operational" - 03 cc="dk" country="Denmark" operator="Syniverse Technologies" - 04 cc="dk" country="Denmark" operator="NextGen Mobile Ltd T/A CardBoardFish" status="Not operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="TDC" cc="dk" country="Denmark" operator="TDC A/S" status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Telenor" cc="dk" country="Denmark" operator="Telenor Denmark" status="Operational" + 03 cc="dk" country="Denmark" operator="Syniverse Technologies" status="Not operational" + 04 cc="dk" country="Denmark" operator="Nexcon.io ApS" 05 bands="TETRA" brand="TetraNet" cc="dk" country="Denmark" operator="Dansk Beredskabskommunikation A/S" status="Operational" - 06 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="3" cc="dk" country="Denmark" operator="Hi3G Denmark ApS" status="Operational" + 06 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="3" cc="dk" country="Denmark" operator="Hi3G Denmark ApS" status="Operational" 07 bands="MVNO" brand="Vectone Mobile" cc="dk" country="Denmark" operator="Mundio Mobile (Denmark) Limited" status="Not operational" 08 bands="MVNO" brand="Voxbone" cc="dk" country="Denmark" operator="Voxbone mobile" status="Operational" 09 bands="TETRA" brand="SINE" cc="dk" country="Denmark" operator="Dansk Beredskabskommunikation A/S" status="Operational" @@ -443,51 +548,54 @@ 16 cc="dk" country="Denmark" operator="Tismi B.V." 17 cc="dk" country="Denmark" operator="Gotanet AB" 18 cc="dk" country="Denmark" operator="Cubic Telecom" - 20 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Telia" cc="dk" country="Denmark" operator="Telia" status="Operational" + 19 cc="dk" country="Denmark" operator="YATECO OÜ" + 20 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600" brand="Telia" cc="dk" country="Denmark" operator="Telia" status="Operational" 23 bands="GSM-R" brand="GSM-R DK" cc="dk" country="Denmark" operator="Banedanmark" status="Operational" 25 bands="MVNO" brand="Viahub" cc="dk" country="Denmark" operator="SMS Provider Corp." 28 cc="dk" country="Denmark" operator="LINK Mobile A/S" 30 cc="dk" country="Denmark" operator="Interactive digital media GmbH" 40 cc="dk" country="Denmark" operator="Ericsson Danmark A/S" status="Not operational" - 42 cc="dk" country="Denmark" operator="Greenwave Mobile IoT ApS" + 42 bands="MVNO" brand="Wavely" cc="dk" country="Denmark" operator="Greenwave Mobile IoT ApS" status="Operational" 43 cc="dk" country="Denmark" operator="MobiWeb Limited" status="Not operational" - 66 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" cc="dk" country="Denmark" operator="TT-Netværket P/S" status="Operational" - 73 cc="dk" country="Denmark" operator="Onomondo ApS" - 77 bands="GSM 900 / GSM 1800" brand="Telenor" cc="dk" country="Denmark" operator="Telenor Denmark" status="Operational" + 66 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / 5G 1800 / 5G 3500" cc="dk" country="Denmark" operator="TT-Netværket P/S" status="Operational" + 73 bands="MVNO" brand="Onomondo" cc="dk" country="Denmark" operator="Onomondo ApS" status="Operational" + 77 bands="GSM 900 / GSM 1800" brand="Telenor" cc="dk" country="Denmark" operator="Telenor Denmark" status="Not operational" + 88 cc="dk" country="Denmark" operator="Cobira ApS" + 95 cc="dk" country="Denmark" operator="Dansk Beredskabskommunikation A/S" 96 brand="Telia" cc="dk" country="Denmark" operator="Telia Danmark" 00-99 240 01 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700" brand="Telia" cc="se" country="Sweden" operator="Telia Sverige AB" status="Operational" 02 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600 / TD-LTE 2600 / TD-5G 2600" brand="3" cc="se" country="Sweden" operator="HI3G Access AB" status="Operational" - 03 bands="LTE 450" brand="Net 1" cc="se" country="Sweden" operator="Teracom Mobil AB" status="Operational" + 03 bands="LTE 450" brand="Net 1" cc="se" country="Sweden" operator="Teracom AB" status="Operational" 04 bands="UMTS 2100" brand="SWEDEN" cc="se" country="Sweden" operator="3G Infrastructure Services AB" status="Operational" 05 bands="UMTS 2100" brand="Sweden 3G" cc="se" country="Sweden" operator="Svenska UMTS-Nät AB" status="Operational" 06 bands="UMTS 2100" brand="Telenor" cc="se" country="Sweden" operator="Telenor Sverige AB" status="Operational" - 07 bands="UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G" brand="Tele2" cc="se" country="Sweden" operator="Tele2 Sverige AB" status="Operational" + 07 bands="UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Tele2" cc="se" country="Sweden" operator="Tele2 Sverige AB" status="Operational" 08 bands="GSM 900 / GSM 1800" brand="Telenor" cc="se" country="Sweden" operator="Telenor Sverige AB" status="Not operational" 09 brand="Com4" cc="se" country="Sweden" operator="Communication for Devices in Sweden AB" 10 brand="Spring Mobil" cc="se" country="Sweden" operator="Tele2 Sverige AB" status="Operational" - 11 cc="se" country="Sweden" operator="ComHem AB" + 11 bands="MVNO" brand="GlobalCell" cc="se" country="Sweden" operator="GlobalCell EU Ltd." status="Operational" 12 bands="MVNO" brand="Lycamobile" cc="se" country="Sweden" operator="Lycamobile Sweden Limited" status="Operational" - 13 cc="se" country="Sweden" operator="A3 Företag AB" - 14 cc="se" country="Sweden" operator="Tele2 Business AB" + 13 cc="se" country="Sweden" operator="Bredband2 Allmänna IT AB" + 14 cc="se" country="Sweden" operator="Tele2 Sverige AB" 15 cc="se" country="Sweden" operator="Sierra Wireless Sweden AB" 16 bands="GSM" cc="se" country="Sweden" operator="42 Telecom AB" status="Operational" 17 bands="MVNO" brand="Gotanet" cc="se" country="Sweden" operator="Götalandsnätet AB" status="Operational" 18 cc="se" country="Sweden" operator="Generic Mobile Systems Sweden AB" - 19 bands="MVNO" brand="Vectone Mobile" cc="se" country="Sweden" operator="Mundio Mobile (Sweden) Limited" status="Operational" + 19 bands="MVNO" brand="Vectone Mobile" cc="se" country="Sweden" operator="Mundio Mobile (Sweden) Limited" status="Not operational" 20 bands="MVNO" cc="se" country="Sweden" operator="Sierra Wireless Messaging AB" status="Operational" 21 bands="GSM-R 900" brand="MobiSir" cc="se" country="Sweden" operator="Trafikverket ICT" status="Operational" - 22 cc="se" country="Sweden" operator="EuTel AB" + 22 cc="se" country="Sweden" operator="Mediafon Carrier Services UAB" 23 cc="se" country="Sweden" operator="Infobip Limited (UK)" status="Not operational" - 24 bands="GSM 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Sweden 2G" cc="se" country="Sweden" operator="Net4Mobility HB" status="Operational" + 24 bands="GSM 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Sweden 2G" cc="se" country="Sweden" operator="Net4Mobility HB" status="Operational" 25 cc="se" country="Sweden" operator="Monty UK Global Ltd" 26 cc="se" country="Sweden" operator="Twilio Sweden AB" 27 bands="MVNO" cc="se" country="Sweden" operator="GlobeTouch AB" status="Operational" - 28 cc="se" country="Sweden" operator="LINK Mobile A/S" - 29 cc="se" country="Sweden" operator="Mercury International Carrier Services" - 30 cc="se" country="Sweden" operator="NextGen Mobile Ltd." status="Not operational" - 31 cc="se" country="Sweden" operator="RebTel Network AB" + 28 cc="se" country="Sweden" operator="LINK Mobile A/S" status="Not operational" + 29 cc="se" country="Sweden" operator="Mercury International Carrier Services AB" + 30 cc="se" country="Sweden" operator="Teracom AB" + 31 cc="se" country="Sweden" operator="RebTel Network AB" status="Not operational" 32 cc="se" country="Sweden" operator="Compatel Limited" 33 cc="se" country="Sweden" operator="Mobile Arts AB" 34 cc="se" country="Sweden" operator="Trafikverket centralfunktion IT" @@ -495,154 +603,190 @@ 36 cc="se" country="Sweden" operator="interactive digital media GmbH" 37 cc="se" country="Sweden" operator="Sinch Sweden AB" 38 bands="MVNO" brand="Voxbone" cc="se" country="Sweden" operator="Voxbone mobile" status="Operational" - 39 cc="se" country="Sweden" operator="Primlight AB" + 39 cc="se" country="Sweden" operator="Primlight AB" status="Not operational" 40 cc="se" country="Sweden" operator="Netmore Group AB" - 41 cc="se" country="Sweden" operator="Shyam Telecom UK Ltd." status="Not operational" - 42 cc="se" country="Sweden" operator="Telenor Connexion AB" + 41 cc="se" country="Sweden" operator="Telenor Sverige AB" + 42 brand="Telenor IoT" cc="se" country="Sweden" operator="Telenor Connexion AB" 43 cc="se" country="Sweden" operator="MobiWeb Ltd." 44 cc="se" country="Sweden" operator="Telenabler AB" 45 cc="se" country="Sweden" operator="Spirius AB" 46 bands="MVNO" brand="Viahub" cc="se" country="Sweden" operator="SMS Provider Corp." 47 cc="se" country="Sweden" operator="Viatel Sweden AB" 48 bands="MVNO" cc="se" country="Sweden" operator="Tismi BV" - 60 cc="se" country="Sweden" operator="Telefonaktiebolaget LM Ericsson" status="Not operational" + 49 cc="se" country="Sweden" operator="Telia Sverige AB" + 50 cc="se" country="Sweden" operator="eRate Sverige AB" + 51 cc="se" country="Sweden" operator="YATECO OÜ" + 59 bands="5G 700" brand="Rakel G2" cc="se" country="Sweden" operator="Swedish Civil Contingencies Agency" + 60 cc="se" country="Sweden" operator="Västra Götalandsregionen" 61 cc="se" country="Sweden" operator="MessageBird B.V." status="Not operational" - 63 brand="FTS" cc="se" country="Sweden" operator="Fink Telecom Services" status="Operational" - 00-99 + 63 brand="FTS" cc="se" country="Sweden" operator="Fink Telecom Services" status="Not operational" + 900 cc="se" country="Sweden" operator="Västra Götalandsregionen" 242 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telenor" cc="no" country="Norway" operator="Telenor Norge AS" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telenor" cc="no" country="Norway" operator="Telenor Norge AS" status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Operational" 03 cc="no" country="Norway" operator="Televerket AS" status="Not operational" 04 bands="MVNO" brand="Tele2" cc="no" country="Norway" operator="Tele2 (Mobile Norway AS)" status="Not operational" - 05 bands="GSM 900 / UMTS 900 / UMTS 2100" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Not operational" + 05 bands="MVNO" brand="OneCall / MyCall" cc="no" country="Norway" operator="Telia Norge AS" status="Operational" 06 bands="LTE 450" brand="ice" cc="no" country="Norway" operator="ICE Norge AS" status="Operational" 07 bands="MVNO" brand="Phonero" cc="no" country="Norway" operator="Phonero AS" status="Not operational" 08 bands="MVNO" brand="Telia" cc="no" country="Norway" operator="Telia Norge AS" status="Operational" 09 bands="MVNO" brand="Com4" cc="no" country="Norway" operator="Com4 AS" status="Operational" - 10 cc="no" country="Norway" operator="Norwegian Communications Authority" + 10 cc="no" country="Norway" operator="Nasjonal kommunikasjonsmyndighet" 11 bands="Test" brand="SystemNet" cc="no" country="Norway" operator="SystemNet AS" status="Not operational" 12 brand="Telenor" cc="no" country="Norway" operator="Telenor Norge AS" - 14 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="ice" cc="no" country="Norway" operator="ICE Communication Norge AS" status="Operational" + 14 bands="GSM 900 / LTE 800 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2100" brand="ice" cc="no" country="Norway" operator="ICE Communication Norge AS" status="Operational" 15 bands="MVNO" cc="no" country="Norway" operator="eRate Norway AS" status="Operational" + 16 cc="no" country="Norway" operator="Iristel Norway AS" + 17 brand="Telenor" cc="no" country="Norway" operator="Telenor Norge AS" 20 bands="GSM-R 900" cc="no" country="Norway" operator="Jernbaneverket AS" status="Operational" 21 bands="GSM-R 900" cc="no" country="Norway" operator="Jernbaneverket AS" status="Operational" 22 cc="no" country="Norway" operator="Altibox AS" 23 bands="MVNO" brand="Lycamobile" cc="no" country="Norway" operator="Lyca Mobile Ltd" status="Operational" 24 cc="no" country="Norway" operator="Mobile Norway AS" status="Not operational" - 25 cc="no" country="Norway" operator="Forsvarets kompetansesenter KKIS" + 25 brand="CYFOR" cc="no" country="Norway" operator="Cyberforsvaret" + 70 cc="no" country="Norway" operator="test networks" + 71 bands="5G 3700" cc="no" country="Norway" operator="private networks" + 72 bands="5G 3700" cc="no" country="Norway" operator="private networks" + 73 cc="no" country="Norway" operator="private networks" + 74 cc="no" country="Norway" operator="private networks" + 75 cc="no" country="Norway" operator="private networks" 90 cc="no" country="Norway" operator="Nokia Solutions and Networks Norge AS" 99 bands="LTE 800 / LTE 1800" cc="no" country="Norway" operator="TampNet AS" status="Operational" 00-99 244 03 bands="GSM 1800" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Operational" 04 brand="DNA" cc="fi" country="Finland" operator="DNA Oy" - 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 3500" brand="Elisa" cc="fi" country="Finland" operator="Elisa Oyj" status="Operational" + 05 bands="GSM 900 / GSM 1800 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600 / 5G 3500" brand="Elisa" cc="fi" country="Finland" operator="Elisa Oyj" status="Operational" 06 brand="Elisa" cc="fi" country="Finland" operator="Elisa Oyj" status="Not operational" 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600 / TD-LTE 2600" brand="Nokia" cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" status="Operational" 08 bands="GSM 1800 / UMTS 2100" brand="Nokia" cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" 09 bands="GSM 900" cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" 10 cc="fi" country="Finland" operator="Traficom" 11 cc="fi" country="Finland" operator="Traficom" - 12 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Operational" + 12 bands="GSM 900 / GSM 1800 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 2600 / 5G 3500 / 5G 26000" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Operational" 13 bands="GSM 900 / GSM 1800" brand="DNA" cc="fi" country="Finland" operator="DNA Oy" status="Not operational" - 14 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Ålcom" cc="fi" country="Finland" operator="Ålands Telekommunikation Ab" status="Operational" + 14 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Ålcom" cc="fi" country="Finland" operator="Ålands Telekommunikation Ab" status="Operational" 15 cc="fi" country="Finland" operator="Telit Wireless Solutions GmbH" - 16 bands="MVNO" brand="Tele2" cc="fi" country="Finland" operator="Oy Finland Tele2 AB" status="Not operational" + 16 cc="fi" country="Finland" operator="Digita Oy" 17 bands="GSM-R" cc="fi" country="Finland" operator="Liikennevirasto" status="Operational" - 20 cc="fi" country="Finland" operator="Telia Finland Oyj" status="Not operational" + 19 bands="MVNO" cc="fi" country="Finland" operator="Nettia Oy" status="Operational" + 20 cc="fi" country="Finland" operator="Elisa Oyj" 21 bands="MVNO" brand="Elisa- Saunalahti" cc="fi" country="Finland" operator="Elisa Oyj" status="Operational" 22 cc="fi" country="Finland" operator="EXFO Oy" status="Not operational" 23 cc="fi" country="Finland" operator="EXFO Oy" status="Not operational" - 24 cc="fi" country="Finland" operator="TTY-säätiö" status="Not operational" + 24 cc="fi" country="Finland" operator="Nord Connect UAB" status="Not operational" 25 cc="fi" country="Finland" operator="Fortum Power and Heat Oy" 26 bands="MVNO" brand="Compatel" cc="fi" country="Finland" operator="Compatel Ltd" status="Operational" - 27 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" + 27 bands="LTE 450 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500 / 5G mmWave" cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" 28 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" - 29 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" - 30 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" + 29 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" status="Not operational" + 30 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" status="Not operational" 31 cc="fi" country="Finland" operator="Teknologian tutkimuskeskus VTT Oy" - 32 bands="MVNO" brand="Voxbone" cc="fi" country="Finland" operator="Voxbone SA" status="Operational" - 33 bands="TETRA" brand="VIRVE" cc="fi" country="Finland" operator="Suomen Virveverkko Oy" status="Operational" - 34 bands="MVNO" brand="Bittium Wireless" cc="fi" country="Finland" operator="Bittium Wireless Oy" status="Operational" + 32 bands="MVNO" brand="Voxbone" cc="fi" country="Finland" operator="Voxbone SA" status="Not operational" + 33 bands="TETRA" brand="VIRVE" cc="fi" country="Finland" operator="Suomen Turvallisuusverkko Oy" status="Operational" + 34 bands="MVNO" brand="Bittium Wireless" cc="fi" country="Finland" operator="Bittium Wireless Oy" status="Not operational" 35 bands="LTE 450 / TD-LTE 2600" cc="fi" country="Finland" operator="Edzcom Oy" status="Operational" - 36 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Telia / DNA" cc="fi" country="Finland" operator="Telia Finland Oyj / Suomen Yhteisverkko Oy" status="Operational" - 37 bands="MVNO" brand="Tismi" cc="fi" country="Finland" operator="Tismi BV" status="Operational" + 36 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G" brand="Telia / DNA" cc="fi" country="Finland" operator="Telia Finland Oyj / Suomen Yhteisverkko Oy" status="Operational" + 37 bands="MVNO" brand="Tismi" cc="fi" country="Finland" operator="Tismi BV" status="Not operational" 38 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" - 39 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" + 39 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" status="Not operational" 40 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" - 41 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" + 41 cc="fi" country="Finland" operator="Nokia Solutions and Networks Oy" status="Not operational" 42 cc="fi" country="Finland" operator="SMS Provider Corp." 43 cc="fi" country="Finland" operator="Telavox AB / Telavox Oy" - 44 cc="fi" country="Finland" operator="Turun ammattikorkeakoulu Oy" + 44 cc="fi" country="Finland" operator="Turun ammattikorkeakoulu Oy" status="Not operational" 45 cc="fi" country="Finland" operator="Suomen Turvallisuusverkko Oy" 46 cc="fi" country="Finland" operator="Suomen Turvallisuusverkko Oy" 47 cc="fi" country="Finland" operator="Suomen Turvallisuusverkko Oy" - 50 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 51 bands="NB-IoT 700" cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Operational" - 52 bands="5G 3500" cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Operational" - 53 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 54 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 55 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 56 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 57 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 58 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 59 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Testing" - 91 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Telia" cc="fi" country="Finland" operator="Telia Finland Oyj" status="Operational" + 50 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Not operational" + 51 bands="NB-IoT 700" cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" + 52 bands="5G 3500" cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" + 53 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" + 54 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Not operational" + 55 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" + 56 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Not operational" + 57 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Not operational" + 58 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Not operational" + 59 cc="fi" country="Finland" operator="Aalto-korkeakoulusäätiö sr" status="Not operational" + 91 bands="GSM 900 / GSM 1800 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Telia" cc="fi" country="Finland" operator="Telia Finland Oyj" status="Operational" 92 brand="Sonera" cc="fi" country="Finland" operator="TeliaSonera Finland Oyj" status="Not operational" - 99 cc="fi" country="Finland" operator="Oy L M Ericsson Ab" + 95 cc="fi" country="Finland" operator="Säteilyturvakeskus" + 99 cc="fi" country="Finland" operator="Oy L M Ericsson Ab" status="Not operational" 00-99 246 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Telia" cc="lt" country="Lithuania" operator="Telia Lietuva" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="BITĖ" cc="lt" country="Lithuania" operator="UAB Bitė Lietuva" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Tele2" cc="lt" country="Lithuania" operator="UAB Tele2 (Tele2 AB, Sweden)" status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Telia" cc="lt" country="Lithuania" operator="Telia Lietuva" status="Operational" + 02 bands="GSM 900 / UMTS 900 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2300 TDD / LTE 2600 TDD / LTE 2600 FDD / 5G 2300 / 5G 2600 TDD / 5G 3500" brand="BITĖ" cc="lt" country="Lithuania" operator="Bitė Lietuva" status="Operational" + 03 bands="GSM 900 / GSM 1800 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="Tele2" cc="lt" country="Lithuania" operator="UAB Tele2 (Tele2 AB, Sweden)" status="Operational" 04 cc="lt" country="Lithuania" operator="Ministry of the Interior)" 05 bands="GSM-R 900" brand="LitRail" cc="lt" country="Lithuania" operator="Lietuvos geležinkeliai (Lithuanian Railways)" status="Operational" 06 brand="Mediafon" cc="lt" country="Lithuania" operator="UAB Mediafon" status="Operational" 07 cc="lt" country="Lithuania" operator="Compatel Ltd." - 08 bands="WiMAX 3500 / TD-LTE 2300" brand="MEZON" cc="lt" country="Lithuania" operator="Lietuvos radijo ir televizijos centras" status="Operational" - 09 cc="lt" country="Lithuania" operator="Interactive Digital Media GmbH" + 08 bands="WiMAX 3500 / TD-LTE 2300 / 5G 2300" cc="lt" country="Lithuania" operator="Bitė Lietuva" status="Operational" + 09 cc="lt" country="Lithuania" operator="Interactive Digital Media GmbH" status="Not operational" 11 cc="lt" country="Lithuania" operator="DATASIM OU" 12 cc="lt" country="Lithuania" operator="Nord connect OU" + 13 cc="lt" country="Lithuania" operator="Travel Communication SIA" + 14 cc="lt" country="Lithuania" operator="Tismi BV" + 15 cc="lt" country="Lithuania" operator="Esim telecom, UAB" + 16 cc="lt" country="Lithuania" operator="Annecto Telecom Limited" 00-99 247 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="LMT" cc="lv" country="Latvia" operator="Latvian Mobile Telephone" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Tele2" cc="lv" country="Latvia" operator="Tele2" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500" brand="LMT" cc="lv" country="Latvia" operator="Latvian Mobile Telephone" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Tele2" cc="lv" country="Latvia" operator="Tele2" status="Operational" 03 bands="CDMA 450" brand="TRIATEL" cc="lv" country="Latvia" operator="Telekom Baltija" status="Operational" 04 cc="lv" country="Latvia" operator="Beta Telecom" status="Not operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Bite" cc="lv" country="Latvia" operator="Bite Latvija" status="Operational" - 06 cc="lv" country="Latvia" operator="Rigatta" status="Not operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Bite" cc="lv" country="Latvia" operator="Bite Latvija" status="Operational" + 06 cc="lv" country="Latvia" operator="SIA "UNISTARS"" 07 bands="MVNO" cc="lv" country="Latvia" operator="SIA "MEGATEL"" status="Operational" - 08 bands="MVNO" brand="IZZI" cc="lv" country="Latvia" operator="IZZI" status="Not operational" + 08 bands="MVNO" brand="VMT" cc="lv" country="Latvia" operator="SIA "VENTAmobile"" status="Operational" 09 bands="MVNO" brand="Xomobile" cc="lv" country="Latvia" operator="Camel Mobile" status="Operational" + 10 brand="LMT" cc="lv" country="Latvia" operator="Latvian Mobile Telephone" 00-99 248 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Telia" cc="ee" country="Estonia" operator="Telia Eesti" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Elisa" cc="ee" country="Estonia" operator="Elisa Eesti" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Tele2" cc="ee" country="Estonia" operator="Tele2 Eesti" status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Telia" cc="ee" country="Estonia" operator="Telia Eesti" status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="Elisa" cc="ee" country="Estonia" operator="Elisa Eesti" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2300 / 5G 3500" brand="Tele2" cc="ee" country="Estonia" operator="Tele2 Eesti" status="Operational" 04 bands="MVNO" brand="Top Connect" cc="ee" country="Estonia" operator="OY Top Connect" status="Operational" - 05 cc="ee" country="Estonia" operator="CSC Telecom Estonia OÜ" + 05 bands="MVNO" brand="CSC Telecom" cc="ee" country="Estonia" operator="CSC Telecom Estonia OÜ" status="Operational" 06 bands="UMTS 2100" cc="ee" country="Estonia" operator="Progroup Holding" status="Not operational" - 07 bands="CDMA2000 450" brand="Kou" cc="ee" country="Estonia" operator="Televõrgu AS" status="Not operational" + 07 bands="CDMA2000 450" brand="Kõu" cc="ee" country="Estonia" operator="Televõrgu AS" status="Not operational" 08 bands="MVNO" brand="VIVEX" cc="ee" country="Estonia" operator="VIVEX OU" status="Not operational" 09 cc="ee" country="Estonia" operator="Bravo Telecom" status="Not operational" - 10 cc="ee" country="Estonia" operator="Telcotrade OÜ" status="Not operational" + 10 cc="ee" country="Estonia" operator="Intergo Telecom OÜ" 11 cc="ee" country="Estonia" operator="UAB Raystorm Eesti filiaal" 12 cc="ee" country="Estonia" operator="Ntel Solutions OÜ" - 13 cc="ee" country="Estonia" operator="Telia Eesti AS" + 13 cc="ee" country="Estonia" operator="Telia Eesti AS" status="Not operational" 14 cc="ee" country="Estonia" operator="Estonian Crafts OÜ" 15 cc="ee" country="Estonia" operator="Premium Net International S.R.L. Eesti filiaal" status="Not operational" 16 bands="MVNO" brand="dzinga" cc="ee" country="Estonia" operator="SmartTel Plus OÜ" status="Operational" - 17 cc="ee" country="Estonia" operator="Baltergo OÜ" - 18 cc="ee" country="Estonia" operator="Cloud Communications OÜ" + 17 cc="ee" country="Estonia" operator="Baltergo OÜ" status="Not operational" + 18 cc="ee" country="Estonia" operator="Cloud Communications OÜ" status="Not operational" + 19 cc="ee" country="Estonia" operator="OkTelecom OÜ" + 20 bands="MVNO" cc="ee" country="Estonia" operator="DOTT Telecom OÜ" status="Operational" + 21 cc="ee" country="Estonia" operator="Trinavo LLC" + 22 cc="ee" country="Estonia" operator="M2MConnect OÜ" + 24 bands="MVNO" cc="ee" country="Estonia" operator="Novametro OÜ" + 25 cc="ee" country="Estonia" operator="Eurofed OÜ" status="Not operational" + 26 bands="MVNO" cc="ee" country="Estonia" operator="IT-Decision Telecom OÜ" status="Operational" + 28 cc="ee" country="Estonia" operator="Nord Connect OÜ" + 29 cc="ee" country="Estonia" operator="SkyTel OÜ" status="Not operational" + 30 bands="MVNO" cc="ee" country="Estonia" operator="Mediafon Carrier Services OÜ" + 31 cc="ee" country="Estonia" operator="YATECO OÜ" + 32 cc="ee" country="Estonia" operator="Narayana OÜ" + 33 bands="MVNO" brand="JAZZ MOBILE" cc="ee" country="Estonia" operator="J-MOBILE OÜ" status="Not operational" + 34 cc="ee" country="Estonia" operator="Nettora Systems OÜ" + 35 cc="ee" country="Estonia" operator="Teliqon Communications OÜ" + 36 bands="MVNO" cc="ee" country="Estonia" operator="GlobalCell EU" status="Operational" + 37 bands="MVNO" cc="ee" country="Estonia" operator="Revaltex Group OÜ" 71 cc="ee" country="Estonia" operator="Siseministeerium (Ministry of Interior)" 00-99 250 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600" brand="MTS" cc="ru" country="Russian Federation" operator="Mobile TeleSystems" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="MegaFon" cc="ru" country="Russian Federation" operator="MegaFon PJSC" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500 / LTE 2600 / TD-LTE 2600 / 5G 4700" brand="MTS" cc="ru" country="Russian Federation" operator="Mobile TeleSystems" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / 5G 2100 / LTE 2600 / TD-LTE 2600 / 5G 2600" brand="MegaFon" cc="ru" country="Russian Federation" operator="MegaFon PJSC" status="Operational" 03 bands="GSM 900 / GSM 1800" brand="NCC" cc="ru" country="Russian Federation" operator="Nizhegorodskaya Cellular Communications" status="Not operational" 04 bands="GSM 900" brand="Sibchallenge" cc="ru" country="Russian Federation" operator="Sibchallenge" status="Not operational" 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / CDMA 450" brand="ETK" cc="ru" country="Russian Federation" operator="Yeniseytelecom" status="Not operational" - 06 bands="CDMA 450" brand="Skylink" cc="ru" country="Russian Federation" operator="CJSC Saratov System of Cellular Communications" status="Operational" + 06 bands="CDMA 450" brand="Skylink" cc="ru" country="Russian Federation" operator="CJSC Saratov System of Cellular Communications" status="Not operational" 07 bands="GSM 900 / GSM 1800" brand="SMARTS" cc="ru" country="Russian Federation" operator="Zao SMARTS" status="Not operational" 08 bands="GSM 900 / GSM 1800 / TD-LTE 2300" brand="Vainah Telecom" cc="ru" country="Russian Federation" operator="CS "VainahTelecom"" status="Operational" 09 bands="CDMA 450" brand="Skylink" cc="ru" country="Russian Federation" operator="Khabarovsky Cellular Phone" status="Operational" @@ -654,222 +798,246 @@ 15 bands="GSM 1800" brand="SMARTS" cc="ru" country="Russian Federation" operator="SMARTS Ufa, SMARTS Uljanovsk" status="Not operational" 16 bands="MVNO" brand="Miatel" cc="ru" country="Russian Federation" operator="Miatel" status="Operational" 17 bands="GSM 900 / GSM 1800" brand="Utel" cc="ru" country="Russian Federation" operator="JSC Uralsvyazinform" status="Not operational" - 18 bands="TD-LTE 2300" brand="Osnova Telecom" cc="ru" country="Russian Federation" status="Not operational" - 19 bands="GSM 1800" brand="INDIGO" cc="ru" country="Russian Federation" operator="INDIGO" status="Not operational" - 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 800 / LTE 1800 / TD-LTE 2300 / LTE 2600" brand="Tele2" cc="ru" country="Russian Federation" operator="Tele2" status="Operational" + 18 bands="MVNO" brand="12.ru" cc="ru" country="Russian Federation" operator="Astran" status="Operational" + 19 bands="MVNO" brand="Alfa-Mobile" cc="ru" country="Russian Federation" operator="Alfa-Bank" status="Operational" + 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 800 / LTE 1800 / TD-LTE 2300 / TD-LTE 2500 / LTE 2600" brand="t2" cc="ru" country="Russian Federation" operator="Rostelecom" status="Operational" 21 bands="Satellite" brand="GlobalTel" cc="ru" country="Russian Federation" operator="JSC "GlobalTel"" status="Operational" 22 bands="TD-LTE 2300" cc="ru" country="Russian Federation" operator="Vainakh Telecom" status="Operational" 23 bands="Satellite MVNO" brand="Thuraya" cc="ru" country="Russian Federation" operator="GTNT" status="Operational" + 26 bands="MVNO" brand="VTB Mobile" cc="ru" country="Russian Federation" operator="VTB Mobile" status="Operational" 27 bands="GSM 1800 / LTE 1800" brand="Letai" cc="ru" country="Russian Federation" operator="Tattelecom" status="Operational" 28 bands="GSM 900" brand="Beeline" cc="ru" country="Russian Federation" operator="Beeline" status="Not operational" 29 bands="Satellite MVNO" brand="Iridium" cc="ru" country="Russian Federation" operator="Iridium Communications" status="Operational" 32 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Win Mobile" cc="ru" country="Russian Federation" operator="K-Telecom" status="Operational" - 33 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Sevmobile" cc="ru" country="Russian Federation" operator="Sevtelekom" status="Operational" + 33 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Sevmobile" cc="ru" country="Russian Federation" operator="Sevtelekom" status="Not operational" 34 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Krymtelekom" cc="ru" country="Russian Federation" operator="Krymtelekom" status="Operational" 35 bands="GSM 1800 / LTE 1800 / TD-LTE 2600" brand="MOTIV" cc="ru" country="Russian Federation" operator="EKATERINBURG-2000" status="Operational" + 37 bands="MVNO" brand="MCN Mobile" cc="ru" country="Russian Federation" operator="MCN Telecom" status="Operational" 38 bands="GSM 900 / GSM 1800" brand="Tambov GSM" cc="ru" country="Russian Federation" operator="Central Telecommunication Company" status="Not operational" 39 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / TD-LTE 2300 / LTE 2600" brand="Rostelecom" cc="ru" country="Russian Federation" operator="ROSTELECOM" status="Not operational" + 40 bands="MVNO" brand="VTC Mobile" cc="ru" country="Russian Federation" operator="Voentelecom" status="Operational" 44 cc="ru" country="Russian Federation" operator="Stavtelesot / North Caucasian GSM" status="Not operational" - 50 bands="MVNO" brand="MTS" cc="ru" country="Russian Federation" operator="Bezlimitno.ru" status="Operational" - 54 bands="LTE 1800" brand="TTK" cc="ru" country="Russian Federation" operator="Tattelecom" status="Not operational" + 45 bands="MVNO" brand="Gazprombank Mobile" cc="ru" country="Russian Federation" operator="PJSC New Mobile Communications" status="Operational" + 50 bands="MVNO" brand="SberMobile" cc="ru" country="Russian Federation" operator="Sberbank-Telecom" status="Operational" + 54 bands="GSM 900 / UMTS 2100 / LTE" brand="Miranda-Media" cc="ru" country="Russian Federation" operator="Miranda-Media" status="Operational" + 57 bands="MVNO" brand="Matrix Mobile" cc="ru" country="Russian Federation" operator="Matrix Telecom" status="Operational" + 59 bands="MVNO" brand="WireFire" cc="ru" country="Russian Federation" operator="NetbyNet" status="Not operational" 60 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Volna mobile" cc="ru" country="Russian Federation" operator="KTK Telecom" status="Operational" 61 bands="CDMA 800" brand="Intertelecom" cc="ru" country="Russian Federation" operator="Intertelecom" status="Not operational" - 62 bands="MVNO" brand="Tinkoff Mobile" cc="ru" country="Russian Federation" operator="Tinkoff Mobile" status="Operational" + 62 bands="MVNO" brand="T-Mobile" cc="ru" country="Russian Federation" operator="T-Mobile" status="Operational" 811 bands="AMPS / DAMPS / GSM 1800" cc="ru" country="Russian Federation" operator="Votek Mobile" status="Not operational" 91 bands="GSM 1800" brand="Sonic Duo" cc="ru" country="Russian Federation" operator="Sonic Duo CJSC" status="Not operational" 92 cc="ru" country="Russian Federation" operator="Primtelefon" status="Not operational" 93 cc="ru" country="Russian Federation" operator="Telecom XXI" status="Not operational" - 99 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Beeline" cc="ru" country="Russian Federation" operator="OJSC Vimpel-Communications" status="Operational" + 96 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="+7Telecom" cc="ru" country="Russian Federation" operator="K-Telecom" status="Operational" + 97 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Phoenix" cc="ru" country="Russian Federation" operator="DPR "Republican Telecommunications Operator"" status="Operational" + 98 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="MKS (ex. Lugacom)" cc="ru" country="Russian Federation" operator="OOO "MKS"" status="Operational" + 99 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Beeline" cc="ru" country="Russian Federation" operator="OJSC Vimpel-Communications" status="Operational" 255 - 00 bands="CDMA 450 / CDMA 800" brand="IDC" cc="md" country="Moldova" operator="Interdnestrcom" status="Operational" - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Vodafone" cc="ua" country="Ukraine" operator="PRJSC “VF Ukraine"" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Kyivstar" cc="ua" country="Ukraine" operator="PRJSC “Kyivstar"" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Kyivstar" cc="ua" country="Ukraine" operator="PRJSC “Kyivstar"" status="Operational" - 04 bands="CDMA 800" brand="Intertelecom" cc="ua" country="Ukraine" operator="Intertelecom LLC" status="Operational" + 00 bands="CDMA 800" brand="IDC" cc="md" country="Moldova" operator="Interdnestrcom" status="Not operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600 / TD-LTE 2600" brand="Vodafone" cc="ua" country="Ukraine" operator="PRJSC “VF Ukraine"" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Kyivstar" cc="ua" country="Ukraine" operator="PRJSC “Kyivstar"" status="Not operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600" brand="Kyivstar" cc="ua" country="Ukraine" operator="PRJSC “Kyivstar"" status="Operational" + 04 bands="CDMA 800" brand="Intertelecom" cc="ua" country="Ukraine" operator="International Telecommunications" status="Not operational" 05 bands="GSM 1800" brand="Kyivstar" cc="ua" country="Ukraine" operator="PRJSC “Kyivstar"" status="Not operational" - 06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="lifecell" cc="ua" country="Ukraine" operator="lifecell LLC" status="Operational" + 06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="lifecell" cc="ua" country="Ukraine" operator="lifecell LLC" status="Operational" 07 bands="UMTS 2100" brand="3Mob; Lycamobile" cc="ua" country="Ukraine" operator="Trimob LLC" status="Operational" - 08 cc="ua" country="Ukraine" operator="JSC Ukrtelecom" status="Not operational" - 09 cc="ua" country="Ukraine" operator="PRJSC "Farlep-Invest"" status="Not operational" + 08 cc="ua" country="Ukraine" operator="JSC Ukrtelecom" + 09 cc="ua" country="Ukraine" operator="PRJSC "Farlep-Invest"" 10 cc="ua" country="Ukraine" operator="Atlantis Telecom LLC" - 21 bands="CDMA 800" brand="PEOPLEnet" cc="ua" country="Ukraine" operator="PRJSC “Telesystems of Ukraine"" status="Operational" + 11 cc="ua" country="Ukraine" operator="T.R. Communications LLC" + 21 bands="CDMA 800" brand="PEOPLEnet" cc="ua" country="Ukraine" operator="PRJSC “Telesystems of Ukraine"" status="Not operational" 23 bands="CDMA 800" brand="CDMA Ukraine" cc="ua" country="Ukraine" operator="Intertelecom LLC" status="Not operational" 25 bands="CDMA 800" brand="NEWTONE" cc="ua" country="Ukraine" operator="PRJSC “Telesystems of Ukraine"" status="Not operational" - 99 bands="LTE 800" brand="Phoenix" cc="ua" country="Ukraine" operator="Phoenix" status="Operational" - 00-99 + 701 cc="ua" country="Ukraine" operator="Ukrainian Special Systems" + 702 cc="ua" country="Ukraine" operator="Limited Liability Company "J&W"" + 707 brand="Kyivstar" cc="ua" country="Ukraine" operator="PRJSC “Kyivstar"" + 99 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Phoenix; MKS (ex. Lugacom)" cc="ua" country="Ukraine" operator="DPR "Republican Telecommunications Operator"; OOO "MKS"" status="Not operational" 257 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="A1" cc="by" country="Belarus" operator="A1 Belarus" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="MTS" cc="by" country="Belarus" operator="Mobile TeleSystems" status="Operational" 03 bands="CDMA 450" brand="DIALLOG" cc="by" country="Belarus" operator="BelCel" status="Not operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="life:)" cc="by" country="Belarus" operator="Belarusian Telecommunications Network" status="Operational" 05 bands="WiMAX 3500" brand="byfly" cc="by" country="Belarus" operator="Beltelecom" status="Not operational" - 06 bands="LTE 1800 / LTE 2600" brand="beCloud" cc="by" country="Belarus" operator="Belorussian Cloud Technologies" status="Operational" + 06 bands="LTE 800 / LTE 1800 / LTE 2600" brand="beCloud" cc="by" country="Belarus" operator="Belorussian Cloud Technologies" status="Operational" 00-99 259 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Orange" cc="md" country="Moldova" operator="Orange Moldova" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Moldcell" cc="md" country="Moldova" status="Operational" - 03 bands="CDMA 450" brand="Unité" cc="md" country="Moldova" operator="Moldtelecom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500" brand="Orange" cc="md" country="Moldova" operator="Orange Moldova" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 2100" brand="Moldcell" cc="md" country="Moldova" operator="Moldcell" status="Operational" + 03 bands="CDMA 450" brand="Moldtelecom" cc="md" country="Moldova" operator="Moldtelecom" status="Operational" 04 bands="GSM 900 / GSM 1800" brand="Eventis" cc="md" country="Moldova" operator="Eventis Telecom" status="Not operational" - 05 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="Unité" cc="md" country="Moldova" operator="Moldtelecom" status="Operational" - 15 bands="LTE 800" brand="IDC" cc="md" country="Moldova" operator="Interdnestrcom" status="Operational" - 99 bands="UMTS 2100" brand="Unité" cc="md" country="Moldova" operator="Moldtelecom" status="Operational" + 05 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="Moldtelecom" cc="md" country="Moldova" operator="Moldtelecom" status="Operational" + 15 bands="LTE 800 / LTE 1800" brand="IDC" cc="md" country="Moldova" operator="Interdnestrcom" status="Operational" + 99 bands="UMTS 2100" brand="Moldtelecom" cc="md" country="Moldova" operator="Moldtelecom" status="Operational" 00-99 260 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600 / 5G 2600" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2100 / 5G 2100" brand="T-Mobile" cc="pl" country="Poland" operator="T-Mobile Polska S.A." status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2100" brand="Orange" cc="pl" country="Poland" operator="Polska Telefonia Komórkowa Centertel Sp. z o.o." status="Operational" - 04 brand="Aero2" cc="pl" country="Poland" operator="Aero 2 Sp. z o.o." status="Not operational" - 05 bands="UMTS 2100" brand="Orange" cc="pl" country="Poland" operator="Polska Telefonia Komórkowa Centertel Sp. z o.o." status="Not operational" - 06 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Play" cc="pl" country="Poland" operator="P4 Sp. z o.o." status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / TD-5G 2500" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / 5G 2100 / 5G 3500" brand="T-Mobile" cc="pl" country="Poland" operator="T-Mobile Polska S.A." status="Operational" + 03 bands="GSM 900 / LTE 1800 / LTE 2100 / 5G 2100 / 5G 3500" brand="Orange" cc="pl" country="Poland" operator="Orange Polska S.A." status="Operational" + 04 brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Not operational" + 05 bands="UMTS 2100" brand="Orange" cc="pl" country="Poland" operator="Orange Polska S.A." status="Not operational" + 06 bands="GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Play" cc="pl" country="Poland" operator="P4 Sp. z o.o." status="Operational" 07 bands="MVNO" brand="Netia" cc="pl" country="Poland" operator="Netia S.A." status="Operational" - 08 cc="pl" country="Poland" operator="E-Telko Sp. z o.o." status="Not operational" + 08 cc="pl" country="Poland" operator="EXATEL S.A." 09 bands="MVNO" brand="Lycamobile" cc="pl" country="Poland" operator="Lycamobile Sp. z o.o." status="Operational" 10 brand="T-Mobile" cc="pl" country="Poland" operator="T-Mobile Polska S.A." - 11 bands="CDMA2000 420" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational" + 11 bands="CDMA 420" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational" 12 bands="MVNO" brand="Cyfrowy Polsat" cc="pl" country="Poland" operator="Cyfrowy Polsat S.A." status="Operational" 13 bands="MVNO" cc="pl" country="Poland" operator="Move Telecom S.A." status="Operational" 14 cc="pl" country="Poland" operator="Telco Leaders Ltd" - 15 bands="LTE 1800" brand="Aero2" cc="pl" country="Poland" operator="Aero 2 Sp. z o.o." status="Operational" - 16 bands="LTE 1800" brand="Aero2" cc="pl" country="Poland" operator="Aero 2 Sp. z o.o." status="Operational" - 17 bands="UMTS 900 / TD-LTE 2600" brand="Aero2" cc="pl" country="Poland" operator="Aero 2 Sp. z o.o." status="Operational" + 15 bands="LTE 1800" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational" + 16 bands="LTE 1800" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational" + 17 bands="UMTS 900 / TD-LTE 2600" brand="Plus" cc="pl" country="Poland" operator="Polkomtel Sp. z o.o." status="Operational" 18 brand="AMD Telecom" cc="pl" country="Poland" operator="AMD Telecom S.A." 19 bands="MVNO" cc="pl" country="Poland" operator="SIA NetBalt" - 20 cc="pl" country="Poland" operator="Wysyłaj SMS Polska Sp. z o.o." status="Not operational" + 20 cc="pl" country="Poland" operator="TISMI B.V." 21 cc="pl" country="Poland" operator="private networks" 22 cc="pl" country="Poland" operator="Twilio Ireland Limited" 23 cc="pl" country="Poland" operator="PGE Systemy S.A." 24 cc="pl" country="Poland" operator="IT Partners Telco Sp. z o.o." - 25 cc="pl" country="Poland" operator="Polskie Sieci Radiowe Sp. z o.o. Sp. k.a." status="Not operational" - 26 brand="ATE" cc="pl" country="Poland" operator="Advanced Technology & Experience Sp. z o.o." status="Not operational" + 25 brand="TeleCube.PL" cc="pl" country="Poland" operator="Claude ICT Poland Sp. z o.o." status="Operational" + 26 cc="pl" country="Poland" operator="Vonage B.V." 27 cc="pl" country="Poland" operator="SIA Ntel Solutions" - 28 brand="PhoneNet" cc="pl" country="Poland" operator="PhoneNet Sp. z o.o." status="Not operational" - 29 brand="Interfonica" cc="pl" country="Poland" operator="Interfonica Sp. z o.o." status="Not operational" - 30 brand="GrandTel" cc="pl" country="Poland" operator="GrandTel Sp. z o.o." status="Not operational" - 31 brand="Phone IT" cc="pl" country="Poland" operator="Phone IT Sp. z o.o." status="Not operational" + 28 cc="pl" country="Poland" operator="CrossMobile Sp. z o.o." + 29 cc="pl" country="Poland" operator="SMSWIZARD POLSKA Sp. z o.o." + 30 cc="pl" country="Poland" operator="HXG Sp. z o.o." + 31 brand="T-Mobile" cc="pl" country="Poland" operator="T-Mobile Polska S.A." 32 cc="pl" country="Poland" operator="Compatel Limited" - 33 bands="MVNO" brand="Truphone" cc="pl" country="Poland" operator="Truphone Poland Sp. z o.o." status="Operational" + 33 bands="MVNO" brand="Truphone" cc="pl" country="Poland" operator="TP Poland Operations Sp. z o.o." status="Operational" 34 bands="LTE 800 / LTE 2600" brand="NetWorkS!" cc="pl" country="Poland" operator="T-Mobile Polska S.A." status="Operational" 35 bands="GSM-R" cc="pl" country="Poland" operator="PKP Polskie Linie Kolejowe S.A." status="Operational" - 36 bands="MVNO" brand="Vectone Mobile" cc="pl" country="Poland" operator="Mundio Mobile" status="Not operational" + 36 cc="pl" country="Poland" operator="YATECO OÜ" 37 cc="pl" country="Poland" operator="NEXTGEN MOBILE LTD" status="Not operational" 38 cc="pl" country="Poland" operator="CALLFREEDOM Sp. z o.o." status="Not operational" 39 bands="MVNO" brand="Voxbone" cc="pl" country="Poland" operator="VOXBONE SA" status="Operational" - 40 cc="pl" country="Poland" operator="Interactive Digital Media GmbH" + 40 cc="pl" country="Poland" operator="Interactive Digital Media GmbH" status="Not operational" 41 cc="pl" country="Poland" operator="EZ PHONE MOBILE Sp. z o.o." - 42 cc="pl" country="Poland" operator="MobiWeb Telecom Limited" + 42 cc="pl" country="Poland" operator="MobiWeb Telecom Limited" status="Not operational" 43 cc="pl" country="Poland" operator="Smart Idea International Sp. z o.o." 44 cc="pl" country="Poland" operator="Rebtel Poland Sp. z o.o." status="Not operational" - 45 bands="MVNO" cc="pl" country="Poland" operator="Virgin Mobile Polska Sp. z o.o." status="Operational" + 45 bands="MVNO" brand="Virgin Mobile" cc="pl" country="Poland" operator="P4 Sp. z o.o." status="Operational" 46 cc="pl" country="Poland" operator="Terra Telekom Sp. z o.o." status="Not operational" 47 cc="pl" country="Poland" operator="SMShighway Limited" 48 cc="pl" country="Poland" operator="AGILE TELECOM S.P.A." 49 cc="pl" country="Poland" operator="Messagebird B.V." + 90 cc="pl" country="Poland" operator="Polska Spółka Gazownictwa Sp. z o.o." 97 cc="pl" country="Poland" operator="Politechnika Łódzka Uczelniane Centrum Informatyczne" 98 bands="LTE 1800" brand="Play" cc="pl" country="Poland" operator="P4 Sp. z o.o." status="Not operational" 00-99 262 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500" brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Operational" + 01 bands="GSM 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" status="Operational" + 02 bands="GSM 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 3500" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Operational" + 03 bands="GSM 900 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Reserved" 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Reserved" - 06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" status="Reserved" - 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Not operational" + 06 bands="GSM 900 / LTE 800 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" status="Reserved" + 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Operational" 08 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Reserved" - 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Operational" + 09 bands="GSM 900 / GSM 1800 / LTE 2600" brand="Vodafone" cc="de" country="Germany" operator="Vodafone D2 GmbH" status="Operational" 10 bands="GSM-R" cc="de" country="Germany" operator="DB Netz AG" status="Operational" 11 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Reserved" 12 bands="MVNO" brand="Simquadrat" cc="de" country="Germany" operator="sipgate GmbH" status="Operational" - 13 bands="UMTS 2100" cc="de" country="Germany" operator="Mobilcom Multimedia" status="Not operational" - 14 bands="UMTS 2100" cc="de" country="Germany" operator="Group 3G UMTS" status="Not operational" + 13 brand="BAAINBw" cc="de" country="Germany" operator="Bundesamt für Ausrüstung, Informationstechnik und Nutzung der Bundeswehr" + 14 bands="MVNO" cc="de" country="Germany" operator="Lebara Limited" status="Operational" 15 bands="TD-SCDMA" brand="Airdata" cc="de" country="Germany" status="Operational" 16 bands="MVNO" cc="de" country="Germany" operator="Telogic Germany GmbH" status="Not operational" - 17 brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" + 17 brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Not operational" 18 bands="MVNO" cc="de" country="Germany" operator="NetCologne" status="Operational" - 19 bands="CDMA 450" cc="de" country="Germany" operator="Inquam Deutschland" - 20 bands="MVNE" brand="Voiceworks" cc="de" country="Germany" operator="Voiceworks GmbH" status="Operational" + 19 bands="LTE 450" brand="450connect" cc="de" country="Germany" operator="nl" status="Operational" + 20 bands="MVNO" brand="Enreach" cc="de" country="Germany" operator="Enreach Germany GmbH" status="Operational" 21 cc="de" country="Germany" operator="Multiconnect GmbH" 22 bands="MVNO" cc="de" country="Germany" operator="sipgate Wireless GmbH" - 23 bands="MVNO" cc="de" country="Germany" operator="Drillisch Online AG" status="Operational" + 23 bands="5G 3500 / MVNO" brand="1&1" cc="de" country="Germany" operator="Drillisch Online AG" status="Operational" 24 cc="de" country="Germany" operator="TelcoVillage GmbH" + 25 cc="de" country="Germany" operator="MTEL Deutschland GmbH" 33 bands="MVNO" brand="simquadrat" cc="de" country="Germany" operator="sipgate GmbH" status="Not operational" 41 cc="de" country="Germany" operator="First Telecom GmbH" status="Not operational" 42 bands="GSM 1800" brand="CCC Event" cc="de" country="Germany" operator="Chaos Computer Club" status="Temporary operational" 43 bands="MVNO" brand="Lycamobile" cc="de" country="Germany" operator="Lycamobile" status="Operational" 60 bands="GSM-R 900" cc="de" country="Germany" operator="DB Telematik" status="Operational" + 70 bands="Tetra" cc="de" country="Germany" operator="BDBOS" status="Operational" 71 cc="de" country="Germany" operator="GSMK" 72 cc="de" country="Germany" operator="Ericsson GmbH" 73 cc="de" country="Germany" operator="Nokia" - 74 cc="de" country="Germany" operator="Qualcomm CDMA Technologies GmbH" status="Not operational" - 75 cc="de" country="Germany" operator="Core Network Dynamics GmbH" status="Operational" - 76 bands="GSM 900" cc="de" country="Germany" operator="Siemens AG" status="Not operational" - 77 bands="GSM 900" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" + 74 cc="de" country="Germany" operator="Ericsson GmbH" + 75 cc="de" country="Germany" operator="Core Network Dynamics GmbH" status="Not operational" + 76 cc="de" country="Germany" operator="BDBOS" + 77 bands="GSM 900" brand="O2" cc="de" country="Germany" operator="Telefónica Germany GmbH & Co. oHG" status="Not operational" 78 brand="Telekom" cc="de" country="Germany" operator="Telekom Deutschland GmbH" 79 cc="de" country="Germany" operator="ng4T GmbH" status="Not operational" + 868 cc="de" country="Germany" operator="BDBOS" + 869 cc="de" country="Germany" operator="TKÜV-Netzanbindungen" 92 bands="GSM 1800 / UMTS 2100" cc="de" country="Germany" operator="Nash Technologies" status="Not operational" - 00-99 + 98 bands="5G 3500" cc="de" country="Germany" operator="private networks" status="operational" 266 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600" brand="GibTel" cc="gi" country="Gibraltar (United Kingdom)" operator="Gibtelecom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="GibTel" cc="gi" country="Gibraltar (United Kingdom)" operator="Gibtelecom" status="Operational" 03 brand="Gibfibrespeed" cc="gi" country="Gibraltar (United Kingdom)" operator="GibFibre Ltd" + 04 brand="MCOM" cc="gi" country="Gibraltar (United Kingdom)" operator="Melmasti Global (Gibraltar) Ltd" 06 bands="UMTS 2100" brand="CTS Mobile" cc="gi" country="Gibraltar (United Kingdom)" operator="CTS Gibraltar" status="Not operational" - 09 bands="GSM 1800 / UMTS 2100" brand="Shine" cc="gi" country="Gibraltar (United Kingdom)" operator="Eazitelecom" status="Operational" + 09 bands="GSM 1800 / UMTS 2100" brand="Shine" cc="gi" country="Gibraltar (United Kingdom)" operator="Eazitelecom" status="Not operational" 00-99 268 - 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Vodafone" cc="pt" country="Portugal" operator="Vodafone Portugal" status="Operational" - 02 brand="MEO" cc="pt" country="Portugal" operator="Telecomunicações Móveis Nacionais" status="Not operational" - 03 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="NOS" cc="pt" country="Portugal" operator="NOS Comunicações" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="Vodafone" cc="pt" country="Portugal" operator="Vodafone Portugal" status="Operational" + 02 bands="LTE 900 / LTE 1800 / LTE 2600" brand="DIGI PT" cc="pt" country="Portugal" operator="Digi Portugal, Lda." status="Operational" + 03 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="NOS" cc="pt" country="Portugal" operator="NOS Comunicações" status="Operational" 04 bands="MVNO" brand="LycaMobile" cc="pt" country="Portugal" operator="LycaMobile" status="Operational" 05 bands="UMTS 2100" cc="pt" country="Portugal" operator="Oniway - Inforcomunicaçôes, S.A." status="Not operational" - 06 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="MEO" cc="pt" country="Portugal" operator="Telecomunicações Móveis Nacionais" status="Operational" - 07 bands="MVNO" brand="Vectone Mobile" cc="pt" country="Portugal" operator="Mundio Mobile (Portugal) Limited" status="Not operational" + 06 bands="GSM 900 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500" brand="MEO" cc="pt" country="Portugal" operator="MEO - Serviços de Comunicações e Multimédia, S.A." status="Operational" + 07 bands="MVNO" cc="pt" country="Portugal" operator="Sumamovil Portugal, S.A." + 08 brand="MEO" cc="pt" country="Portugal" operator="MEO - Serviços de Comunicações e Multimédia, S.A." 11 cc="pt" country="Portugal" operator="Compatel, Limited" 12 bands="GSM-R" cc="pt" country="Portugal" operator="Infraestruturas de Portugal, S.A." status="Operational" - 13 cc="pt" country="Portugal" operator="G9Telecom, S.A." + 13 bands="MVNO" cc="pt" country="Portugal" operator="G9Telecom, S.A." 21 bands="CDMA2000 450" brand="Zapp" cc="pt" country="Portugal" operator="Zapp Portugal" status="Not operational" - 80 brand="MEO" cc="pt" country="Portugal" operator="Telecomunicações Móveis Nacionais" + 80 cc="pt" country="Portugal" operator="E-Redes - Distribuição de Eletricidade, S.A." 91 brand="Vodafone" cc="pt" country="Portugal" operator="Vodafone Portugal" + 92 brand="Vodafone" cc="pt" country="Portugal" operator="Vodafone Portugal" 93 brand="NOS" cc="pt" country="Portugal" operator="NOS Comunicações" 00-99 270 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="POST" cc="lu" country="Luxembourg" operator="POST Luxembourg" status="Operational" - 02 cc="lu" country="Luxembourg" operator="MTX Connect S.a.r.l." - 07 cc="lu" country="Luxembourg" operator="Bouygues Telecom S.A." + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 700 / 5G 3500" brand="POST" cc="lu" country="Luxembourg" operator="POST Luxembourg" status="Operational" + 02 bands="MVNO" cc="lu" country="Luxembourg" operator="MTX Connect S.à r.l." status="Operational" + 05 cc="lu" country="Luxembourg" operator="Luxembourg Online S.A." + 07 brand="Bouygues" cc="lu" country="Luxembourg" operator="Bouygues Telecom S.A." 10 cc="lu" country="Luxembourg" operator="Blue Communications" 71 bands="GSM-R 900" brand="CFL" cc="lu" country="Luxembourg" operator="Société Nationale des Chemins de Fer Luxembourgeois" status="Operational" - 77 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Tango" cc="lu" country="Luxembourg" operator="Tango SA" status="Operational" + 77 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / 5G 700 / 5G 3500" brand="Tango" cc="lu" country="Luxembourg" operator="Tango SA" status="Operational" 78 cc="lu" country="Luxembourg" operator="Interactive digital media GmbH" 79 cc="lu" country="Luxembourg" operator="Mitto AG" 80 cc="lu" country="Luxembourg" operator="Syniverse Technologies S.à r.l." 81 cc="lu" country="Luxembourg" operator="E-Lux Mobile Telecommunication S.A." - 99 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Orange" cc="lu" country="Luxembourg" operator="Orange S.A." status="Operational" + 99 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 700 / 5G 3500" brand="Orange" cc="lu" country="Luxembourg" operator="Orange S.A." status="Operational" 00-99 272 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="Vodafone" cc="ie" country="Ireland" operator="Vodafone Ireland" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="3" cc="ie" country="Ireland" operator="Hutchison 3G Ireland limited" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="Eir" cc="ie" country="Ireland" operator="Eir Group plc" status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / 5G 2100 / 5G 3500" brand="Vodafone" cc="ie" country="Ireland" operator="Vodafone Ireland" status="Operational" + 02 bands="GSM 900 / UMTS 2100" brand="3" cc="ie" country="Ireland" operator="Three Ireland Services (Hutchison) Ltd" status="Operational" + 03 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 1800 / 5G 3500" brand="Eir" cc="ie" country="Ireland" operator="Eir Group plc" status="Operational" 04 cc="ie" country="Ireland" operator="Access Telecom" - 05 bands="UMTS 2100 / LTE 800 / LTE 1800" brand="3" cc="ie" country="Ireland" operator="Hutchison 3G Ireland limited" status="Operational" - 07 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Eir" cc="ie" country="Ireland" operator="Eir Group plc" status="Operational" + 05 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 1800 / 5G 3500" brand="3" cc="ie" country="Ireland" operator="Three Ireland (Hutchison) Ltd" status="Operational" + 07 bands="GSM 900 / UMTS 2100" brand="Eir" cc="ie" country="Ireland" operator="Eir Group plc" status="Operational" 08 brand="Eir" cc="ie" country="Ireland" operator="Eir Group plc" 09 cc="ie" country="Ireland" operator="Clever Communications Ltd." status="Not operational" 11 bands="MVNO" brand="Tesco Mobile" cc="ie" country="Ireland" operator="Liffey Telecom" status="Operational" 13 bands="MVNO" brand="Lycamobile" cc="ie" country="Ireland" operator="Lycamobile" status="Operational" 15 bands="MVNO" brand="Virgin Mobile" cc="ie" country="Ireland" operator="UPC" status="Operational" - 16 bands="MVNO" brand="Carphone Warehouse" cc="ie" country="Ireland" operator="Carphone Warehouse" status="Operational" - 17 brand="3" cc="ie" country="Ireland" operator="Hutchison 3G Ireland limited" + 16 bands="MVNO" brand="iD Mobile" cc="ie" country="Ireland" operator="Carphone Warehouse" status="Not operational" + 17 brand="3" cc="ie" country="Ireland" operator="Three Ireland (Hutchison) Ltd" 18 bands="MVNO" cc="ie" country="Ireland" operator="Cubic Telecom Limited" status="Operational" 21 bands="MVNO" cc="ie" country="Ireland" operator="Net Feasa Limited" status="Operational" + 25 bands="MVNO" brand="Sky Mobile" cc="ie" country="Ireland" operator="Sky Ireland" status="Operational" + 42 brand="Imagine" cc="ie" country="Ireland" operator="Imagine Communications" status="Operational" + 68 cc="ie" country="Ireland" operator="Office of the Government Chief Information Officer" 00-99 274 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Síminn" cc="is" country="Iceland" operator="Iceland Telecom" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Vodafone" cc="is" country="Iceland" operator="Sýn" status="Operational" - 03 brand="Vodafone" cc="is" country="Iceland" operator="Sýn" status="Operational" - 04 bands="GSM 1800" brand="Viking" cc="is" country="Iceland" operator="IMC Island ehf" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500" brand="Síminn" cc="is" country="Iceland" operator="Iceland Telecom" status="Operational" + 02 bands="UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100" brand="Sýn" cc="is" country="Iceland" operator="Sýn" status="Operational" + 03 brand="Sýn" cc="is" country="Iceland" operator="Sýn" status="Not operational" + 04 bands="GSM 1800" brand="Viking" cc="is" country="Iceland" operator="IMC Island ehf" status="Not operational" 05 bands="GSM 1800" cc="is" country="Iceland" operator="Halló Frjáls fjarskipti hf." status="Not operational" 06 cc="is" country="Iceland" operator="Núll níu ehf" status="Not operational" 07 bands="GSM 1800" brand="IceCell" cc="is" country="Iceland" operator="IceCell ehf" status="Not operational" 08 bands="GSM 900 / GSM 1800" brand="On-waves" cc="is" country="Iceland" operator="Iceland Telecom" status="Operational" - 11 bands="UMTS 2100 / LTE 1800" brand="Nova" cc="is" country="Iceland" operator="Nova ehf" status="Operational" + 11 bands="UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / 5G 3500" brand="Nova" cc="is" country="Iceland" operator="Nova ehf" status="Operational" 12 bands="MVNO" brand="Tal" cc="is" country="Iceland" operator="IP fjarskipti" status="Operational" 16 cc="is" country="Iceland" operator="Tismi BV" 22 cc="is" country="Iceland" operator="Landhelgisgæslan (Icelandic Coast Guard)" @@ -877,31 +1045,31 @@ 91 bands="Tetra" cc="is" country="Iceland" operator="Neyðarlínan" status="Operational" 00-99 276 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Telekom.al" cc="al" country="Albania" operator="Telekom Albania" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="ONE" cc="al" country="Albania" operator="One Albania" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Vodafone" cc="al" country="Albania" operator="Vodafone Albania" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Eagle Mobile" cc="al" country="Albania" operator="Albtelecom" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="ALBtelecom" cc="al" country="Albania" operator="Albtelecom" status="Not operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Plus Communication" cc="al" country="Albania" operator="Plus Communication" status="Not operational" 00-99 278 - 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Vodafone" cc="mt" country="Malta" operator="Vodafone Malta" status="Operational" - 11 bands="MVNO" cc="mt" country="Malta" operator="YOM Ltd." status="Operational" - 21 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="GO" cc="mt" country="Malta" operator="Mobile Communications Limited" status="Operational" + 01 bands="GSM 900 / UMTS 2100 / LTE 1800 / 5G" brand="Epic" cc="mt" country="Malta" operator="Epic" status="Operational" + 11 bands="MVNO" cc="mt" country="Malta" operator="YOM Ltd." status="Not operational" + 21 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G" brand="GO" cc="mt" country="Malta" operator="Mobile Communications Limited" status="Operational" 30 brand="GO" cc="mt" country="Malta" operator="Mobile Communications Limited" - 77 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 2100" brand="Melita" cc="mt" country="Malta" operator="Melita" status="Operational" + 77 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 2100 / 5G" brand="Melita" cc="mt" country="Malta" operator="Melita" status="Operational" 00-99 280 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Cytamobile-Vodafone" cc="cy" country="Cyprus" operator="Cyprus Telecommunications Authority" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Cytamobile-Vodafone" cc="cy" country="Cyprus" operator="Cyprus Telecommunications Authority" status="Operational" 02 brand="Cytamobile-Vodafone" cc="cy" country="Cyprus" operator="Cyprus Telecommunications Authority" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Epic" cc="cy" country="Cyprus" operator="Monaco Telecom" status="Operational" + 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Epic" cc="cy" country="Cyprus" operator="Monaco Telecom" status="Operational" 20 bands="UMTS 2100 / LTE 900 / LTE 1800" brand="PrimeTel" cc="cy" country="Cyprus" operator="PrimeTel PLC" status="Operational" 22 bands="MVNO" brand="lemontel" cc="cy" country="Cyprus" operator="Lemontel Ltd" status="Operational" 23 bands="MVNO" brand="Vectone Mobile" cc="cy" country="Cyprus" operator="Mundio Mobile Cyprus Ltd." status="Not operational" 00-99 282 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Geocell" cc="ge" country="Georgia" operator="Silknet" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G" brand="Geocell" cc="ge" country="Georgia" operator="Silknet" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Magti" cc="ge" country="Georgia" operator="MagtiCom" status="Operational" 03 bands="CDMA 450" brand="MagtiFix" cc="ge" country="Georgia" operator="MagtiCom" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Beeline" cc="ge" country="Georgia" operator="Mobitel" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G 700 / 5G 3500" brand="Cellfie" cc="ge" country="Georgia" operator="Cellfie Mobile" status="Operational" 05 bands="CDMA 800" brand="S1" cc="ge" country="Georgia" operator="Silknet" status="Operational" 06 cc="ge" country="Georgia" operator="JSC Compatel" 07 bands="MVNO" brand="GlobalCell" cc="ge" country="Georgia" operator="GlobalCell" status="Operational" @@ -912,65 +1080,77 @@ 12 cc="ge" country="Georgia" operator="Telecom1 Ltd" 13 cc="ge" country="Georgia" operator="Asanet Ltd" 14 bands="MVNO" brand="DataCell" cc="ge" country="Georgia" operator="DataHouse Global" + 15 cc="ge" country="Georgia" operator="Servicebox Ltd" + 16 cc="ge" country="Georgia" operator="Unicell Mobile Ltd" + 17 cc="ge" country="Georgia" operator="TMTECH Ltd" + 18 cc="ge" country="Georgia" operator="Lagi Ltd." + 22 brand="Myphone" cc="ge" country="Georgia" operator="Myphone Ltd" + 66 cc="ge" country="Georgia" operator="Icecell Telecom LLC" 00-99 283 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 1800" brand="Beeline" cc="am" country="Armenia" operator="Veon Armenia CJSC" status="Operational" - 04 bands="GSM 900 / UMTS 900" brand="Karabakh Telecom" cc="am" country="Armenia" operator="Karabakh Telecom" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="VivaCell-MTS" cc="am" country="Armenia" operator="K Telecom CJSC" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 450 / LTE 1800" brand="Team" cc="am" country="Armenia" operator="Telecom Armenia" status="Operational" + 04 bands="GSM 900 / UMTS 900" brand="Karabakh Telecom" cc="am" country="Armenia" operator="Karabakh Telecom" status="Not operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600 / 5G 800" brand="Viva Armenia" cc="am" country="Armenia" operator="K Telecom CJSC" status="Operational" 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Ucom" cc="am" country="Armenia" operator="Ucom LLC" status="Operational" 00-99 284 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="A1" cc="bg" country="Bulgaria" operator="A1 Bulgaria" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="Vivacom" cc="bg" country="Bulgaria" operator="BTC" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Telenor" cc="bg" country="Bulgaria" operator="Telenor (Bulgaria)" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 3500" brand="A1 BG" cc="bg" country="Bulgaria" operator="A1 Bulgaria" status="Operational" + 03 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 1800 / 5G 3500" brand="Vivacom" cc="bg" country="Bulgaria" operator="BTC" status="Operational" + 05 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / 5G 2600 / 5G 3500" brand="Yettel" cc="bg" country="Bulgaria" operator="Yettel Bulgaria" status="Operational" 07 bands="GSM-R" brand="НКЖИ" cc="bg" country="Bulgaria" operator="НАЦИОНАЛНА КОМПАНИЯ ЖЕЛЕЗОПЪТНА ИНФРАСТРУКТУРА" status="Operational" 09 cc="bg" country="Bulgaria" operator="COMPATEL LIMITED" status="Not operational" - 11 bands="LTE 1800" cc="bg" country="Bulgaria" operator="Bulsatcom" status="Operational" - 13 bands="LTE 1800" brand="Ти.ком" cc="bg" country="Bulgaria" operator="Ti.com JSC" status="Operational" + 11 bands="LTE 1800" cc="bg" country="Bulgaria" operator="Bulsatcom" status="Not operational" + 13 bands="LTE 1800" brand="Ти.ком" cc="bg" country="Bulgaria" operator="Ti.com JSC" status="Not Operational" 00-99 286 - 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Turkcell" cc="tr" country="Turkey" operator="Turkcell Iletisim Hizmetleri A.S." status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600" brand="Vodafone" cc="tr" country="Turkey" operator="Vodafone Turkey" status="Operational" - 03 bands="GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Türk Telekom" cc="tr" country="Turkey" operator="Türk Telekom" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G" brand="Turkcell" cc="tr" country="Turkey" operator="Turkcell Iletisim Hizmetleri A.S." status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2600" brand="Vodafone" cc="tr" country="Turkey" operator="Vodafone Turkey" status="Operational" + 03 bands="GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2600 / TD-LTE 2600 / 5G" brand="Türk Telekom" cc="tr" country="Turkey" operator="Türk Telekom" status="Operational" 04 bands="GSM 1800" brand="Aycell" cc="tr" country="Turkey" operator="Aycell" status="Not operational" 00-99 288 - 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Føroya Tele" cc="fo" country="Faroe Islands (Denmark)" operator="Føroya Tele" status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Hey" cc="fo" country="Faroe Islands (Denmark)" operator="Nema" status="Operational" - 03 cc="fo" country="Faroe Islands (Denmark)" operator="Tosa Sp/F" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G" brand="Føroya Tele" cc="fo" country="Faroe Islands (Denmark)" operator="Føroya Tele" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Nema" cc="fo" country="Faroe Islands (Denmark)" operator="Nema" status="Operational" + 03 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="TOSA" cc="fo" country="Faroe Islands (Denmark)" operator="Tosa Sp/F" status="Not operational" + 10 brand="Føroya Tele" cc="fo" country="Faroe Islands (Denmark)" operator="Føroya Tele" 00-99 289 67 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Aquafon" country="Abkhazia - GE-AB" operator="Aquafon JSC" status="Operational" 88 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="A-Mobile" country="Abkhazia - GE-AB" operator="A-Mobile LLSC" status="Operational" 00-99 290 - 01 bands="GSM 900 / UMTS 900 / LTE 800" cc="gl" country="Greenland (Denmark)" operator="TELE Greenland A/S" status="Operational" + 01 bands="GSM 900 / UMTS 900 / LTE 800 / 5G" brand="tusass" cc="gl" country="Greenland (Denmark)" operator="Tusass A/S" status="Operational" 02 bands="TD-LTE 2500" brand="Nanoq Media" cc="gl" country="Greenland (Denmark)" operator="inu:it a/s" status="Operational" + 03 bands="LTE 700" brand="Tuullik mobile data" cc="gl" country="Greenland (Denmark)" operator="GTV Greenland" status="Operational" 00-99 292 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="PRIMA" cc="sm" country="San Marino" operator="San Marino Telecom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="PRIMA" cc="sm" country="San Marino" operator="San Marino Telecom" status="Not operational" 00-99 293 10 bands="GSM-R" cc="si" country="Slovenia" operator="SŽ - Infrastruktura, d.o.o." status="Operational" + 11 bands="5G 700" cc="si" country="Slovenia" operator="BeeIN d.o.o." status="Not operational" 20 cc="si" country="Slovenia" operator="COMPATEL Ltd" - 40 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="A1" cc="si" country="Slovenia" operator="A1 Slovenija" status="Operational" - 41 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Mobitel" cc="si" country="Slovenia" operator="Telekom Slovenije" status="Operational" - 64 bands="UMTS 2100" brand="T-2" cc="si" country="Slovenia" operator="T-2 d.o.o." status="Operational" - 70 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Telemach" cc="si" country="Slovenia" operator="Tušmobil d.o.o." status="Operational" - 86 cc="si" country="Slovenia" operator="ELEKTRO GORENJSKA, d.d" + 21 bands="MVNO" cc="si" country="Slovenia" operator="NOVATEL d.o.o." + 22 bands="MVNO" cc="si" country="Slovenia" operator="Mobile One Ltd." + 40 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500" brand="A1 SI" cc="si" country="Slovenia" operator="A1 Slovenija" status="Operational" + 41 bands="GSM 900 / GSM 1800 / LTE 700 / LTE 800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 2600 / 5G 3600" brand="Mobitel" cc="si" country="Slovenia" operator="Telekom Slovenije" status="Operational" + 64 bands="UMTS 2100 / LTE 2100 / 5G 2300 / 5G 3500" brand="T-2" cc="si" country="Slovenia" operator="T-2 d.o.o." status="Operational" + 70 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 800 / LTE 1800 / LTE 2100 / 5G 700 / 5G 3500" brand="Telemach" cc="si" country="Slovenia" operator="Tušmobil d.o.o." status="Operational" + 86 bands="LTE 700" cc="si" country="Slovenia" operator="ELEKTRO GORENJSKA, d.d" 00-99 294 - 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Telekom.mk" cc="mk" country="North Macedonia" operator="Makedonski Telekom" status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="vip" cc="mk" country="North Macedonia" operator="ONE.VIP DOO" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="vip" cc="mk" country="North Macedonia" operator="ONE.VIP DOO" status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2100 / 5G 3500" brand="Telekom.mk" cc="mk" country="North Macedonia" operator="Makedonski Telekom" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="one" cc="mk" country="North Macedonia" operator="one" status="Not operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / LTE 2100" brand="A1 MK" cc="mk" country="North Macedonia" operator="A1 Macedonia DOOEL" status="Operational" 04 bands="MVNO" brand="Lycamobile" cc="mk" country="North Macedonia" operator="Lycamobile LLC" status="Operational" 10 cc="mk" country="North Macedonia" operator="WTI Macedonia" status="Not operational" 11 cc="mk" country="North Macedonia" operator="MOBIK TELEKOMUNIKACII DOOEL Skopje" + 12 cc="mk" country="North Macedonia" operator="MTEL DOOEL Skopje" 00-99 295 - 01 bands="GSM 900 / GSM 1800 / LTE 1800" brand="Swisscom" cc="li" country="Liechtenstein" operator="Swisscom Schweiz AG" status="Operational" - 02 bands="GSM 1800 / UMTS 2100 / LTE 1800" brand="7acht" cc="li" country="Liechtenstein" operator="Salt Liechtenstein AG" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="FL1" cc="li" country="Liechtenstein" operator="Telecom Liechtenstein AG" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Swisscom" cc="li" country="Liechtenstein" operator="Swisscom Schweiz AG" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="7acht" cc="li" country="Liechtenstein" operator="Salt Liechtenstein AG" status="Operational" + 05 bands="GSM 900 / UMTS 2100 / LTE 800" brand="FL1" cc="li" country="Liechtenstein" operator="Telecom Liechtenstein AG" status="Operational" 06 bands="MVNO" brand="Cubic Telecom" cc="li" country="Liechtenstein" operator="Cubic Telecom AG" status="Operational" 07 bands="MVNO" cc="li" country="Liechtenstein" operator="First Mobile AG" status="Not operational" 09 bands="MVNO" cc="li" country="Liechtenstein" operator="EMnify GmbH" @@ -979,47 +1159,57 @@ 77 bands="GSM 900" brand="Alpmobil" cc="li" country="Liechtenstein" operator="Alpcom AG" status="Not operational" 00-99 297 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Telenor" cc="me" country="Montenegro" operator="Telenor Montenegro" status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="T-Mobile" cc="me" country="Montenegro" operator="T-Mobile Montenegro LLC" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="m:tel CG" cc="me" country="Montenegro" operator="MTEL CG" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 2100" brand="One" cc="me" country="Montenegro" operator="One Montenegro" status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="telekom.me" cc="me" country="Montenegro" operator="Crnogorski Telekom" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="m:tel" cc="me" country="Montenegro" operator="m:tel Crna Gora" status="Operational" 00-99 302 + 060 bands="LTE / 5G" cc="ca" country="Canada" operator="Karrier One Inc." 100 bands="MVNO" brand="dotmobile" cc="ca" country="Canada" operator="Data on Tap Inc." - 130 bands="TD-LTE 3500 / WiMAX" brand="Xplornet" cc="ca" country="Canada" operator="Xplornet Communications" status="Operational" - 131 bands="TD-LTE 3500 / WiMAX" brand="Xplornet" cc="ca" country="Canada" operator="Xplornet Communications" status="Operational" + 130 bands="TD-LTE 3500 / WiMAX / 5G 3500" brand="Xplore" cc="ca" country="Canada" operator="Xplore Inc." status="Not operational" + 131 bands="TD-LTE 3500 / WiMAX / 5G 3500" brand="Xplore" cc="ca" country="Canada" operator="Xplore Inc." status="Operational" + 140 bands="LTE 1900" brand="Fibernetics" cc="ca" country="Canada" operator="Fibernetics Corp." status="Not Operational" 150 cc="ca" country="Canada" operator="Cogeco Connexion Inc." - 220 bands="UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600 / 5G 1700" brand="Telus Mobility, Koodo Mobile, Public Mobile" cc="ca" country="Canada" operator="Telus Mobility" status="Operational" + 151 cc="ca" country="Canada" operator="Cogeco Connexion Inc." + 152 cc="ca" country="Canada" operator="Cogeco Connexion Inc." + 160 bands="MVNO" cc="ca" country="Canada" operator="Sugar Mobile Inc." status="Operational" + 220 bands="UMTS 850 / UMTS 1900 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 1700 / 5G 3500" brand="Telus Mobility, Koodo Mobile, Public Mobile" cc="ca" country="Canada" operator="Telus Mobility" status="Operational" 221 brand="Telus" cc="ca" country="Canada" operator="Telus Mobility" 222 brand="Telus" cc="ca" country="Canada" operator="Telus Mobility" - 250 brand="ALO" cc="ca" country="Canada" operator="ALO Mobile Inc." - 270 bands="UMTS 1700 / LTE 700 / LTE 1700" brand="EastLink" cc="ca" country="Canada" operator="Bragg Communications" status="Operational" - 290 bands="iDEN 900" brand="Airtel Wireless" cc="ca" country="Canada" operator="Airtel Wireless" status="Operational" - 300 bands="LTE 700 / LTE 850 / LTE 2600" brand="ECOTEL" cc="ca" country="Canada" operator="Ambra Solutions" - 310 bands="LTE 700 / LTE 850 / LTE 2600" brand="ECOTEL" cc="ca" country="Canada" operator="Ambra Solutions" + 230 cc="ca" country="Canada" operator="ISP Telecom" + 250 bands="1700" cc="ca" country="Canada" operator="Bell Mobility" + 270 bands="UMTS 1700 / LTE 700 / LTE 1700 / 5G 600" brand="EastLink" cc="ca" country="Canada" operator="Bragg Communications" status="Operational" + 290 bands="iDEN 900" brand="Airtel Wireless" cc="ca" country="Canada" operator="Airtel Wireless" status="Not operational" + 300 bands="LTE 700 / LTE 850 / LTE 2600" brand="ECOTEL" cc="ca" country="Canada" operator="Ecotel inc." status="Operational" + 301 bands="LTE 700 / LTE 850 / LTE 2600" brand="ECOTEL" cc="ca" country="Canada" operator="Ecotel inc." status="Operational" + 310 bands="LTE 700 / LTE 850 / LTE 2600" brand="ECOTEL" cc="ca" country="Canada" operator="Ecotel inc." status="Operational" 320 bands="UMTS 1700" brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" status="Operational" - 330 cc="ca" country="Canada" operator="Blue Canada Wireless Inc." + 330 bands="5G" cc="ca" country="Canada" operator="OpenMobile Inc." 340 bands="MVNO" brand="Execulink" cc="ca" country="Canada" operator="Execulink" status="Operational" - 350 bands="GSM 850" brand="FIRST" cc="ca" country="Canada" operator="FIRST Networks Operations" status="Not operational" + 350 cc="ca" country="Canada" operator="Naskapi Imuun Inc." + 351 bands="LTE 3500" cc="ca" country="Canada" operator="MPVWifi Inc." status="Operational" + 352 brand="Lyttonnet" cc="ca" country="Canada" operator="Lytton Area Wireless Society" status="Operational" + 353 cc="ca" country="Canada" operator="SpeedFI Inc." 360 bands="iDEN 800" brand="MiKe" cc="ca" country="Canada" operator="Telus Mobility" status="Not operational" 361 bands="CDMA 800 / CDMA 1900" brand="Telus" cc="ca" country="Canada" operator="Telus Mobility" status="Not operational" 370 bands="MVNO" brand="Fido" cc="ca" country="Canada" operator="Fido Solutions (Rogers Wireless)" status="Operational" 380 bands="UMTS 850 / UMTS 1900" brand="Keewaytinook Mobile" cc="ca" country="Canada" operator="Keewaytinook Okimakanak Mobile" status="Operational" 390 brand="DMTS" cc="ca" country="Canada" operator="Dryden Mobility" status="Not operational" - 420 bands="TD-LTE 3500" brand="ABC" cc="ca" country="Canada" operator="A.B.C. Allen Business Communications Ltd." status="Operational" + 420 bands="TD-LTE 3500" brand="Telus" cc="ca" country="Canada" operator="Telus Mobility" status="Operational" 480 bands="GSM 1900 / LTE 2600" brand="Qiniq" cc="ca" country="Canada" operator="SSi Connexions" status="Operational" - 490 bands="UMTS 1700 / LTE 700 / LTE 1700 / LTE 2600" brand="Freedom Mobile" cc="ca" country="Canada" operator="Shaw Communications" status="Operational" - 491 brand="Freedom Mobile" cc="ca" country="Canada" operator="Shaw Communications" - 500 bands="UMTS 1700 / LTE 700 / LTE 1700" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational" - 510 bands="UMTS 1700 / LTE 700 / LTE 1700" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational" - 520 brand="Videotron" cc="ca" country="Canada" operator="Videotron" + 490 bands="UMTS 1700 / LTE 700 / LTE 1700 / LTE 2600 / 5G 600 / 5G 1700" brand="Freedom Mobile" cc="ca" country="Canada" operator="Quebecor" status="Operational" + 491 brand="Freedom Mobile" cc="ca" country="Canada" operator="Quebecor" + 500 bands="UMTS 1700 / LTE 700 / LTE 1700 / 5G 600 / 5G 1700 / 5G 2600" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational" + 510 bands="UMTS 1700 / LTE 700 / LTE 1700 / 5G 600 / 5G 1700 / 5G 2600" brand="Videotron" cc="ca" country="Canada" operator="Videotron" status="Operational" + 520 brand="Rogers (Vidéotron MOCN)" cc="ca" country="Canada" operator="Videotron" status="Operational" 530 bands="GSM" brand="Keewaytinook Mobile" cc="ca" country="Canada" operator="Keewaytinook Okimakanak Mobile" status="Operational" 540 cc="ca" country="Canada" operator="Rovvr Communications Inc." 550 bands="LTE?" cc="ca" country="Canada" operator="Star Solutions International Inc." 560 bands="CDMA / GSM" brand="Lynx Mobility" cc="ca" country="Canada" operator="Lynx Mobility" status="Not operational" - 570 brand="LightSquared" cc="ca" country="Canada" operator="LightSquared" + 570 bands="Satellite" cc="ca" country="Canada" operator="Ligado Networks Corp." 590 brand="Quadro Mobility" cc="ca" country="Canada" operator="Quadro Communications Co-op" status="Operational" 600 cc="ca" country="Canada" operator="Iristel" - 610 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 1700" brand="Bell Mobility" cc="ca" country="Canada" operator="Bell Mobility" status="Operational" + 610 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 1700 / 5G 3500" brand="Bell Mobility" cc="ca" country="Canada" operator="Bell Mobility" status="Operational" 620 bands="UMTS 850 / GSM 1900 / LTE 850 / LTE 1900" brand="ICE Wireless" cc="ca" country="Canada" operator="ICE Wireless" status="Operational" 630 brand="Aliant Mobility" cc="ca" country="Canada" operator="Bell Aliant" 640 bands="CDMA 800 / CDMA 1900" brand="Bell" cc="ca" country="Canada" operator="Bell Mobility" status="Not operational" @@ -1032,71 +1222,88 @@ 660 bands="UMTS 850 / UMTS 1900 / LTE 1700" brand="MTS" cc="ca" country="Canada" operator="Bell MTS" status="Operational" 670 brand="CityTel Mobility" cc="ca" country="Canada" operator="CityWest" 680 bands="TD-LTE 2600" brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" status="Operational" + 681 brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" status="Not operational" 690 bands="UMTS 850 / UMTS 1900" brand="Bell" cc="ca" country="Canada" operator="Bell Mobility" status="Operational" 701 bands="CDMA2000" cc="ca" country="Canada" operator="MB Tel Mobility" status="Not operational" 702 bands="CDMA2000" cc="ca" country="Canada" operator="MT&T Mobility (Aliant)" status="Not operational" 703 bands="CDMA2000" cc="ca" country="Canada" operator="New Tel Mobility (Aliant)" status="Not operational" - 710 bands="Satellite CDMA" brand="Globalstar" cc="ca" country="Canada" status="Operational" - 720 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600 / 5G 2500" brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" status="Operational" + 710 bands="Satellite CDMA" brand="Globalstar" cc="ca" country="Canada" operator="Globalstar Canada Satellite Co." status="Operational" + 720 bands="GSM 850 / UMTS 850 / LTE 600 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 600 / 5G 1700 / TD-5G 2600 / 5G 3500" brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" status="Operational" 721 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" + 722 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" + 723 bands="LTE 1900" brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" status="Operational" + 724 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" + 725 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" 730 brand="TerreStar Solutions" cc="ca" country="Canada" operator="TerreStar Networks" - 740 brand="Shaw Telecom" cc="ca" country="Canada" operator="Shaw Communications" status="Not operational" + 731 brand="TerreStar Solutions" cc="ca" country="Canada" operator="TerreStar Networks" + 740 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" + 741 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" 750 brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" 760 bands="MVNO" brand="Public Mobile" cc="ca" country="Canada" operator="Telus Mobility" status="Operational" 770 bands="UMTS 850" brand="TNW Wireless" cc="ca" country="Canada" operator="TNW Wireless Inc." status="Operational" - 780 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700" brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" status="Operational" + 780 bands="UMTS 850 / UMTS 1900 / LTE 600 / LTE 700 / LTE 850 / LTE 1900 / LTE 1700 / LTE 2600 / 5G 1700 / 5G 3500" brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" status="Operational" + 781 brand="SaskTel" cc="ca" country="Canada" operator="SaskTel Mobility" status="Not operational" 790 bands="WiMAX / TD-LTE 3500" cc="ca" country="Canada" operator="NetSet Communications" status="Operational" 820 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" + 821 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" + 848 cc="ca" country="Canada" operator="Vocom International Telecommunications, Inc" 860 brand="Telus" cc="ca" country="Canada" operator="Telus Mobility" - 880 bands="UMTS 850 / UMTS 1900" brand="Bell / Telus / SaskTel" cc="ca" country="Canada" operator="Shared Telus, Bell, and SaskTel" status="Operational" + 880 bands="UMTS 850 / UMTS 1900" brand="Telus / SaskTel" cc="ca" country="Canada" operator="Shared Telus, Bell, and SaskTel" status="Operational" + 910 bands="LTE 700" cc="ca" country="Canada" operator="Halton Regional Police Service" status="Operational" + 911 bands="LTE 700" cc="ca" country="Canada" operator="Halton Regional Police Service" status="Operational" 920 brand="Rogers Wireless" cc="ca" country="Canada" operator="Rogers Communications" status="Not operational" 940 bands="UMTS 850 / UMTS 1900" brand="Wightman Mobility" cc="ca" country="Canada" operator="Wightman Telecom" status="Operational" + 970 cc="ca" country="Canada" operator="Canadian Pacific Kansas City Railway" + 971 cc="ca" country="Canada" operator="Canadian National Railway" + 972 cc="ca" country="Canada" operator="Hydro-Québec" + 975 cc="ca" country="Canada" operator="BC Hydro" 990 cc="ca" country="Canada" operator="Ericsson Canada" 991 cc="ca" country="Canada" operator="Halton Regional Police Service" - 996 cc="ca" country="Canada" operator="Powertech Labs" - 997 cc="ca" country="Canada" operator="Powertech Labs" - 998 cc="ca" country="Canada" operator="Powertech Labs" + 996 cc="ca" country="Canada" operator="BC Hydro" status="Not operational" + 997 cc="ca" country="Canada" operator="Powertech Labs" status="Not operational" + 998 cc="ca" country="Canada" operator="Institut de Recherche d'Hydro-Québec" 000-999 308 01 bands="GSM 900" brand="Ameris" cc="pm" country="Saint Pierre and Miquelon (France)" operator="St. Pierre-et-Miquelon Télécom" status="Operational" 02 bands="GSM 900 / LTE 800" brand="GLOBALTEL" cc="pm" country="Saint Pierre and Miquelon (France)" operator="GLOBALTEL" status="Operational" 03 brand="Ameris" cc="pm" country="Saint Pierre and Miquelon (France)" operator="St. Pierre-et-Miquelon Télécom" + 04 brand="GLOBALTEL" cc="pm" country="Saint Pierre and Miquelon (France)" operator="GLOBALTEL" 00-99 310 004 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" - 005 bands="CDMA2000 850 / CDMA2000 1900" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" + 005 bands="CDMA2000 850 / CDMA2000 1900" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" 006 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" - 010 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" + 010 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" 012 bands="LTE 700 / LTE 1700 / LTE 1900" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" 013 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" - 014 cc="us" country="United States of America" + 014 cc="us" country="United States of America" status="Not operational" 015 brand="Southern LINC" cc="us" country="United States of America" operator="Southern Communications" 016 bands="CDMA2000 1900 / CDMA2000 1700" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Not operational" 017 bands="iDEN" brand="ProxTel" cc="us" country="United States of America" operator="North Sight Communications Inc." status="Not operational" - 020 bands="GSM 850 / GSM 1900 / UMTS" brand="Union Wireless" cc="us" country="United States of America" operator="Union Telephone Company" status="Operational" - 030 bands="GSM 850" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" - 032 bands="CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="IT&E Overseas, Inc" status="Operational" + 020 bands="UMTS / LTE" brand="Union Wireless" cc="us" country="United States of America" operator="Union Telephone Company" status="Operational" + 030 brand="mobi" cc="us" country="United States of America" operator="mobi" + 032 bands="CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="PTI Pacifica Inc." status="Operational" 033 cc="us" country="United States of America" operator="Guam Telephone Authority" 034 bands="iDEN" brand="Airpeak" cc="us" country="United States of America" operator="Airpeak" status="Operational" - 035 brand="ETEX Wireless" cc="us" country="United States of America" operator="ETEX Communications, LP" - 040 bands="CDMA" brand="MTA" cc="us" country="United States of America" operator="Matanuska Telephone Association, Inc." status="Not operational" + 035 brand="ETEX Wireless" cc="us" country="United States of America" operator="ETEX Communications, LP" status="Not operational" + 040 brand="Mobi" cc="us" country="United States of America" operator="Mobi, Inc." 050 bands="CDMA" brand="GCI" cc="us" country="United States of America" operator="Alaska Communications" status="Operational" - 053 bands="MVNO" brand="Virgin Mobile" cc="us" country="United States of America" operator="Sprint" status="Operational" + 053 bands="MVNO" brand="Virgin Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Operational" 054 cc="us" country="United States of America" operator="Alltel US" status="Operational" - 060 bands="1900" cc="us" country="United States of America" operator="Consolidated Telcom" status="Not operational" - 066 bands="GSM / CDMA" brand="U.S. Cellular" cc="us" country="United States of America" operator="U.S. Cellular" status="Operational" + 060 bands="5G" cc="us" country="United States of America" operator="Karrier One" + 066 bands="GSM / CDMA" brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" status="Operational" 070 bands="GSM 850" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" 080 bands="GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" 090 bands="GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" 100 bands="GSM 850 / UMTS 850 / UMTS 1700" brand="Plateau Wireless" cc="us" country="United States of America" operator="New Mexico RSA 4 East LP" status="Operational" 110 bands="CDMA / GSM 850 / UMTS 1900 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="PTI Pacifica Inc." status="Operational" - 120 bands="CDMA2000 1900 / LTE 850 / LTE 1900" brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Operational" + 120 bands="LTE 850 / LTE 1900" brand="T-Mobile" cc="vi" country="United States Virgin Islands (United States of America)" operator="T-Mobile US" status="Operational" 130 bands="CDMA2000 1900" brand="Carolina West Wireless" cc="us" country="United States of America" operator="Carolina West Wireless" status="Operational" 140 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1700" brand="GTA Wireless" cc="us" country="United States of America" operator="Teleguam Holdings, LLC" status="Operational" 150 bands="GSM 850 / UMTS 850 / UMTS 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" - 160 bands="GSM 1900" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Operational" + 160 bands="GSM 1900" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Not operational" 170 bands="GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" - 180 bands="GSM 850 / UMTS 850 / UMTS 1900" brand="West Central" cc="us" country="United States of America" operator="West Central Wireless" status="Operational" + 180 bands="GSM 850 / UMTS 850 / UMTS 1900" brand="West Central" cc="us" country="United States of America" operator="West Central Wireless" status="Not operational" 190 bands="GSM 850" brand="GCI" cc="us" country="United States of America" operator="Alaska Communications" status="Operational" 200 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" 210 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" @@ -1104,78 +1311,78 @@ 230 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" 240 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" 250 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" - 260 bands="GSM 1900 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 700 / LTE 1900 / LTE 1700 / 5G 600" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile USA" status="Operational" + 260 bands="GSM 1900 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 700 / LTE 1900 / LTE 1700 / 5G 600" brand="T-Mobile" cc="vi" country="United States Virgin Islands (United States of America)" operator="T-Mobile US" status="Operational" 270 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" 280 bands="GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Not operational" 290 bands="GSM 1900" brand="nep" cc="us" country="United States of America" operator="NEP Cellcorp Inc." status="Not operational" 300 bands="GSM 1900" brand="Big Sky Mobile" cc="us" country="United States of America" operator="iSmart Mobile, LLC" status="Not operational" 310 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" 311 bands="GSM 1900" cc="us" country="United States of America" operator="Farmers Wireless" status="Not operational" - 320 bands="GSM 850 / GSM 1900 / UMTS" brand="Cellular One" cc="us" country="United States of America" operator="Smith Bagley, Inc." status="Operational" + 320 bands="GSM 850 / GSM 1900 / UMTS / LTE" brand="Cellular One" cc="us" country="United States of America" operator="Smith Bagley, Inc." status="Operational" 330 bands="LTE" cc="us" country="United States of America" operator="Wireless Partners, LLC" - 340 bands="GSM 1900" brand="Limitless Mobile" cc="us" country="United States of America" operator="Limitless Mobile, LLC" + 340 bands="GSM 1900" brand="Limitless Mobile" cc="us" country="United States of America" operator="Limitless Mobile, LLC" status="Operational" 350 bands="CDMA" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" - 360 bands="CDMA" brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" status="Operational" + 360 bands="CDMA" brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" status="Not operational" 370 bands="GSM 1900 / UMTS 850 / LTE 700" brand="Docomo" cc="us" country="United States of America" operator="NTT DoCoMo Pacific" status="Operational" 380 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Not operational" 390 bands="GSM 850 / LTE 700 / CDMA" brand="Cellular One of East Texas" cc="us" country="United States of America" operator="TX-11 Acquisition, LLC" status="Operational" - 400 bands="GSM 1900 / UMTS 1900 / LTE 700" brand="iConnect" cc="us" country="United States of America" operator="Wave Runner LLC" status="Operational" - 410 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" - 420 bands="GSM 1900 / UMTS 1700" brand="Cincinnati Bell" cc="us" country="United States of America" operator="Cincinnati Bell Wireless" status="Not operational" + 400 bands="GSM 1900 / UMTS 1900 / LTE 700" brand="IT&E Wireless" cc="us" country="United States of America" operator="IT&E Overseas, Inc" status="Not operational" + 410 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / LTE 2300 / 5G 850 / 5G 3700 / 5G 39000" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" + 420 bands="LTE 600 / TD-LTE 3500 CBRS" brand="World Mobile" cc="us" country="United States of America" operator="World Mobile Networks, LLC" status="Operational" 430 bands="GSM 1900 / UMTS 1900" brand="GCI" cc="us" country="United States of America" operator="GCI Communications Corp." status="Operational" 440 bands="MVNO" cc="us" country="United States of America" operator="Numerex" status="Operational" - 450 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="Viaero" cc="us" country="United States of America" operator="Viaero Wireless" status="Operational" - 460 bands="MVNO" brand="Conecto" cc="us" country="United States of America" operator="NewCore Wireless LLC" status="Operational" + 450 bands="UMTS 850 / UMTS 1900" brand="Viaero" cc="us" country="United States of America" operator="Viaero Wireless" status="Operational" + 460 bands="MVNO" cc="us" country="United States of America" operator="Eseye" 470 brand="Docomo" cc="us" country="United States of America" operator="NTT DoCoMo Pacific" - 480 bands="iDEN" brand="iConnect" cc="us" country="United States of America" operator="Wave Runner LLC" status="Operational" - 490 bands="GSM 850 / GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Operational" + 480 bands="iDEN" brand="IT&E Wireless" cc="us" country="United States of America" operator="PTI Pacifica Inc." status="Operational" + 490 bands="GSM 850 / GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" 500 bands="CDMA2000 850 / CDMA2000 1900" brand="Alltel" cc="us" country="United States of America" operator="Public Service Cellular Inc." status="Operational" 510 brand="Cellcom" cc="us" country="United States of America" operator="Nsight" 520 brand="TNS" cc="us" country="United States of America" operator="Transaction Network Services" - 530 brand="iWireless" cc="us" country="United States of America" operator="Iowa Wireless Services LLC" - 540 bands="GSM 850 / GSM 1900" brand="Phoenix" cc="us" country="United States of America" operator="Hilliary Communications" status="Operational" + 530 cc="us" country="United States of America" operator="T-Mobile" + 540 bands="GSM 850 / GSM 1900" brand="Phoenix" cc="us" country="United States of America" operator="Hilliary Communications" status="Not operational" 550 cc="us" country="United States of America" operator="Syniverse Technologies" 560 bands="GSM 850" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Not operational" 570 bands="GSM 850 / LTE 700" cc="us" country="United States of America" operator="Broadpoint, LLC" status="Operational" - 580 bands="CDMA2000" cc="us" country="United States of America" operator="Inland Cellular Telephone Company" status="Operational" - 59 bands="CDMA" brand="Cellular One" cc="bm" country="Bermuda" status="Operational" + 580 bands="CDMA" cc="us" country="United States of America" operator="Inland Cellular Telephone Company" status="Not operational" + 59 bands="CDMA" brand="Cellular One" cc="bm" country="Bermuda" status="Not operational" 590 bands="GSM 850 / GSM 1900" cc="us" country="United States of America" operator="Verizon Wireless" - 591 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 592 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 593 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 594 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 595 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 596 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 597 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 598 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 599 bands="Unknwon" cc="us" country="United States of America" operator="Verizon Wireless" - 600 bands="CDMA2000 850 / CDMA2000 1900" brand="Cellcom" cc="us" country="United States of America" operator="NewCell Inc." status="Operational" - 610 bands="GSM 1900" brand="Epic PCS" cc="us" country="United States of America" operator="Elkhart Telephone Co." status="Not operational" + 591 cc="us" country="United States of America" operator="Verizon Wireless" + 592 cc="us" country="United States of America" operator="Verizon Wireless" + 593 cc="us" country="United States of America" operator="Verizon Wireless" + 594 cc="us" country="United States of America" operator="Verizon Wireless" + 595 cc="us" country="United States of America" operator="Verizon Wireless" + 596 cc="us" country="United States of America" operator="Verizon Wireless" + 597 cc="us" country="United States of America" operator="Verizon Wireless" + 598 cc="us" country="United States of America" operator="Verizon Wireless" + 599 cc="us" country="United States of America" operator="Verizon Wireless" + 600 bands="CDMA 850 / CDMA 1900" brand="Cellcom" cc="us" country="United States of America" operator="NewCell Inc." status="Not operational" + 610 cc="us" country="United States of America" operator="Mavenir Systems Inc" 620 brand="Cellcom" cc="us" country="United States of America" operator="Nsighttel Wireless LLC" - 630 bands="LTE 700" brand="miSpot" cc="us" country="United States of America" operator="Agri-Valley Communications" status="Not operational" + 630 brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless LLC" 640 bands="MVNO" cc="us" country="United States of America" operator="Numerex" status="Operational" 650 bands="MVNO" brand="Jasper" cc="us" country="United States of America" operator="Jasper Technologies" status="Operational" - 660 bands="GSM 1900" brand="T-Mobile" cc="us" country="United States of America" status="Not operational" + 660 bands="GSM 1900" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile USA, Inc." status="Not operational" 670 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" 680 bands="GSM 850 / GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" - 690 bands="GSM 1900 / LTE 1900" brand="Limitless Mobile" cc="us" country="United States of America" operator="Limitless Mobile, LLC" + 690 bands="UMTS 1900 / LTE 1900" brand="Limitless Mobile" cc="us" country="United States of America" operator="Limitless Mobile, LLC" status="Operational" 700 bands="GSM" brand="Bigfoot Cellular" cc="us" country="United States of America" operator="Cross Valiant Cellular Partnership" 710 bands="UMTS 850 / LTE" brand="ASTAC" cc="us" country="United States of America" operator="Arctic Slope Telephone Association Cooperative" status="Operational" 720 cc="us" country="United States of America" operator="Syniverse Technologies" - 730 brand="U.S. Cellular" cc="us" country="United States of America" operator="U.S. Cellular" + 730 brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" status="Not operational" 740 bands="LTE 700 / LTE 1700 / LTE 1900" brand="Viaero" cc="us" country="United States of America" operator="Viaero Wireless" status="Operational" - 750 bands="CDMA2000 850 / CDMA2000 1900" brand="Appalachian Wireless" cc="us" country="United States of America" operator="East Kentucky Network, LLC" status="Operational" + 750 bands="CDMA 850 / CDMA 1900" brand="Appalachian Wireless" cc="us" country="United States of America" operator="East Kentucky Network, LLC" status="Not operational" 760 cc="us" country="United States of America" operator="Lynch 3G Communications Corporation" status="Not operational" - 770 bands="GSM 1900 / UMTS 1700 / LTE 1700 / LTE 1900" brand="iWireless" cc="us" country="United States of America" operator="Iowa Wireless Services" status="Operational" + 770 cc="us" country="United States of America" operator="T-Mobile" 780 bands="iDEN" brand="Dispatch Direct" cc="us" country="United States of America" operator="D. D. Inc." status="Not operational" - 790 bands="GSM 1900 / UMTS / LTE" brand="BLAZE" cc="us" country="United States of America" operator="PinPoint Communications Inc." status="Operational" + 790 bands="GSM 1900 / UMTS / LTE" brand="BLAZE" cc="us" country="United States of America" operator="PinPoint Communications Inc." status="Not operational" 800 bands="GSM 1900" cc="us" country="United States of America" operator="T-Mobile" status="Not operational" 810 bands="1900" cc="us" country="United States of America" operator="Pacific Lightwave Inc." 820 cc="us" country="United States of America" operator="Verizon Wireless" - 830 bands="WiMAX" brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Not operational" + 830 bands="LTE 1900" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Operational" 840 bands="MVNO" brand="telna Mobile" cc="us" country="United States of America" operator="Telecom North America Mobile, Inc." status="Operational" 850 bands="MVNO" brand="Aeris" cc="us" country="United States of America" operator="Aeris Communications, Inc." status="Operational" - 860 bands="CDMA" brand="Five Star Wireless" cc="us" country="United States of America" operator="TX RSA 15B2, LP" status="Operational" + 860 bands="CDMA" brand="Five Star Wireless" cc="us" country="United States of America" operator="TX RSA 15B2, LP" status="Not operational" 870 bands="GSM 850" brand="PACE" cc="us" country="United States of America" operator="Kaplan Telephone Company" status="Not operational" 880 bands="LTE" brand="DTC Wireless" cc="us" country="United States of America" operator="Advantage Cellular Systems, Inc." status="Operational" 890 bands="GSM 850 / GSM 1900" cc="us" country="United States of America" operator="Verizon Wireless" @@ -1188,22 +1395,22 @@ 897 cc="us" country="United States of America" operator="Verizon Wireless" 898 cc="us" country="United States of America" operator="Verizon Wireless" 899 cc="us" country="United States of America" operator="Verizon Wireless" - 900 bands="CDMA2000 850 / CDMA2000 1900" brand="Mid-Rivers Wireless" cc="us" country="United States of America" operator="Cable & Communications Corporation" status="Operational" + 900 bands="CDMA 850 / CDMA 1900" brand="Mid-Rivers Wireless" cc="us" country="United States of America" operator="Cable & Communications Corporation" status="Not operational" 910 bands="GSM 850" cc="us" country="United States of America" operator="Verizon Wireless" 920 bands="CDMA" cc="us" country="United States of America" operator="James Valley Wireless, LLC" status="Operational" - 930 bands="CDMA" cc="us" country="United States of America" operator="Copper Valley Wireless" status="Operational" + 930 bands="CDMA" cc="us" country="United States of America" operator="Copper Valley Wireless" status="Not operational" 940 bands="MVNO" cc="us" country="United States of America" operator="Tyntec Inc." 950 bands="GSM 850" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" - 960 bands="CDMA" brand="STRATA" cc="us" country="United States of America" operator="UBET Wireless" status="Operational" + 960 bands="CDMA" brand="STRATA" cc="us" country="United States of America" operator="UBET Wireless" status="Not operational" 970 bands="Satellite" cc="us" country="United States of America" operator="Globalstar" status="Operational" 980 bands="CDMA / LTE 700" brand="Peoples Telephone" cc="us" country="United States of America" operator="Texas RSA 7B3" status="Not operational" 990 bands="LTE 700" brand="Evolve Broadband" cc="us" country="United States of America" operator="Evolve Cellular Inc." status="Operational" 311 - 010 bands="CDMA2000 850 / CDMA2000 1900" brand="Chariton Valley" cc="us" country="United States of America" operator="Chariton Valley Communications" status="Operational" - 012 bands="CDMA2000 850 / CDMA2000 1900" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" - 020 bands="GSM 850" brand="Chariton Valley" cc="us" country="United States of America" operator="Missouri RSA 5 Partnership" status="Operational" - 030 bands="GSM 850 / GSM 1900 / UMTS 850" brand="Indigo Wireless" cc="us" country="United States of America" operator="Americell PA 3 Partnership" status="Operational" - 040 bands="GSM 850 / GSM 1900 / CDMA 2000 / UMTS" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless" status="Operational" + 010 bands="CDMA 850 / CDMA 1900" brand="Chariton Valley" cc="us" country="United States of America" operator="Chariton Valley Communications" status="Not operational" + 012 bands="CDMA 850 / CDMA 1900" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" + 020 bands="GSM 850" brand="Chariton Valley" cc="us" country="United States of America" operator="Missouri RSA 5 Partnership" status="Not operational" + 030 bands="GSM 850 / GSM 1900 / UMTS 850" brand="Indigo Wireless" cc="us" country="United States of America" operator="Americell PA 3 Partnership" status="Not operational" + 040 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless" status="Operational" 050 bands="CDMA2000 850" cc="us" country="United States of America" operator="Thumb Cellular LP" status="Operational" 060 cc="us" country="United States of America" operator="Space Data Corporation" status="Operational" 070 bands="GSM 850" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" @@ -1211,21 +1418,24 @@ 090 bands="GSM 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" 100 bands="CDMA2000" cc="us" country="United States of America" operator="Nex-Tech Wireless" status="Operational" 110 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" - 120 brand="iConnect" cc="us" country="United States of America" operator="Wave Runner LLC" status="Operational" - 130 bands="LTE" cc="us" country="United States of America" operator="Lightsquared L.P." status="Not operational" + 120 brand="IT&E Wireless" cc="us" country="United States of America" operator="PTI Pacifica Inc." status="Operational" + 130 cc="us" country="United States of America" operator="Black & Veatch" status="Not operational" 140 bands="CDMA" brand="Bravado Wireless" cc="us" country="United States of America" operator="Cross Telephone Company" status="Operational" - 150 bands="GSM 850" cc="us" country="United States of America" operator="Wilkes Cellular" status="Operational" + 150 bands="GSM 850" cc="us" country="United States of America" operator="Wilkes Cellular" status="Not operational" 160 bands="LTE" cc="us" country="United States of America" operator="Lightsquared L.P." status="Not operational" 170 bands="GSM 850 / LTE" cc="us" country="United States of America" operator="Tampnet" status="Operational" 180 bands="GSM 850 / UMTS 850 / UMTS 1900" brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" status="Not operational" 190 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" - 200 cc="us" country="United States of America" operator="ARINC" status="Not operational" + 200 bands="5G" cc="us" country="United States of America" operator="Dish Wireless" 210 bands="MVNO" cc="us" country="United States of America" operator="Telnyx LLC" status="Operational" - 220 bands="CDMA" brand="U.S. Cellular" cc="us" country="United States of America" operator="U.S. Cellular" status="Operational" - 230 bands="CDMA 850 / CDMA 1900 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / TD-LTE 2500" brand="C Spire Wireless" cc="us" country="United States of America" operator="Cellular South Inc." status="Operational" + 220 bands="CDMA" brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" status="Not operational" + 225 brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" + 228 brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" + 229 brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" + 230 bands="LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / TD-LTE 2500" brand="C Spire" cc="us" country="United States of America" operator="Cellular South Inc." status="Operational" 240 bands="GSM / UMTS 850 / WiMAX" cc="us" country="United States of America" operator="Cordova Wireless" status="Operational" - 250 brand="iConnect" cc="us" country="United States of America" operator="Wave Runner LLC" status="Operational" - 260 bands="WiMAX" brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Not operational" + 250 brand="IT&E Wireless" cc="us" country="United States of America" operator="IT&E Overseas, Inc" status="Not operational" + 260 bands="WiMAX" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Not operational" 270 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" 271 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" 272 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" @@ -1246,25 +1456,25 @@ 287 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" 288 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" 289 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" - 290 bands="GSM 1900 / UMTS / LTE" brand="BLAZE" cc="us" country="United States of America" operator="PinPoint Communications Inc." status="Operational" + 290 bands="GSM 1900 / UMTS / LTE" brand="BLAZE" cc="us" country="United States of America" operator="PinPoint Communications Inc." status="Not operational" 300 cc="us" country="United States of America" operator="Nexus Communications, Inc." status="Not operational" - 310 bands="CDMA2000" brand="NMobile" cc="us" country="United States of America" operator="Leaco Rural Telephone Company Inc." status="Not operational" - 320 bands="GSM 850 / GSM 1900 / CDMA 2000 / UMTS" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless" status="Operational" + 310 bands="CDMA" brand="NMobile" cc="us" country="United States of America" operator="Leaco Rural Telephone Company Inc." status="Not operational" + 320 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless" status="Operational" 330 bands="GSM 1900 / LTE 1700 / WiMAX 3700" brand="Bug Tussel Wireless" cc="us" country="United States of America" operator="Bug Tussel Wireless LLC" status="Operational" - 340 bands="CDMA2000 / LTE 850" cc="us" country="United States of America" operator="Illinois Valley Cellular" status="Operational" + 340 bands="CDMA2000 / LTE 850" cc="us" country="United States of America" operator="Illinois Valley Cellular" status="Not operational" 350 bands="CDMA2000" brand="Nemont" cc="us" country="United States of America" operator="Sagebrush Cellular, Inc." status="Operational" 360 bands="UMTS 1700" cc="us" country="United States of America" operator="Stelera Wireless" status="Not operational" 370 bands="LTE 1700" brand="GCI Wireless" cc="us" country="United States of America" operator="General Communication Inc." status="Operational" 380 bands="MVNO" cc="us" country="United States of America" operator="New Dimension Wireless Ltd." status="Operational" 390 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" 400 cc="us" country="United States of America" - 410 bands="CDMA" brand="Chat Mobility" cc="us" country="United States of America" operator="Iowa RSA No. 2 LP" status="Operational" + 410 bands="CDMA" brand="Chat Mobility" cc="us" country="United States of America" operator="Iowa RSA No. 2 LP" status="Not operational" 420 bands="CDMA" brand="NorthwestCell" cc="us" country="United States of America" operator="Northwest Missouri Cellular LP" status="Operational" 430 bands="CDMA" brand="Chat Mobility" cc="us" country="United States of America" operator="RSA 1 LP" - 440 bands="CDMA" cc="us" country="United States of America" operator="Bluegrass Cellular LLC" status="Operational" + 440 bands="CDMA" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" 450 bands="GSM 1900 / LTE 700" brand="PTCI" cc="us" country="United States of America" operator="Panhandle Telecommunication Systems Inc." status="Operational" - 460 cc="us" country="United States of America" operator="Electric Imp Inc." - 470 bands="GSM 850 / GSM 1900 / TD-LTE 2500" brand="Viya" cc="us" country="United States of America" operator="Vitelcom Cellular Inc." status="Operational" + 460 cc="us" country="United States of America" operator="Electric Imp Inc." status="Not operational" + 470 bands="GSM 850 / GSM 1900 / TD-LTE 2500" brand="Viya" cc="vi" country="United States Virgin Islands (United States of America)" operator="Vitelcom Cellular Inc." status="Operational" 480 bands="LTE 700" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" 481 bands="LTE 700" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" 482 bands="LTE 700" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" @@ -1275,57 +1485,59 @@ 487 bands="LTE 700" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" 488 bands="LTE 700" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" 489 bands="LTE 700" brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" status="Not operational" - 490 bands="LTE 850 / LTE 1900 / TD-LTE 2500" brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Operational" - 500 bands="UMTS / LTE 700 / LTE 1700" cc="us" country="United States of America" operator="Mosaic Telecom" status="Not operational" + 490 bands="LTE 850 / LTE 1900 / TD-LTE 2500" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Not operational" + 500 brand="mobi" cc="us" country="United States of America" operator="mobi, Inc." 510 bands="LTE" cc="us" country="United States of America" operator="Ligado Networks" status="Not operational" 520 bands="LTE" cc="us" country="United States of America" operator="Lightsquared L.P." status="Not operational" - 530 bands="LTE 1900" brand="NewCore" cc="us" country="United States of America" operator="NewCore Wireless LLC" status="Operational" - 540 bands="GSM 850" cc="us" country="United States of America" operator="Proximiti Mobility Inc." status="Not operational" - 550 bands="GSM 850 / GSM 1900 / CDMA 2000 / UMTS" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless LLC" status="Operational" + 530 bands="LTE 1900" cc="us" country="United States of America" operator="WorldCell Solutions LLC" status="Operational" + 540 cc="us" country="United States of America" operator="Coeur Rochester, Inc" + 550 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless LLC" status="Operational" 560 bands="GSM 850" brand="OTZ Cellular" cc="us" country="United States of America" operator="OTZ Communications, Inc." status="Operational" - 570 bands="UMTS 1700 / LTE 1700" brand="BendBroadband" cc="us" country="United States of America" operator="Bend Cable Communications LLC" status="Not operational" - 580 bands="LTE 700 / LTE 850" brand="U.S. Cellular" cc="us" country="United States of America" operator="U.S. Cellular" status="Operational" + 570 cc="us" country="United States of America" operator="Mediacom" + 580 bands="LTE 700 / LTE 850 / 5G 600 / 5G 3700 / 5G 28000 / 5G 39000" brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" status="Operational" + 588 brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" + 589 brand="UScellular" cc="us" country="United States of America" operator="United States Cellular Corporation" 590 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" - 600 bands="CDMA" brand="Limitless Mobile" cc="us" country="United States of America" operator="Limitless Mobile, LLC" + 600 bands="LTE 1900" brand="Limitless Mobile" cc="us" country="United States of America" operator="Limitless Mobile, LLC" status="Operational" 610 bands="CDMA" brand="SRT Communications" cc="us" country="United States of America" operator="North Dakota Network Co." status="Not operational" 620 bands="Satellite" cc="us" country="United States of America" operator="TerreStar Networks, Inc." status="Not operational" - 630 brand="C Spire Wireless" cc="us" country="United States of America" operator="Cellular South Inc." + 630 brand="C Spire" cc="us" country="United States of America" operator="Cellular South Inc." 640 bands="LTE 700" brand="Rock Wireless" cc="us" country="United States of America" operator="Standing Rock Telecommunications" status="Operational" 650 bands="CDMA / LTE 700 / WiMAX 3700" brand="United Wireless" cc="us" country="United States of America" operator="United Wireless" status="Operational" 660 bands="MVNO" brand="Metro" cc="us" country="United States of America" operator="Metro by T-Mobile" status="Operational" - 670 bands="CDMA / LTE 700" brand="Pine Belt Wireless" cc="us" country="United States of America" operator="Pine Belt Cellular Inc." status="Operational" + 670 bands="LTE 700" brand="Pine Belt Wireless" cc="us" country="United States of America" operator="Pine Belt Cellular Inc." status="Operational" 680 bands="GSM 1900" cc="us" country="United States of America" operator="GreenFly LLC" 690 bands="paging" cc="us" country="United States of America" operator="TeleBEEPER of New Mexico" status="Operational" - 700 bands="MVNO" cc="us" country="United States of America" operator="Midwest Network Solutions Hub LLC" - 710 cc="us" country="United States of America" operator="Northeast Wireless Networks LLC" + 700 bands="MVNO" cc="us" country="United States of America" operator="Midwest Network Solutions Hub LLC" status="Not operational" + 710 cc="us" country="United States of America" operator="Northeast Wireless Networks LLC" status="Not operational" 720 bands="GSM 1900" cc="us" country="United States of America" operator="MainePCS LLC" status="Not operational" - 730 bands="GSM 850" cc="us" country="United States of America" operator="Proximiti Mobility Inc." + 730 bands="GSM 850" cc="us" country="United States of America" operator="Proximiti Mobility Inc." status="Not operational" 740 bands="GSM 850 / LTE" cc="us" country="United States of America" operator="Telalaska Cellular" status="Operational" - 750 brand="ClearTalk" cc="us" country="United States of America" operator="Flat Wireless LLC" + 750 brand="ClearTalk" cc="us" country="United States of America" operator="Flat Wireless LLC" status="Not operational" 760 cc="us" country="United States of America" operator="Edigen Inc." status="Not operational" 770 cc="us" country="United States of America" operator="Altiostar Networks, Inc." 780 bands="LTE 700" brand="ASTCA" cc="as" country="American Samoa (United States of America)" operator="American Samoa Telecommunications" status="Operational" 790 cc="us" country="United States of America" operator="Coleman County Telephone Cooperative, Inc." - 800 bands="LTE 700" cc="us" country="United States of America" operator="Bluegrass Cellular LLC" status="Operational" - 810 bands="LTE 700" cc="us" country="United States of America" operator="Bluegrass Cellular LLC" status="Operational" - 820 cc="us" country="United States of America" operator="Sonus Networks" + 800 bands="LTE 700" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" + 810 bands="LTE 700" cc="us" country="United States of America" operator="Verizon Wireless" status="Operational" + 820 cc="us" country="United States of America" operator="Ribbon Communications" 830 bands="LTE 700" cc="us" country="United States of America" operator="Thumb Cellular LP" status="Operational" - 840 bands="LTE 700" brand="Cellcom" cc="us" country="United States of America" operator="Nsight" status="Operational" - 850 bands="LTE 700" brand="Cellcom" cc="us" country="United States of America" operator="Nsight" status="Operational" + 840 bands="LTE 700 / 5G 600 / 5G 850" brand="Cellcom" cc="us" country="United States of America" operator="Nsight" status="Operational" + 850 bands="LTE 700 / 5G 600 / 5G 850" brand="Cellcom" cc="us" country="United States of America" operator="Nsight" status="Operational" 860 bands="LTE 700" brand="STRATA" cc="us" country="United States of America" operator="Uintah Basin Electronic Telecommunications" status="Operational" - 870 bands="MVNO" brand="Boost Mobile" cc="us" country="United States of America" operator="Sprint Corporation" status="Operational" - 880 brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" - 882 brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" - 890 cc="us" country="United States of America" operator="Globecomm Network Services Corporation" + 870 bands="MVNO" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" + 880 brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" + 882 brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Operational" + 890 cc="us" country="United States of America" 900 bands="MVNO" cc="us" country="United States of America" operator="GigSky" status="Operational" - 910 bands="CDMA / LTE" brand="MobileNation" cc="us" country="United States of America" operator="SI Wireless LLC" status="Operational" - 920 brand="Chariton Valley" cc="us" country="United States of America" operator="Missouri RSA 5 Partnership" - 930 bands="LTE 700" cc="us" country="United States of America" operator="Syringa Wireless" status="Not operational" - 940 bands="WiMAX" brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Not operational" - 950 bands="CDMA / LTE 700" brand="ETC" cc="us" country="United States of America" operator="Enhanced Telecommmunications Corp." status="Operational" + 910 bands="CDMA / LTE" brand="MobileNation" cc="us" country="United States of America" operator="SI Wireless LLC" status="Not operational" + 920 brand="Chariton Valley" cc="us" country="United States of America" operator="Missouri RSA 5 Partnership" status="Not operational" + 930 bands="3500" cc="us" country="United States of America" operator="Cox Communications" status="Not operational" + 940 bands="WiMAX" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Not operational" + 950 bands="CDMA / LTE 700" brand="ETC" cc="us" country="United States of America" operator="Enhanced Telecommunications Corp." status="Not operational" 960 bands="MVNO" brand="Lycamobile" cc="us" country="United States of America" operator="Lycamobile USA Inc." status="Not operational" 970 bands="LTE 1700" brand="Big River Broadband" cc="us" country="United States of America" operator="Big River Broadband, LLC" status="Operational" - 980 cc="us" country="United States of America" operator="LigTel Communications" + 980 cc="us" country="United States of America" operator="LigTel Communications" status="Not operational" 990 bands="LTE 700 / LTE 1700" cc="us" country="United States of America" operator="VTel Wireless" status="Operational" 000-999 312 @@ -1333,7 +1545,7 @@ 030 bands="LTE 700" brand="Bravado Wireless" cc="us" country="United States of America" operator="Cross Wireless" status="Operational" 040 bands="LTE 700" cc="us" country="United States of America" operator="Custer Telephone Co-op (CTCI)" status="Operational" 050 bands="LTE 700" cc="us" country="United States of America" operator="Fuego Wireless" status="Not operational" - 060 bands="CDMA / GSM" cc="us" country="United States of America" operator="CoverageCo" + 060 bands="CDMA / GSM" cc="us" country="United States of America" operator="CoverageCo" status="Not operational" 070 bands="LTE 700" cc="us" country="United States of America" operator="Adams Networks Inc" status="Not operational" 080 bands="UMTS-TDD 700" brand="SyncSouth" cc="us" country="United States of America" operator="South Georgia Regional Information Technology Authority" status="Operational" 090 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" @@ -1344,100 +1556,100 @@ 140 bands="CDMA" brand="Revol Wireless" cc="us" country="United States of America" operator="Cleveland Unlimited, Inc." status="Not operational" 150 bands="LTE 700" brand="NorthwestCell" cc="us" country="United States of America" operator="Northwest Missouri Cellular LP" status="Operational" 160 bands="LTE 700" brand="Chat Mobility" cc="us" country="United States of America" operator="RSA1 Limited Partnership" status="Operational" - 170 bands="LTE 700" brand="Chat Mobility" cc="us" country="United States of America" operator="Iowa RSA No. 2 LP" status="Operational" - 180 cc="us" country="United States of America" operator="Limitless Mobile LLC" - 190 brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" + 170 bands="LTE 700" brand="Chat Mobility" cc="us" country="United States of America" operator="Iowa RSA No. 2 LP" status="Not operational" + 180 bands="LTE 1900" cc="us" country="United States of America" operator="Limitless Mobile LLC" status="Operational" + 190 bands="LTE 1900" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Operational" 200 bands="MVNO" cc="us" country="United States of America" operator="Voyager Mobility LLC" status="Not operational" 210 bands="MVNO" cc="us" country="United States of America" operator="Aspenta International, Inc." status="Operational" - 220 bands="LTE 700" brand="Chariton Valley" cc="us" country="United States of America" operator="Chariton Valley Communications Corporation, Inc." status="Operational" + 220 bands="LTE 700" brand="Chariton Valley" cc="us" country="United States of America" operator="Chariton Valley Communications Corporation, Inc." status="Not operational" 230 brand="SRT Communications" cc="us" country="United States of America" operator="North Dakota Network Co." status="Not operational" - 240 brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" - 250 brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" - 260 bands="LTE 1900" brand="NewCore" cc="us" country="United States of America" operator="Central LTE Holdings" status="Operational" - 270 bands="LTE 700" brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" status="Operational" - 280 bands="LTE 700" brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" status="Operational" + 240 brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Not operational" + 250 bands="LTE 850 / LTE 1900 / TD-LTE 2500" brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Not operational" + 260 bands="LTE 1900" cc="us" country="United States of America" operator="WorldCell Solutions LLC" + 270 bands="LTE 700" brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" status="Not operational" + 280 bands="LTE 700" brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" status="Not operational" 290 brand="STRATA" cc="us" country="United States of America" operator="Uintah Basin Electronic Telecommunications" 300 bands="MVNO" brand="telna Mobile" cc="us" country="United States of America" operator="Telecom North America Mobile, Inc." status="Operational" 310 bands="LTE 700" cc="us" country="United States of America" operator="Clear Stream Communications, LLC" status="Operational" 320 bands="LTE 700" cc="us" country="United States of America" operator="RTC Communications LLC" status="Operational" 330 bands="LTE 700" brand="Nemont" cc="us" country="United States of America" operator="Nemont Communications, Inc." status="Operational" 340 bands="LTE 700" brand="MTA" cc="us" country="United States of America" operator="Matanuska Telephone Association, Inc." status="Not operational" - 350 bands="LTE 700" cc="us" country="United States of America" operator="Triangle Communication System Inc." status="Operational" + 350 bands="LTE 700" cc="us" country="United States of America" operator="Triangle Communication System Inc." status="Not operational" 360 cc="us" country="United States of America" operator="Wes-Tex Telecommunications, Ltd." - 370 bands="LTE" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless" status="Operational" + 370 bands="LTE 700 / LTE 1700" brand="Choice Wireless" cc="us" country="United States of America" operator="Commnet Wireless" status="Operational" 380 bands="LTE 700" cc="us" country="United States of America" operator="Copper Valley Wireless" status="Operational" 390 bands="UMTS / LTE" brand="FTC Wireless" cc="us" country="United States of America" operator="FTC Communications LLC" status="Operational" - 400 bands="LTE 700" brand="Mid-Rivers Wireless" cc="us" country="United States of America" operator="Mid-Rivers Telephone Cooperative" status="Operational" + 400 bands="LTE 700" brand="Mid-Rivers Wireless" cc="us" country="United States of America" operator="Mid-Rivers Telephone Cooperative" status="Not operational" 410 cc="us" country="United States of America" operator="Eltopia Communications, LLC" - 420 bands="LTE 700" cc="us" country="United States of America" operator="Nex-Tech Wireless" status="Operational" - 430 bands="CDMA / LTE 700" cc="us" country="United States of America" operator="Silver Star Communications" status="Operational" - 440 bands="2500" cc="us" country="United States of America" operator="Consolidated Telcom" status="Not operational" + 420 bands="LTE 700 / 5G 600" cc="us" country="United States of America" operator="Nex-Tech Wireless" status="Operational" + 430 bands="LTE 700" cc="us" country="United States of America" operator="Silver Star Communications" status="Operational" + 440 cc="us" country="United States of America" operator="Kajeet, Inc." 450 cc="us" country="United States of America" operator="Cable & Communications Corporation" 460 bands="LTE 700" cc="us" country="United States of America" operator="Ketchikan Public Utilities (KPU)" status="Operational" 470 bands="LTE 700" brand="Carolina West Wireless" cc="us" country="United States of America" operator="Carolina West Wireless" status="Operational" 480 brand="Nemont" cc="us" country="United States of America" operator="Sagebrush Cellular, Inc." - 490 bands="Satellite" cc="us" country="United States of America" operator="TrustComm, Inc." + 490 bands="Satellite" cc="us" country="United States of America" operator="TrustComm, Inc." status="Not operational" 500 bands="LTE 700" cc="us" country="United States of America" operator="AB Spectrum LLC" status="Not operational" 510 bands="LTE" cc="us" country="United States of America" operator="WUE Inc." 520 cc="us" country="United States of America" operator="ANIN" status="Not operational" - 530 brand="Sprint" cc="us" country="United States of America" operator="Sprint Corporation" status="Operational" + 530 brand="T-Mobile" cc="us" country="United States of America" operator="T-Mobile US" status="Operational" 540 cc="us" country="United States of America" operator="Broadband In Hand LLC" status="Not operational" - 550 cc="us" country="United States of America" operator="Great Plains Communications, Inc." + 550 cc="us" country="United States of America" operator="Great Plains Communications, Inc." status="Not operational" 560 bands="MVNO" cc="us" country="United States of America" operator="NHLT Inc." status="Not operational" - 570 bands="CDMA / LTE" brand="Blue Wireless" cc="us" country="United States of America" operator="Buffalo-Lake Erie Wireless Systems Co., LLC" status="Operational" - 580 cc="us" country="United States of America" operator="Morgan, Lewis & Bockius LLP" - 590 bands="LTE 2600" brand="NMU" cc="us" country="United States of America" operator="Northern Michigan University" status="Operational" + 570 brand="Impact" cc="us" country="United States of America" operator="MHG Telco LLC" status="Operational" + 580 cc="us" country="United States of America" operator="Google LLC" + 590 bands="TD-LTE 2500" brand="NMU" cc="us" country="United States of America" operator="Northern Michigan University" status="Operational" 600 brand="Nemont" cc="us" country="United States of America" operator="Sagebrush Cellular, Inc." - 610 bands="LTE 1900" brand="nTelos" cc="us" country="United States of America" operator="nTelos Licenses, Inc." status="Not operational" - 620 bands="MVNO" cc="us" country="United States of America" operator="GlobeTouch Inc." status="Operational" + 610 cc="us" country="United States of America" operator="ShawnTech Communications" + 620 cc="us" country="United States of America" operator="Airlinq Inc." status="Operational" 630 cc="us" country="United States of America" operator="NetGenuity, Inc." 640 brand="Nemont" cc="us" country="United States of America" operator="Sagebrush Cellular, Inc." status="Not operational" 650 cc="us" country="United States of America" operator="Brightlink" 660 bands="LTE 1900" brand="nTelos" cc="us" country="United States of America" operator="nTelos Wireless" status="Not operational" 670 brand="FirstNet" cc="us" country="United States of America" operator="AT&T Mobility" status="Operational" 680 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" - 690 bands="MVNO/MVNE" cc="us" country="United States of America" operator="TGS, LLC" status="Operational" + 690 bands="MVNO" cc="us" country="United States of America" operator="Tecore Global Services, LLC" status="Operational" 700 bands="LTE 700" cc="us" country="United States of America" operator="Wireless Partners, LLC" status="Operational" 710 bands="LTE" cc="us" country="United States of America" operator="Great North Woods Wireless LLC" status="Operational" 720 bands="LTE 850" brand="Southern LINC" cc="us" country="United States of America" operator="Southern Communications Services" status="Operational" - 730 bands="CDMA" cc="us" country="United States of America" operator="Triangle Communication System Inc." status="Operational" - 740 bands="MVNO" brand="Locus Telecommunications" cc="us" country="United States of America" operator="KDDI America, Inc." status="Not operational" + 730 bands="CDMA" cc="us" country="United States of America" operator="Triangle Communication System Inc." status="Not operational" + 740 bands="MVNO" brand="Locus Telecommunications" cc="us" country="United States of America" operator="KDDI America, Inc." 750 cc="us" country="United States of America" operator="Artemis Networks LLC" - 760 brand="ASTAC" cc="us" country="United States of America" operator="Arctic Slope Telephone Association Cooperative" + 760 brand="ASTAC" cc="us" country="United States of America" operator="Arctic Slope Telephone Association Cooperative" status="Not operational" 770 brand="Verizon" cc="us" country="United States of America" operator="Verizon Wireless" 780 bands="TD-LTE 2500" cc="us" country="United States of America" operator="Redzone Wireless" status="Operational" 790 cc="us" country="United States of America" operator="Gila Electronics" 800 bands="MVNO" cc="us" country="United States of America" operator="Cirrus Core Networks" - 810 bands="CDMA / LTE" brand="BBCP" cc="us" country="United States of America" operator="Bristol Bay Telephone Cooperative" status="Operational" - 820 cc="us" country="United States of America" operator="Santel Communications Cooperative, Inc." + 810 bands="CDMA / LTE" brand="BBCP" cc="us" country="United States of America" operator="Bristol Bay Telephone Cooperative" status="Not operational" + 820 cc="us" country="United States of America" operator="Santel Communications Cooperative, Inc." status="Not operational" 830 bands="WiMAX" cc="us" country="United States of America" operator="Kings County Office of Education" status="Operational" 840 cc="us" country="United States of America" operator="South Georgia Regional Information Technology Authority" 850 bands="MVNO" cc="us" country="United States of America" operator="Onvoy Spectrum, LLC" - 860 bands="CDMA / LTE 1900 / LTE 1700" brand="ClearTalk" cc="us" country="United States of America" operator="Flat Wireless, LLC" status="Operational" + 860 bands="CDMA / LTE 1900 / LTE 1700" brand="ClearTalk" cc="us" country="United States of America" operator="Flat Wireless, LLC" status="Not operational" 870 bands="MVNO" cc="us" country="United States of America" operator="GigSky Mobile, LLC" status="Operational" 880 cc="us" country="United States of America" operator="Albemarle County Public Schools" 890 cc="us" country="United States of America" operator="Circle Gx" 900 bands="CDMA / LTE 1900 / LTE 1700" brand="ClearTalk" cc="us" country="United States of America" operator="Flat West Wireless, LLC" status="Operational" 910 brand="Appalachian Wireless" cc="us" country="United States of America" operator="East Kentucky Network, LLC" - 920 cc="us" country="United States of America" operator="Northeast Wireless Networks LLC" + 920 cc="us" country="United States of America" operator="Northeast Wireless Networks LLC" status="Not operational" 930 cc="us" country="United States of America" operator="Hewlett-Packard Communication Services, LLC" - 940 cc="us" country="United States of America" operator="Webformix" status="Operational" + 940 cc="us" country="United States of America" operator="Webformix" status="Not operational" 950 bands="CDMA" cc="us" country="United States of America" operator="Custer Telephone Co-op (CTCI)" status="Operational" - 960 cc="us" country="United States of America" operator="M&A Technology, Inc." + 960 cc="us" country="United States of America" operator="M&A Technology, Inc." status="Not operational" 970 cc="us" country="United States of America" operator="IOSAZ Intellectual Property LLC" 980 cc="us" country="United States of America" operator="Mark Twain Communications Company" - 990 brand="Premier Broadband" cc="us" country="United States of America" operator="Premier Holdings LLC" + 990 brand="Premier Broadband" cc="us" country="United States of America" operator="Premier Holdings LLC" status="Not operational" 000-999 313 010 brand="Bravado Wireless" cc="us" country="United States of America" operator="Cross Wireless LLC" 020 bands="CDMA" brand="CTC Wireless" cc="us" country="United States of America" operator="Cambridge Telephone Company Inc." status="Operational" - 030 bands="CDMA" brand="Snake River PCS" cc="us" country="United States of America" operator="Eagle Telephone System Inc." status="Operational" + 030 cc="us" country="United States of America" operator="AT&T Mobility" 040 bands="CDMA" brand="NNTC Wireless" cc="us" country="United States of America" operator="Nucla-Naturita Telephone Company" status="Operational" 050 bands="CDMA" brand="Breakaway Wireless" cc="us" country="United States of America" operator="Manti Tele Communications Company, Inc." status="Not operational" 060 cc="us" country="United States of America" operator="Country Wireless" status="Operational" 061 cc="us" country="United States of America" operator="Country Wireless" 070 cc="us" country="United States of America" operator="Midwest Network Solutions Hub LLC" - 080 cc="us" country="United States of America" operator="Speedwavz LLP" status="Operational" + 080 cc="us" country="United States of America" operator="Speedwavz LLP" status="Not operational" 090 cc="us" country="United States of America" operator="Vivint Wireless, Inc." status="Operational" 100 bands="LTE 700" brand="FirstNet" cc="us" country="United States of America" operator="AT&T FirstNet" status="Operational" 110 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="AT&T FirstNet" @@ -1449,7 +1661,7 @@ 170 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband" 180 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband" 190 bands="LTE" brand="FirstNet" cc="us" country="United States of America" operator="700 MHz Public Safety Broadband" - 200 cc="us" country="United States of America" operator="Mercury Network Corporation" status="Operational" + 200 cc="us" country="United States of America" operator="Mercury Network Corporation" status="Not operational" 210 brand="AT&T" cc="us" country="United States of America" operator="AT&T Mobility" 220 cc="us" country="United States of America" operator="Custer Telephone Co-op (CTCI)" 230 bands="LTE" cc="us" country="United States of America" operator="Velocity Communications Inc." @@ -1459,147 +1671,247 @@ 270 cc="us" country="United States of America" operator="Blackstar Management" status="Not operational" 280 bands="LTE 700" cc="us" country="United States of America" operator="King Street Wireless, LP" 290 bands="LTE" cc="us" country="United States of America" operator="Gulf Coast Broadband LLC" - 300 bands="LTE" cc="us" country="United States of America" operator="Cambio WiFi of Delmarva, LLC" status="Operational" - 310 cc="us" country="United States of America" operator="CAL.NET, Inc." + 300 cc="us" country="United States of America" operator="Southern California Edison" + 310 cc="us" country="United States of America" operator="CAL.NET, Inc." status="Not operational" 320 bands="LTE 3500" cc="us" country="United States of America" operator="Paladin Wireless" 330 cc="us" country="United States of America" operator="CenturyTel Broadband Services LLC" - 340 cc="us" country="United States of America" operator="Dish Network" - 350 cc="us" country="United States of America" operator="Dish Network" - 360 cc="us" country="United States of America" operator="Dish Network" + 340 bands="5G 600 / 5G 1700" brand="Dish" cc="us" country="United States of America" operator="Dish Wireless" status="Operational" + 350 brand="Dish" cc="us" country="United States of America" operator="Dish Wireless" status="Not operational" + 360 brand="Dish" cc="us" country="United States of America" operator="Dish Wireless" status="Not operational" 370 cc="us" country="United States of America" operator="Red Truck Wireless, LLC" 380 cc="us" country="United States of America" operator="OptimERA Inc." 390 bands="MVNO" cc="us" country="United States of America" operator="Altice USA Wireless, Inc." 400 cc="us" country="United States of America" operator="Texoma Communications, LLC" - 410 cc="us" country="United States of America" operator="pdvWireless" - 420 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" + 410 cc="us" country="United States of America" operator="Anterix" + 420 bands="TD-LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" 440 cc="us" country="United States of America" operator="Arvig Enterprises, Inc." - 450 cc="us" country="United States of America" operator="Spectrum Wireless Holdings, LLC" - 460 bands="MVNO" cc="us" country="United States of America" operator="Mobi, Inc." status="Operational" + 450 bands="3500" cc="us" country="United States of America" operator="Spectrum Wireless Holdings, LLC" + 460 bands="5G 3500" brand="mobi" cc="us" country="United States of America" operator="mobi, Inc." status="Operational" 470 cc="us" country="United States of America" operator="San Diego Gas & Electric Company" 480 bands="MVNO" cc="us" country="United States of America" operator="Ready Wireless, LLC" 490 cc="us" country="United States of America" operator="Puloli, Inc." 500 cc="us" country="United States of America" operator="Shelcomm, Inc." - 510 cc="us" country="United States of America" operator="Puerto Rico Telecom Company" - 520 cc="us" country="United States of America" operator="Florida Broadband, Inc." status="Operational" + 510 brand="Claro" cc="us" country="United States of America" operator="Puerto Rico Telephone Company" status="Operational" + 520 cc="us" country="United States of America" operator="Florida Broadband, Inc." status="Not operational" 540 cc="us" country="United States of America" operator="Nokia Innovations US LLC" 550 cc="us" country="United States of America" operator="Mile High Networks LLC" status="Operational" - 560 cc="us" country="United States of America" operator="Transit Wireless LLC" status="Operational" - 570 brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" + 560 bands="LTE 3500 / 5G 3500" cc="us" country="United States of America" operator="Boldyn Networks US" status="Operational" + 570 brand="Pioneer Cellular" cc="us" country="United States of America" operator="Cellular Network Partnership" status="Not operational" 580 cc="us" country="United States of America" operator="Telecall Telecommunications Corp." 590 brand="Southern LINC" cc="us" country="United States of America" operator="Southern Communications Services, Inc." - 600 cc="us" country="United States of America" operator="ST Engineering iDirect" - 610 cc="us" country="United States of America" operator="Crystal Automation Systems, Inc." - 620 bands="1700" cc="us" country="United States of America" operator="Screened Images, Inc." + 600 cc="us" country="United States of America" operator="ST Engineering" status="Not operational" + 610 cc="us" country="United States of America" operator="Point Broadband Fiber Holding, LLC" + 620 bands="1700" cc="us" country="United States of America" operator="OmniProphis Corporation" 630 cc="us" country="United States of America" operator="LICT Corporation" 640 bands="LTE 3500" cc="us" country="United States of America" operator="Geoverse LLC" 650 cc="us" country="United States of America" operator="Chevron USA, Inc." - 660 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" - 670 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" - 680 bands="LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" + 660 bands="TD-LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" + 670 bands="TD-LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" + 680 bands="TD-LTE 3500" cc="us" country="United States of America" operator="Hudson Valley Wireless" 690 bands="LTE" cc="us" country="United States of America" operator="Shenandoah Cable Television, LLC" status="Operational" 700 bands="800" cc="us" country="United States of America" operator="Ameren Services Company" 710 cc="us" country="United States of America" operator="Extent Systems" 720 cc="us" country="United States of America" operator="1st Point Communications, LLC" 730 cc="us" country="United States of America" operator="TruAccess Networks" 740 cc="us" country="United States of America" operator="RTO Wireless, LLC" - 750 brand="ZipLink" cc="us" country="United States of America" operator="313-CellTex Networks, LLC" + 750 brand="ZipLink" cc="us" country="United States of America" operator="CellTex Networks, LLC" 760 bands="MVNO" cc="us" country="United States of America" operator="Hologram, Inc." status="Operational" - 770 bands="MVNO" cc="us" country="United States of America" operator="Tango Networks" + 770 bands="MVNO" brand="Tango Extend" cc="us" country="United States of America" operator="Tango Networks" status="Operational" + 780 bands="3500" cc="us" country="United States of America" operator="Windstream Holdings" + 790 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / 5G 850" brand="Liberty" cc="vi" country="United States Virgin Islands (United States of America)" operator="Liberty" status="Operational" + 800 cc="us" country="United States of America" operator="Wireless Technologies of Nebraska" status="Not operational" + 810 bands="LTE 3500" cc="us" country="United States of America" operator="Watch Communications" status="Operational" + 820 bands="LTE" cc="us" country="United States of America" operator="Inland Cellular Telephone Company" status="Operational" + 830 cc="us" country="United States of America" operator="360 Communications" + 840 cc="us" country="United States of America" operator="CellBlox Acquisitions" + 850 bands="LTE" cc="us" country="United States of America" operator="Softcom Internet Communications, Inc" status="Operational" + 860 bands="3500" brand="Nextlink" cc="us" country="United States of America" operator="AMG Technology Investment Group" status="Operational" + 870 bands="5G 3500" cc="us" country="United States of America" operator="ElektraFi LLC" status="Operational" + 880 cc="us" country="United States of America" operator="Shuttle Wireless" + 890 brand="TCOE" cc="us" country="United States of America" operator="Tulare County Office of Education" status="Operational" + 900 cc="us" country="United States of America" operator="Tribal Networks" + 910 cc="us" country="United States of America" operator="San Diego Gas & Electric" + 920 cc="us" country="United States of America" operator="JCI" + 930 bands="LTE 2500" brand="Rock Wireless" cc="us" country="United States of America" operator="Standing Rock Telecom" status="Operational" + 940 cc="us" country="United States of America" operator="Motorola Solutions" + 950 bands="2500" cc="us" country="United States of America" operator="Cheyenne and Arapaho Development Group" + 960 cc="us" country="United States of America" operator="Townes 5G, LLC" + 970 cc="us" country="United States of America" operator="Tychron" + 980 cc="us" country="United States of America" operator="Next Generation Application LLC" status="Not operational" + 990 cc="us" country="United States of America" operator="Ericsson US" 000-999 314 020 cc="us" country="United States of America" operator="Spectrum Wireless Holdings, LLC" 030 bands="LTE" cc="us" country="United States of America" operator="Baicells Technologies North America Inc." + 060 cc="us" country="United States of America" operator="Texas A&M University" + 070 cc="us" country="United States of America" operator="Texas A&M University" + 080 cc="us" country="United States of America" operator="Texas A&M University" + 090 cc="us" country="United States of America" operator="Southern LINC" 100 cc="us" country="United States of America" + 200 bands="3500" cc="us" country="United States of America" operator="XF Wireless Investments, LLC" + 210 cc="us" country="United States of America" operator="Telecom Resource Center" + 220 cc="us" country="United States of America" operator="Securus Technologies" + 230 cc="us" country="United States of America" operator="Trace-Tek LLC" + 240 bands="3500" cc="us" country="United States of America" operator="XF Wireless Investments, LLC" + 260 cc="us" country="United States of America" operator="AT&T Mobility" + 270 cc="us" country="United States of America" operator="AT&T Mobility" + 280 cc="us" country="United States of America" operator="Pollen Mobile LLC" + 290 cc="us" country="United States of America" operator="Wave" + 300 cc="us" country="United States of America" operator="Southern California Edison" + 310 cc="us" country="United States of America" operator="Terranet" + 320 cc="us" country="United States of America" operator="Agri-Valley Communications, Inc" + 330 cc="us" country="United States of America" operator="Nova Labs Inc" + 340 bands="MVNO" brand="e/marconi" cc="us" country="United States of America" operator="E-Marconi LLC" + 350 cc="us" country="United States of America" operator="Evergy" + 360 bands="5G" cc="us" country="United States of America" operator="Oceus Networks, LLC" + 370 brand="ITEC" cc="us" country="United States of America" operator="Texas A&M University" + 380 brand="CCR" cc="us" country="United States of America" operator="Circle Computer Resources, Inc." + 390 cc="us" country="United States of America" operator="AT&T Mobility" + 400 brand="C Spire" cc="us" country="United States of America" operator="Cellular South Inc" + 410 cc="us" country="United States of America" operator="Peeringhub Inc" + 420 cc="us" country="United States of America" operator="Cox Communications" + 430 bands="5G" cc="us" country="United States of America" operator="Highway9 Networks, Inc" + 440 cc="us" country="United States of America" operator="Tecore Global Services, LLC" + 450 cc="us" country="United States of America" operator="NUWAVE Communications, Inc." + 460 cc="us" country="United States of America" operator="Texas A&M University" + 470 brand="MetTel" cc="us" country="United States of America" operator="Manhattan Telecommunications Corporation LLC" + 480 cc="us" country="United States of America" operator="Xcel Energy Services Inc." + 490 bands="TD-LTE 3500" brand="UETN" cc="us" country="United States of America" operator="Utah Education and Telehealth Network" status="Operational" + 500 cc="us" country="United States of America" operator="Aetheros Inc." + 510 cc="us" country="United States of America" operator="SI Wireless LLC" + 520 brand="OG+E" cc="us" country="United States of America" operator="Oklahoma Gas & Electric Company" + 530 cc="us" country="United States of America" operator="Agile Networks" status="Operational" + 540 brand="RGTN" cc="us" country="United States of America" operator="RGTN USA Inc." status="Operational" + 550 bands="3G 3500" brand="REALLY" cc="us" country="United States of America" operator="Really Communications" status="Operational" + 560 brand="Cape" cc="us" country="United States of America" operator="Private Tech, Inc." + 570 cc="us" country="United States of America" operator="Newmont Corporation" + 580 cc="us" country="United States of America" operator="Lower Colorado River Authority" + 590 bands="Satellite" cc="us" country="United States of America" operator="Lynk Global, Inc." status="Operational" + 600 cc="us" country="United States of America" operator="XNET Inc." + 610 cc="us" country="United States of America" operator="IMSI.AI" + 620 cc="us" country="United States of America" operator="Memphis Light, Gas and Water" + 630 brand="Cape" cc="us" country="United States of America" operator="Private Tech, Inc." + 640 brand="Cape" cc="us" country="United States of America" operator="Private Tech, Inc." + 650 brand="Cape" cc="us" country="United States of America" operator="Private Tech, Inc." + 660 brand="Cape" cc="us" country="United States of America" operator="Private Tech, Inc." + 670 cc="us" country="United States of America" operator="Wi-DAS LLC" + 680 bands="MVNO" brand="Xfinity" cc="us" country="United States of America" operator="Comcast OTR1 LLC" status="Operational" + 690 cc="us" country="United States of America" operator="Agri-Valley Communications, Inc." + 700 cc="us" country="United States of America" operator="Tampa Electric Company" + 710 cc="us" country="United States of America" operator="Tribal Ready, PBC" + 720 bands="MVNO" cc="us" country="United States of America" operator="OXIO, Inc." + 730 bands="MVNO" cc="us" country="United States of America" operator="TextNow, Inc." status="Operational" + 740 cc="us" country="United States of America" operator="Ringer Mobile, LLC" + 750 cc="us" country="United States of America" operator="SDF, Inc." + 760 bands="5G" brand="BATS Wireless" cc="us" country="United States of America" operator="Broadband Antenna Tracking Systems, Inc." + 770 cc="us" country="United States of America" operator="Westbold LLC" + 780 cc="us" country="United States of America" operator="Saint Regis Mohawk Tribe" + 790 bands="MVNO" cc="us" country="United States of America" operator="Neuner Mobile Technologies LLC" + 800 cc="us" country="United States of America" operator="Boost Network" + 810 brand="ORCID" cc="us" country="United States of America" operator="Open RAN Center for Integration and Deployment" 000-999 316 011 bands="iDEN 800" brand="Southern LINC" cc="us" country="United States of America" operator="Southern Communications Services" status="Not operational" + 700 cc="us" country="United States of America" operator="Mile High Networks LLC" 000-999 330 - 000 bands="CDMA 1900" brand="Open Mobile" cc="pr" country="Puerto Rico" operator="PR Wireless" status="Operational" - 110 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1700" brand="Claro Puerto Rico" cc="pr" country="Puerto Rico" operator="América Móvil" status="Operational" - 120 bands="LTE 700" brand="Open Mobile" cc="pr" country="Puerto Rico" operator="PR Wireless" status="Operational" + 000 bands="CDMA 1900" brand="Open Mobile" cc="pr" country="Puerto Rico" operator="PR Wireless" status="Not operational" + 110 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 850 / LTE 1700 / LTE 2500 / 5G 1700 / 5G 2500 / 5G 28000" brand="Claro Puerto Rico" cc="pr" country="Puerto Rico" operator="América Móvil" status="Operational" + 120 bands="LTE 700" brand="Open Mobile" cc="pr" country="Puerto Rico" operator="PR Wireless" status="Not operational" 000-999 334 001 cc="mx" country="Mexico" operator="Comunicaciones Digitales Del Norte, S.A. de C.V." 010 bands="iDEN 800" brand="AT&T" cc="mx" country="Mexico" operator="AT&T Mexico" status="Not operational" - 020 bands="GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600" brand="Telcel" cc="mx" country="Mexico" operator="América Móvil" status="Operational" + 020 bands="UMTS 850 / UMTS 1900 / LTE 850 / LTE 1700 / LTE 2600 / 5G 3500" brand="Telcel" cc="mx" country="Mexico" operator="América Móvil" status="Operational" 030 bands="MVNO" brand="Movistar" cc="mx" country="Mexico" operator="Telefónica" status="Operational" - 040 bands="CDMA2000 800 / CDMA2000 1900" brand="Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" status="Not operational" - 050 bands="UMTS 850 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 1700" brand="AT&T / Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" status="Operational" - 060 cc="mx" country="Mexico" operator="Servicios de Acceso Inalambrico, S.A. de C.V." + 040 bands="CDMA 850 / CDMA 1900" brand="Unefon" cc="mx" country="Mexico" operator="AT&T COMERCIALIZACIÓN MÓVIL, S. DE R.L. DE C.V." status="Not operational" + 050 bands="UMTS 850 / UMTS 1900 / UMTS 1700 / LTE 850 / LTE 1700 / LTE 2600 / TD-LTE 2600 / 5G 2600" brand="AT&T / Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" status="Operational" + 060 cc="mx" country="Mexico" operator="Servicios de Acceso Inalambrico, S.A. de C.V." status="Not operational" 066 cc="mx" country="Mexico" operator="Telefonos de México, S.A.B. de C.V." 070 brand="Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" 080 brand="Unefon" cc="mx" country="Mexico" operator="AT&T Mexico" 090 bands="UMTS 1700 / LTE 850 / LTE 1700" brand="AT&T" cc="mx" country="Mexico" operator="AT&T Mexico" status="Operational" - 100 cc="mx" country="Mexico" operator="Telecomunicaciones de México" + 100 cc="mx" country="Mexico" operator="Financiera para el Bienestar" 110 bands="MVNO" cc="mx" country="Mexico" operator="Maxcom Telecomunicaciones, S.A.B. de C.V." 120 bands="MVNO" cc="mx" country="Mexico" operator="Quickly Phone, S.A. de C.V." - 130 cc="mx" country="Mexico" operator="Axtel, S.A.B. de C.V." - 140 bands="LTE 700" brand="Altan Redes" cc="mx" country="Mexico" operator="Altán Redes S.A.P.I. de C.V." status="Operational" + 130 cc="mx" country="Mexico" operator="ALESTRA SERVICIOS MÓVILES, S.A. DE C.V." status="Operational" + 140 bands="LTE 700" brand="Red Compartida" cc="mx" country="Mexico" operator="Altán Redes S.A.P.I. de C.V." status="Operational" 150 bands="LTE 2600" brand="Ultranet" cc="mx" country="Mexico" operator="Ultravisión, S.A. de C.V." status="Operational" + 160 cc="mx" country="Mexico" operator="Televisión Internacional, S.A. de C.V." + 170 bands="MVNO" cc="mx" country="Mexico" operator="OXIO Mobile, S.A. de C.V." + 180 bands="MVNO" brand="FreedomPop" cc="mx" country="Mexico" operator="FREEDOMPOP MÉXICO, S.A. de C.V." status="Operational" + 190 bands="Satellite" brand="Viasat" cc="mx" country="Mexico" operator="VIASAT TECNOLOGÍA, S.A. de C.V." status="Operational" + 200 bands="MVNO" brand="Virgin Mobile" cc="mx" country="Mexico" operator="VIRGIN MOBILE MÉXICO, S. de R.L. de C.V." status="Operational" + 210 bands="MVNO" brand="YO Mobile" cc="mx" country="Mexico" operator="Yonder Media Mobile México, S. de R.L. de C.V." status="Operational" + 220 bands="MVNO" brand="Megamóvil" cc="mx" country="Mexico" operator="Mega Cable, S.A. de C.V" status="Operational" + 230 cc="mx" country="Mexico" operator="VINOC, S.A.P.I. de C.V." + 240 cc="mx" country="Mexico" operator="PEGASO PCS, S.A. DE C.V. (Movistar)" 000-999 338 020 brand="FLOW" cc="jm" country="Jamaica" operator="LIME (Cable & Wireless)" status="Not operational" - 040 bands="LTE" brand="Caricel" cc="jm" country="Jamaica" operator="Symbiote Investment Limited" - 050 bands="GSM 900 / GSM 1800 / GSM 1900 / LTE 700" brand="Digicel" cc="tc" country="Turks and Caicos Islands" operator="Digicel (Turks & Caicos) Limited" status="Operational" + 040 bands="LTE" brand="Caricel" cc="jm" country="Jamaica" operator="Symbiote Investment Limited" status="Not operational" + 05 bands="GSM 900 / GSM 1800 / GSM 1900 / LTE 700" brand="Digicel" cc="lc" country="Saint Lucia" operator="Digicel" status="Operational" + 050 bands="GSM 900 / GSM 1900 / LTE 700 / LTE 1700" brand="Digicel" cc="tc" country="Turks and Caicos Islands" operator="Digicel (Turks & Caicos) Limited" status="Operational" 070 bands="GSM / UMTS / CDMA" brand="Claro" cc="jm" country="Jamaica" operator="Oceanic Digital Jamaica Limited" status="Not operational" - 110 brand="FLOW" cc="jm" country="Jamaica" operator="Cable & Wireless Communications" status="Operational" - 180 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900" brand="FLOW" cc="jm" country="Jamaica" operator="Cable & Wireless Communications" status="Operational" - 000-999 + 080 bands="LTE 700" cc="jm" country="Jamaica" operator="Rock Mobile Limited" + 110 bands="LTE" brand="FLOW" cc="jm" country="Jamaica" operator="Cable & Wireless Communications" status="Operational" + 180 bands="UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900" brand="FLOW" cc="jm" country="Jamaica" operator="Cable & Wireless Communications" status="Operational" 340 - 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Orange" country="'French Guiana (France) - GF'" operator="Orange Caraïbe Mobiles" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="SFR Caraïbe" country="'French Guiana (France) - GF'" operator="Outremer Telecom" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS / LTE 1800" brand="Chippie" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="UTS Caraïbe" status="Operational" - 04 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Free" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Free Caraïbe" status="Upcoming" + 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Orange" cc="gf" country="French Guiana (France)" operator="Orange Caraïbe Mobiles" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="SFR Caraïbe" cc="gf" country="French Guiana (France)" operator="Outremer Telecom" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS / LTE 1800" brand="FLOW" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="UTS Caraïbe" status="Operational" + 04 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Free" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Free Caraïbe" status="Not operational" 08 bands="GSM 900 / GSM 1800 / UMTS / LTE" brand="Dauphin" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Dauphin Telecom" status="Operational" 09 bands="UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Free" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Free Caraïbe" status="Upcoming" - 10 country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Guadeloupe Téléphone Mobile" status="Not operational" - 11 country="'French Guiana (France) - GF'" operator="Guyane Téléphone Mobile" status="Not operational" + 10 brand="SRIR" country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="SOCIETE DE REALISATION D'INFRASTRUCTURES DE RESEAUX" + 11 cc="gf" country="French Guiana (France)" operator="Guyane Téléphone Mobile" status="Not operational" 12 country="French Antilles (France) - BL/GF/GP/MF/MQ" operator="Martinique Téléphone Mobile" status="Not operational" - 20 bands="GSM 900 / UMTS 2100 / LTE 800" brand="Digicel" country="'French Guiana (France) - GF'" operator="DIGICEL Antilles Française Guyane" status="Operational" + 20 bands="GSM 900 / UMTS 2100 / LTE 800" brand="Digicel" cc="gf" country="French Guiana (France)" operator="DIGICEL Antilles Française Guyane" status="Operational" 00-99 342 - 600 bands="GSM 1900 / UMTS 850 / LTE 850 / LTE 1900" brand="FLOW" cc="bb" country="Barbados" operator="LIME (formerly known as Cable & Wireless)" status="Operational" - 750 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1900" brand="Digicel" cc="bb" country="Barbados" operator="Digicel (Barbados) Limited" status="Operational" + 600 bands="GSM 1900 / UMTS 850 / LTE 850 / LTE 1900 / 5G" brand="FLOW" cc="bb" country="Barbados" operator="LIME (formerly known as Cable & Wireless)" status="Operational" + 646 bands="LTE 700" cc="bb" country="Barbados" operator="KW Telecommunications Inc." status="Not operational" + 750 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1900 / 5G" brand="Digicel" cc="bb" country="Barbados" operator="Digicel (Barbados) Limited" status="Operational" 800 bands="LTE 700" brand="Ozone" cc="bb" country="Barbados" operator="Ozone Wireless Inc." status="Not operational" - 820 bands="CDMA" cc="bb" country="Barbados" operator="Sunbeach Communications" status="Not operational" + 820 bands="LTE 700" cc="bb" country="Barbados" operator="Neptune Communications Inc." status="Not operational" 000-999 344 030 bands="GSM 1900" brand="APUA" cc="ag" country="Antigua and Barbuda" operator="Antigua Public Utilities Authority" status="Operational" - 050 bands="GSM 900 / GSM 1900 / UMTS 850 / LTE 700" brand="Digicel" cc="ag" country="Antigua and Barbuda" operator="Antigua Wireless Ventures Limited" status="Operational" - 920 bands="GSM 850 / GSM 1800 / GSM 1900 / UMTS 850 / LTE 1700" brand="FLOW" cc="ag" country="Antigua and Barbuda" operator="Cable & Wireless Caribbean Cellular (Antigua) Limited" status="Operational" + 050 bands="UMTS 850 / LTE 700" brand="Digicel" cc="ag" country="Antigua and Barbuda" operator="Antigua Wireless Ventures Limited" status="Operational" + 920 bands="UMTS 850 / LTE 1700" brand="FLOW" cc="ag" country="Antigua and Barbuda" operator="Cable & Wireless Caribbean Cellular (Antigua) Limited" status="Operational" 930 cc="ag" country="Antigua and Barbuda" operator="AT&T Wireless" 000-999 346 - 001 brand="Logic" cc="ky" country="Cayman Islands (United Kingdom)" operator="WestTel Ltd." - 050 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800" brand="Digicel" cc="ky" country="Cayman Islands (United Kingdom)" operator="Digicel Cayman Ltd." status="Operational" - 140 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900" brand="FLOW" cc="ky" country="Cayman Islands (United Kingdom)" operator="Cable & Wireless (Cayman Islands) Limited" status="Operational" + 001 bands="LTE 2500" brand="Logic" cc="ky" country="Cayman Islands (United Kingdom)" operator="WestTel Ltd." status="Not operational" + 007 bands="5G" cc="ky" country="Cayman Islands (United Kingdom)" operator="Paradise Mobile Limited" status="Not operational" + 050 brand="Digicel" cc="ky" country="Cayman Islands (United Kingdom)" operator="Digicel Cayman Ltd." status="Reserved" + 140 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900 / 5G 3500" brand="FLOW" cc="ky" country="Cayman Islands (United Kingdom)" operator="Cable & Wireless (Cayman Islands) Limited" status="Operational" 000-999 348 - 170 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1900" brand="FLOW" cc="vg" country="British Virgin Islands" operator="Cable & Wireless" status="Operational" + 170 bands="UMTS 850 / LTE 700 / LTE 1900" brand="FLOW" cc="vg" country="British Virgin Islands" operator="Cable & Wireless" status="Operational" 370 cc="vg" country="British Virgin Islands" operator="BVI Cable TV Ltd" 570 bands="GSM 900 / GSM 1900 / UMTS 850 / LTE 900 / LTE 1900" brand="CCT Boatphone" cc="vg" country="British Virgin Islands" operator="Caribbean Cellular Telephone" status="Operational" 770 bands="GSM 1800 / GSM 1900 / UMTS 1900 / LTE 700 / LTE 1700" brand="Digicel" cc="vg" country="British Virgin Islands" operator="Digicel (BVI) Limited" status="Operational" 000-999 350 - 00 bands="GSM 1900 / UMTS 850 / LTE 700" brand="One" cc="bm" country="Bermuda" operator="Bermuda Digital Communications Ltd." status="Operational" + 00 bands="GSM 1900 / UMTS 850 / LTE 700 / 5G 3500" brand="One" cc="bm" country="Bermuda" operator="Bermuda Digital Communications Ltd." status="Operational" + 007 bands="LTE 700 / LTE 1700 / 5G 3500" cc="bm" country="Bermuda" operator="Paradise Mobile" status="Operational" 01 bands="GSM 1900" brand="Digicel Bermuda" cc="bm" country="Bermuda" operator="Telecommunications (Bermuda & West Indies) Ltd" status="Reserved" - 02 bands="GSM 1900 / UMTS" brand="Mobility" cc="bm" country="Bermuda" operator="M3 Wireless" status="Operational" + 02 bands="GSM 1900 / UMTS" brand="Mobility" cc="bm" country="Bermuda" operator="M3 Wireless" status="Not operational" 05 cc="bm" country="Bermuda" operator="Telecom Networks" 11 cc="bm" country="Bermuda" operator="Deltronics" 15 cc="bm" country="Bermuda" operator="FKB Net Ltd." - 00-99 352 - 030 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700" brand="Digicel" cc="gd" country="Grenada" operator="Digicel Grenada Ltd." status="Operational" + 030 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1900" brand="Digicel" cc="gd" country="Grenada" operator="Digicel Grenada Ltd." status="Operational" 110 bands="GSM 850 / UMTS 850 / LTE 700" brand="FLOW" cc="gd" country="Grenada" operator="Cable & Wireless Grenada Ltd." status="Operational" 000-999 354 - 860 bands="GSM 850" brand="FLOW" cc="ms" country="Montserrat (United Kingdom)" operator="Cable & Wireless" status="Operational" + 860 bands="GSM 850 / UMTS 850 / LTE" brand="FLOW" cc="ms" country="Montserrat (United Kingdom)" operator="Cable & Wireless" status="Operational" 000-999 356 050 bands="GSM 900 / GSM 1800 / LTE 700" brand="Digicel" cc="kn" country="Saint Kitts and Nevis" operator="Wireless Ventures (St Kitts-Nevis) Limited" status="Operational" - 070 brand="Chippie" cc="kn" country="Saint Kitts and Nevis" operator="UTS" status="Operational" - 110 bands="GSM 850 / GSM 1900 / LTE 700" brand="FLOW" cc="kn" country="Saint Kitts and Nevis" operator="Cable & Wireless St. Kitts & Nevis Ltd" status="Operational" + 070 brand="FLOW" cc="kn" country="Saint Kitts and Nevis" operator="UTS" status="Operational" + 110 bands="LTE 700" brand="FLOW" cc="kn" country="Saint Kitts and Nevis" operator="Cable & Wireless St. Kitts & Nevis Ltd" status="Operational" 000-999 358 110 bands="GSM 850 / LTE 700" brand="FLOW" cc="lc" country="Saint Lucia" operator="Cable & Wireless" status="Operational" @@ -1607,47 +1919,47 @@ 360 050 bands="GSM 900 / GSM 1800 / GSM 1900 / LTE 700" brand="Digicel" cc="vc" country="Saint Vincent and the Grenadines" operator="Digicel (St. Vincent and the Grenadines) Limited" status="Operational" 100 bands="GSM 850" brand="Cingular Wireless" cc="vc" country="Saint Vincent and the Grenadines" - 110 bands="GSM 850 / LTE 700" brand="FLOW" cc="vc" country="Saint Vincent and the Grenadines" operator="Cable & Wireless (St. Vincent & the Grenadines) Ltd" status="Operational" + 110 bands="LTE 700" brand="FLOW" cc="vc" country="Saint Vincent and the Grenadines" operator="Cable & Wireless (St. Vincent & the Grenadines) Ltd" status="Operational" 000-999 362 31 bands="GSM" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Eutel N.V." 33 bands="GSM" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="WICC N.V." - 51 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Telcell" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Telcell N.V." status="Operational" + 51 bands="UMTS 2100 / LTE 1800" brand="Telcell" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Telcell N.V." status="Operational" 54 bands="GSM 900 / GSM 1800" brand="ECC" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="East Caribbean Cellular" status="Operational" - 59 bands="GSM 900 / GSM 1800" brand="Chippie" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="United Telecommunication Service N.V. (UTS)" status="Operational" - 60 bands="UMTS 2100 / LTE 1800" brand="Chippie" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="United Telecommunication Service N.V. (UTS)" status="Operational" + 59 bands="GSM 900 / GSM 1800" brand="FLOW" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Liberty Latin America" status="Not operational" + 60 bands="UMTS 2100 / LTE 1800" brand="FLOW" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Liberty Latin America" status="Operational" 63 country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="CSC N.V." 68 bands="UMTS 2100 / LTE 1800" brand="Digicel" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Curaçao Telecom N.V." status="Operational" 69 bands="GSM 900 / GSM 1800" brand="Digicel" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Curaçao Telecom N.V." status="Operational" 74 country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="PCS N.V." 76 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Digicel" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Antiliano Por N.V." status="Operational" - 78 bands="UMTS 900 / LTE 1800" brand="Telbo" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Telefonia Bonairiano N.V." status="Operational" - 91 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800" brand="Chippie" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="United Telecommunication Service N.V. (UTS)" status="Operational" + 78 bands="UMTS 900 / LTE 1800" brand="Kla Mobile" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Telefonia Bonairiano (Telbo) N.V." status="Operational" + 91 bands="UMTS 850 / UMTS 2100 / LTE 1800" brand="FLOW" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Liberty Latin America" status="Operational" 94 bands="TDMA PCS" brand="Bayòs" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="Bòbò Frus N.V." status="Operational" 95 bands="CDMA2000 850" brand="MIO" country="Former Netherlands Antilles (Kingdom of the Netherlands) - BQ/CW/SX" operator="E.O.C.G. Wireless" status="Not operational" 00-99 363 01 bands="GSM 900 / GSM 1800 / GSM 1900 / UMTS 2100 / LTE 1800 / TDMA 800" brand="SETAR" cc="aw" country="Aruba (Kingdom of the Netherlands)" operator="Servicio di Telecomunicacion di Aruba" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Digicel" cc="aw" country="Aruba (Kingdom of the Netherlands)" operator="Digicel Aruba" status="Operational" + 02 bands="UMTS 2100 / LTE 1800" brand="Digicel" cc="aw" country="Aruba (Kingdom of the Netherlands)" operator="Digicel Aruba" status="Operational" 00-99 364 - 39 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / LTE 1700" brand="BTC" cc="bs" country="Bahamas" operator="The Bahamas Telecommunications Company Ltd (BaTelCo)" status="Operational" + 39 bands="UMTS 850 / LTE 700 / LTE 1700" brand="BTC" cc="bs" country="Bahamas" operator="The Bahamas Telecommunications Company Ltd (BaTelCo)" status="Operational" 49 bands="UMTS 850 / LTE 700 / LTE 1700" brand="Aliv" cc="bs" country="Bahamas" operator="Cable Bahamas Ltd" status="Operational" 00-99 365 010 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700" cc="ai" country="Anguilla" operator="Digicel" status="Operational" - 840 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700" brand="FLOW" cc="ai" country="Anguilla" operator="Cable & Wireless" status="Operational" + 840 bands="UMTS 850 / UMTS 1900 / LTE 700" brand="FLOW" cc="ai" country="Anguilla" operator="Cable & Wireless" status="Operational" 000-999 366 020 bands="GSM 900 / GSM 1900 / UMTS 900 / UMTS 1900 / LTE 700" brand="Digicel" cc="dm" country="Dominica" operator="Digicel Group Limited" status="Operational" 110 bands="GSM 850 / UMTS 850 / LTE 700" brand="FLOW" cc="dm" country="Dominica" operator="Cable & Wireless" status="Operational" 000-999 368 - 01 bands="GSM 900 / GSM 850 / UMTS 900 / UMTS 2100 / LTE 1800" brand="CUBACEL" cc="cu" country="Cuba" operator="Empresa de Telecomunicaciones de Cuba, SA" status="Operational" + 01 bands="GSM 900 / GSM 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100" brand="CUBACEL" cc="cu" country="Cuba" operator="Empresa de Telecomunicaciones de Cuba, SA" status="Operational" 00-99 370 - 01 bands="GSM 900 / GSM 1800 / GSM 1900 / UMTS 900 / LTE 850 / LTE 1700 / LTE 1900" brand="Altice" cc="do" country="Dominican Republic" operator="Altice Group" status="Operational" - 02 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1700 / LTE 1900 / LTE 2600" brand="Claro" cc="do" country="Dominican Republic" operator="Compañía Dominicana de Teléfonos" status="Operational" + 01 bands="GSM 900 / GSM 1800 / GSM 1900 / UMTS 900 / LTE 850 / LTE 900 / LTE 1700 / LTE 1900 / 5G 3500" brand="Altice" cc="do" country="Dominican Republic" operator="Altice Group" status="Operational" + 02 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 3500" brand="Claro" cc="do" country="Dominican Republic" operator="Compañía Dominicana de Teléfonos" status="Operational" 03 bands="AMPS / CDMA 850" brand="Altice" cc="do" country="Dominican Republic" operator="Altice Group" status="Operational" 04 bands="CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 1700" brand="Viva" cc="do" country="Dominican Republic" operator="Trilogy Dominicana, S.A." status="Operational" 05 bands="TD-LTE 2600" brand="Wind" cc="do" country="Dominican Republic" operator="WIND Telecom, S.A" status="Operational" @@ -1658,19 +1970,21 @@ 03 bands="GSM 900 / GSM 1800 / UTMS 2100 / LTE 800" brand="Natcom" cc="ht" country="Haiti" operator="NATCOM S.A." status="Operational" 00-99 374 - 12 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1900 / TD-LTE 2500 / 5G 2500" brand="bmobile" cc="tt" country="Trinidad and Tobago" operator="TSTT" status="Operational" - 13 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="Digicel" cc="tt" country="Trinidad and Tobago" operator="Digicel (Trinidad & Tobago) Limited" status="Not Operational" - 130 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900" brand="Digicel" cc="tt" country="Trinidad and Tobago" operator="Digicel (Trinidad & Tobago) Limited" status="Operational" + 01 bands="GSM 850 / GSM 1900" brand="bmobile" cc="tt" country="Trinidad and Tobago" operator="TSTT" status="Not operational" + 12 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900 / TD-LTE 2500 / 5G 2500" brand="bmobile" cc="tt" country="Trinidad and Tobago" operator="TSTT" status="Operational" + 13 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900" brand="Digicel" cc="tt" country="Trinidad and Tobago" operator="Digicel (Trinidad & Tobago) Limited" status="Not operational" + 130 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900" brand="Digicel" cc="tt" country="Trinidad and Tobago" operator="Digicel (Trinidad & Tobago) Limited" status="Operational" 140 bands="CDMA" brand="Laqtel" cc="tt" country="Trinidad and Tobago" operator="LaqTel Ltd." status="Not operational" + 20 bands="GSM 850 / GSM 1900" brand="bmobile" cc="tt" country="Trinidad and Tobago" operator="TSTT" status="Not operational" 376 - 350 bands="GSM 850 / UMTS 850 / LTE 700" brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)" status="Operational" + 350 bands="UMTS 850 / LTE 700" brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)" status="Operational" 351 brand="Digicel" cc="tc" country="Turks and Caicos Islands" operator="Digicel (Turks & Caicos) Limited" status="Not operational" 352 bands="UMTS 850" brand="FLOW" cc="tc" country="Turks and Caicos Islands" operator="Cable & Wireless West Indies Ltd (Turks & Caicos)" status="Not operational" - 360 brand="Digicel" cc="tc" country="Turks and Caicos Islands" operator="Digicel (Turks & Caicos) Limited" + 360 brand="Digicel" cc="tc" country="Turks and Caicos Islands" operator="Digicel (Turks & Caicos) Limited" status="Reserved" 000-999 400 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Azercell" cc="az" country="Azerbaijan" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Bakcell" cc="az" country="Azerbaijan" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Azercell" cc="az" country="Azerbaijan" operator="Azercell Telecom LLC" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Bakcell" cc="az" country="Azerbaijan" operator="Bakcell LLC" status="Operational" 03 bands="CDMA 450" brand="FONEX" cc="az" country="Azerbaijan" operator="CATEL" status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Nar Mobile" cc="az" country="Azerbaijan" operator="Azerfon" status="Operational" 05 bands="TETRA?" cc="az" country="Azerbaijan" operator="Special State Protection Service of the Republic of Azerbaijan" @@ -1678,259 +1992,289 @@ 00-99 401 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100" brand="Beeline" cc="kz" country="Kazakhstan" operator="KaR-Tel LLP" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Kcell" cc="kz" country="Kazakhstan" operator="Kcell JSC" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="Kcell" cc="kz" country="Kazakhstan" operator="Kcell JSC" status="Operational" + 04 brand="Beeline" cc="kz" country="Kazakhstan" operator="KaR-Tel LLP" 07 bands="UMTS 850 / GSM 1800 / LTE 1800" brand="Altel" cc="kz" country="Kazakhstan" operator="Altel" status="Operational" 08 bands="CDMA 450 / CDMA 800" brand="Kazakhtelecom" cc="kz" country="Kazakhstan" status="Operational" - 77 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="Tele2.kz" cc="kz" country="Kazakhstan" operator="MTS" status="Operational" + 10 bands="5G" cc="kz" country="Kazakhstan" operator="Freedom Telecom Operations LLP" + 77 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / 5G 3500" brand="Tele2.kz" cc="kz" country="Kazakhstan" operator="MTS" status="Operational" 00-99 402 - 11 bands="GSM 900 / UMTS 850 / UMTS 2100 / LTE 1800" brand="B-Mobile" cc="bt" country="Bhutan" operator="Bhutan Telecom Limited" status="Operational" - 77 bands="GSM 900 / GSM 1800 / UMTS 850 / LTE 700" brand="TashiCell" cc="bt" country="Bhutan" operator="Tashi InfoComm Limited" status="Operational" + 11 bands="GSM 900 / UMTS 850 / UMTS 2100 / LTE 1800 / 5G" brand="B-Mobile" cc="bt" country="Bhutan" operator="Bhutan Telecom Limited" status="Operational" + 17 brand="B-Mobile" cc="bt" country="Bhutan" operator="Bhutan Telecom Limited" + 77 bands="GSM 900 / GSM 1800 / UMTS 850 / LTE 700 / 3G 3500" brand="TashiCell" cc="bt" country="Bhutan" operator="Tashi InfoComm Limited" status="Operational" 00-99 404 - 01 bands="GSM 900" brand="Vodafone India" cc="in" country="India" operator="Haryana" status="Operational" - 02 bands="GSM 900" brand="AirTel" cc="in" country="India" operator="Punjab" status="Operational" - 03 bands="GSM 900" brand="AirTel" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 04 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Delhi & NCR" status="Operational" - 05 bands="GSM 900" brand="Vodafone India" cc="in" country="India" operator="Gujarat" status="Operational" - 07 bands="GSM 900" brand="IDEA" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" - 09 bands="GSM 900" brand="Reliance" cc="in" country="India" operator="Assam" status="Operational" - 10 bands="GSM 900" brand="AirTel" cc="in" country="India" operator="Delhi & NCR" status="Operational" - 11 bands="GSM 900 / GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Delhi & NCR" status="Operational" - 12 bands="GSM 900" brand="IDEA" cc="in" country="India" operator="Haryana" status="Operational" - 13 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" - 14 bands="GSM 900 / GSM 1800" brand="IDEA" cc="in" country="India" operator="Punjab" status="Operational" - 15 bands="GSM 900" brand="Vodafone India" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" - 16 bands="GSM 900" brand="Airtel" cc="in" country="India" operator="North East" status="Operational" - 17 bands="GSM 900 / GSM 1800" brand="AIRCEL" cc="in" country="India" operator="West Bengal" status="Operational" - 18 bands="GSM 900" brand="Reliance" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 19 bands="GSM 900 / GSM 1800" brand="IDEA" cc="in" country="India" operator="Kerala" status="Operational" - 20 bands="GSM 900 / UMTS 2100" brand="Vodafone India" cc="in" country="India" operator="Mumbai" status="Operational" - 21 bands="GSM 900" brand="Loop Mobile" cc="in" country="India" operator="Mumbai" status="Operational" - 22 bands="GSM 900" brand="IDEA" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" - 24 bands="GSM 900" brand="IDEA" cc="in" country="India" operator="Gujarat" status="Operational" - 25 bands="GSM 900 / GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Bihar" status="Operational" - 27 bands="GSM 900" brand="Vodafone India" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" - 28 bands="GSM 900" brand="AIRCEL" cc="in" country="India" operator="Orissa" status="Operational" - 29 bands="GSM 900" brand="AIRCEL" cc="in" country="India" operator="Assam" status="Operational" - 30 bands="GSM 900 / GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Kolkata" status="Operational" - 31 bands="GSM 900" brand="AirTel" cc="in" country="India" operator="Kolkata" status="Operational" - 34 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Haryana" status="Operational" - 35 bands="GSM 900 / GSM 1800" brand="Aircel" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 36 bands="GSM 900" brand="Reliance" cc="in" country="India" operator="Bihar & Jharkhand" status="Operational" - 37 bands="GSM 900 / UMTS 2100" brand="Aircel" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 38 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Assam" status="Operational" - 40 brand="AirTel" cc="in" country="India" operator="Chennai" status="Operational" - 41 bands="GSM 900" brand="Aircel" cc="in" country="India" operator="Chennai" status="Operational" - 42 bands="GSM 900" brand="Aircel" cc="in" country="India" operator="Tamil Nadu" status="Operational" - 43 bands="GSM 900" brand="Vodafone India" cc="in" country="India" operator="Tamil Nadu" status="Operational" - 44 bands="GSM 900 / LTE 1800" brand="IDEA" cc="in" country="India" operator="Karnataka" status="Operational" - 45 bands="GSM / TD-LTE 2300" brand="Airtel" cc="in" country="India" operator="Karnataka" status="Operational" - 46 bands="GSM 900" brand="Vodafone India" cc="in" country="India" operator="Kerala" status="Operational" - 48 bands="GSM 900" brand="Dishnet Wireless" cc="in" country="India" status="Operational" - 49 bands="GSM 900" brand="Airtel" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" - 50 bands="GSM 900" brand="Reliance" cc="in" country="India" operator="North East" status="Operational" - 51 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 52 bands="GSM 900" brand="Reliance" cc="in" country="India" operator="Orissa" status="Operational" - 53 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Punjab" status="Operational" - 54 bands="GSM 900 / UTMS 2100" brand="cellone" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 55 bands="GSM 900 / UTMS 2100" brand="cellone" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" - 56 bands="GSM 900" brand="IDEA" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 57 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Gujarat" status="Operational" - 58 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Madhya Pradesh & Chhattisgarh" status="Operational" - 59 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Rajasthan" status="Operational" - 60 bands="GSM 900" brand="Vodafone India" cc="in" country="India" operator="Rajasthan" status="Operational" - 62 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 64 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Chennai" status="Operational" - 66 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" - 67 bands="GSM 900 / UMTS 2100" brand="Reliance" cc="in" country="India" operator="Madhya Pradesh & Chhattisgarh" status="Operational" - 68 bands="GSM 900 / UMTS 2100" brand="DOLPHIN" cc="in" country="India" operator="Delhi & NCR" status="Operational" - 69 bands="GSM 900 / UMTS 2100" brand="DOLPHIN" cc="in" country="India" operator="Mumbai" status="Operational" - 70 brand="AirTel" cc="in" country="India" operator="Rajasthan" status="Operational" - 71 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Karnataka (Bangalore)" status="Operational" - 72 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Kerala" status="Operational" - 73 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" - 74 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="West Bengal" status="Operational" - 75 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Bihar" status="Operational" - 76 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Orissa" status="Operational" - 77 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="North East" status="Operational" - 78 bands="GSM 900 / UMTS 2100" brand="IDEA" cc="in" country="India" operator="Madhya Pradesh & Chattishgarh" status="Operational" - 79 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Andaman Nicobar" status="Operational" - 80 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Tamil Nadu" status="Operational" - 81 bands="GSM 900 / UMTS 2100" brand="cellone" cc="in" country="India" operator="Kolkata" status="Operational" - 82 brand="IDEA" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 83 bands="GSM 1800" brand="Reliance" cc="in" country="India" operator="Kolkata" status="Operational" - 84 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Chennai" status="Operational" - 85 bands="GSM 1800" brand="Reliance" cc="in" country="India" operator="West Bengal" status="Operational" - 86 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Vodafone India" cc="in" country="India" operator="Karnataka" status="Operational" - 87 brand="IDEA" cc="in" country="India" operator="Rajasthan" status="Operational" - 88 brand="Vodafone India" cc="in" country="India" operator="Vodafone Punjab" status="Operational" - 89 brand="IDEA" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" - 90 bands="GSM 1800" brand="AirTel" cc="in" country="India" operator="Maharashtra" status="Operational" - 91 bands="GSM 900" brand="AIRCEL" cc="in" country="India" operator="Kolkata" status="Operational" - 92 bands="GSM 1800 / UMTS 2100" brand="AirTel" cc="in" country="India" operator="Mumbai" status="Operational" - 93 bands="GSM 1800" brand="AirTel" cc="in" country="India" operator="Madhya Pradesh" status="Operational" - 94 brand="AirTel" cc="in" country="India" operator="Tamil Nadu" status="Operational" - 95 bands="GSM 1800" brand="AirTel" cc="in" country="India" operator="Kerala" status="Operational" - 96 bands="GSM 1800" brand="AirTel" cc="in" country="India" operator="Haryana" status="Operational" - 97 brand="AirTel" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 98 brand="AirTel" cc="in" country="India" operator="Gujarat" status="Operational" + 01 bands="GSM 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Haryana" status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel" cc="in" country="India" operator="Punjab" status="Operational" + 03 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel" cc="in" country="India" operator="Himachal Pradesh" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Delhi & NCR" status="Not Operational" + 05 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Gujarat" status="Operational" + 07 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" + 09 bands="LTE" brand="Reliance" cc="in" country="India" operator="Assam" status="Operational" + 10 bands="GSM 900 / GSM 1800 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel" cc="in" country="India" operator="Delhi & NCR" status="Operational" + 11 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Delhi & NCR" status="Operational" + 12 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Haryana" status="Not Operational" + 13 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Not Operational" + 14 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Punjab" status="Operational" + 15 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" + 16 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="Airtel" cc="in" country="India" operator="North East" status="Operational" + 17 bands="GSM 900 / GSM 1800" brand="AIRCEL" cc="in" country="India" operator="West Bengal" status="Not operational" + 18 bands="LTE" brand="Reliance" cc="in" country="India" operator="Himachal Pradesh" status="Operational" + 19 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE-2300 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Kerala" status="Not Operational" + 20 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500 / 5G 3500" brand="Vi India" cc="in" country="India" operator="Mumbai" status="Operational" + 21 bands="GSM 900" brand="Loop Mobile" cc="in" country="India" operator="Mumbai" status="Not operational" + 22 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" + 23 bands="LTE" brand="Reliance" cc="in" country="India" operator="West Bengal" status="Not Operational" + 24 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Gujarat" status="Not Operational" + 25 bands="GSM 900 / GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Bihar" status="Not operational" + 27 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Maharashtra & Goa" status="Not Operational" + 28 bands="GSM 900" brand="AIRCEL" cc="in" country="India" operator="Odisha" status="Not operational" + 29 bands="GSM 900" brand="AIRCEL" cc="in" country="India" operator="Assam" status="Not operational" + 30 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Kolkata" status="Operational" + 31 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / TD-LTE 2300" brand="AirTel" cc="in" country="India" operator="Kolkata" status="Operational" + 33 bands="GSM 900" brand="AIRCEL" cc="in" country="India" operator="North East" status="Not operational" + 34 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Haryana" status="Operational" + 35 bands="GSM 900 / GSM 1800" brand="Aircel" cc="in" country="India" operator="Himachal Pradesh" status="Not operational" + 36 bands="LTE" brand="Reliance" cc="in" country="India" operator="Bihar & Jharkhand" status="Operational" + 37 bands="GSM 900 / UMTS 2100" brand="Aircel" cc="in" country="India" operator="Jammu & Kashmir" status="Not operational" + 38 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Assam" status="Operational" + 40 bands="GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel" cc="in" country="India" operator="Chennai" status="Operational" + 41 bands="GSM 900" brand="Aircel" cc="in" country="India" operator="Chennai" status="Not operational" + 42 bands="GSM 900" brand="Aircel" cc="in" country="India" operator="Tamil Nadu" status="Not operational" + 43 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Vi India" cc="in" country="India" operator="Tamil Nadu" status="Operational" + 44 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="Vi India" cc="in" country="India" operator="Karnataka" status="Not Operational" + 45 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="Airtel" cc="in" country="India" operator="Karnataka" status="Operational" + 46 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE-2300 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Kerala" status="Operational" + 48 bands="GSM 900" brand="Dishnet Wireless" cc="in" country="India" status="Not operational" + 49 bands="GSM 900 / GSM 1800 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="Airtel" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" + 50 bands="LTE" brand="Reliance" cc="in" country="India" operator="North East" status="Operational" + 51 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Himachal Pradesh" status="Operational" + 52 bands="LTE" brand="Reliance" cc="in" country="India" operator="Odisha" status="Operational" + 53 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Punjab" status="Operational" + 54 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" + 55 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" + 56 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" + 57 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Gujarat" status="Operational" + 58 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Madhya Pradesh & Chhattisgarh" status="Operational" + 59 bands="CDMA 850 / GSM 900 / UMTS 2100" brand="BSNL Mobile" cc="in" country="India" operator="Rajasthan" status="Operational" + 60 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Rajasthan" status="Operational" + 62 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" + 64 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Chennai" status="Operational" + 66 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" + 67 bands="LTE" brand="Reliance" cc="in" country="India" operator="Madhya Pradesh & Chhattisgarh" status="Not Operational" + 68 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="MTNL" cc="in" country="India" operator="Delhi & NCR" status="Operational" + 69 bands="GSM 900 / UMTS 2100" brand="MTNL" cc="in" country="India" operator="Mumbai" status="Operational" + 70 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel" cc="in" country="India" operator="Rajasthan" status="Operational" + 71 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Karnataka (Bangalore)" status="Operational" + 72 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Kerala" status="Operational" + 73 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" + 74 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="West Bengal" status="Operational" + 75 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Bihar" status="Operational" + 76 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Odisha" status="Operational" + 77 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="North East" status="Operational" + 78 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Madhya Pradesh & Chattishgarh" status="Operational" + 79 bands="GSM 900 / UMTS 2100" brand="BSNL Mobile" cc="in" country="India" operator="Andaman Nicobar" status="Operational" + 80 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Tamil Nadu" status="Operational" + 81 bands="GSM 900 / UMTS 2100 / LTE 2100" brand="BSNL Mobile" cc="in" country="India" operator="Kolkata" status="Operational" + 82 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Operational" + 83 bands="LTE" brand="Reliance" cc="in" country="India" operator="Kolkata" status="Operational" + 84 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Vi India" cc="in" country="India" operator="Chennai" status="Not Operational" + 85 bands="LTE" brand="Reliance" cc="in" country="India" operator="West Bengal" status="Operational" + 86 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100" brand="Vi India" cc="in" country="India" operator="Karnataka" status="Operational" + 87 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 88 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Punjab" status="Not Operational" + 89 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 90 bands="GSM 1800 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Maharashtra)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 91 bands="GSM 900" brand="AIRCEL" cc="in" country="India" operator="Kolkata" status="Not operational" + 92 bands="GSM 900 / GSM 1800 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Mumbai)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 93 bands="GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Madhya Pradesh)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 94 bands="GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Tamil Nadu)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 95 bands="GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Kerala)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 96 bands="GSM 1800 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Haryana)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 97 bands="GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (UP-West)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 98 bands="GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Gujarat)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" 00-99 405 - 025 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" - 026 bands="CDMA 2000" brand="TATA DOCOMO" cc="in" country="India" operator="Assam" status="Operational" - 027 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Bihar/Jharkhand" status="Operational" - 028 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Chennai" status="Operational" - 029 bands="CDMA 2000" brand="TATA DOCOMO" cc="in" country="India" operator="Delhi" status="Operational" - 03 bands="GSM 1800" brand="Reliance" cc="in" country="India" operator="Bihar" status="Operational" - 030 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Gujarat" status="Operational" - 031 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Haryana" status="Operational" - 032 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 033 bands="CDMA 2000" brand="TATA DOCOMO" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 034 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Karnataka" status="Operational" - 035 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Kerala" status="Operational" - 036 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Kolkata" status="Operational" - 037 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" - 038 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Madhya Pradesh" status="Operational" - 039 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Mumbai" status="Operational" - 04 bands="GSM 1800" brand="Reliance" cc="in" country="India" operator="Chennai" status="Operational" - 041 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Orissa" status="Operational" - 042 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Punjab" status="Operational" - 043 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Rajasthan" status="Operational" - 044 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Tamil Nadu including Chennai" status="Operational" - 045 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Uttar Pradesh (E)" status="Operational" - 046 bands="CDMA 2000 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Uttar Pradesh (W) & Uttarakhand" status="Operational" - 047 bands="CDMA 2000 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="West Bengal" status="Operational" - 05 bands="GSM 1800" brand="Reliance" cc="in" country="India" operator="Delhi & NCR" status="Operational" - 06 bands="GSM 1800" brand="Reliance" cc="in" country="India" operator="Gujarat" status="Operational" - 07 bands="GSM" brand="Reliance" cc="in" country="India" operator="Haryana" status="Operational" - 08 bands="GSM" brand="Reliance" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 09 bands="GSM 1800 / UMTS 2100" brand="Reliance" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 10 bands="GSM" brand="Reliance" cc="in" country="India" operator="Karnataka" status="Operational" - 11 bands="GSM" brand="Reliance" cc="in" country="India" operator="Kerala" status="Operational" - 12 bands="GSM" brand="Reliance" cc="in" country="India" operator="Kolkata" status="Operational" - 13 bands="GSM" brand="Reliance" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" - 14 bands="GSM" brand="Reliance" cc="in" country="India" operator="Madhya Pradesh" status="Operational" - 15 bands="GSM 1800 / UMTS 2100" brand="Reliance" cc="in" country="India" operator="Mumbai" status="Operational" - 17 bands="GSM" brand="Reliance" cc="in" country="India" operator="Orissa" status="Operational" - 18 bands="GSM" brand="Reliance" cc="in" country="India" operator="Punjab" status="Operational" - 19 bands="GSM" brand="Reliance" cc="in" country="India" operator="Rajasthan" status="Operational" - 20 bands="GSM" brand="Reliance" cc="in" country="India" operator="Tamil Nadu" status="Operational" - 21 bands="GSM" brand="Reliance" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" - 22 bands="GSM" brand="Reliance" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 23 bands="GSM" brand="Reliance" cc="in" country="India" operator="West Bengal" status="Operational" - 51 bands="GSM 900" brand="AirTel" cc="in" country="India" operator="West Bengal" status="Operational" - 52 bands="GSM 900" brand="AirTel" cc="in" country="India" operator="Bihar & Jharkhand" status="Operational" - 53 bands="GSM" brand="AirTel" cc="in" country="India" operator="Orissa" status="Operational" - 54 bands="GSM 900" brand="AirTel" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" - 55 bands="GSM 900 / UTMS 2100" brand="Airtel" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 56 bands="GSM 900 / GSM 1800" brand="AirTel" cc="in" country="India" operator="Assam" status="Operational" - 66 bands="GSM 900 / GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 67 brand="Vodafone India" cc="in" country="India" operator="West Bengal" status="Operational" - 70 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Bihar & Jharkhand" status="Operational" - 750 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 751 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Assam" status="Operational" - 752 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Bihar & Jharkhand" status="Operational" - 753 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Orissa" status="Operational" - 754 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 755 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="North East" status="Operational" - 756 bands="GSM 1800" brand="Vodafone India" cc="in" country="India" operator="Madhya Pradesh & Chhattisgarh" status="Operational" - 799 bands="GSM 900 / GSM 1800" brand="IDEA" cc="in" country="India" operator="Mumbai" status="Operational" - 800 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Delhi & NCR" status="Operational" - 801 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" + 024 bands="CDMA 850" brand="HFCL INFOT (Ping Mobile Brand)" cc="in" country="India" operator="Punjab" status="Not operational" + 025 bands="CDMA 850 / GSM 1800 / UMTS 2100" brand="TATA DOCOMO" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Not operational" + 026 bands="CDMA 850" brand="TATA DOCOMO" cc="in" country="India" operator="Assam" status="Not operational" + 027 bands="CDMA 850 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Bihar/Jharkhand" status="Not operational" + 028 bands="CDMA 850 / GSM 1800" brand="TATA DOCOMO" cc="in" country="India" operator="Chennai" status="Not operational" + 029 bands="CDMA 850" brand="TATA DOCOMO" cc="in" country="India" operator="Delhi" status="Not operational" + 03 bands="LTE" brand="Reliance" cc="in" country="India" operator="Bihar" status="Operational" + 04 bands="LTE" brand="Reliance" cc="in" country="India" operator="Chennai" status="Operational" + 048 bands="GSM-R 900" brand="INDIAN RAILWAYS GSM-R" cc="in" country="India" operator="All Circle" status="Operational" + 05 bands="LTE" brand="Reliance" cc="in" country="India" operator="Delhi & NCR" status="Operational" + 06 bands="LTE" brand="Reliance" cc="in" country="India" operator="Gujarat" status="Operational" + 07 bands="LTE" brand="Reliance" cc="in" country="India" operator="Haryana" status="Operational" + 08 bands="LTE" brand="Reliance" cc="in" country="India" operator="Himachal Pradesh" status="Operational" + 09 bands="LTE" brand="Reliance" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" + 10 bands="LTE" brand="Reliance" cc="in" country="India" operator="Karnataka" status="Operational" + 11 bands="LTE" brand="Reliance" cc="in" country="India" operator="Kerala" status="Operational" + 12 bands="LTE" brand="Reliance" cc="in" country="India" operator="Kolkata" status="Operational" + 13 bands="LTE" brand="Reliance" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" + 14 bands="LTE" brand="Reliance" cc="in" country="India" operator="Madhya Pradesh" status="Operational" + 15 bands="LTE" brand="Reliance" cc="in" country="India" operator="Mumbai" status="Operational" + 17 bands="LTE" brand="Reliance" cc="in" country="India" operator="Odisha" status="Operational" + 18 bands="LTE" brand="Reliance" cc="in" country="India" operator="Punjab" status="Operational" + 19 bands="LTE" brand="Reliance" cc="in" country="India" operator="Rajasthan" status="Operational" + 20 bands="LTE" brand="Reliance" cc="in" country="India" operator="Tamil Nadu" status="Operational" + 21 bands="LTE" brand="Reliance" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" + 22 bands="LTE" brand="Reliance" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" + 23 bands="LTE" brand="Reliance" cc="in" country="India" operator="West Bengal" status="Operational" + 51 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (West Bengal)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 52 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Bihar)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 53 bands="GSM 900 / GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Orissa)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 54 bands="GSM 900 / GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (UP East)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 55 bands="GSM 900 / GSM 1800 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="Airtel (Jammu & Kasmir)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 56 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="AirTel (Assam)" cc="in" country="India" operator="Bharti Airtel Limited" status="Operational" + 66 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Uttar Pradesh (West)" status="Not Operational" + 67 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="West Bengal" status="Operational" + 70 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Operational" + 750 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" + 751 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Assam" status="Operational" + 752 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Bihar & Jharkhand" status="Not Operational" + 753 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Odisha" status="Operational" + 754 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Himachal Pradesh" status="Not Operational" + 755 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="North East" status="Operational" + 756 bands="GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Madhya Pradesh & Chhattisgarh" status="Not Operational" + 799 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500 / 5G 3500" brand="Vi India" cc="in" country="India" operator="Mumbai" status="Not Operational" + 800 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Delhi & NCR" status="Not operational" + 801 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Not operational" 802 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Gujarat" status="Not operational" - 803 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Karnataka" status="Operational" - 804 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Maharashtra & Goa" status="Operational" - 805 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Mumbai" status="Operational" - 806 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Rajasthan" status="Operational" + 803 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Karnataka" status="Not operational" + 804 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Maharashtra & Goa" status="Not operational" + 805 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Mumbai" status="Not operational" + 806 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Rajasthan" status="Not operational" 807 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Haryana" status="Not operational" 808 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Madhya Pradesh" status="Not operational" - 809 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Kerala" status="Operational" - 810 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" - 811 bands="GSM" brand="AIRCEL" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 812 bands="GSM" brand="AIRCEL" cc="in" country="India" operator="Punjab" status="Not operational" - 818 bands="GSM" brand="Uninor" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 819 bands="GSM" brand="Uninor" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" - 820 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Karnataka" status="Operational" - 821 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Kerala" status="Operational" - 822 bands="GSM" brand="Uninor" cc="in" country="India" operator="Kolkata" status="Operational" - 824 bands="GSM 1800" brand="Videocon Datacom" cc="in" country="India" operator="Assam" status="Reserved" - 827 bands="GSM 1800" brand="Videocon Datacom" cc="in" country="India" operator="Gujarat" status="Operational" - 834 bands="GSM 1800" brand="Videocon Datacom" cc="in" country="India" operator="Madhya Pradesh" status="Reserved" - 840 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="West Bengal" status="Operational" - 844 bands="GSM" brand="Uninor" cc="in" country="India" operator="Delhi & NCR" status="Not operational" - 845 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Assam" status="Operational" - 846 bands="GSM 1800 / UTMS 2100" brand="IDEA" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 847 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Karnataka" status="Operational" - 848 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Kolkata" status="Operational" - 849 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="North East" status="Operational" - 850 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Orissa" status="Operational" - 851 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Punjab" status="Operational" - 852 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Tamil Nadu" status="Operational" - 853 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="West Bengal" status="Operational" - 854 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Andhra Pradesh" status="Operational" - 855 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Assam" status="Operational" - 856 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Bihar" status="Operational" - 857 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Gujarat" status="Operational" - 858 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Haryana" status="Operational" - 859 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Himachal Pradesh" status="Operational" - 860 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Jammu & Kashmir" status="Operational" - 861 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Karnataka" status="Operational" - 862 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Kerala" status="Operational" - 863 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Madhya Pradesh" status="Operational" - 864 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Maharashtra" status="Operational" - 865 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="North East" status="Operational" - 866 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Orissa" status="Operational" - 867 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Punjab" status="Operational" - 868 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Rajasthan" status="Operational" - 869 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Tamil Nadu (incl. Chennai)" status="Operational" - 870 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Uttar Pradesh (West)" status="Operational" - 871 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Uttar Pradesh (East)" status="Operational" - 872 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Delhi" status="Operational" - 873 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Kolkata" status="Operational" - 874 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio" cc="in" country="India" operator="Mumbai" status="Operational" - 875 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Assam" status="Reserved" - 880 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="West Bengal" status="Operational" - 881 bands="GSM 1800" brand="S Tel" cc="in" country="India" operator="Assam" status="Reserved" - 908 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Operational" - 909 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Delhi" status="Operational" - 910 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Haryana" status="Operational" - 911 bands="GSM 1800" brand="IDEA" cc="in" country="India" operator="Maharashtra" status="Operational" - 912 bands="GSM 1800" brand="Etisalat DB(cheers)" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Not operational" - 913 bands="GSM 1800" brand="Etisalat DB(cheers)" cc="in" country="India" operator="Delhi & NCR" status="Not operational" - 914 bands="GSM 1800" brand="Etisalat DB(cheers)" cc="in" country="India" operator="Gujarat" status="Not operational" - 917 bands="GSM 1800" brand="Etisalat DB(cheers)" cc="in" country="India" operator="Kerala" status="Not operational" - 927 brand="Uninor" cc="in" country="India" operator="Gujarat" status="Operational" - 929 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Maharashtra" status="Operational" + 809 bands="GSM 1800" brand="AIRCEL" cc="in" country="India" operator="Kerala" status="Not operational" + 81 bands="UNKNOWN" brand="AIRCELL" cc="in" country="India" operator="Delhi" status="UNKNOWN" + 82 bands="UNKNOWN" brand="AIRCELL" cc="in" country="India" operator="Andhra Pradesh" status="UNKNOWN" + 83 bands="UNKNOWN" brand="AIRCELL" cc="in" country="India" operator="Gujarat" status="UNKNOWN" + 840 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Bengal" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 841 bands="GSM 1800" brand="Videocon Telecom" cc="in" country="India" operator="Uttar Pradesh (East)" status="Not operational" + 842 bands="GSM 1800" brand="Videocon Telecom" cc="in" country="India" operator="Uttar Pradesh (West)" status="Not operational" + 843 bands="GSM 1800" brand="Videocon Telecom" cc="in" country="India" operator="West Bengal" status="Not operational" + 844 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Delhi & NCR" status="Not operational" + 845 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 846 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 847 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="Vi India" cc="in" country="India" operator="Karnataka" status="Not operational" + 848 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 849 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 850 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 851 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Punjab" status="Not Operational" + 852 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 853 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Idea" cc="in" country="India" operator="Vodafone Idea Limited" status="Not Operational" + 854 bands="LTE 1800 / TD-LTE 2300" brand="Jio Andhra Pradesh" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 855 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Assam" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 856 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Bihar" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 857 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Gujarat" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 858 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Haryana" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 859 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Pradesh" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 860 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Mumbai" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 861 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Karnataka" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 862 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Kerala" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 863 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Madhya Pradesh" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 864 bands="LTE 1800 / TD-LTE 2300" brand="Jio Maharashtra" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 865 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio North East" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 866 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Orissa" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 867 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Punjab" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 868 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Rajasthan" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 869 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Tamil Nadu" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 870 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Uttar Pradesh (West)" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 871 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Uttar Pradesh (East)" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 872 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Delhi" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 873 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Kolkata" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 874 bands="LTE 850 / LTE 1800 / TD-LTE 2300" brand="Jio Mumbai" cc="in" country="India" operator="Reliance Jio Infocomm Limited" status="Operational" + 875 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Assam" status="Not operational" + 876 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Bihar" status="Not operational" + 877 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="North East" status="Not operational" + 878 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Orissa" status="Not operational" + 879 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Uttar Pradesh (East)" status="Not operational" + 880 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="West Bengal" status="Not operational" + 881 bands="GSM 1800" brand="S Tel" cc="in" country="India" operator="Assam" status="Not operational" + 882 bands="GSM 1800" brand="S Tel" cc="in" country="India" operator="Bihar" status="Not operational" + 883 bands="GSM 1800" brand="S Tel" cc="in" country="India" operator="Himachal Pradesh" status="Not operational" + 884 bands="GSM 1800" brand="S Tel" cc="in" country="India" operator="Jammu & Kashmir" status="Not operational" + 885 bands="GSM 1800" brand="S Tel" cc="in" country="India" operator="North East" status="Not operational" + 886 bands="GSM 1800" brand="S Tel" cc="in" country="India" operator="Orissa" status="Not operational" + 887 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Andhra Pradesh" status="Not operational" + 888 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Assam" status="Not operational" + 889 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Bihar" status="Not operational" + 890 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Delhi" status="Not operational" + 891 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Gujarat" status="Not operational" + 892 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Haryana" status="Not operational" + 893 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Himachal Pradesh" status="Not operational" + 894 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Jammu & Kashmir" status="Not operational" + 895 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Karnataka" status="Not operational" + 896 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Kerala" status="Not operational" + 897 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Kolkata" status="Not operational" + 898 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Madhya Pradesh" status="Not operational" + 899 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Maharashtra" status="Not operational" + 900 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Mumbai" status="Not operational" + 901 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="North East" status="Not operational" + 902 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Orissa" status="Not operational" + 903 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Punjab" status="Not operational" + 904 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Tamilnadu" status="Not operational" + 905 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Uttar Pradesh (East)" status="Not operational" + 906 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="Uttar Pradesh (West)" status="Not operational" + 907 bands="CDMA 850" brand="SISTEMA SHYAM" cc="in" country="India" operator="West Bengal" status="Not operational" + 908 bands="GSM 900 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Not Operational" + 909 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Delhi" status="Not Operational" + 910 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Haryana" status="Not Operational" + 911 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="Vi India" cc="in" country="India" operator="Maharashtra" status="Not Operational" + 912 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Andhra Pradesh and Telangana" status="Not operational" + 913 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Delhi & NCR" status="Not operational" + 914 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Gujarat" status="Not operational" + 915 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Haryana" status="Not operational" + 916 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Karnataka" status="Not operational" + 917 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Kerala" status="Not operational" + 918 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Maharashtra" status="Not operational" + 919 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Mumbai" status="Not operational" + 920 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Punjab" status="Not operational" + 921 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Rajasthan" status="Not operational" + 922 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Tamilnadu" status="Not operational" + 923 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Uttar Pradesh (East)" status="Not operational" + 924 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Uttar Pradesh (West)" status="Not operational" + 925 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Tamilnadu" status="Not operational" + 926 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Mumbai" status="Not operational" + 927 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Gujarat" status="Not operational" + 928 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Madhya Pradesh" status="Not operational" + 929 bands="GSM 1800" brand="Uninor" cc="in" country="India" operator="Maharashtra" status="Not operational" + 930 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Bihar" status="Not operational" + 931 bands="GSM 1800" brand="Etisalat DB (cheers)" cc="in" country="India" operator="Madhya Pradesh" status="Not operational" + 932 bands="GSM 1800" brand="VIDEOCON (HFCL)-GSM" cc="in" country="India" operator="Punjab" status="Not operational" 410 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800" brand="Jazz" cc="pk" country="Pakistan" operator="Mobilink-PMCL" status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100" brand="Jazz" cc="pk" country="Pakistan" operator="Mobilink-PMCL" status="Operational" 02 bands="CDMA2000 1900 / TD-LTE 1900" brand="3G EVO / CharJi 4G" cc="pk" country="Pakistan" operator="PTCL" status="Operational" 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Ufone" cc="pk" country="Pakistan" operator="Pakistan Telecommunication Mobile Ltd" status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Zong" cc="pk" country="Pakistan" operator="China Mobile" status="Operational" 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="SCO Mobile" cc="pk" country="Pakistan" operator="SCO Mobile Ltd" status="Operational" 06 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 850 / LTE 1800" brand="Telenor" cc="pk" country="Pakistan" operator="Telenor Pakistan" status="Operational" - 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Jazz" cc="pk" country="Pakistan" operator="WaridTel" status="Operational" + 07 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / LTE 2100" brand="Jazz" cc="pk" country="Pakistan" operator="WaridTel" status="Operational" 08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="SCO Mobile" cc="pk" country="Pakistan" operator="SCO Mobile Ltd" status="Operational" 00-99 412 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="AWCC" cc="af" country="Afghanistan" operator="Afghan Wireless Communication Company" status="Operational" 20 bands="GSM 900 / UMTS 2100" brand="Roshan" cc="af" country="Afghanistan" operator="Telecom Development Company Afghanistan Ltd." status="Operational" - 40 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MTN" cc="af" country="Afghanistan" operator="MTN Group Afghanistan" status="Operational" + 40 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="ATOMA" cc="af" country="Afghanistan" operator="M1 Group Afghanistan" status="Operational" 50 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Etisalat" cc="af" country="Afghanistan" operator="Etisalat Afghanistan" status="Operational" 55 bands="CDMA 800" brand="WASEL" cc="af" country="Afghanistan" operator="WASEL Afghanistan" status="Operational" 80 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Salaam" cc="af" country="Afghanistan" operator="Afghan Telecom" status="Operational" 88 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Salaam" cc="af" country="Afghanistan" operator="Afghan Telecom" status="Operational" 00-99 413 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100" brand="Mobitel" cc="lk" country="Sri Lanka" operator="Mobitel (Pvt) Ltd" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 850 / LTE 900 / LTE 1800 / LTE 2100" brand="SLTMobitel" cc="lk" country="Sri Lanka" operator="Mobitel (Pvt) Ltd" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Dialog" cc="lk" country="Sri Lanka" operator="Dialog Axiata PLC" status="Operational" 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Not operational" - 04 bands="CDMA / WiMAX / TD-LTE 2300" brand="Lanka Bell" cc="lk" country="Sri Lanka" operator="Lanka Bell Ltd" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Airtel" cc="lk" country="Sri Lanka" operator="Bharti Airtel Lanka (Pvt) Ltd" status="Operational" - 08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Not operational" - 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Operational" + 04 bands="CDMA / WiMAX / TD-LTE 2300" brand="Lanka Bell" cc="lk" country="Sri Lanka" operator="Lanka Bell Ltd" status="Not operational" + 05 bands="GSM 900 / GSM 1800 / LTE 850 / LTE 2100 / TD-LTE 2500" brand="Airtel" cc="lk" country="Sri Lanka" operator="Bharti Airtel Lanka (Pvt) Ltd" status="Not operational" + 08 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Operational" + 09 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800" brand="Hutch" cc="lk" country="Sri Lanka" operator="Hutchison Telecommunications Lanka (Pvt) Ltd" status="Not operational" 11 bands="CDMA / WiMAX / TD-LTE 2300" brand="Dialog" cc="lk" country="Sri Lanka" operator="Dialog Broadband Networks (Pvt) Ltd" status="Operational" - 12 bands="TD-LTE 2600" brand="SLT" cc="lk" country="Sri Lanka" operator="Sri Lanka Telecom PLC" status="Operational" + 12 bands="TD-LTE 2600" brand="SLTMobitel" cc="lk" country="Sri Lanka" operator="Sri Lanka Telecom PLC" status="Operational" 00-99 414 00 brand="MPT" cc="mm" country="Myanmar" operator="Myanmar Posts and Telecommunications" @@ -1939,7 +2283,7 @@ 03 bands="CDMA 800" brand="CDMA800" cc="mm" country="Myanmar" operator="Myanmar Economic Corporation" status="Operational" 04 brand="MPT" cc="mm" country="Myanmar" operator="Myanmar Posts and Telecommunications" 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Ooredoo" cc="mm" country="Myanmar" operator="Ooredoo Myanmar" status="Operational" - 06 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Telenor" cc="mm" country="Myanmar" operator="Telenor Myanmar" status="Operational" + 06 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="ATOM" cc="mm" country="Myanmar" operator="M1 Group" status="Operational" 09 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 2100" brand="Mytel" cc="mm" country="Myanmar" operator="Myanmar National Tele & Communication Co., Ltd" status="Operational" 20 bands="TD-LTE 2600" brand="ACS" cc="mm" country="Myanmar" operator="Amara Communication Co., Ltd" status="Operational" 21 bands="TD-LTE 2600" brand="ACS" cc="mm" country="Myanmar" operator="Amara Communication Co., Ltd" status="Operational" @@ -1950,17 +2294,23 @@ 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Alfa" cc="lb" country="Lebanon" operator="MIC 1" status="Operational" 03 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Touch" cc="lb" country="Lebanon" operator="MIC 2" status="Operational" 05 bands="GSM 900" brand="Ogero Mobile" cc="lb" country="Lebanon" operator="Ogero Telecom" status="Not operational" + 36 bands="UNKNOWN" brand="Libancell" cc="lb" country="Lebanon" status="UNKNOWN" + 37 bands="UNKNOWN" brand="Libancell" cc="lb" country="Lebanon" status="UNKNOWN" + 38 bands="UNKNOWN" brand="Libancell" cc="lb" country="Lebanon" status="UNKNOWN" + 39 bands="UNKNOWN" brand="Libancell" cc="lb" country="Lebanon" status="UNKNOWN" 00-99 416 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="zain JO" cc="jo" country="Jordan" operator="Jordan Mobile Telephone Services" status="Operational" 02 bands="iDEN 800" brand="XPress Telecom" cc="jo" country="Jordan" operator="XPress Telecom" status="Not operational" - 03 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 3500" brand="Umniah" cc="jo" country="Jordan" operator="Umniah Mobile Company" status="Operational" - 77 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Orange" cc="jo" country="Jordan" operator="Petra Jordanian Mobile Telecommunications Company (MobileCom)" status="Operational" + 03 bands="UMTS 2100 / LTE 1800 / LTE 3500" brand="Umniah" cc="jo" country="Jordan" operator="Umniah Mobile Company" status="Operational" + 77 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G" brand="Orange" cc="jo" country="Jordan" operator="Petra Jordanian Mobile Telecommunications Company (MobileCom)" status="Operational" 00-99 417 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Syriatel" cc="sy" country="Syria" operator="Syriatel Mobile Telecom" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="MTN" cc="sy" country="Syria" operator="MTN Syria" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="MTN" cc="sy" country="Syria" operator="MTN Syria/TeleInvest" status="Operational" + 03 cc="sy" country="Syria" operator="Wafa Telecom" status="Not operational" 09 cc="sy" country="Syria" operator="Syrian Telecom" + 50 bands="LTE 800 / LTE 2600" brand="Rcell" cc="sy" country="Syria" operator="Rcell" status="Operational" 00-99 418 00 bands="GSM 900 / UMTS 2100" brand="Asia Cell" cc="iq" country="Iraq" operator="Asia Cell Telecommunications Company" status="Operational" @@ -1971,138 +2321,163 @@ 40 bands="GSM 900 / UMTS 2100" brand="Korek" cc="iq" country="Iraq" operator="Telecom Ltd" status="Operational" 45 bands="UMTS" brand="Mobitel" cc="iq" country="Iraq" operator="Mobitel Co. Ltd." status="Operational" 62 bands="CDMA 800 / CDMA 1900" brand="Itisaluna" cc="iq" country="Iraq" operator="Itisaluna Wireless CO." status="Operational" + 66 bands="LTE 2600" brand="Fastlink" cc="iq" country="Iraq" operator="Regional Telecom Company" status="Operational" 92 bands="CDMA" brand="Omnnea" cc="iq" country="Iraq" operator="Omnnea Wireless" status="Operational" 00-99 419 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="zain KW" cc="kw" country="Kuwait" operator="Zain Kuwait" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="K.S.C Ooredoo" cc="kw" country="Kuwait" operator="National Mobile Telecommunications" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="STC" cc="kw" country="Kuwait" operator="Saudi Telecom Company" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="Ooredoo" cc="kw" country="Kuwait" operator="National Mobile Telecommunications" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 2100 / 5G 3500" brand="STC" cc="kw" country="Kuwait" operator="Saudi Telecom Company" status="Operational" 00-99 420 - 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 3500" brand="Al Jawal (STC )" cc="sa" country="Saudi Arabia" operator="Saudi Telecom Company" status="Operational" + 01 bands="GSM 900 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / 5G 3500" brand="Al Jawal (STC )" cc="sa" country="Saudi Arabia" operator="Saudi Telecom Company" status="Operational" 03 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / TD-LTE 2500" brand="Mobily" cc="sa" country="Saudi Arabia" operator="Etihad Etisalat Company" status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2500 / 5G 2500 / 5G 3500" brand="Zain SA" cc="sa" country="Saudi Arabia" operator="Zain Saudi Arabia" status="Operational" 05 bands="MVNO" brand="Virgin Mobile" cc="sa" country="Saudi Arabia" operator="Virgin Mobile Saudi Arabia" status="Operational" 06 bands="MVNO" brand="Lebara Mobile" cc="sa" country="Saudi Arabia" operator="Lebara Mobile" status="Operational" + 09 brand="Salam" cc="sa" country="Saudi Arabia" operator="Salam" + 10 bands="MVNO" brand="Future Networks Communications" cc="sa" country="Saudi Arabia" operator="Future Networks Communications" 21 bands="GSM-R 900" brand="RGSM" cc="sa" country="Saudi Arabia" operator="Saudi Railways GSM" status="Operational" 00-99 421 - 01 bands="GSM 900" brand="SabaFon" cc="ye" country="Yemen" status="Operational" - 02 bands="GSM 900" brand="MTN" cc="ye" country="Yemen" operator="Spacetel Yemen" status="Operational" - 03 bands="CDMA2000 800" brand="Yemen Mobile" cc="ye" country="Yemen" operator="Yemen Mobile" status="Operational" + 01 bands="GSM 900" brand="SabaFon" cc="ye" country="Yemen" operator="SabaFon" status="Operational" + 02 bands="GSM 900 / LTE" brand="YOU" cc="ye" country="Yemen" operator="Yemen Oman United Telecom" status="Operational" + 03 bands="CDMA 850" brand="Yemen Mobile" cc="ye" country="Yemen" operator="Yemen Mobile" status="Operational" 04 bands="GSM 900" brand="Y" cc="ye" country="Yemen" operator="HiTS-UNITEL" status="Operational" + 10 bands="700/1800/2600" brand="Yemen-4G" cc="ye" country="Yemen" operator="PTC/Yemen-Telecom" status="Operational" + 11 bands="LTE 3" brand="Yemen Mobile" cc="ye" country="Yemen" operator="Yemen Mobile" status="Operational" 00-99 422 02 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800 / TD-LTE 2300 / 5G 3500" brand="Omantel" cc="om" country="Oman" operator="Oman Telecommunications Company" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / TD-LTE 2300 / 5G 3500" brand="ooredoo" cc="om" country="Oman" operator="Omani Qatari Telecommunications Company SAOC" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 800 / LTE 1800 / TD-LTE 2300 / 5G 3500" brand="Ooredoo" cc="om" country="Oman" operator="Omani Qatari Telecommunications Company SAOC" status="Operational" 04 brand="Omantel" cc="om" country="Oman" operator="Oman Telecommunications Company" + 06 bands="5G 700 / 5G 1800 / 5G 2600" brand="Vodafone" cc="om" country="Oman" operator="Oman Future Telecommunications Company SAOC" status="Operational" 00-99 424 - 02 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Etisalat" cc="ae" country="United Arab Emirates" operator="Emirates Telecom Corp" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="du" cc="ae" country="United Arab Emirates" operator="Emirates Integrated Telecommunications Company" status="Operational" + 02 bands="LTE 800 / LTE 1800 / LTE 2600 / 5G 2500 / 5G 3500" brand="Etisalat" cc="ae" country="United Arab Emirates" operator="Emirates Telecom Corp" status="Operational" + 03 bands="UMTS 2100 / LTE 800 / LTE 1800 / 5G 2500 / 5G 3500 / 5G 26000" brand="du" cc="ae" country="United Arab Emirates" operator="Emirates Integrated Telecommunications Company" status="Operational" 00-99 425 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Partner" cc="il" country="Israel" operator="Partner Communications Company Ltd." status="Operational" - 02 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800" brand="Cellcom" cc="il" country="Israel" operator="Cellcom Israel Ltd." status="Operational" - 03 bands="UMTS 850 / UMTS 2100 / LTE 1800" brand="Pelephone" cc="il" country="Israel" operator="Pelephone Communications Ltd." status="Operational" - 04 cc="il" country="Israel" operator="Globalsim Ltd" - 05 bands="GSM 900" brand="Jawwal" cc="ps" country="Palestine" operator="Palestine Cellular Communications, Ltd." status="Operational" - 06 bands="GSM 900 / GSM 1800" brand="Wataniya" cc="ps" country="Palestine" operator="Wataniya Palestine Mobile Telecommunications Company" status="Operational" - 07 bands="iDEN 800 / UMTS 2100 / LTE 1800" brand="Hot Mobile" cc="il" country="Israel" operator="Hot Mobile Ltd." status="Operational" - 08 bands="UMTS 2100 / LTE 1800" brand="Golan Telecom" cc="il" country="Israel" operator="Golan Telecom Ltd." status="Operational" - 09 bands="LTE 1800" brand="We4G" cc="il" country="Israel" operator="Marathon 018 Xphone Ltd." status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Partner" cc="il" country="Israel" operator="Partner Communications Company Ltd." status="Operational" - 11 bands="MVNO" cc="il" country="Israel" operator="365 Telecom" status="Not operational" - 12 bands="MVNO" brand="x2one" cc="il" country="Israel" operator="Free Telecom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / 5G 2600 / 5G 3500" brand="Partner" cc="il" country="Israel" operator="Partner Communications Company Ltd." status="Operational" + 02 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800 / 5G 2600 / 5G 3500" brand="Cellcom" cc="il" country="Israel" operator="Cellcom Israel Ltd." status="Operational" + 03 bands="UMTS 850 / UMTS 2100 / LTE 1800 / 5G 2600 / 5G 3500" brand="Pelephone" cc="il" country="Israel" operator="Pelephone Communications Ltd." status="Operational" + 04 bands="MVNO" cc="il" country="Israel" operator="Voye Global Connectivity Ltd." status="Operational" + 05 bands="GSM 900 / UMTS 2100" brand="Jawwal" cc="ps" country="Palestine" operator="Palestine Cellular Communications, Ltd." status="Operational" + 06 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Ooredoo" cc="ps" country="Palestine" operator="Ooredoo Palestine" status="Operational" + 07 bands="UMTS 2100 / LTE 1800 / LTE 2100 / 5G 2600 / 5G 3500" brand="Hot Mobile" cc="il" country="Israel" operator="Hot Mobile Ltd." status="Operational" + 08 bands="UMTS 2100 / LTE 1800" brand="Cellcom" cc="il" country="Israel" operator="Cellcom Israel Ltd." status="Operational" + 09 bands="LTE 1800" brand="We4G" cc="il" country="Israel" operator="Wecom Mobile Ltd." status="Operational" + 10 cc="il" country="Israel" operator="Voicenter Ltd." + 11 cc="il" country="Israel" operator="Merkaziya Ltd" + 12 bands="MVNO" cc="il" country="Israel" operator="Free Telecom" status="Operational" 13 cc="il" country="Israel" operator="Ituran Cellular Communications" status="Not operational" - 14 bands="MVNO" brand="Youphone" cc="il" country="Israel" operator="Alon Cellular Ltd." status="Not operational" - 15 bands="MVNO" brand="Home Cellular" cc="il" country="Israel" operator="Home Cellular Ltd." status="Not operational" + 14 brand="Pelephone" cc="il" country="Israel" operator="Pelephone Communications Ltd" + 15 brand="Cellcom" cc="il" country="Israel" operator="Cellcom Israel Ltd" 16 bands="MVNO" brand="Rami Levy" cc="il" country="Israel" operator="Rami Levy Communications Ltd." status="Operational" 17 bands="MVNO" brand="Sipme" cc="il" country="Israel" operator="Gale Phone" status="Not operational" 18 bands="MVNO" brand="Cellact Communications" cc="il" country="Israel" operator="Cellact Communications Ltd." status="Operational" - 19 bands="MVNO" brand="019 Mobile" cc="il" country="Israel" operator="019 Communication Services Ltd. / TELZAR" status="Operational" + 19 bands="MVNO" brand="019 Mobile" cc="il" country="Israel" operator="Telzar 019 Ltd" status="Operational" 20 brand="Bezeq" cc="il" country="Israel" operator="Bezeq The Israeli Telecommunication Corp Ltd." - 21 brand="Bezeq International" cc="il" country="Israel" operator="B.I.P. Communications Ltd." + 21 cc="il" country="Israel" operator="Xphone 018 Ltd." + 22 cc="il" country="Israel" operator="Maskyoo Telephonia Ltd." 23 cc="il" country="Israel" operator="Beezz Communication Solutions Ltd." 24 bands="MVNO" brand="012 Mobile" cc="il" country="Israel" operator="Partner Communications Company Ltd." status="Operational" 25 bands="LTE" brand="IMOD" cc="il" country="Israel" operator="Israel Ministry of Defense" status="Operational" 26 bands="MVNO" brand="Annatel" cc="il" country="Israel" operator="LB Annatel Ltd." status="Operational" - 28 bands="LTE 1800" cc="il" country="Israel" operator="PHI Networks" - 29 cc="il" country="Israel" operator="CG Networks" + 27 cc="il" country="Israel" operator="Paycall Ltd" + 28 bands="LTE 1800 / 5G 2600 / 5G 3500" cc="il" country="Israel" operator="PHI Networks" + 29 cc="il" country="Israel" operator="C.M.G Networks" 00-99 426 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="Batelco" cc="bh" country="Bahrain" operator="Bahrain Telecommunications Company" status="Operational" + 01 bands="UMTS 2100 / LTE 1800 / 5G 3500" brand="Batelco" cc="bh" country="Bahrain" operator="Bahrain Telecommunications Company" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="zain BH" cc="bh" country="Bahrain" operator="Zain Bahrain" status="Operational" 03 cc="bh" country="Bahrain" operator="Civil Aviation Authority" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="STC" cc="bh" country="Bahrain" operator="STC Bahrain" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 3500" brand="stc" cc="bh" country="Bahrain" operator="Stc Bahrain" status="Operational" 05 bands="GSM 900 / GSM 1800" brand="Batelco" cc="bh" country="Bahrain" operator="Bahrain Telecommunications Company" status="Operational" + 06 brand="stc" cc="bh" country="Bahrain" operator="Stc Bahrain" + 07 cc="bh" country="Bahrain" operator="TAIF" 00-99 427 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="ooredoo" cc="qa" country="Qatar" operator="ooredoo" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Ooredoo" cc="qa" country="Qatar" operator="Ooredoo" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 3500" brand="Vodafone" cc="qa" country="Qatar" operator="Vodafone Qatar" status="Operational" 05 bands="TETRA 380" brand="Ministry of Interior" cc="qa" country="Qatar" operator="Ministry of Interior" status="Operational" 06 bands="LTE" brand="Ministry of Interior" cc="qa" country="Qatar" operator="Ministry of Interior" status="Operational" 00-99 428 + 33 bands="LTE" brand="ONDO" cc="mn" country="Mongolia" operator="IN Mobile Network LLC" status="Operational" 88 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2300" brand="Unitel" cc="mn" country="Mongolia" operator="Unitel LLC" status="Operational" - 91 bands="CDMA 850 / UMTS 2100 / LTE 1800" brand="Skytel" cc="mn" country="Mongolia" operator="Skytel LLC" status="Operational" + 91 bands="UMTS 2100 / LTE 1800" brand="Skytel" cc="mn" country="Mongolia" operator="Skytel LLC" status="Operational" 98 bands="CDMA 450 / UMTS 2100 / LTE 1800" brand="G-Mobile" cc="mn" country="Mongolia" operator="G-Mobile LLC" status="Operational" 99 bands="GSM 900 / UMTS 2100 / LTE 700 / LTE 1800" brand="Mobicom" cc="mn" country="Mongolia" operator="Mobicom Corporation" status="Operational" 00-99 429 - 01 bands="GSM 900 / UMTS 2100 / LTE 1800 / CDMA 850 / WiMAX" brand="Namaste / NT Mobile / Sky Phone" cc="np" country="Nepal" operator="Nepal Telecom (NDCL)" status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Ncell" cc="np" country="Nepal" operator="Ncell Pvt. Ltd." status="Operational" + 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Namaste / NT Mobile / Sky Phone" cc="np" country="Nepal" operator="Nepal Telecom (NDCL)" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 900 / LTE 1800" brand="Ncell" cc="np" country="Nepal" operator="Ncell Pvt. Ltd." status="Operational" 03 bands="CDMA2000 800" brand="UTL" cc="np" country="Nepal" operator="United Telecom Limited" status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="SmartCell" cc="np" country="Nepal" operator="Smart Telecom Pvt. Ltd. (STPL)" status="Operational" 00-99 432 - 01 bands="LTE" brand="Uname" cc="ir" country="Iran" operator="Ertebatat Iran" status="Operational" - 02 bands="MVNO" brand="ApTel, AzarTel" cc="ir" country="Iran" operator="NeginTel" status="Operational" - 08 bands="MVNO" brand="Shatel Mobile" cc="ir" country="Iran" operator="Shatel Mobile" status="Operational" + 01 bands="MVNO" cc="ir" country="Iran" operator="Kish Cell Pars" status="Operational" + 02 bands="MVNO" brand="ApTel, AzarTel" cc="ir" country="Iran" operator="Negin Ertebatat Ava" status="Operational" + 03 bands="MVNO" cc="ir" country="Iran" operator="Parsian Hamrah Lotus" status="Operational" + 04 cc="ir" country="Iran" operator="TOSE E FANAVARI ERTEBATAT NOVIN HAMRAH" + 05 bands="MVNO" brand="Smart Comm" cc="ir" country="Iran" operator="Hamrah Hooshmand Ayandeh" + 06 bands="MVNO" brand="Arian-Tel" cc="ir" country="Iran" operator="Ertebatat-e Arian Tel Co." status="Operational" + 07 bands="MVNO" cc="ir" country="Iran" operator="Hooshmand Amin Mobile" status="Operational" + 08 bands="MVNO" brand="Shatel Mobile" cc="ir" country="Iran" operator="Shatel Group" status="Operational" + 09 brand="HiWEB" cc="ir" country="Iran" operator="Dadeh Dostar asr Novin PJSC" 10 bands="MVNO" brand="Samantel" cc="ir" country="Iran" operator="Samantel Mobile" status="Operational" - 11 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="IR-TCI (Hamrah-e-Avval)" cc="ir" country="Iran" operator="Mobile Communications Company of Iran (MCI)" status="Operational" - 12 bands="LTE 800 / TD-LTE 1900" brand="Avacell(HiWEB)" cc="ir" country="Iran" operator="Dadeh Dostar asr Novin p.j.s. co & Information Technology Company of Iran" status="Operational" - 14 bands="GSM 900 / GSM 1800" brand="TKC/KFZO" cc="ir" country="Iran" operator="Telecommunication Kish Company" status="Operational" - 19 bands="GSM 900" brand="Espadan (JV-PJS)" cc="ir" country="Iran" operator="Mobile Telecommunications Company of Esfahan" status="Operational" - 20 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="RighTel" cc="ir" country="Iran" operator="Social Security Investment Co." status="Operational" - 21 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="RighTel" cc="ir" country="Iran" operator="Social Security Investment Co." status="Operational" - 32 bands="GSM 900 / GSM 1800" brand="Taliya" cc="ir" country="Iran" operator="TCI of Iran and Iran Mobin" status="Operational" - 35 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / TD-LTE 3500" brand="MTN Irancell" cc="ir" country="Iran" operator="MTN Irancell Telecommunications Services Company" status="Operational" - 40 bands="WiMAX / LTE 3500" brand="Mobinnet" cc="ir" country="Iran" operator="Ertebatat Mobinnet" status="Operational" - 50 bands="MVNO" brand="Shatel" cc="ir" country="Iran" operator="Arya Resaneh Tadbir" status="Operational" - 70 bands="GSM 900" brand="MTCE" cc="ir" country="Iran" operator="Telephone Communications Company of Iran" status="Operational" - 71 bands="GSM 900" brand="KOOHE NOOR" cc="ir" country="Iran" operator="Telephone Communications Company of Iran" status="Operational" + 11 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2300 / 5G 3500" brand="IR-TCI (Hamrah-e-Avval)" cc="ir" country="Iran" operator="Mobile Communications Company of Iran (MCI)" status="Operational" + 12 bands="LTE 800 / TD-LTE 2600" brand="Avacell (HiWEB)" cc="ir" country="Iran" operator="Dadeh Dostar asr Novin PJSC" status="Operational" + 13 brand="HiWEB" cc="ir" country="Iran" operator="Dadeh Dostar asr Novin PJSC" + 14 bands="GSM 900 / GSM 1800" brand="TKC/KFZO" cc="ir" country="Iran" operator="Kish Free Zone Organization" status="Operational" + 19 bands="GSM 900" brand="Espadan" cc="ir" country="Iran" operator="Mobile Telecommunications Company of Esfahan" status="Not operational" + 20 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="RighTel" cc="ir" country="Iran" operator="Social Security Investment Co." status="Operational" + 32 bands="GSM 900 / GSM 1800" brand="Taliya" cc="ir" country="Iran" operator="Telecommunication Company of Iran (TCI)" status="Operational" + 35 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 3500 / TD-LTE 2300 / 5G 3500" brand="MTN Irancell" cc="ir" country="Iran" operator="MTN Irancell Telecommunications Services Company" status="Operational" + 44 bands="TD-LTE 3500" brand="Mobinnet" cc="ir" country="Iran" operator="Ertebatat Mobinnet" status="Operational" + 45 bands="TD-LTE 3500" brand="Zi-Tel" cc="ir" country="Iran" operator="Farabord Dadeh Haye Iranian Co." status="Operational" + 46 bands="TD-LTE 2600" brand="HiWEB" cc="ir" country="Iran" operator="Dadeh Dostar asr Novin PJSC" status="Operational" + 49 bands="MVNO" cc="ir" country="Iran" operator="Gostaresh Ertebatat Mabna" + 50 bands="TD-LTE 2600 MHz" brand="Shatel Mobile" cc="ir" country="Iran" operator="Shatel Group" status="Operational" + 51 cc="ir" country="Iran" operator="Pishgaman Tose'e Ertebatat" + 52 cc="ir" country="Iran" operator="Asiatech" + 70 bands="GSM 900" brand="MTCE" cc="ir" country="Iran" operator="Telecommunication Company of Iran (TCI)" status="Not Operational" + 71 bands="GSM 900" brand="KOOHE NOOR" cc="ir" country="Iran" operator="ERTEBATAT KOOHE NOOR" status="Not Operational" 90 bands="GSM 900 / GSM 1800" brand="Iraphone" cc="ir" country="Iran" operator="IRAPHONE GHESHM of Iran" status="Operational" 93 bands="GSM 900 / GSM 1800" brand="Farzanegan Pars" cc="ir" country="Iran" operator="Farzanegan Pars" status="Operational" - 99 bands="GSM 850 / GSM 1900" brand="TCI (GSM WLL)" cc="ir" country="Iran" operator="TCI of Iran and Rightel" status="Operational" + 99 bands="GSM 850 / GSM 1900" brand="TCI" cc="ir" country="Iran" operator="TCI of Iran and Rightel" status="Operational" 00-99 434 01 bands="GSM 900 / GSM 1800" cc="uz" country="Uzbekistan" operator="Buztel" status="Not operational" 02 bands="GSM 900 / GSM 1800" cc="uz" country="Uzbekistan" operator="Uzmacom" status="Not operational" 03 bands="CDMA 450" brand="UzMobile" cc="uz" country="Uzbekistan" operator="Uzbektelekom" status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Beeline" cc="uz" country="Uzbekistan" operator="Unitel LLC" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Ucell" cc="uz" country="Uzbekistan" operator="Coscom" status="Operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 3500" brand="Ucell" cc="uz" country="Uzbekistan" operator="Coscom" status="Operational" 06 bands="CDMA 800" brand="Perfectum Mobile" cc="uz" country="Uzbekistan" operator="RUBICON WIRELESS COMMUNICATION" status="Operational" - 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Mobiuz" cc="uz" country="Uzbekistan" operator="Universal Mobile Systems (UMS)" status="Operational" - 08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="UzMobile" cc="uz" country="Uzbekistan" operator="Uzbektelekom" status="Operational" + 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G" brand="Mobiuz" cc="uz" country="Uzbekistan" operator="Universal Mobile Systems (UMS)" status="Operational" + 08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 700 / 5G 3500" brand="UzMobile" cc="uz" country="Uzbekistan" operator="Uzbektelekom" status="Operational" 09 bands="WiMAX / LTE 2300" brand="EVO" cc="uz" country="Uzbekistan" operator="OOO «Super iMAX»" status="Operational" + 10 bands="MVNO" brand="HUMANS" cc="uz" country="Uzbekistan" operator="OOO «HUMANS»" status="Operational" 00-99 436 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Tcell" cc="tj" country="Tajikistan" operator="JV Somoncom" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Tcell" cc="tj" country="Tajikistan" operator="Indigo Tajikistan" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="MegaFon" cc="tj" country="Tajikistan" operator="TT Mobile" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G 3500" brand="Tcell" cc="tj" country="Tajikistan" operator="JV Somoncom" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G 3500" brand="Tcell" cc="tj" country="Tajikistan" operator="Indigo Tajikistan" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2300 / LTE 2600" brand="MegaFon" cc="tj" country="Tajikistan" operator="TT Mobile" status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Babilon-M" cc="tj" country="Tajikistan" operator="Babilon-Mobile" status="Operational" 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2100" brand="ZET-Mobile" cc="tj" country="Tajikistan" operator="Tacom" status="Operational" 10 bands="TD-LTE 2300 / WiMAX" brand="Babilon-T" cc="tj" country="Tajikistan" operator="Babilon-T" status="Operational" 12 bands="UMTS 2100" brand="Tcell" cc="tj" country="Tajikistan" operator="Indigo" 00-99 437 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Beeline" cc="kg" country="Kyrgyzstan" operator="Sky Mobile LLC" status="Operational" - 03 cc="kg" country="Kyrgyzstan" operator="7 Mobile" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Beeline" cc="kg" country="Kyrgyzstan" operator="Sky Mobile Ltd" status="Operational" + 03 cc="kg" country="Kyrgyzstan" operator="NurTelecom LLC" + 04 cc="kg" country="Kyrgyzstan" operator="Alfa Telecom CJSC" 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100" brand="MegaCom" cc="kg" country="Kyrgyzstan" operator="Alfa Telecom CJSC" status="Operational" + 06 cc="kg" country="Kyrgyzstan" operator="Kyrgyztelecom OJSC" 09 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="O!" cc="kg" country="Kyrgyzstan" operator="NurTelecom LLC" status="Operational" 10 bands="LTE 2600" cc="kg" country="Kyrgyzstan" operator="Saima Telecom" status="Operational" - 11 cc="kg" country="Kyrgyzstan" operator="iTel" + 11 cc="kg" country="Kyrgyzstan" operator="iTel" status="Not operational" 00-99 438 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MTS" cc="tm" country="Turkmenistan" operator="MTS Turkmenistan" status="Not operational" @@ -2110,112 +2485,150 @@ 03 bands="CDMA 450" brand="AGTS CDMA" cc="tm" country="Turkmenistan" operator="AŞTU" status="Operational" 00-99 440 - 00 bands="UMTS 1800" brand="Y!Mobile" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational" - 01 bands="WiMAX 2500 / TD-LTE 2500" brand="UQ WiMAX" cc="jp" country="Japan" operator="UQ Communications Inc." status="Operational" + 00 bands="UMTS 1800" brand="Y!Mobile" cc="jp" country="Japan" operator="SoftBank Corp." status="Not operational" + 01 bands="TD-LTE 2500" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" 02 bands="WiMAX 2500" cc="jp" country="Japan" operator="Hanshin Cable Engineering Co., Ltd." 03 bands="MVNO" brand="IIJmio" cc="jp" country="Japan" operator="Internet Initiative Japan Inc." status="Operational" 04 cc="jp" country="Japan" operator="Japan Radio Company, Ltd." 05 bands="TD-LTE 2500" cc="jp" country="Japan" operator="Wireless City Planning Inc." status="Operational" 06 cc="jp" country="Japan" operator="SAKURA Internet Inc." - 07 bands="MVNO" cc="jp" country="Japan" operator="LTE-X, Inc." - 08 cc="jp" country="Japan" operator="Panasonic Systems Solutions Japan Co., Ltd." - 09 bands="MVNO" cc="jp" country="Japan" operator="Marubeni Wireless Communications Inc." status="Operational" - 10 bands="UMTS 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500 / 5G 3500" brand="NTT docomo" cc="jp" country="Japan" operator="NTT DoCoMo, Inc." status="Operational" - 11 bands="LTE 1800" brand="Rakuten Mobile" cc="jp" country="Japan" operator="Rakuten Mobile Network, Inc." status="Operational" + 07 bands="MVNO" cc="jp" country="Japan" operator="closip, Inc." + 08 cc="jp" country="Japan" operator="Panasonic Connect Co., Ltd." + 09 bands="MVNO" cc="jp" country="Japan" operator="Misora Connect Inc." status="Operational" + 10 bands="UMTS 850 / UMTS 2100 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 3500 / 5G 3500 / 5G 4700 / 5G 28000" brand="NTT docomo" cc="jp" country="Japan" operator="NTT DoCoMo, Inc." status="Operational" + 11 bands="LTE 700 / LTE 1800 / 5G 3700" brand="Rakuten Mobile" cc="jp" country="Japan" operator="Rakuten Mobile Network, Inc." status="Operational" 12 cc="jp" country="Japan" operator="Cable media waiwai Co., Ltd." - 20 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational" - 21 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational" - 50 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 51 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 52 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 53 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 54 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 70 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 71 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 72 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 73 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 74 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 75 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 76 bands="CDMA 850 / LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" - 78 bands="CDMA2000 850 / CDMA2000 2100" brand="au" cc="jp" country="Japan" operator="Okinawa Cellular Telephone" status="Operational" - 91 cc="jp" country="Japan" operator="Tokyo Organising Committee of the Olympic and Paralympic Games" + 13 cc="jp" country="Japan" operator="NTT Communications Corporation" + 14 bands="5G" cc="jp" country="Japan" operator="Grape One Co., Ltd." + 15 bands="LTE" cc="jp" country="Japan" operator="BB Backbone Corp." + 16 cc="jp" country="Japan" operator="Nokia Innovations Japan G.K." + 17 cc="jp" country="Japan" operator="Osaka Gas Business Create Co., Ltd." + 18 cc="jp" country="Japan" operator="Kintetsu Cable Network Co., Ltd." + 19 cc="jp" country="Japan" operator="NEC Networks & System Integration Corporation" + 20 bands="LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700 / 5G 28000" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational" + 21 bands="LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700 / 5G 28000" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational" + 22 cc="jp" country="Japan" operator="JTOWER Inc." + 23 cc="jp" country="Japan" operator="Fujitsu Ltd." + 24 bands="MVNO" cc="jp" country="Japan" operator="Japan Communications Inc." status="Operational" + 25 brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." + 26 brand="NTT docomo" cc="jp" country="Japan" operator="NTT DoCoMo, Inc." + 50 bands="LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" + 51 bands="LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" + 52 bands="LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" + 53 bands="LTE 700 / LTE 850 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 800 / 5G 3500 / 5G 3700 / 5G 28000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" + 54 bands="5G NR 3500" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" + 55 bands="LTE 2100" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Operational" + 70 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Not operational" + 71 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Not operational" + 72 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Not operational" + 73 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Not operational" + 74 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Not operational" + 75 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Not operational" + 76 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="KDDI Corporation" status="Not operational" + 78 bands="CDMA 850 / CDMA 2000" brand="au" cc="jp" country="Japan" operator="Okinawa Cellular Telephone" status="Not operational" + 91 brand="NTT docomo" cc="jp" country="Japan" operator="NTT DoCoMo, Inc." + 92 cc="jp" country="Japan" operator="KDDI Corporation" + 93 brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." + 94 brand="Rakuten Mobile" cc="jp" country="Japan" operator="Rakuten Mobile Network, Inc." 00-99 441 - 01 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Operational" - 10 bands="WiMAX 2500 / TD-LTE 2500" brand="UQ WiMAX" cc="jp" country="Japan" operator="UQ Communications Inc." status="Operational" - 00-99 + 01 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1500 / LTE 1800 / LTE 2100 / TD-LTE 2500 / TD-LTE 3500 / 5G 3700" brand="SoftBank" cc="jp" country="Japan" operator="SoftBank Corp." status="Not operational" + 10 bands="TD-LTE 2500" brand="UQ WiMAX" cc="jp" country="Japan" operator="UQ Communications Inc." status="Not operational" + 200 bands="MVNO" cc="jp" country="Japan" operator="Soracom Inc." status="Operational" + 201 cc="jp" country="Japan" operator="Aurens Co., Ltd." + 202 cc="jp" country="Japan" operator="Sony Wireless Communications Inc." + 203 cc="jp" country="Japan" operator="Gujo City" + 204 cc="jp" country="Japan" operator="Wicom Inc." + 205 bands="5G 4700" cc="jp" country="Japan" operator="Katch Network Inc." status="Operational" + 206 cc="jp" country="Japan" operator="Mitsubishi Electric Corp." + 207 cc="jp" country="Japan" operator="Mitsui Knowledge Industry Co., Ltd." + 208 cc="jp" country="Japan" operator="Chudenko Corp." + 209 cc="jp" country="Japan" operator="Cable Television Toyama Inc." + 210 cc="jp" country="Japan" operator="NTT East Corp." + 211 cc="jp" country="Japan" operator="Starcat Cable Network Co., Ltd." + 212 cc="jp" country="Japan" operator="I-TEC Solutions Co., Ltd." + 213 cc="jp" country="Japan" operator="Hokkaido Telecommunication Network Co., Inc." + 214 cc="jp" country="Japan" operator="Vroove Inc." + 215 cc="jp" country="Japan" operator="KYOCERA Mirai Envision Co., Ltd." + 216 cc="jp" country="Japan" operator="Eureka Wireless K.K." + 91 cc="jp" country="Japan" operator="Tokyo Organising Committee of the Olympic and Paralympic Games" status="Not operational" 450 01 bands="Satellite" cc="kr" country="South Korea" operator="Globalstar Asia Pacific" status="Operational" - 02 bands="5G 3500 / 5G 28000" brand="KT" cc="kr" country="South Korea" operator="KT" status="Operational" + 02 bands="5G 3500" brand="KT" cc="kr" country="South Korea" operator="KT" status="Operational" 03 bands="CDMA 850" brand="Power 017" cc="kr" country="South Korea" operator="Shinsegi Telecom, Inc." status="Not operational" 04 bands="LTE 1800" brand="KT" cc="kr" country="South Korea" operator="KT" status="Operational" - 05 bands="CDMA 850 / UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500 / 5G 28000" brand="SKTelecom" cc="kr" country="South Korea" operator="SK Telecom" status="Operational" - 06 bands="CDMA 1800 / LTE 850 / LTE 2100 / LTE 2600 / 5G 3500 / 5G 28000" brand="LG U+" cc="kr" country="South Korea" operator="LG Telecom" status="Operational" + 05 bands="UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="SKTelecom" cc="kr" country="South Korea" operator="SK Telecom" status="Operational" + 06 bands="LTE 850 / LTE 2100 / LTE 2600 / 5G 3500" brand="LG U+" cc="kr" country="South Korea" operator="LG Uplus" status="Operational" 07 brand="KT" cc="kr" country="South Korea" operator="KT" 08 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="olleh" cc="kr" country="South Korea" operator="KT" status="Operational" 11 bands="MVNO" brand="Tplus" cc="kr" country="South Korea" operator="Korea Cable Telecom" status="Operational" 12 bands="LTE 850 / LTE 1800" brand="SKTelecom" cc="kr" country="South Korea" operator="SK Telecom" status="Operational" 00-99 452 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MobiFone" cc="vn" country="Vietnam" operator="Vietnam Mobile Telecom Services Company" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Vinaphone" cc="vn" country="Vietnam" operator="Vietnam Telecom Services Company" status="Operational" + 01 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / 5G 3800" brand="MobiFone" cc="vn" country="Vietnam" operator="Vietnam Mobile Telecom Services Company" status="Operational" + 02 bands="UMTS 900 / UMTS 2100 / LTE 900 / 5G 3700" brand="Vinaphone" cc="vn" country="Vietnam" operator="Vietnam Telecom Services Company" status="Operational" 03 bands="CDMA2000 800" brand="S-Fone" cc="vn" country="Vietnam" operator="S-Telecom" status="Not operational" - 04 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Viettel Mobile" cc="vn" country="Vietnam" operator="Viettel Telecom" status="Operational" - 05 bands="GSM 900 / UMTS 2100" brand="Vietnamobile" cc="vn" country="Vietnam" operator="Hanoi Telecom" status="Operational" + 04 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / 5G 2500" brand="Viettel Mobile" cc="vn" country="Vietnam" operator="Viettel Telecom" status="Operational" + 05 bands="UMTS 2100" brand="Vietnamobile" cc="vn" country="Vietnam" operator="Hanoi Telecom" status="Operational" 06 bands="CDMA2000 450" brand="EVNTelecom" cc="vn" country="Vietnam" operator="EVN Telecom" status="Not operational" - 07 bands="GSM 1800" brand="Gmobile" cc="vn" country="Vietnam" operator="GTEL Mobile JSC" status="Operational" - 08 bands="WiMAX" brand="I-Telecom" cc="vn" country="Vietnam" operator="Indochina Telecom" status="Operational" - 09 cc="vn" country="Vietnam" operator="REDDI" + 07 bands="MVNO" brand="Gmobile" cc="vn" country="Vietnam" operator="GTEL Mobile JSC" status="Operational" + 08 bands="MVNO" brand="I-Telecom" cc="vn" country="Vietnam" operator="Indochina Telecom" status="Operational" + 09 bands="MVNO" brand="Wintel" cc="vn" country="Vietnam" operator="Mobicast JSC" status="Operational" 00-99 454 - 00 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="1O1O / One2Free / New World Mobility / SUNMobile" cc="hk" country="Hong Kong" operator="CSL Limited" status="Operational" + 00 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="1O1O / One2Free / New World Mobility / SUNMobile" cc="hk" country="Hong Kong" operator="CSL Limited" status="Operational" 01 bands="MVNO" cc="hk" country="Hong Kong" operator="CITIC Telecom 1616" status="Operational" - 02 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="CSL Limited" status="Operational" - 03 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 3500" brand="3" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational" - 04 bands="GSM 900 / GSM 1800" brand="3 (2G)" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational" + 02 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="CSL Limited" status="Not operational" + 03 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500" brand="3" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational" + 04 bands="GSM 900 / GSM 1800" brand="3 (2G)" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Not operational" 05 bands="CDMA 800" brand="3 (CDMA)" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Not operational" - 06 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="SmarTone" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational" + 06 bands="UMTS 850 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 850 / 5G 3500 / 5G 4700 / 5G 28000" brand="SmarTone" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational" 07 bands="MVNO" brand="China Unicom" cc="hk" country="Hong Kong" operator="China Unicom (Hong Kong) Limited" status="Operational" - 08 bands="MVNO" brand="Truphone" cc="hk" country="Hong Kong" operator="Truphone Limited" status="Operational" - 09 bands="MVNO" cc="hk" country="Hong Kong" operator="China Motion Telecom" status="Operational" + 08 bands="MVNO" brand="Truphone" cc="hk" country="Hong Kong" operator="TP Hong Kong Operations Limited" status="Operational" + 09 bands="MVNO" cc="hk" country="Hong Kong" operator="China Motion Telecom" status="Not operational" 10 bands="GSM 1800" brand="New World Mobility" cc="hk" country="Hong Kong" operator="CSL Limited" status="Not operational" 11 bands="MVNO" cc="hk" country="Hong Kong" operator="China-Hong Kong Telecom" status="Operational" - 12 bands="GSM 1800 / TD-SCDMA 2000 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 3500" brand="CMCC HK" cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" status="Operational" + 12 bands="GSM 1800 / TD-SCDMA 2000 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 700 / 5G 3500 / 5G 4700" brand="CMCC HK" cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" status="Operational" 13 bands="MVNO" brand="CMCC HK" cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" status="Operational" - 14 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Operational" - 15 bands="GSM 1800" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational" + 14 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="Hutchison Telecom" status="Not operational" + 15 bands="GSM 1800" brand="SmarTone" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Not operational" 16 bands="GSM 1800" brand="PCCW Mobile (2G)" cc="hk" country="Hong Kong" operator="PCCW" status="Operational" - 17 bands="GSM 1800" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Operational" + 17 bands="GSM 1800" brand="SmarTone" cc="hk" country="Hong Kong" operator="SmarTone Mobile Communications Limited" status="Not operational" 18 bands="GSM 900 / GSM 1800" cc="hk" country="Hong Kong" operator="CSL Limited" status="Not operational" 19 bands="UMTS 2100" brand="PCCW Mobile (3G)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Operational" - 20 bands="LTE 1800 / LTE 2600 / 5G 3500" brand="PCCW Mobile (4G)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Operational" - 21 bands="MVNO" cc="hk" country="Hong Kong" operator="21Vianet Mobile Ltd." status="Not operational" - 22 bands="MVNO" cc="hk" country="Hong Kong" operator="263 Mobile Communications (HongKong) Limited" status="Operational" + 20 bands="LTE 1800 / LTE 2600 / 5G 700 / 5G 3500 / 5G 4700" brand="PCCW Mobile (4G)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Operational" + 21 bands="MVNO" cc="hk" country="Hong Kong" operator="VNET Group Limited" status="Not operational" + 22 bands="MVNO" cc="hk" country="Hong Kong" operator="HuiYinBi Telecom (Hong Kong) Limited" status="Operational" 23 bands="MVNO" brand="Lycamobile" cc="hk" country="Hong Kong" operator="Lycamobile Hong Kong Ltd" status="Not operational" 24 bands="MVNO" cc="hk" country="Hong Kong" operator="Multibyte Info Technology Ltd" status="Operational" 25 cc="hk" country="Hong Kong" operator="Hong Kong Government" 26 cc="hk" country="Hong Kong" operator="Hong Kong Government" - 29 bands="CDMA 800" brand="PCCW Mobile (CDMA)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Operational" - 30 cc="hk" country="Hong Kong" operator="China Data Enterprises Ltd" + 29 bands="CDMA 800" brand="PCCW Mobile (CDMA)" cc="hk" country="Hong Kong" operator="PCCW-HKT" status="Not operational" + 290 cc="hk" country="Hong Kong" operator="Hong Kong Government" + 30 brand="CMCC HK" cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" 31 bands="MVNO" brand="CTExcel" cc="hk" country="Hong Kong" operator="China Telecom Global Limited" status="Operational" - 32 bands="MVNO" cc="hk" country="Hong Kong" operator="Hong Kong Broadband Network Ltd" status="Operational" + 32 bands="MVNO" cc="hk" country="Hong Kong" operator="Hong Kong Broadband Network Ltd" status="Not operational" 35 bands="MVNO" cc="hk" country="Hong Kong" operator="Webbing Hong Kong Ltd" status="Operational" - 00-99 + 36 cc="hk" country="Hong Kong" operator="Easco Telecommunications Limited" status="Not operational" + 380 cc="hk" country="Hong Kong" operator="Hong Kong Government" + 382 bands="MVNO" cc="hk" country="Hong Kong" operator="South China Telecommunications (H.K.) Limited" status="Operational" + 383 cc="hk" country="Hong Kong" operator="China Mobile Hong Kong Company Limited" + 390 cc="hk" country="Hong Kong" operator="Hong Kong Government" 455 - 00 bands="UMTS 2100 / LTE 1800" brand="SmarTone" cc="mo" country="Macau (China)" operator="Smartone - Comunicações Móveis, S.A." status="Operational" - 01 bands="LTE 1800" brand="CTM" cc="mo" country="Macau (China)" operator="Companhia de Telecomunicações de Macau, S.A.R.L." status="Operational" - 02 bands="CDMA 800" brand="China Telecom" cc="mo" country="Macau (China)" operator="China Telecom (Macau) Company Limited" status="Not operational" - 03 bands="GSM 900 / GSM 1800" brand="3" cc="mo" country="Macau (China)" operator="Hutchison Telephone (Macau), Limitada" status="Not operational" - 04 bands="UMTS 2100" brand="CTM" cc="mo" country="Macau (China)" operator="Companhia de Telecomunicações de Macau, S.A.R.L." status="Operational" - 05 bands="UMTS 900 / UMTS 2100 / LTE 1800" brand="3" cc="mo" country="Macau (China)" operator="Hutchison Telephone (Macau), Limitada" status="Operational" - 06 bands="UMTS 2100" brand="SmarTone" cc="mo" country="Macau (China)" operator="Smartone - Comunicações Móveis, S.A." status="Operational" - 07 bands="LTE 1800" brand="China Telecom" cc="mo" country="Macau (China)" operator="China Telecom (Macau) Limitada" status="Operational" + 00 bands="UMTS 2100 / LTE 1800" brand="SmarTone" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="Smartone - Comunicações Móveis, S.A." status="Not operational" + 01 bands="LTE 900 / LTE 1800 / LTE 2100 / 5G 2100 / 5G 3500 / 5G 4900" brand="CTM" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="Companhia de Telecomunicações de Macau, S.A.R.L." status="Operational" + 02 bands="CDMA 800" brand="China Telecom" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="China Telecom (Macau) Company Limited" status="Not operational" + 03 bands="UMTS 2100" brand="3 Macau" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="Hutchison Telephone (Macau), Limitada" + 04 bands="UMTS 2100" brand="CTM" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="Companhia de Telecomunicações de Macau, S.A.R.L." + 05 bands="LTE 900 / LTE 1800" brand="3 Macau" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="Hutchison Telephone (Macau), Limitada" status="Operational" + 06 bands="UMTS 2100" brand="SmarTone" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="Smartone - Comunicações Móveis, S.A." status="Not operational" + 07 bands="LTE 850 / LTE 1800 / LTE 2100 / 5G 3500" brand="China Telecom" cc="mo" country="Macau (Special administrative region of the People's Republic of China)" operator="China Telecom (Macau) Limitada" status="Operational" 00-99 456 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Cellcard" cc="kh" country="Cambodia" operator="CamGSM / The Royal Group" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Smart" cc="kh" country="Cambodia" operator="Smart Axiata Co. Ltd" status="Operational" - 03 bands="GSM 1800 / UMTS 2100" brand="qb" cc="kh" country="Cambodia" operator="Cambodia Advance Communications Co. Ltd" status="Operational" - 04 bands="GSM 1800 / UMTS 2100" brand="qb" cc="kh" country="Cambodia" operator="Cambodia Advance Communications Co. Ltd" status="Operational" + 03 bands="GSM 1800 / UMTS 2100" brand="qb" cc="kh" country="Cambodia" operator="Cambodia Advance Communications Co. Ltd" status="Not Operational" + 04 bands="GSM 1800 / UMTS 2100" brand="qb" cc="kh" country="Cambodia" operator="Cambodia Advance Communications Co. Ltd" status="Not Operational" 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Smart" cc="kh" country="Cambodia" operator="Smart Axiata Co. Ltd" status="Operational" 06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Smart" cc="kh" country="Cambodia" operator="Smart Axiata Co. Ltd" status="Operational" 08 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Metfone" cc="kh" country="Cambodia" operator="Viettel" status="Operational" @@ -2224,159 +2637,173 @@ 18 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Cellcard" cc="kh" country="Cambodia" operator="The Royal Group" status="Operational" 00-99 457 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="LaoTel" cc="la" country="Laos" operator="Lao Telecom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G" brand="LaoTel" cc="la" country="Laos" operator="Lao Telecom" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="ETL" cc="la" country="Laos" operator="Enterprise of Telecommunications Lao" status="Operational" 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Unitel" cc="la" country="Laos" operator="Star Telecom Co., Ltd" status="Operational" - 08 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Beeline" cc="la" country="Laos" operator="VimpelCom Lao Ltd" status="Operational" + 07 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Best" cc="la" country="Laos" operator="Best Telecom Co., Ltd" status="Operational" + 08 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="TPLUS" cc="la" country="Laos" operator="TPLUS Digital Sole Co., Ltd" status="Operational" 00-99 460 - 00 bands="GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2500 / 5G 2500" brand="China Mobile" cc="cn" country="China" operator="China Mobile" status="Operational" - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500" brand="China Unicom" cc="cn" country="China" operator="China Unicom" status="Operational" + 00 bands="GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2500 / 5G 700 / 5G 2500" brand="China Mobile" cc="cn" country="China" operator="China Mobile" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500 / 5G 2100 / 5G 3500" brand="China Unicom" cc="cn" country="China" operator="China Unicom" status="Operational" 02 bands="GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2500" brand="China Mobile" cc="cn" country="China" operator="China Mobile" status="Not operational" - 03 bands="CDMA2000 800 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500" brand="China Telecom" cc="cn" country="China" operator="China Telecom" status="Operational" + 03 bands="CDMA2000 800" brand="China Telecom" cc="cn" country="China" operator="China Telecom" status="Operational" 04 brand="China Mobile" cc="cn" country="China" operator="Global Star Satellite" 05 bands="CDMA2000 800 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="China Telecom" cc="cn" country="China" operator="China Telecom" status="Not operational" 06 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="China Unicom" cc="cn" country="China" operator="China Unicom" status="Not operational" 07 bands="GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2500" brand="China Mobile" cc="cn" country="China" operator="China Mobile" status="Not operational" 08 brand="China Mobile" cc="cn" country="China" operator="China Mobile" 09 brand="China Unicom" cc="cn" country="China" operator="China Unicom" status="Operational" - 11 brand="China Telecom" cc="cn" country="China" operator="China Telecom" + 11 bands="LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500 / 5G 2100 / 5G 3500" brand="China Telecom" cc="cn" country="China" operator="China Telecom" status="Operational" + 15 bands="LTE 1800 / LTE 900 / TD-LTE 1900 / TD-LTE 2300 / 5G 700 / 5G 2500" brand="China Broadnet" cc="cn" country="China" operator="China Broadnet" status="Operational" 20 bands="GSM-R" brand="China Tietong" cc="cn" country="China" operator="China Tietong" status="Operational" 00-99 466 - 01 bands="LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500 / 5G 28000" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Operational" + 01 bands="LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Operational" 02 bands="GSM 900" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational" 03 bands="UMTS 2100" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational" - 05 bands="LTE 700 / LTE 900 / TD-LTE 2600" brand="APTG" cc="tw" country="Taiwan" operator="Asia Pacific Telecom" status="Operational" + 05 bands="LTE 700 / LTE 900 / TD-LTE 2600 / 5G 3500 / 5G 28000" brand="Gt" cc="tw" country="Taiwan" operator="Asia Pacific Telecom" status="Operational" 06 bands="GSM 1800" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational" 07 bands="WiMAX 2600" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational" - 09 bands="WiMAX 2600" brand="VMAX" cc="tw" country="Taiwan" operator="Vmax Telecom" status="Operational" - 10 bands="WiMAX 2600" brand="G1" cc="tw" country="Taiwan" operator="Global Mobile Corp." status="Operational" + 09 bands="WiMAX 2600" brand="VMAX" cc="tw" country="Taiwan" operator="Vmax Telecom" status="Not operational" + 10 bands="WiMAX 2600" brand="G1" cc="tw" country="Taiwan" operator="Global Mobile Corp." status="Not operational" 11 bands="GSM 1800" brand="Chunghwa LDM" cc="tw" country="Taiwan" operator="LDTA/Chunghwa Telecom" status="Not operational" - 12 bands="LTE 700 / LTE 900" cc="tw" country="Taiwan" operator="Ambit Microsystems" status="Operational" + 12 bands="LTE 700 / LTE 900" cc="tw" country="Taiwan" operator="Asia Pacific Telecom" status="Operational" 56 bands="WiMAX 2600 / PHS" brand="FITEL" cc="tw" country="Taiwan" operator="First International Telecom" status="Not operational" 68 bands="WiMAX 2600" cc="tw" country="Taiwan" operator="Tatung InfoComm" status="Not operational" 88 bands="GSM 1800" brand="FarEasTone" cc="tw" country="Taiwan" operator="Far EasTone Telecommunications Co Ltd" status="Not operational" - 89 bands="LTE 900 / LTE 2600" brand="T Star" cc="tw" country="Taiwan" operator="Taiwan Star Telecom" status="Operational" - 90 bands="LTE 900" brand="T Star" cc="tw" country="Taiwan" operator="Taiwan Star Telecom" - 92 bands="LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500 / 5G 28000" brand="Chunghwa" cc="tw" country="Taiwan" operator="Chunghwa Telecom" status="Operational" - 93 bands="GSM 900" brand="MobiTai" cc="tw" country="Taiwan" operator="Mobitai Communications" status="Not operational" - 97 bands="LTE 700 / LTE 1800 / LTE 2100 / 5G 3500 / 5G 28000" brand="Taiwan Mobile" cc="tw" country="Taiwan" operator="Taiwan Mobile Co. Ltd" status="Operational" - 99 bands="GSM 900" brand="TransAsia" cc="tw" country="Taiwan" operator="TransAsia Telecoms" status="Not operational" + 89 bands="LTE 900 / LTE 2600 / 5G 3500" brand="T Star" cc="tw" country="Taiwan" operator="Taiwan Star Telecom" status="Operational" + 90 bands="LTE 900" brand="T Star" cc="tw" country="Taiwan" operator="Taiwan Star Telecom" status="Not operational" + 92 bands="LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100 / 5G 3500" brand="Chunghwa" cc="tw" country="Taiwan" operator="Chunghwa Telecom" status="Operational" + 93 bands="GSM 900" brand="Taiwan Mobile" cc="tw" country="Taiwan" operator="Taiwan Mobile Co. Ltd" status="Not operational" + 97 bands="LTE 700 / LTE 1800 / LTE 2100 / 5G 3500" brand="Taiwan Mobile" cc="tw" country="Taiwan" operator="Taiwan Mobile Co. Ltd" status="Operational" + 99 bands="GSM 900" brand="Taiwan Mobile" cc="tw" country="Taiwan" operator="Taiwan Mobile Co. Ltd" status="Not operational" 00-99 467 05 bands="UMTS 2100" brand="Koryolink" cc="kp" country="North Korea" operator="Cheo Technology Jv Company" status="Operational" - 06 bands="UMTS 2100" brand="Koryolink" cc="kp" country="North Korea" operator="Cheo Technology Jv Company" status="Operational" + 06 bands="UMTS 2100 / LTE" brand="Kangsong NET" cc="kp" country="North Korea" operator="Korea Posts and Telecommunications Corporation" status="Operational" 193 bands="GSM 900" brand="SunNet" cc="kp" country="North Korea" operator="Korea Posts and Telecommunications Corporation" status="Not operational" 470 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Grameenphone" cc="bd" country="Bangladesh" operator="Grameenphone Ltd." status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800" brand="Robi" cc="bd" country="Bangladesh" operator="Axiata Bangladesh Ltd." status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Banglalink" cc="bd" country="Bangladesh" operator="Banglalink Digital Communications Ltd." status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Robi" cc="bd" country="Bangladesh" operator="Axiata Bangladesh Ltd." status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE 2300" brand="Banglalink" cc="bd" country="Bangladesh" operator="Banglalink Digital Communications Ltd." status="Operational" 04 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="TeleTalk" cc="bd" country="Bangladesh" operator="Teletalk Bangladesh Limited" status="Operational" 05 bands="CDMA 800" brand="Citycell" cc="bd" country="Bangladesh" operator="Pacific Bangladesh Telecom Limited" status="Not Operational" 07 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Airtel" cc="bd" country="Bangladesh" operator="Bharti Airtel Bangladesh Ltd." status="Operational" - 09 bands="LTE 800 / LTE 2600 / WiMAX 3500" brand="ollo" cc="bd" country="Bangladesh" operator="Bangladesh Internet Exchange Limited (BIEL)" status="Operational" + 09 bands="LTE 800 / LTE 2600 / WiMAX 3500" brand="ollo" cc="bd" country="Bangladesh" operator="Bangladesh Internet Exchange Limited (BIEL)" status="Not operational" 10 bands="TD-LTE 2600 / WiMAX 3500" brand="Banglalion" cc="bd" country="Bangladesh" operator="Banglalion Communications Ltd." status="Operational" 00-99 472 01 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 3500" brand="Dhiraagu" cc="mv" country="Maldives" operator="Dhivehi Raajjeyge Gulhun" status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Ooredoo" cc="mv" country="Maldives" operator="Ooredoo Maldives" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G" brand="Ooredoo" cc="mv" country="Maldives" operator="Ooredoo Maldives" status="Operational" 00-99 502 01 bands="CDMA2000 450" brand="ATUR 450" cc="my" country="Malaysia" operator="Telekom Malaysia Bhd" status="Not operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" cc="my" country="Malaysia" operator="Maxis, DiGi, Celcom, XOX" status="Operational" + 10 bands="GSM 900 / GSM 1800 / LTE 1800 / LTE 2600" cc="my" country="Malaysia" operator="Celcom, DiGi, Maxis, Tune Talk, U Mobile, Unifi, XOX, Yes" status="Operational" 11 bands="CDMA2000 850 / LTE 850" brand="TM Homeline" cc="my" country="Malaysia" operator="Telekom Malaysia Bhd" status="Operational" - 12 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Maxis" cc="my" country="Malaysia" operator="Maxis Communications Berhad" status="Operational" - 13 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Celcom" cc="my" country="Malaysia" operator="Celcom Axiata Berhad" status="Operational" + 12 bands="GSM 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500 / 5G 28000" brand="Maxis" cc="my" country="Malaysia" operator="Maxis Communications Berhad" status="Operational" + 13 bands="GSM 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500 / 5G 28000" brand="CelcomDigi" cc="my" country="Malaysia" operator="Celcom Axiata Berhad" status="Operational" 14 cc="my" country="Malaysia" operator="Telekom Malaysia Berhad for PSTN SMS" 150 bands="MVNO" brand="Tune Talk" cc="my" country="Malaysia" operator="Tune Talk Sdn Bhd" status="Operational" 151 bands="MVNO" brand="SalamFone" cc="my" country="Malaysia" operator="Baraka Telecom Sdn Bhd" status="Not operational" - 152 bands="WiMAX 2300 / TD-LTE 2300 / TD-LTE 2600" brand="Yes" cc="my" country="Malaysia" operator="YTL Communications Sdn Bhd" status="Operational" - 153 bands="WiMAX 2300 / LTE 850 / TD-LTE 2300" brand="unifi" cc="my" country="Malaysia" operator="Webe Digital Sdn Bhd" status="Operational" - 154 bands="MVNO" brand="Tron" cc="my" country="Malaysia" operator="Talk Focus Sdn Bhd" status="Operational" + 152 bands="TD-LTE 2300 / TD-LTE 2600 / 5G 700 / 5G 3500 / 5G 28000" brand="Yes" cc="my" country="Malaysia" operator="YTL Communications Sdn Bhd" status="Operational" + 153 bands="WiMAX 2300 / LTE 850 / TD-LTE 2300 / 5G 700 / 5G 3500 / 5G 28000" brand="unifi" cc="my" country="Malaysia" operator="TM Technology Services Sdn Bhd" status="Operational" + 154 bands="MVNO" brand="Tron" cc="my" country="Malaysia" operator="Talk Focus Sdn Bhd" status="Not operational" 155 bands="MVNO" brand="Clixster" cc="my" country="Malaysia" operator="Clixster Mobile Sdn Bhd" status="Not operational" 156 bands="MVNO" brand="Altel" cc="my" country="Malaysia" operator="Altel Communications Sdn Bhd" status="Operational" 157 bands="MVNO" brand="Telin" cc="my" country="Malaysia" operator="Telekomunikasi Indonesia International (M) Sdn Bhd" status="Operational" - 16 bands="GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="DiGi" cc="my" country="Malaysia" operator="DiGi Telecommunications" status="Operational" - 17 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Maxis" cc="my" country="Malaysia" operator="Maxis Communications Berhad" status="Operational" - 18 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="U Mobile" cc="my" country="Malaysia" operator="U Mobile Sdn Bhd" status="Operational" - 19 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Celcom" cc="my" country="Malaysia" operator="Celcom Axiata Berhad" status="Operational" + 16 bands="GSM 1800 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="DiGi" cc="my" country="Malaysia" operator="DiGi Telecommunications" status="Operational" + 17 bands="GSM 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Maxis" cc="my" country="Malaysia" operator="Maxis Communications Berhad" status="Operational" + 18 bands="LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 3500 / 5G 28000" brand="U Mobile" cc="my" country="Malaysia" operator="U Mobile Sdn Bhd" status="Operational" + 19 bands="GSM 900 / LTE 1800 / LTE 2100 / LTE 2600" brand="Celcom" cc="my" country="Malaysia" operator="Celcom Axiata Berhad" status="Operational" 20 bands="DMR" brand="Electcoms" cc="my" country="Malaysia" operator="Electcoms Berhad" status="Not operational" 505 - 01 bands="UMTS 850 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="Telstra" cc="au" country="Australia" operator="Telstra Corporation Limited" status="Operational" - 02 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 2300 / 5G 3500" brand="Optus" cc="au" country="Australia" operator="Singtel Optus Proprietary Limited" status="Operational" - 03 bands="UMTS 900 / UMTS 2100 / LTE 850 / LTE 1800 / LTE 2100" brand="Vodafone" cc="au" country="Australia" operator="Vodafone Hutchison Australia Proprietary Limited" status="Operational" - 04 cc="au" country="Australia" operator="Department of Defence" status="Operational" - 05 brand="Ozitel" cc="au" country="Australia" status="Not operational" - 06 bands="UMTS 2100" brand="3" cc="au" country="Australia" operator="Vodafone Hutchison Australia Proprietary Limited" status="Not operational" - 07 brand="Vodafone" cc="au" country="Australia" operator="Vodafone Network Pty. Ltd." - 08 bands="GSM 900" brand="One.Tel" cc="au" country="Australia" operator="One.Tel Limited" status="Not operational" - 09 brand="Airnet" cc="au" country="Australia" status="Not operational" + 01 bands="LTE 700 / LTE 850 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 850 / 5G 2600 / 5G 3500 / 5G 28000" brand="Telstra" country="Australia - AU/CC/CX" operator="Telstra" status="Operational" + 02 bands="LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 900 / 5G 1800 / 5G 2100 / TD-5G 2300 / 5G 3500 / 5G 28000" brand="Optus" country="Australia - AU/CC/CX" operator="Singtel Optus" status="Operational" + 03 bands="LTE 850 / LTE 1800 / LTE 2100 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500 / 5G 28000" brand="Vodafone" country="Australia - AU/CC/CX" operator="TPG Telecom" status="Operational" + 04 country="Australia - AU/CC/CX" operator="Department of Defence" status="Operational" + 05 brand="Ozitel" country="Australia - AU/CC/CX" status="Not operational" + 06 bands="UMTS 2100" brand="3" country="Australia - AU/CC/CX" operator="Vodafone Hutchison Australia" status="Not operational" + 07 country="Australia - AU/CC/CX" operator="TPG Telecom" + 08 bands="GSM 900" brand="One.Tel" country="Australia - AU/CC/CX" operator="One.Tel" status="Not operational" + 09 brand="Airnet" country="Australia - AU/CC/CX" status="Not operational" 10 bands="GSM 900 / LTE 1800" brand="Norfolk Telecom" cc="nf" country="Norfolk Island" operator="Norfolk Telecom" status="Operational" - 11 brand="Telstra" cc="au" country="Australia" operator="Telstra Corporation Ltd." - 12 bands="UMTS 2100" brand="3" cc="au" country="Australia" operator="Vodafone Hutchison Australia Proprietary Limited" status="Not operational" - 13 bands="GSM-R 1800" brand="RailCorp" cc="au" country="Australia" operator="Railcorp, Transport for New South Wales" status="Operational" - 14 bands="MVNO" brand="AAPT" cc="au" country="Australia" operator="TPG Telecom" status="Operational" - 15 brand="3GIS" cc="au" country="Australia" status="Not operational" - 16 bands="GSM-R 1800" brand="VicTrack" cc="au" country="Australia" operator="Victorian Rail Track" status="Operational" - 17 bands="TD-LTE 2300" cc="au" country="Australia" operator="Optus" status="Operational" - 18 brand="Pactel" cc="au" country="Australia" operator="Pactel International Pty Ltd" - 19 bands="MVNO" brand="Lycamobile" cc="au" country="Australia" operator="Lycamobile Pty Ltd" status="Operational" - 20 cc="au" country="Australia" operator="Ausgrid Corporation" - 21 bands="GSM-R 1800" cc="au" country="Australia" operator="Queensland Rail Limited" - 22 cc="au" country="Australia" operator="iiNet Ltd" - 23 bands="LTE 1800 / LTE 2100" cc="au" country="Australia" operator="Challenge Networks Pty Ltd" status="Operational" - 24 cc="au" country="Australia" operator="Advanced Communications Technologies Pty. Ltd." - 25 cc="au" country="Australia" operator="Pilbara Iron Company Services Pty Ltd" - 26 cc="au" country="Australia" operator="Dialogue Communications Pty. Ltd." - 27 cc="au" country="Australia" operator="Nexium Telecommunications" - 28 cc="au" country="Australia" operator="RCOM International Pty Ltd" - 30 cc="au" country="Australia" operator="Compatel Limited" - 31 cc="au" country="Australia" operator="BHP Billiton" - 32 cc="au" country="Australia" operator="Thales Australia" - 33 cc="au" country="Australia" operator="CLX Networks Pty Ltd" - 34 cc="au" country="Australia" operator="Santos Limited" - 35 cc="au" country="Australia" operator="MessageBird Pty Ltd" - 36 brand="Optus" cc="au" country="Australia" operator="Optus Mobile Pty. Ltd." - 37 cc="au" country="Australia" operator="Yancoal Australia Ltd" - 38 bands="MVNO" brand="Truphone" cc="au" country="Australia" operator="Truphone Pty Ltd" status="Operational" - 39 brand="Telstra" cc="au" country="Australia" operator="Telstra Corporation Ltd." - 40 cc="au" country="Australia" operator="CITIC Pacific Mining" - 41 cc="au" country="Australia" operator="Aqura Technologies Pty" - 42 brand="GEMCO" cc="au" country="Australia" operator="Groote Eylandt Mining Company Pty Ltd" - 43 cc="au" country="Australia" operator="Arrow Energy Pty Ltd" - 44 cc="au" country="Australia" operator="Roy Hill Iron Ore Pty Ltd" - 45 cc="au" country="Australia" operator="Clermont Coal Operations Pty Ltd" - 46 cc="au" country="Australia" operator="AngloGold Ashanti Australia Ltd" - 47 cc="au" country="Australia" operator="Woodside Energy Limited" - 48 cc="au" country="Australia" operator="Titan ICT Pty Ltd" - 50 bands="Satellite" cc="au" country="Australia" operator="Pivotel Group Pty Limited" status="Operational" - 61 bands="LTE 1800 / LTE 2100" brand="CommTel NS" cc="au" country="Australia" operator="Commtel Network Solutions Pty Ltd" status="Implement / Design" - 62 bands="TD-LTE 2300 / TD-LTE 3500" brand="NBN" cc="au" country="Australia" operator="National Broadband Network Co." status="Operational" - 68 bands="TD-LTE 2300 / TD-LTE 3500" brand="NBN" cc="au" country="Australia" operator="National Broadband Network Co." status="Operational" - 71 brand="Telstra" cc="au" country="Australia" operator="Telstra Corporation Limited" status="Operational" - 72 brand="Telstra" cc="au" country="Australia" operator="Telstra Corporation Limited" status="Operational" - 88 bands="Satellite" cc="au" country="Australia" operator="Pivotel Group Pty Limited" status="Operational" - 90 brand="Optus" cc="au" country="Australia" operator="Singtel Optus Proprietary Limited" status="Operational" - 99 bands="GSM 1800" brand="One.Tel" cc="au" country="Australia" operator="One.Tel" status="Not operational" + 11 bands="LTE 2600" brand="Telstra" country="Australia - AU/CC/CX" operator="Telstra" status="Operational" + 12 bands="UMTS 2100" brand="3" country="Australia - AU/CC/CX" operator="Vodafone Hutchison Australia" status="Not operational" + 13 bands="GSM-R 1800" brand="RailCorp" country="Australia - AU/CC/CX" operator="Railcorp, Transport for NSW" status="Operational" + 14 bands="MVNO" brand="AAPT" country="Australia - AU/CC/CX" operator="TPG Telecom" status="Not operational" + 15 bands="UMTS" brand="3GIS" country="Australia - AU/CC/CX" status="Not operational" + 16 bands="GSM-R 1800" brand="VicTrack" country="Australia - AU/CC/CX" operator="Victorian Rail Track" status="Operational" + 17 bands="TD-LTE 2300" brand="Optus" country="Australia - AU/CC/CX" operator="Optus Mobile" status="Operational" + 18 brand="Pactel" country="Australia - AU/CC/CX" operator="Pactel International" status="Not operational" + 19 bands="MVNO" brand="Lycamobile" country="Australia - AU/CC/CX" operator="Lycamobile" status="Operational" + 20 country="Australia - AU/CC/CX" operator="Ausgrid Corporation" status="Not operational" + 21 bands="GSM-R 1800" country="Australia - AU/CC/CX" operator="Queensland Rail" + 22 country="Australia - AU/CC/CX" operator="iiNet" status="Not operational" + 23 bands="LTE 1800 / LTE 2100" country="Australia - AU/CC/CX" operator="Vocus" status="Operational" + 24 country="Australia - AU/CC/CX" operator="Advanced Communications Technologies" + 25 country="Australia - AU/CC/CX" operator="Pilbara Iron" + 26 bands="MVNO" country="Australia - AU/CC/CX" operator="Sinch Australia" + 27 country="Australia - AU/CC/CX" operator="Ergon Energy Telecommunications" + 28 country="Australia - AU/CC/CX" operator="RCOM International" status="Not operational" + 30 country="Australia - AU/CC/CX" operator="Compatel" status="Not operational" + 31 country="Australia - AU/CC/CX" operator="BHP" + 32 country="Australia - AU/CC/CX" operator="Thales Australia" + 33 bands="MVNO" country="Australia - AU/CC/CX" operator="Sinch Australia" + 34 country="Australia - AU/CC/CX" operator="Santos" + 35 country="Australia - AU/CC/CX" operator="Bird.com" + 36 brand="Optus" country="Australia - AU/CC/CX" operator="Singtel Optus" + 37 country="Australia - AU/CC/CX" operator="Yancoal" + 38 bands="MVNO" brand="Truphone" country="Australia - AU/CC/CX" operator="TP Operations Australia" status="Operational" + 39 brand="Telstra" country="Australia - AU/CC/CX" operator="Telstra" + 40 country="Australia - AU/CC/CX" operator="CITIC Pacific Mining" + 41 country="Australia - AU/CC/CX" operator="Aqura Technologies" + 42 brand="GEMCO" country="Australia - AU/CC/CX" operator="Groote Eylandt Mining Company" + 43 country="Australia - AU/CC/CX" operator="Arrow Energy" + 44 country="Australia - AU/CC/CX" operator="Roy Hill" + 45 country="Australia - AU/CC/CX" operator="Coal Operations" + 46 country="Australia - AU/CC/CX" operator="AngloGold Ashanti Australia Ltd" + 47 country="Australia - AU/CC/CX" operator="Woodside Energy" status="Not operational" + 48 country="Australia - AU/CC/CX" operator="Titan ICT" + 49 country="Australia - AU/CC/CX" operator="Field Solutions Group" + 50 bands="Satellite" country="Australia - AU/CC/CX" operator="Pivotel Group" status="Operational" + 51 country="Australia - AU/CC/CX" operator="Fortescue" + 52 bands="LTE 1800 / LTE 2100 / 5G 1800 / 5G 2100" country="Australia - AU/CC/CX" operator="OptiTel Australia" status="Operational" + 53 country="Australia - AU/CC/CX" operator="Shell Australia" + 54 country="Australia - AU/CC/CX" operator="Nokia" status="Not operational" + 55 country="Australia - AU/CC/CX" operator="New South Wales Government Telecommunications Authority" + 56 country="Australia - AU/CC/CX" operator="Nokia" + 57 brand="CiFi" country="Australia - AU/CC/CX" operator="Christmas Island Fibre Internet" + 58 country="Australia - AU/CC/CX" operator="Wi-Sky" status="Operational" + 59 bands="Satellite" country="Australia - AU/CC/CX" operator="Starlink" status="Operational" + 60 bands="Satellite" country="Australia - AU/CC/CX" operator="Starlink" status="Operational" + 61 bands="LTE 1800 / LTE 2100" brand="CommTel NS" country="Australia - AU/CC/CX" operator="Commtel Network Solutions" status="Implement / Design" + 62 bands="TD-LTE 2300 / TD-LTE 3500 / 5G 28000" brand="NBN" country="Australia - AU/CC/CX" operator="NBN_Co" status="Operational" + 63 brand="MarchNet" country="Australia - AU/CC/CX" operator="March IT" + 68 bands="TD-LTE 2300 / TD-LTE 3500 / 5G 28000" brand="NBN" country="Australia - AU/CC/CX" operator="NBN_Co" status="Operational" + 71 brand="Telstra" country="Australia - AU/CC/CX" operator="Telstra" status="Operational" + 72 brand="Telstra" country="Australia - AU/CC/CX" operator="Telstra" status="Operational" + 88 bands="Satellite" country="Australia - AU/CC/CX" operator="Pivotel Group" status="Operational" + 90 country="Australia - AU/CC/CX" operator="Alphawest" + 99 brand="Telstra" country="Australia - AU/CC/CX" operator="Telstra" 00-99 510 - 00 bands="Satellite" brand="PSN" cc="id" country="Indonesia" operator="PT Pasifik Satelit Nusantara (ACeS)" status="Operational" - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800" brand="Indosat Ooredoo" cc="id" country="Indonesia" operator="PT Indonesian Satellite Corporation Tbk (INDOSAT)" status="Operational" - 03 bands="CDMA 800" brand="StarOne" cc="id" country="Indonesia" operator="PT Indosat Tbk" status="Not operational" - 07 bands="CDMA 800" brand="TelkomFlexi" cc="id" country="Indonesia" operator="PT Telkom" status="Not operational" + 00 bands="Satellite" brand="PSN" cc="id" country="Indonesia" operator="PT Pasifik Satelit Nusantara" status="Operational" + 01 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / 5G 1800" brand="Indosat" cc="id" country="Indonesia" operator="PT Indosat Tbk" status="Operational" + 03 bands="CDMA2000 800" brand="StarOne" cc="id" country="Indonesia" operator="PT Indosat Tbk" status="Not operational" + 07 bands="CDMA2000 800" brand="TelkomFlexi" cc="id" country="Indonesia" operator="PT Telkom Indonesia Tbk" status="Not operational" 08 bands="GSM 1800 / UMTS 2100" brand="AXIS" cc="id" country="Indonesia" operator="PT Natrindo Telepon Seluler" status="Not operational" 09 bands="LTE 850 / TD-LTE 2300" brand="Smartfren" cc="id" country="Indonesia" operator="PT Smartfren Telecom" status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / TD-LTE 2300" brand="Telkomsel" cc="id" country="Indonesia" operator="PT Telekomunikasi Selular" status="Operational" - 11 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800" brand="XL" cc="id" country="Indonesia" operator="PT XL Axiata Tbk" status="Operational" - 20 bands="GSM 1800" brand="TELKOMMobile" cc="id" country="Indonesia" operator="PT Telkom Indonesia Tbk" status="Not operational" - 21 bands="GSM 1800" brand="IM3" cc="id" country="Indonesia" operator="PT Indonesian Satellite Corporation Tbk (INDOSAT)" status="Not operational" - 27 bands="LTE 450" brand="Net 1" cc="id" country="Indonesia" operator="PT Sampoerna Telekomunikasi Indonesia" status="Operational" + 10 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / TD-LTE 2300 / 5G 2100 / 5G 2300" brand="Telkomsel" cc="id" country="Indonesia" operator="PT Telekomunikasi Selular" status="Operational" + 11 bands="GSM 900 / GSM 1800 / LTE 900 / LTE 1800 / 5G 1800 / 5G 2100" brand="XL" cc="id" country="Indonesia" operator="PT XL Axiata Tbk" status="Operational" + 20 bands="GSM 1800" brand="TelkomMobile" cc="id" country="Indonesia" operator="PT Telkom Indonesia Tbk" status="Not operational" + 21 bands="GSM 900 / GSM 1800" brand="Indosat" cc="id" country="Indonesia" operator="PT Indosat Tbk" status="Operational" + 27 bands="LTE 450" brand="Net1" cc="id" country="Indonesia" operator="PT Net Satu Indonesia" status="Not operational" 28 bands="LTE 850 / TD-LTE 2300" brand="Fren/Hepi" cc="id" country="Indonesia" operator="PT Mobile-8 Telecom" status="Operational" - 78 bands="TD-LTE 2300" brand="Hinet" cc="id" country="Indonesia" operator="PT Berca Hardayaperkasa" status="Operational" - 88 bands="TD-LTE 2300" brand="BOLT! 4G LTE" cc="id" country="Indonesia" operator="PT Internux" status="Not operational" - 89 bands="GSM 1800 / UMTS 2100 / LTE 1800" brand="3" cc="id" country="Indonesia" operator="PT Hutchison CP Telecommunications" status="Operational" - 99 bands="CDMA 800" brand="Esia" cc="id" country="Indonesia" operator="PT Bakrie Telecom" status="Not Operational" + 78 bands="TD-LTE 2300" brand="hinet" cc="id" country="Indonesia" operator="PT Berca Hardayaperkasa" status="Not operational" + 88 bands="TD-LTE 2300" brand="Bolt!" cc="id" country="Indonesia" operator="PT Internux" status="Not operational" + 89 bands="GSM 1800 / LTE 1800" brand="3" cc="id" country="Indonesia" operator="PT Hutchison 3 Indonesia" status="Operational" + 99 bands="CDMA2000 800" brand="Esia" cc="id" country="Indonesia" operator="PT Bakrie Telecom" status="Not Operational" 00-99 514 01 bands="GSM 900 / GSM 1800 / UMTS 850 / LTE" brand="Telkomcel" cc="tl" country="East Timor" operator="PT Telekomunikasi Indonesia International" status="Operational" @@ -2385,73 +2812,87 @@ 00-99 515 01 bands="GSM 900" brand="Islacom" cc="ph" country="Philippines" operator="Globe Telecom via Innove Communications" status="Not operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500" brand="Globe" cc="ph" country="Philippines" operator="Globe Telecom" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500" brand="SMART" cc="ph" country="Philippines" operator="PLDT via Smart Communications" status="Operational" + 02 bands="GSM 900 / GSM 1800 / LTE 700 / LTE 1800 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500" brand="Globe" cc="ph" country="Philippines" operator="Globe Telecom" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 850 / LTE 1800 / LTE 2100 / TD-LTE 2300 / TD-LTE 2500 / 5G 3500" brand="SMART" cc="ph" country="Philippines" operator="PLDT via Smart Communications" status="Operational" 05 bands="GSM 1800 / UMTS 2100" brand="Sun Cellular" cc="ph" country="Philippines" operator="Digital Telecommunications Philippines" status="Operational" 11 cc="ph" country="Philippines" operator="PLDT via ACeS Philippines" 18 bands="GSM 900 / UMTS 2100" brand="Cure" cc="ph" country="Philippines" operator="PLDT via Smart's Connectivity Unlimited Resources Enterprise" status="Not operational" - 24 bands="MVNO" brand="ABS-CBN Mobile" cc="ph" country="Philippines" operator="ABS-CBN Convergence with Globe Telecom" status="Operational" - 88 bands="iDEN" cc="ph" country="Philippines" operator="Next Mobile Inc." status="Operational" + 24 bands="MVNO" brand="ABS-CBN Mobile" cc="ph" country="Philippines" operator="ABS-CBN Convergence with Globe Telecom" status="Not operational" + 66 bands="LTE 700 / LTE 2100 / TD-LTE 2500 / 5G 3500" brand="DITO" cc="ph" country="Philippines" operator="Dito Telecommunity Corp." status="Operational" + 88 bands="iDEN" cc="ph" country="Philippines" operator="Next Mobile Inc." 00-99 520 - 00 bands="UMTS 850" brand="TrueMove H / my by CAT" cc="th" country="Thailand" operator="CAT Telecom" status="Operational" + 00 bands="UMTS 850" brand="TrueMove H / my by NT" cc="th" country="Thailand" operator="National Telecom Public Company Limited" status="Operational" 01 bands="GSM 900" brand="AIS" cc="th" country="Thailand" operator="Advanced Info Service" status="Operational" - 02 bands="CDMA 800" brand="CAT CDMA" cc="th" country="Thailand" operator="CAT Telecom" status="Not operational" - 03 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 2500" brand="AIS" cc="th" country="Thailand" operator="Advanced Wireless Network Company Ltd." status="Operational" - 04 bands="UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 2500" brand="TrueMove H" cc="th" country="Thailand" operator="True Move H Universal Communication Company Ltd." status="Operational" - 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="dtac" cc="th" country="Thailand" operator="DTAC TriNet Company Ltd." status="Operational" + 02 bands="UMTS 850" brand="NT Mobile" cc="th" country="Thailand" operator="National Telecom Public Company Limited" status="Operational" + 03 bands="UMTS 2100 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2500" brand="AIS" cc="th" country="Thailand" operator="Advanced Wireless Network Company Ltd." status="Operational" + 04 bands="UMTS 2100 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / 5G 700 / 5G 2500" brand="TrueMove H" cc="th" country="Thailand" operator="True Move H Universal Communication Company Ltd." status="Operational" + 05 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / 5G 700" brand="dtac" cc="th" country="Thailand" operator="DTAC TriNet Company Ltd." status="Operational" 09 bands="LTE 850" cc="th" country="Thailand" operator="Royal Thai Police" status="Operational" - 15 bands="UMTS 2100 / LTE 2100" brand="AIS-T / TOT Mobile" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational" - 17 bands="TD-LTE 2300" brand="TOT Mobile" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational" + 15 bands="UMTS 2100 / LTE 2100" brand="AIS-T / NT Mobile" cc="th" country="Thailand" operator="National Telecom Public Company Limited" status="Operational" + 17 bands="TD-LTE 2300" brand="NT Mobile" cc="th" country="Thailand" operator="National Telecom Public Company Limited" status="Operational" 18 bands="GSM 1800" brand="dtac" cc="th" country="Thailand" operator="Total Access Communications Public Company Ltd." status="Operational" 20 bands="Satellite" brand="ACeS" cc="th" country="Thailand" operator="ACeS" 23 bands="GSM 1800" brand="AIS GSM 1800" cc="th" country="Thailand" operator="Digital Phone Company Ltd." status="Not operational" 25 bands="PHS 1900" brand="WE PCT" cc="th" country="Thailand" operator="True Corporation" status="Not operational" - 47 bands="TD-LTE 2300" brand="dtac-T" cc="th" country="Thailand" operator="TOT Public Company Limited" status="Operational" + 47 bands="TD-LTE 2300" brand="dtac-T, True-T" cc="th" country="Thailand" operator="National Telecom Public Company Limited" status="Operational" 99 bands="GSM 1800" brand="TrueMove" cc="th" country="Thailand" operator="True Corporation" status="Operational" 00-99 525 - 01 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600" brand="SingTel" cc="sg" country="Singapore" operator="Singapore Telecom" status="Operational" + 01 bands="UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2600 / 5G 700 / 5G 2100 / 5G 3500 / 5G 28000" brand="SingTel" cc="sg" country="Singapore" operator="Singapore Telecom" status="Operational" 02 bands="GSM 1800" brand="SingTel-G18" cc="sg" country="Singapore" operator="Singapore Telecom" status="Not operational" - 03 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600" brand="M1" cc="sg" country="Singapore" operator="M1 Limited" status="Operational" - 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2500" brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile" status="Operational" + 03 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2600 / 5G 2100 / 5G 3500" brand="M1" cc="sg" country="Singapore" operator="M1 Limited" status="Operational" + 04 bands="LTE 800" brand="Grid" cc="sg" country="Singapore" operator="Grid Communications Pte Ltd." status="Operational" + 05 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / TD-LTE 2500 / 5G 2100 / 5G 3500" brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile" status="Operational" 06 brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile" - 07 brand="SingTel" cc="sg" country="Singapore" operator="Singapore Telecom" + 07 brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile" 08 brand="StarHub" cc="sg" country="Singapore" operator="StarHub Mobile" 09 bands="MVNO" brand="Circles.Life" cc="sg" country="Singapore" operator="Liberty Wireless Pte Ltd" status="Operational" - 10 bands="LTE 900 / TD-LTE 2300 / TD-LTE 2500" cc="sg" country="Singapore" operator="TPG Telecom Pte Ltd" status="Operational" + 10 bands="LTE 900 / TD-LTE 2300 / TD-LTE 2500 / 5G 2100 / 5G 26000 / 5G 28000" brand="SIMBA" cc="sg" country="Singapore" operator="Simba Telecom Pte Ltd" status="Operational" 11 brand="M1" cc="sg" country="Singapore" operator="M1 Limited" - 12 bands="iDEN 800" brand="Grid" cc="sg" country="Singapore" operator="GRID Communications Pte Ltd." status="Operational" - 00-99 + 12 bands="iDEN 800" brand="Grid" cc="sg" country="Singapore" operator="Grid Communications Pte Ltd." status="Operational" + 200 bands="5G" cc="sg" country="Singapore" operator="5G Test Bed" + 201 bands="5G" cc="sg" country="Singapore" operator="5G EP Twin Networks" + 202 bands="5G" cc="sg" country="Singapore" operator="5G EP Twin Networks" + 203 bands="5G" cc="sg" country="Singapore" operator="5G EP Twin Networks" + 204 bands="5G" cc="sg" country="Singapore" operator="5G EP Twin Networks" + 205 bands="5G" cc="sg" country="Singapore" operator="5G EP Test Bed" 528 01 brand="TelBru" cc="bn" country="Brunei" operator="Telekom Brunei Berhad" 02 bands="UMTS 2100" brand="PCSB" cc="bn" country="Brunei" operator="Progresif Cellular Sdn Bhd" status="Operational" - 03 brand="UNN" cc="bn" country="Brunei" operator="Unified National Networks Sdn Bhd" - 11 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="DST" cc="bn" country="Brunei" operator="Data Stream Technology Sdn Bhd" status="Operational" + 03 bands="LTE 1800 / 5G 700 / 5G 1800 / 5G 3500" brand="UNN" cc="bn" country="Brunei" operator="Unified National Networks Sdn Bhd" status="Operational" + 11 bands="UMTS 2100 / LTE 1800" brand="DST" cc="bn" country="Brunei" operator="Data Stream Technology Sdn Bhd" status="Operational" 00-99 530 - 00 bands="AMPS 800 / TDMA 800" brand="Telecom" cc="nz" country="New Zealand" operator="Telecom New Zealand" status="Not operational" - 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 3500" brand="Vodafone" cc="nz" country="New Zealand" operator="Vodafone New Zealand" status="Operational" - 02 bands="CDMA2000 800" brand="Telecom" cc="nz" country="New Zealand" operator="Telecom New Zealand" status="Not operational" - 03 bands="UMTS-TDD 2000" brand="Woosh" cc="nz" country="New Zealand" operator="Woosh Wireless" status="Operational" - 04 bands="UMTS 2100" brand="Vodafone" cc="nz" country="New Zealand" operator="TelstraClear New Zealand" status="Not operational" - 05 bands="UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / TD-LTE 2300 / LTE 2600 / 5G 2600" brand="Spark" cc="nz" country="New Zealand" operator="Spark New Zealand" status="Operational" - 06 bands="MVNO" brand="Skinny" cc="nz" country="New Zealand" operator="Spark New Zealand" status="Operational" - 07 cc="nz" country="New Zealand" operator="Bluereach Limited" - 24 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1800" brand="2degrees" cc="nz" country="New Zealand" operator="2degrees" status="Operational" + 00 bands="AMPS 800 / TDMA 800" brand="Spark" cc="nz" country="New Zealand" operator="Spark New Zealand" status="Not operational" + 01 bands="GSM 900 / UMTS 900 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 3500" brand="One NZ" cc="nz" country="New Zealand" operator="One NZ" status="Operational" + 02 bands="CDMA2000 800" brand="Spark" cc="nz" country="New Zealand" operator="Spark New Zealand" status="Not operational" + 03 bands="UMTS-TDD 2000" brand="Woosh" cc="nz" country="New Zealand" operator="Woosh Wireless" status="Not operational" + 04 bands="UMTS 2100" brand="One NZ" cc="nz" country="New Zealand" operator="One NZ" status="Not operational" + 05 bands="UMTS 850 / LTE 700 / LTE 1800 / LTE 2100 / TD-LTE 2300 / LTE 2600 / 5G 2300 / 5G 3500" brand="Spark" cc="nz" country="New Zealand" operator="Spark New Zealand" status="Operational" + 06 cc="nz" country="New Zealand" operator="FX Networks" + 07 cc="nz" country="New Zealand" operator="Dense Air New Zealand" + 11 cc="nz" country="New Zealand" operator="Interim Māori Spectrum Commission" + 12 bands="5G n78 (3.30-3.34 GHz) regional" brand="BAINZ" cc="nz" country="New Zealand" operator="Broadband & Internet New Zealand Limited" + 13 bands="LTE 2600" brand="One NZ" cc="nz" country="New Zealand" operator="One NZ" status="Operational" + 14 brand="2degrees" cc="nz" country="New Zealand" operator="2degrees" + 15 brand="Spark" cc="nz" country="New Zealand" operator="Spark New Zealand" + 24 bands="UMTS 900 / UMTS 2100 / LTE 700 / LTE 900 / LTE 1800 / LTE 2100 / 5G 3500" brand="2degrees" cc="nz" country="New Zealand" operator="2degrees" status="Operational" 00-99 536 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Digicel" cc="nr" country="Nauru" operator="Digicel (Nauru) Corporation" status="Operational" + 03 cc="nr" country="Nauru" operator="Nauru Telikom Corporation" 00-99 537 01 bands="GSM 900 / UMTS 900" brand="bmobile" cc="pg" country="Papua New Guinea" operator="Bemobile Limited" status="Operational" 02 bands="CDMA2000 450 / LTE 700" brand="citifon" cc="pg" country="Papua New Guinea" operator="Telikom PNG Ltd." status="Operational" 03 bands="GSM 900 / UMTS 900 / LTE 700" brand="Digicel" cc="pg" country="Papua New Guinea" operator="Digicel PNG" status="Operational" + 04 cc="pg" country="Papua New Guinea" operator="Digitec Communication Ltd." 00-99 539 01 bands="GSM 900 / UMTS 900 / LTE" brand="U-Call" cc="to" country="Tonga" operator="Tonga Communications Corporation" status="Operational" 43 cc="to" country="Tonga" operator="Shoreline Communication" status="Operational" - 88 bands="GSM 900 / LTE 1800" brand="Digicel" cc="to" country="Tonga" operator="Digicel (Tonga) Limited" status="Operational" + 88 bands="GSM 900 / LTE 700 / LTE 1800" brand="Digicel" cc="to" country="Tonga" operator="Digicel (Tonga) Limited" status="Operational" 00-99 540 01 bands="GSM 900 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800" brand="BREEZE" cc="sb" country="Solomon Islands" operator="Our Telekom" status="Operational" @@ -2489,15 +2930,17 @@ 20 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="Vini" cc="pf" country="French Polynesia" operator="Onati S.A.S." status="Operational" 00-99 548 - 01 bands="GSM 900 / UMTS 900 / LTE 700 / LTE 1800" brand="Bluesky" cc="ck" country="Cook Islands (Pacific Ocean)" operator="Telecom Cook Islands" status="Operational" + 01 bands="GSM 900 / UMTS 900 / LTE 700 / LTE 1800" brand="Vodafone" cc="ck" country="Cook Islands (Pacific Ocean)" operator="Telecom Cook Islands" status="Operational" + 02 cc="ck" country="Cook Islands (Pacific Ocean)" operator="VakaNET Ltd." 00-99 549 - 00 brand="Digicel" cc="ws" country="Samoa" operator="Digicel Pacific Ltd." + 00 bands="LTE 700 / LTE 1800 / LTE 2100" brand="Digicel" cc="ws" country="Samoa" operator="Digicel Pacific Ltd." status="Operational" 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Digicel" cc="ws" country="Samoa" operator="Digicel Pacific Ltd." status="Operational" - 27 bands="GSM 900 / LTE 700 / LTE 1800" brand="Bluesky" cc="ws" country="Samoa" operator="Bluesky Samoa Ltd" status="Operational" + 27 bands="GSM 900 / LTE 700 / LTE 1800" brand="Vodafone" cc="ws" country="Samoa" operator="Vodafone Samoa Ltd." status="Operational" 00-99 550 01 bands="GSM 900 / LTE 1800" cc="fm" country="Federated States of Micronesia" operator="FSMTC" status="Operational" + 02 brand="iBoom!" cc="fm" country="Federated States of Micronesia" operator="Boom! Inc." 00-99 551 01 bands="GSM 900 / GSM 1800 / LTE 700" cc="mh" country="Marshall Islands" operator="Marshall Islands National Telecommunications Authority (MINTA)" status="Operational" @@ -2518,10 +2961,10 @@ 01 bands="GSM 900 / LTE 700" brand="Telecom Niue" cc="nu" country="Niue" operator="Telecom Niue" status="Operational" 00-99 602 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Orange" cc="eg" country="Egypt" operator="Orange Egypt" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Vodafone" cc="eg" country="Egypt" operator="Vodafone Egypt" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Etisalat" cc="eg" country="Egypt" operator="Etisalat Egypt" status="Operational" - 04 bands="LTE 1800" brand="WE" cc="eg" country="Egypt" operator="Telecom Egypt" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 2500" brand="Orange" cc="eg" country="Egypt" operator="Orange Egypt" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 2500" brand="Vodafone" cc="eg" country="Egypt" operator="Vodafone Egypt" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 2500" brand="e&" cc="eg" country="Egypt" operator="e& Egypt" status="Operational" + 04 bands="LTE 1800 / 5G 2500" brand="WE" cc="eg" country="Egypt" operator="Telecom Egypt" status="Operational" 00-99 603 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Mobilis" cc="dz" country="Algeria" operator="Algérie Télécom" status="Operational" @@ -2532,18 +2975,18 @@ 21 bands="GSM-R" brand="ANESRIF" cc="dz" country="Algeria" operator="Anesrif" status="Ongoing" 00-99 604 - 00 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Orange Morocco" cc="ma" country="Morocco" operator="Médi Télécom" status="Operational" - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600" brand="IAM" cc="ma" country="Morocco" operator="Ittissalat Al-Maghrib (Maroc Telecom)" status="Operational" + 00 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="Orange Morocco" cc="ma" country="Morocco" operator="Médi Télécom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600 / 5G 700 / 5G 3500" brand="IAM" cc="ma" country="Morocco" operator="Ittissalat Al-Maghrib (Maroc Telecom)" status="Operational" 02 bands="GSM 900 / GSM 1800" brand="INWI" cc="ma" country="Morocco" operator="Wana Corporate" status="Operational" 04 cc="ma" country="Morocco" operator="Al Houria Telecom" - 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="INWI" cc="ma" country="Morocco" operator="Wana Corporate" status="Operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600 / 5G 700 / 5G 3500" brand="INWI" cc="ma" country="Morocco" operator="Wana Corporate" status="Operational" 06 brand="IAM" cc="ma" country="Morocco" operator="Ittissalat Al-Maghrib (Maroc Telecom)" 99 cc="ma" country="Morocco" operator="Al Houria Telecom" 00-99 605 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Orange" cc="tn" country="Tunisia" operator="Orange Tunisie" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Tunicell" cc="tn" country="Tunisia" operator="Tunisie Telecom" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="OOREDOO TN" cc="tn" country="Tunisia" operator="ooredoo Tunisiana" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Ooredoo" cc="tn" country="Tunisia" operator="Ooredoo Tunisiana" status="Operational" 00-99 606 00 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Libyana" cc="ly" country="Libya" operator="Libyana" status="Operational" @@ -2556,20 +2999,20 @@ 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Gamcel" cc="gm" country="Gambia" operator="Gamcel" status="Operational" 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Africell" cc="gm" country="Gambia" operator="Africell" status="Operational" 03 bands="GSM 900 / GSM 1800" brand="Comium" cc="gm" country="Gambia" operator="Comium" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="QCell" cc="gm" country="Gambia" operator="QCell Gambia" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G" brand="QCell" cc="gm" country="Gambia" operator="QCell Gambia" status="Operational" 05 bands="WiMAX / LTE" cc="gm" country="Gambia" operator="Gamtel-Ecowan" 06 bands="TD-LTE 2300" cc="gm" country="Gambia" operator="NETPAGE" status="Operational" 00-99 608 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Orange" cc="sn" country="Senegal" operator="Sonatel" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 1900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Free" cc="sn" country="Senegal" operator="Saga Africa Holdings Limited" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Free" cc="sn" country="Senegal" operator="Saga Africa Holdings Limited" status="Operational" 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Expresso" cc="sn" country="Senegal" operator="Expresso Telecom" status="Operational" 04 cc="sn" country="Senegal" operator="CSU-SA" 00-99 609 - 01 bands="GSM 900" brand="Mattel" cc="mr" country="Mauritania" operator="Mattel" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Chinguitel" cc="mr" country="Mauritania" operator="Chinguitel" status="Operational" - 10 bands="GSM 900" brand="Mauritel" cc="mr" country="Mauritania" operator="Mauritel Mobiles" status="Operational" + 01 bands="GSM 900 / LTE" brand="Mattel" cc="mr" country="Mauritania" operator="Mattel" status="Operational" + 02 bands="CDMA / GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Chinguitel" cc="mr" country="Mauritania" operator="Chinguitel" status="Operational" + 10 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Moov" cc="mr" country="Mauritania" operator="Mauritel Mobiles" status="Operational" 00-99 610 01 bands="GSM 900 / UMTS 2100 / LTE" brand="Malitel" cc="ml" country="Mali" operator="Malitel SA" status="Operational" @@ -2578,8 +3021,8 @@ 00-99 611 01 bands="GSM 900 / GSM 1800 / LTE" brand="Orange" cc="gn" country="Guinea" operator="Orange S.A." status="Operational" - 02 bands="GSM 900" brand="Sotelgui" cc="gn" country="Guinea" operator="Sotelgui Lagui" status="Operational" - 03 bands="GSM 900" brand="Telecel Guinee" cc="gn" country="Guinea" operator="INTERCEL Guinée" status="Operational" + 02 bands="GSM 900" brand="Guinée Télécom" cc="gn" country="Guinea" operator="Guinée Télécom" status="Not operational" + 03 bands="GSM 900" brand="Intercel" cc="gn" country="Guinea" operator="Intercel Guinée" status="Not operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MTN" cc="gn" country="Guinea" operator="Areeba Guinea" status="Operational" 05 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Cellcom" cc="gn" country="Guinea" operator="Cellcom" status="Operational" 00-99 @@ -2588,15 +3031,15 @@ 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Moov" cc="ci" country="Ivory Coast" operator="Atlantique Cellulaire" status="Operational" 03 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Orange" cc="ci" country="Ivory Coast" operator="Orange" status="Operational" 04 bands="GSM 900 / GSM 1800" brand="KoZ" cc="ci" country="Ivory Coast" operator="Comium Ivory Coast Inc" status="Operational" - 05 bands="GSM 900 / UMTS 2100 / LTE 800" brand="MTN" cc="ci" country="Ivory Coast" operator="Loteny Telecom" status="Operational" + 05 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="MTN" cc="ci" country="Ivory Coast" operator="Loteny Telecom" status="Operational" 06 bands="GSM 1800" brand="GreenN" cc="ci" country="Ivory Coast" operator="Oricel" status="Operational" 07 bands="GSM 1800" brand="café" cc="ci" country="Ivory Coast" operator="Aircomm" status="Operational" 18 bands="TD-LTE 2300" cc="ci" country="Ivory Coast" operator="YooMee" status="Operational" 00-99 613 - 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Telmob" cc="bf" country="Burkina Faso" operator="Onatel" status="Operational" + 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Moov" cc="bf" country="Burkina Faso" operator="Moov Africa Burkina Faso" status="Operational" 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Orange" cc="bf" country="Burkina Faso" operator="Orange Burkina Faso" status="Operational" - 03 bands="GSM 900" brand="Telecel Faso" cc="bf" country="Burkina Faso" operator="Telecel Faso SA" status="Operational" + 03 bands="GSM 900 / LTE 1800" brand="Telecel Faso" cc="bf" country="Burkina Faso" operator="Telecel Faso SA" status="Operational" 00-99 614 01 bands="GSM 900" brand="SahelCom" cc="ne" country="Niger" operator="La Société Sahélienne de Télécommunications (SahelCom)" status="Operational" @@ -2605,24 +3048,25 @@ 04 bands="GSM 900 / GSM 1800" brand="Orange" cc="ne" country="Niger" operator="Orange Niger" status="Operational" 00-99 615 - 01 bands="GSM 900 / LTE" brand="Togo Cell" cc="tg" country="Togo" operator="Togo Telecom" status="Operational" + 01 bands="GSM 900 / LTE / 5G" brand="Togo Cell" cc="tg" country="Togo" operator="Togo Telecom" status="Operational" 03 bands="GSM 900 / LTE" brand="Moov" cc="tg" country="Togo" operator="Moov Togo" status="Operational" 00-99 616 - 01 bands="GSM 900 / GSM 1800 / LTE 1800 / CDMA / WiMAX" brand="Libercom" cc="bj" country="Benin" operator="Benin Telecoms Mobile" status="Operational" + 01 bands="LTE 1800 / CDMA / WiMAX" cc="bj" country="Benin" operator="Benin Telecoms Mobile" status="Operational" 02 bands="GSM 900 / UMTS 2100" brand="Moov" cc="bj" country="Benin" operator="Telecel Benin" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="MTN" cc="bj" country="Benin" operator="Spacetel Benin" status="Operational" - 04 bands="GSM 900 / GSM 1800" brand="BBCOM" cc="bj" country="Benin" operator="Bell Benin Communications" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800 / 5G 3500" brand="MTN" cc="bj" country="Benin" operator="Spacetel Benin" status="Operational" + 04 bands="GSM 900 / GSM 1800" brand="BBCOM" cc="bj" country="Benin" operator="Bell Benin Communications" status="Not operational" 05 bands="GSM 900 / GSM 1800" brand="Glo" cc="bj" country="Benin" operator="Glo Communication Benin" status="Not operational" + 07 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Celtiis" cc="bj" country="Benin" operator="SBIN" status="Operational" 00-99 617 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="my.t" cc="mu" country="Mauritius" operator="Cellplus Mobile Communications Ltd." status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="my.t" cc="mu" country="Mauritius" operator="Cellplus Mobile Communications Ltd." status="Operational" 02 bands="CDMA2000" brand="MOKOZE / AZU" cc="mu" country="Mauritius" operator="Mahanagar Telephone Mauritius Limited (MTML)" status="Operational" 03 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="CHILI" cc="mu" country="Mauritius" operator="Mahanagar Telephone Mauritius Limited (MTML)" status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Emtel" cc="mu" country="Mauritius" operator="Emtel Ltd." status="Operational" + 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 2500" brand="Emtel" cc="mu" country="Mauritius" operator="Emtel Ltd." status="Operational" 00-99 618 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Lonestar Cell MTN" cc="lr" country="Liberia" operator="Lonestar Communications Corporation" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Lonestar Cell MTN" cc="lr" country="Liberia" operator="Lonestar Communications Corporation" status="Operational" 02 brand="Libercell" cc="lr" country="Liberia" operator="Atlantic Wireless (Liberia) Inc." status="Not operational" 04 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Novafone" cc="lr" country="Liberia" operator="Novafone Inc." status="Operational" 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Orange LBR" cc="lr" country="Liberia" operator="Orange Liberia" status="Operational" @@ -2633,7 +3077,7 @@ 02 brand="Africell" cc="sl" country="Sierra Leone" operator="Lintel Sierra Leone Limited" 03 bands="GSM 900" brand="Africell" cc="sl" country="Sierra Leone" operator="Lintel Sierra Leone Limited" status="Operational" 04 bands="GSM 900 / GSM 1800" brand="Comium" cc="sl" country="Sierra Leone" operator="Comium (Sierra Leone) Ltd." status="Not operational" - 05 bands="GSM 900" brand="Africell" cc="sl" country="Sierra Leone" operator="Lintel Sierra Leone Limited" status="Operational" + 05 bands="GSM 900 / UMTS 900" brand="Africell" cc="sl" country="Sierra Leone" operator="Lintel Sierra Leone Limited" status="Operational" 06 bands="CDMA 800 / LTE" brand="SierraTel" cc="sl" country="Sierra Leone" operator="Sierra Leone Telephony" status="Operational" 07 cc="sl" country="Sierra Leone" operator="Qcell Sierra Leone" 09 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Smart Mobile" cc="sl" country="Sierra Leone" operator="InterGroup Telecom SL" status="Operational" @@ -2643,11 +3087,11 @@ 00-99 620 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 2600" brand="MTN" cc="gh" country="Ghana" operator="MTN Group" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Vodafone" cc="gh" country="Ghana" operator="Vodafone Group" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="AirtelTigo" cc="gh" country="Ghana" operator="Millicom Ghana" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Vodafone" cc="gh" country="Ghana" operator="Vodafone Group" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="AT Ghana" cc="gh" country="Ghana" operator="AT Ghana Ltd." status="Operational" 04 bands="CDMA2000 850" brand="Expresso" cc="gh" country="Ghana" operator="Kasapa / Hutchison Telecom" status="Operational" 05 cc="gh" country="Ghana" operator="National Security" - 06 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="AirtelTigo" cc="gh" country="Ghana" operator="Airtel" status="Operational" + 06 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="AT Ghana" cc="gh" country="Ghana" operator="AT Ghana Ltd." status="Operational" 07 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Globacom" cc="gh" country="Ghana" operator="Globacom Group" status="Operational" 08 bands="LTE 2600" brand="Surfline" cc="gh" country="Ghana" operator="Surfline Communications Ltd" status="Not operational" 09 brand="NITA" cc="gh" country="Ghana" operator="National Information Technology Agency" @@ -2662,15 +3106,16 @@ 00-99 621 00 bands="LTE 1900" cc="ng" country="Nigeria" operator="Capcom" status="Not operational" - 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Airtel" cc="ng" country="Nigeria" operator="Bharti Airtel Limited" status="Operational" + 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="Airtel" cc="ng" country="Nigeria" operator="Bharti Airtel Limited" status="Operational" 22 bands="LTE 800" brand="InterC" cc="ng" country="Nigeria" operator="InterC Network Ltd." status="Operational" 24 bands="TD-LTE 2300" cc="ng" country="Nigeria" operator="Spectranet" status="Operational" 25 bands="CDMA2000 800 / CDMA2000 1900" brand="Visafone" cc="ng" country="Nigeria" operator="Visafone Communications Ltd." status="Not operational" 26 bands="TD-LTE 2300" cc="ng" country="Nigeria" operator="Swift" status="Operational" 27 bands="LTE 800" brand="Smile" cc="ng" country="Nigeria" operator="Smile Communications Nigeria" status="Operational" - 30 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600 / TD-LTE 3500" brand="MTN" cc="ng" country="Nigeria" operator="MTN Nigeria Communications Limited" status="Operational" + 28 bands="5G 3500" brand="MCom (Mafab)" cc="ng" country="Nigeria" operator="Mafab Communications Ltd." status="Operational" + 30 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 2600 / TD-LTE 3500 / 5G 3500" brand="MTN" cc="ng" country="Nigeria" operator="MTN Nigeria Communications Limited" status="Operational" 40 bands="LTE 900 / LTE 1800" brand="Ntel" cc="ng" country="Nigeria" operator="Nigerian Mobile Telecommunications Limited" status="Operational" - 50 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700" brand="Glo" cc="ng" country="Nigeria" operator="Globacom Ltd" status="Operational" + 50 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 2600" brand="Glo" cc="ng" country="Nigeria" operator="Globacom Ltd" status="Operational" 60 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="9mobile" cc="ng" country="Nigeria" operator="Emerging Markets Telecommunication Services Ltd." status="Operational" 00-99 622 @@ -2696,12 +3141,12 @@ 02 bands="GSM 1800 / UMTS 2100" brand="T+" cc="cv" country="Cape Verde" operator="UNITEL T+ TELECOMUNICACÕES, S.A." status="Operational" 00-99 626 - 01 bands="GSM 900 / UMTS 2100" brand="CSTmovel" cc="st" country="Sao Tome and Principe" operator="Companhia Santomese de Telecomunicaçôe" status="Operational" - 02 bands="GSM 900 / UMTS 2100" brand="Unitel STP" cc="st" country="Sao Tome and Principe" operator="Unitel Sao Tome and Principe" status="Operational" + 01 bands="GSM 900 / UMTS 2100 / LTE" brand="CSTmovel" cc="st" country="São Tomé and Príncipe" operator="Companhia Santomense de Telecomunicações" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE" brand="Unitel STP" cc="st" country="São Tomé and Príncipe" operator="Unitel São Tomé and Príncipe" status="Operational" 00-99 627 - 01 bands="GSM 900" brand="Orange GQ" cc="gq" country="Equatorial Guinea" operator="GETESA" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900" brand="Muni" cc="gq" country="Equatorial Guinea" operator="Green Com S.A." status="Operational" + 01 bands="GSM 900 / LTE" brand="Orange GQ" cc="gq" country="Equatorial Guinea" operator="GETESA" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE" brand="Muni" cc="gq" country="Equatorial Guinea" operator="Green Com S.A." status="Operational" 00-99 628 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="Libertis" cc="ga" country="Gabon" operator="Gabon Telecom S.A." status="Operational" @@ -2713,20 +3158,21 @@ 629 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 2600" brand="Airtel" cc="cg" country="Congo" operator="Celtel Congo" status="Operational" 07 bands="GSM 900" brand="Airtel" cc="cg" country="Congo" operator="Warid Telecom" status="Operational" - 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600" brand="Libertis Telecom" cc="cg" country="Congo" operator="MTN CONGO S.A" status="Operational" + 10 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2600 / 5G 3500" brand="Libertis Telecom" cc="cg" country="Congo" operator="MTN CONGO S.A" status="Operational" 00-99 630 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / TD-LTE 3500 / WiMAX 3500" brand="Vodacom" cc="cd" country="Democratic Republic of the Congo" operator="Vodacom Congo RDC sprl" status="Operational" - 02 bands="GSM 900 / UMTS 2100" brand="Airtel" cc="cd" country="Democratic Republic of the Congo" operator="Airtel sprl" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Airtel" cc="cd" country="Democratic Republic of the Congo" operator="Airtel sprl" status="Operational" 05 bands="GSM 900 / GSM 1800" brand="Supercell" cc="cd" country="Democratic Republic of the Congo" operator="Supercell SPRL" status="Operational" - 86 bands="GSM 900 / GSM 1800 / UMTS 2100 / TD-LTE 2600" brand="Orange RDC" cc="cd" country="Democratic Republic of the Congo" operator="Orange RDC sarl" status="Operational" + 86 bands="GSM 900 / GSM 1800 / UMTS 2100 / TD-LTE 2600 / 5G" brand="Orange RDC" cc="cd" country="Democratic Republic of the Congo" operator="Orange RDC sarl" status="Operational" 88 bands="GSM 900 / GSM 1800" brand="YTT" cc="cd" country="Democratic Republic of the Congo" operator="Yozma Timeturns sprl" status="Not operational" 89 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Orange RDC" cc="cd" country="Democratic Republic of the Congo" operator="Orange RDC sarl" status="Operational" 90 bands="GSM 900 / GSM 1800" brand="Africell" cc="cd" country="Democratic Republic of the Congo" operator="Africell RDC sprl" status="Operational" 00-99 631 - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="UNITEL" cc="ao" country="Angola" operator="UNITEL S.a.r.l." status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="UNITEL" cc="ao" country="Angola" operator="UNITEL S.a.r.l." status="Operational" 04 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800" brand="MOVICEL" cc="ao" country="Angola" operator="MOVICEL Telecommunications S.A." status="Operational" + 05 bands="LTE 1800 / 5G 3500" cc="ao" country="Angola" operator="Africell" status="Operational" 00-99 632 01 bands="GSM 900 / GSM 1800" brand="Guinetel" cc="gw" country="Guinea-Bissau" operator="Guinétel S.A." status="Operational" @@ -2735,7 +3181,7 @@ 07 bands="GSM 900 / GSM 1800" brand="Guinetel" cc="gw" country="Guinea-Bissau" operator="Guinétel S.A." status="Operational" 00-99 633 - 01 bands="GSM 900 / UMTS" brand="Cable & Wireless" cc="sc" country="Seychelles" operator="Cable & Wireless Seychelles" status="Operational" + 01 bands="GSM 900 / UMTS / 5G" brand="Cable & Wireless" cc="sc" country="Seychelles" operator="Cable & Wireless Seychelles" status="Operational" 02 bands="GSM 1800" brand="Mediatech" cc="sc" country="Seychelles" operator="Mediatech International" status="Not operational" 05 cc="sc" country="Seychelles" operator="Intelvision Ltd" 10 bands="GSM 900 / UMTS 2100 / LTE 800" brand="Airtel" cc="sc" country="Seychelles" operator="Telecom Seychelles Ltd" status="Operational" @@ -2749,74 +3195,80 @@ 09 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="khartoum INC" cc="sd" country="Sudan" operator="NEC" status="operational" 00-99 635 - 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="MTN" cc="rw" country="Rwanda" operator="MTN Rwandacell SARL" status="Operational" + 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE / 5G 3500" brand="MTN Rwanda" cc="rw" country="Rwanda" operator="MTN Rwandacell SARL" status="Operational" 11 bands="CDMA" brand="Rwandatel" cc="rw" country="Rwanda" operator="Rwandatel S.A." status="Not operational" 12 bands="GSM" brand="Rwandatel" cc="rw" country="Rwanda" operator="Rwandatel S.A." status="Not operational" - 13 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Airtel" cc="rw" country="Rwanda" operator="Airtel RWANDA" status="Operational" + 13 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Airtel" cc="rw" country="Rwanda" operator="Airtel RWANDA" status="Operational" 14 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Airtel" cc="rw" country="Rwanda" operator="Airtel RWANDA" status="Not operational" - 17 bands="LTE 800 / LTE 1800" brand="Olleh" cc="rw" country="Rwanda" operator="Olleh Rwanda Networks" status="Operational" + 17 bands="LTE 800 / LTE 1800" brand="KTRN" cc="rw" country="Rwanda" operator="KT Rwanda Networks" status="Operational" 00-99 636 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="MTN" cc="et" country="Ethiopia" operator="Ethio Telecom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G" brand="MTN" cc="et" country="Ethiopia" operator="Ethio Telecom" status="Operational" + 02 bands="GSM900 / UMTS 2100 / LTE 1800" brand="Safari" cc="et" country="Ethiopia" operator="Safaricom Telecommunications Ethiopia" status="Operational" 00-99 637 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="Telesom" cc="so" country="Somalia" operator="Telesom" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE / 5G" brand="Telesom" cc="so" country="Somalia" operator="Telesom" status="Operational" 04 bands="GSM 900 / GSM 1800" brand="Somafone" cc="so" country="Somalia" operator="Somafone FZLLC" status="Operational" 10 bands="GSM 900" brand="Nationlink" cc="so" country="Somalia" operator="NationLink Telecom" status="Operational" 20 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="SOMNET" cc="so" country="Somalia" operator="SOMNET" status="Operational" 30 bands="GSM 900" brand="Golis" cc="so" country="Somalia" operator="Golis Telecom Somalia" status="Operational" - 50 bands="GSM 900 / UMTS" brand="Hormuud" cc="so" country="Somalia" operator="Hormuud Telecom Somalia Inc" status="Operational" + 50 bands="GSM 900 / UMTS / 5G" brand="Hormuud" cc="so" country="Somalia" operator="Hormuud Telecom Somalia Inc" status="Operational" 57 bands="GSM 900 / GSM 1800" brand="UNITEL" cc="so" country="Somalia" operator="UNITEL S.a.r.l." status="Operational" 60 bands="GSM 900 / GSM 1800" brand="Nationlink" cc="so" country="Somalia" operator="Nationlink Telecom" status="Operational" 67 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Horntel Group" cc="so" country="Somalia" operator="HTG Group Somalia" status="Operational" 70 cc="so" country="Somalia" operator="Onkod Telecom Ltd." status="Not operational" - 71 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Somtel" cc="so" country="Somalia" operator="Somtel" status="Operational" + 71 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / 5G" brand="Somtel" cc="so" country="Somalia" operator="Somtel" status="Operational" 82 bands="GSM 900 / GSM 1800 / CDMA2000 / LTE" brand="Telcom" cc="so" country="Somalia" operator="Telcom Somalia" status="Operational" 00-99 638 01 bands="GSM 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="Evatis" cc="dj" country="Djibouti" operator="Djibouti Telecom SA" status="Operational" 00-99 639 - 01 brand="Safaricom" cc="ke" country="Kenya" operator="Safaricom Limited" - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="Safaricom" cc="ke" country="Kenya" operator="Safaricom Limited" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800" brand="Airtel" cc="ke" country="Kenya" operator="Bharti Airtel" status="Operational" + 01 bands="GSM 900 / GSM 1800 / NB-IoT / LTE 800 / 5G 3500" brand="Safaricom IoT" cc="ke" country="Kenya" operator="Safaricom Ltd" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 2500" brand="Safaricom" cc="ke" country="Kenya" operator="Safaricom Limited" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / 5G 2500" brand="Airtel" cc="ke" country="Kenya" operator="Bharti Airtel" status="Operational" 04 cc="ke" country="Kenya" operator="Mobile Pay Kenya Limited" - 05 bands="GSM 900" brand="yu" cc="ke" country="Kenya" operator="Essar Telecom Kenya" status="Not operational" + 05 brand="Airtel" cc="ke" country="Kenya" operator="Bharti Airtel" 06 cc="ke" country="Kenya" operator="Finserve Africa Limited" 07 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Telkom" cc="ke" country="Kenya" operator="Telkom Kenya" status="Operational" - 08 bands="MVNO" cc="ke" country="Kenya" operator="Sema Mobile Services Limited" status="Not operational" + 08 cc="ke" country="Kenya" operator="Wetribe Ltd" 09 cc="ke" country="Kenya" operator="Homeland Media Group Limited" 10 bands="LTE 700" brand="Faiba 4G" cc="ke" country="Kenya" operator="Jamii Telecommunications Limited" status="Operational" - 11 cc="ke" country="Kenya" operator="WiAfrica Kenya Limited" status="Not operational" + 11 cc="ke" country="Kenya" operator="Jambo Telcoms Limited" + 12 cc="ke" country="Kenya" operator="Infura Limited" + 13 cc="ke" country="Kenya" operator="Hidiga Investments Ltd" + 14 cc="ke" country="Kenya" operator="NRG Media Limited" 00-99 640 01 bands="UMTS 900" cc="tz" country="Tanzania" operator="Shared Network Tanzania Limited" status="Not operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800" brand="tiGO" cc="tz" country="Tanzania" operator="MIC Tanzania Limited" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Zantel" cc="tz" country="Tanzania" operator="Zanzibar Telecom Ltd" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Vodacom" cc="tz" country="Tanzania" operator="Vodacom Tanzania Limited" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700" brand="Airtel" cc="tz" country="Tanzania" operator="Bharti Airtel" status="Operational" - 06 bands="CDMA 800" brand="Sasatel (Dovetel)" cc="tz" country="Tanzania" operator="Dovetel Limited" status="Not operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / 5G 2500" brand="tiGO" cc="tz" country="Tanzania" operator="MIC Tanzania Limited" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Zantel" cc="tz" country="Tanzania" operator="MIC Tanzania Limited" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 700 / 5G 2300" brand="Vodacom" cc="tz" country="Tanzania" operator="Vodacom Tanzania Limited" status="Operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 2100 / 5G" brand="Airtel" cc="tz" country="Tanzania" operator="Bharti Airtel" status="Operational" + 06 bands="WiMAX / LTE" cc="tz" country="Tanzania" operator="WIA Company Limited" status="Operational" 07 bands="CDMA 800 / UMTS 2100 / LTE 1800 / TD-LTE 2300" brand="TTCL Mobile" cc="tz" country="Tanzania" operator="Tanzania Telecommunication Company LTD (TTCL)" status="Operational" 08 bands="TD-LTE 2300" brand="Smart" cc="tz" country="Tanzania" operator="Benson Informatics Limited" status="Not operational" 09 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Halotel" cc="tz" country="Tanzania" operator="Viettel Tanzania Limited" status="Operational" - 11 bands="LTE 800" brand="SmileCom" cc="tz" country="Tanzania" operator="Smile Telecoms Holdings Ltd." status="Operational" + 11 bands="LTE 800" brand="Smile" cc="tz" country="Tanzania" operator="Smile Telecoms Holdings Ltd." status="Operational" 12 cc="tz" country="Tanzania" operator="MyCell Limited" status="Not operational" - 13 brand="Cootel" cc="tz" country="Tanzania" operator="Wiafrica Tanzania Limited" - 14 cc="tz" country="Tanzania" operator="MO Mobile Holding Limited" + 13 brand="Cootel" cc="tz" country="Tanzania" operator="Wiafrica Tanzania Limited" status="Not operational" + 14 cc="tz" country="Tanzania" operator="MO Mobile Holding Limited" status="Not operational" 00-99 641 - 01 bands="GSM 900 / UMTS 2100" brand="Airtel" cc="ug" country="Uganda" operator="Bharti Airtel" status="Operational" + 01 bands="GSM 900 / UMTS 2100 / 5G" brand="Airtel" cc="ug" country="Uganda" operator="Bharti Airtel" status="Operational" 04 bands="LTE" cc="ug" country="Uganda" operator="Tangerine Uganda Limited" status="Operational" 06 bands="TD-LTE 2600" brand="Vodafone" cc="ug" country="Uganda" operator="Afrimax Uganda" status="Not operational" - 10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 2600" brand="MTN" cc="ug" country="Uganda" operator="MTN Uganda" status="Operational" + 08 bands="MVNO" cc="ug" country="Uganda" operator="Talkio Mobile Limited" + 10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 2600 / 5G" brand="MTN" cc="ug" country="Uganda" operator="MTN Uganda" status="Operational" 11 bands="GSM 900 / UMTS 2100" brand="Uganda Telecom" cc="ug" country="Uganda" operator="Uganda Telecom Ltd." status="Operational" - 14 bands="GSM 900 / GSM 1800 / UMTS / LTE 800" brand="Africell" cc="ug" country="Uganda" operator="Africell Uganda" status="Operational" + 14 bands="GSM 900 / GSM 1800 / UMTS / LTE 800" brand="Africell" cc="ug" country="Uganda" operator="Africell Uganda" status="Not operational" 16 cc="ug" country="Uganda" operator="SimbaNET Uganda Limited" - 18 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Smart" cc="ug" country="Uganda" operator="Suretelecom Uganda Ltd." status="Operational" + 18 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Smart" cc="ug" country="Uganda" operator="Suretelecom Uganda Ltd." status="Not operational" + 20 cc="ug" country="Uganda" operator="Hamilton Telecom Limited" status="Not operational" 22 bands="GSM 900 / GSM 1800 / UMTS" brand="Airtel" cc="ug" country="Uganda" operator="Bharti Airtel" status="Operational" 26 bands="MVNO" brand="Lycamobile" cc="ug" country="Uganda" operator="Lycamobile Network Services Uganda Limited" status="Not operational" 30 cc="ug" country="Uganda" operator="Anupam Global Soft Uganda Limited" status="Not operational" - 33 bands="LTE 800" brand="Smile" cc="ug" country="Uganda" operator="Smile Communications Uganda Limited" status="Operational" + 33 bands="LTE 800" brand="Smile" cc="ug" country="Uganda" operator="Smile Communications Uganda Ltd." status="Not operational" 40 cc="ug" country="Uganda" operator="Civil Aviation Authority (CAA)" 44 bands="MVNO" brand="K2" cc="ug" country="Uganda" operator="K2 Telecom Ltd" status="Operational" 66 brand="i-Tel" cc="ug" country="Uganda" operator="i-Tel Ltd" status="Not operational" @@ -2824,20 +3276,22 @@ 642 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="econet Leo" cc="bi" country="Burundi" operator="Econet Wireless Burundi PLC" status="Operational" 02 bands="GSM 900" brand="Tempo" cc="bi" country="Burundi" operator="VTEL MEA" status="Not operational" - 03 bands="GSM 900" brand="Onatel" cc="bi" country="Burundi" operator="Onatel" status="Operational" - 07 bands="GSM 1800 / UMTS 2100" brand="Smart Mobile" cc="bi" country="Burundi" operator="LACELL SU" status="Operational" + 03 bands="GSM 900" brand="Onatel" cc="bi" country="Burundi" operator="Onatel Burundi" status="Operational" + 07 bands="GSM 1800 / UMTS 2100" brand="Smart Mobile" cc="bi" country="Burundi" operator="LACELL SU" status="Not operational" 08 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Lumitel" cc="bi" country="Burundi" operator="Viettel Burundi" status="Operational" 82 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="econet Leo" cc="bi" country="Burundi" operator="Econet Wireless Burundi PLC" status="Operational" 00-99 643 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100" brand="mCel" cc="mz" country="Mozambique" operator="Mocambique Celular S.A." status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / 5G" brand="tmCel" cc="mz" country="Mozambique" operator="Moçambique Telecom S.A." status="Operational" 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Movitel" cc="mz" country="Mozambique" operator="Movitel, SA" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800" brand="Vodacom" cc="mz" country="Mozambique" operator="Vodacom Mozambique, S.A." status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800 / 5G" brand="Vodacom" cc="mz" country="Mozambique" operator="Vodacom Mozambique, S.A." status="Operational" 00-99 645 - 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900" brand="Airtel" cc="zm" country="Zambia" operator="Bharti Airtel" status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="MTN" cc="zm" country="Zambia" operator="MTN Group" status="Operational" + 01 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / 5G 2600" brand="Airtel" cc="zm" country="Zambia" operator="Bharti Airtel" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / 5G 2600" brand="MTN" cc="zm" country="Zambia" operator="MTN Group" status="Operational" 03 bands="GSM 900 / UMTS 2100 / TD-LTE 2300" brand="ZAMTEL" cc="zm" country="Zambia" operator="Zambia Telecommunications Company Ltd" status="Operational" + 04 bands="LTE" brand="Zedmobile" cc="zm" country="Zambia" operator="Beeline Telecoms Limited" + 07 cc="zm" country="Zambia" operator="Liquid Telecom Zambia Limited" 00-99 646 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Airtel" cc="mg" country="Madagascar" operator="Bharti Airtel" status="Operational" @@ -2847,30 +3301,31 @@ 05 bands="LTE 2100 / TD-LTE 2600" brand="BIP / blueline" cc="mg" country="Madagascar" operator="Gulfsat Madagascar S.A." status="Operational" 00-99 647 - 00 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Orange" country="French Indian Ocean Territories (France) - YT/RE" operator="Orange La Réunion" status="Operational" - 01 bands="GSM 900 / GSM 1800 / LTE 1800" brand="Maoré Mobile" country="French Indian Ocean Territories (France) - YT/RE" operator="BJT Partners" status="Operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Only" country="French Indian Ocean Territories (France) - YT/RE" operator="Telco OI" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" country="French Indian Ocean Territories (France) - YT/RE" operator="Telco OI" status="Operational" - 04 bands="LTE 1800 / LTE 2100 / LTE 2600" brand="Zeop" country="French Indian Ocean Territories (France) - YT/RE" operator="Zeop mobile" - 10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="SFR Réunion" country="French Indian Ocean Territories (France) - YT/RE" operator="Société Réunionnaise du Radiotéléphone" status="Operational" + 00 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G 3500" brand="Orange" country="French Departments and Territories in the Indian Ocean (France) - YT/RE" operator="Orange La Réunion" status="Operational" + 01 bands="LTE 1800" brand="Maoré Mobile" country="French Departments and Territories in the Indian Ocean (France) - YT/RE" operator="BJT Partners" status="Not operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Only" country="French Departments and Territories in the Indian Ocean (France) - YT/RE" operator="Telco OI" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" country="French Departments and Territories in the Indian Ocean (France) - YT/RE" operator="Telco OI" status="Operational" + 04 bands="LTE 1800 / LTE 2100 / LTE 2600" brand="Zeop" country="French Departments and Territories in the Indian Ocean (France) - YT/RE" operator="Zeop mobile" status="Operational" + 10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 800 / LTE 1800 / LTE 2600" brand="SFR Réunion" country="French Departments and Territories in the Indian Ocean (France) - YT/RE" operator="Société Réunionnaise du Radiotéléphone" status="Operational" 00-99 648 01 bands="GSM 900 / LTE 1800" brand="Net*One" cc="zw" country="Zimbabwe" operator="Net*One Cellular (Pvt) Ltd" status="Operational" - 03 bands="GSM 900" brand="Telecel" cc="zw" country="Zimbabwe" operator="Telecel Zimbabwe (PVT) Ltd" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="Econet" cc="zw" country="Zimbabwe" operator="Econet Wireless" status="Operational" + 03 bands="GSM 900 / LTE 1800" brand="Telecel" cc="zw" country="Zimbabwe" operator="Telecel Zimbabwe (PVT) Ltd" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / 5G" brand="Econet" cc="zw" country="Zimbabwe" operator="Econet Wireless" status="Operational" 00-99 649 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="MTC" cc="na" country="Namibia" operator="MTC Namibia" status="Operational" 02 bands="CDMA2000 800" brand="switch" cc="na" country="Namibia" operator="Telecom Namibia" status="Operational" 03 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800 / TD-LTE 2600" brand="TN Mobile" cc="na" country="Namibia" operator="Telecom Namibia" status="Operational" 04 bands="WiMAX 2500 / TD-LTE" cc="na" country="Namibia" operator="Paratus Telecommunications (Pty)" status="Operational" - 05 cc="na" country="Namibia" operator="Demshi Investments CC" + 05 cc="na" country="Namibia" operator="Click Cloud Hosting Services CC" 06 bands="LTE" cc="na" country="Namibia" operator="MTN Namibia" status="Operational" - 07 cc="na" country="Namibia" operator="Capricorn Connect" + 07 cc="na" country="Namibia" operator="Loc Eight Mobile (Pty) Ltd" 00-99 650 - 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / TD-LTE 2500" brand="TNM" cc="mw" country="Malawi" operator="Telecom Network Malawi" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / TD-LTE 2500 / 5G 3500 / 5G 3700" brand="TNM" cc="mw" country="Malawi" operator="Telecom Network Malawi" status="Operational" 02 bands="CDMA / LTE 850" brand="Access" cc="mw" country="Malawi" operator="Access Communications Ltd" status="Operational" + 03 bands="LTE 1800" brand="MTL" cc="mw" country="Malawi" operator="Malawi Telecommunications Limited" status="Operational" 10 bands="GSM 900 / GSM 1800 / UMTS 900 / UMTS 2100 / LTE 1800" brand="Airtel" cc="mw" country="Malawi" operator="Airtel Malawi Limited" status="Operational" 00-99 651 @@ -2879,34 +3334,39 @@ 10 brand="Vodacom" cc="ls" country="Lesotho" operator="Vodacom Lesotho (Pty) Ltd" 00-99 652 - 01 bands="GSM 900 / UMTS 2100 / LTE 1800" brand="Mascom" cc="bw" country="Botswana" operator="Mascom Wireless (Pty) Limited" status="Operational" - 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100" brand="Orange" cc="bw" country="Botswana" operator="Orange (Botswana) Pty Limited" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="beMobile" cc="bw" country="Botswana" operator="Botswana Telecommunications Corporation" status="Operational" + 01 bands="GSM 900 / UMTS 2100 / LTE 1800 / 5G" brand="Mascom" cc="bw" country="Botswana" operator="Mascom Wireless (Pty) Limited" status="Operational" + 02 bands="GSM 900 / UMTS 2100 / LTE 1800 / LTE 2100 / TD-LTE / 5G" brand="Orange" cc="bw" country="Botswana" operator="Orange (Botswana) Pty Limited" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 1800" brand="BTC Mobile" cc="bw" country="Botswana" operator="Botswana Telecommunications Corporation" status="Operational" + 06 cc="bw" country="Botswana" operator="Paratus Telecommunications (Pty) Ltd" status="unknown" 00-99 653 - 01 cc="sz" country="Swaziland" operator="SPTC" - 02 bands="LTE 1800" cc="sz" country="Swaziland" operator="Swazi Mobile Limited" status="Operational" - 10 bands="GSM 900 / LTE 1800" brand="Swazi MTN" cc="sz" country="Swaziland" operator="Swazi MTN Limited" status="Operational" + 01 cc="sz" country="Eswatini" operator="SPTC" + 02 bands="LTE 1800" cc="sz" country="Eswatini" operator="Eswatini Mobile Limited" status="Operational" + 10 bands="GSM 900 / LTE 1800" brand="MTN Eswatini" cc="sz" country="Eswatini" operator="MTN Eswatini Limited" status="Operational" 00-99 654 01 bands="GSM 900 / UMTS 900" brand="HURI" cc="km" country="Comoros" operator="Comores Telecom" status="Operational" 02 bands="GSM 900 / UMTS 900 / LTE 800" brand="TELCO SA" cc="km" country="Comoros" operator="Telecom Malagasy (Telma)" status="Operational" 00-99 655 - 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 5200 / LTE 5800" brand="Vodacom" cc="za" country="South Africa" operator="Vodacom" status="Operational" - 02 bands="GSM 1800 / UMTS 2100 / LTE 1800 / TD-LTE 2300" brand="Telkom" cc="za" country="South Africa" operator="Telkom SA SOC Ltd" status="Operational" + 01 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / LTE 5200 / LTE 5800 / 5G 700 / 5G 3500" brand="Vodacom" cc="za" country="South Africa" operator="Vodacom" status="Operational" + 02 bands="GSM 1800 / UMTS 2100 / LTE 1800 / TD-LTE 2300 / 5G 3500" brand="Telkom" cc="za" country="South Africa" operator="Telkom SA SOC Ltd" status="Operational" + 03 brand="Telkom" cc="za" country="South Africa" operator="Telkom SA SOC Ltd" 04 cc="za" country="South Africa" operator="Sasol (Pty) Ltd." status="Not operational" 05 bands="3G" cc="za" country="South Africa" operator="Telkom SA Ltd" 06 cc="za" country="South Africa" operator="Sentech (Pty) Ltd" status="Operational" 07 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800 / LTE 2100" brand="Cell C" cc="za" country="South Africa" operator="Cell C (Pty) Ltd" status="Operational" - 10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100" brand="MTN" cc="za" country="South Africa" operator="MTN Group" status="Operational" - 11 bands="TETRA 410" cc="za" country="South Africa" operator="South African Police Service Gauteng" status="Not operational" + 08 brand="Cell C" cc="za" country="South Africa" operator="Cell C (Pty) Ltd" + 09 brand="Cell C" cc="za" country="South Africa" operator="Cell C (Pty) Ltd" + 10 bands="GSM 900 / UMTS 900 / UMTS 2100 / LTE 900 / LTE 1800 / LTE 2100 / 5G 700 / 5G 1800 / 5G 2100 / 5G 3500 / 5G 28000" brand="MTN" cc="za" country="South Africa" operator="MTN Group" status="Operational" + 11 brand="MTN" cc="za" country="South Africa" operator="MTN Group" 12 brand="MTN" cc="za" country="South Africa" operator="MTN Group" 13 bands="CDMA 800" brand="Neotel" cc="za" country="South Africa" operator="Neotel Pty Ltd" status="Not operational" 14 bands="LTE 1800" brand="Neotel" cc="za" country="South Africa" operator="Neotel Pty Ltd" status="Operational" 16 cc="za" country="South Africa" operator="Phoenix System Integration (Pty) Ltd" status="Not operational" 17 cc="za" country="South Africa" operator="Sishen Iron Ore Company (Ltd) Pty" status="Not operational" - 19 bands="LTE 1800 / TD-LTE 2600 / 5G 3500" brand="Rain" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" status="Operational" + 18 brand="MTN" cc="za" country="South Africa" operator="MTN Group" + 19 bands="LTE 1800 / TD-LTE 2600 / TD-5G 2600" brand="rain" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" status="Operational" 21 bands="TETRA 410" cc="za" country="South Africa" operator="Cape Town Metropolitan Council" status="Not operational" 24 cc="za" country="South Africa" operator="SMSPortal (Pty) Ltd." 25 cc="za" country="South Africa" operator="Wirels Connect" @@ -2919,29 +3379,32 @@ 34 cc="za" country="South Africa" operator="Bokone Telecoms Pty Ltd" 35 cc="za" country="South Africa" operator="Kingdom Communications Pty Ltd" 36 cc="za" country="South Africa" operator="Amatole Telecommunications Pty Ltd" - 38 brand="iBurst" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" + 38 brand="rain" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" 41 cc="za" country="South Africa" operator="South African Police Service" status="Not operational" 46 bands="MVNO" cc="za" country="South Africa" operator="SMS Cellular Services (Pty) Ltd" status="Operational" 50 cc="za" country="South Africa" operator="Ericsson South Africa (Pty) Ltd" 51 cc="za" country="South Africa" operator="Integrat (Pty) Ltd" 53 bands="MVNO" brand="Lycamobile" cc="za" country="South Africa" operator="Lycamobile (Pty) Ltd" 65 cc="za" country="South Africa" operator="Vodacom Pty Ltd" - 73 brand="iBurst" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" - 74 brand="iBurst" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" + 73 brand="rain" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" + 74 brand="rain" cc="za" country="South Africa" operator="Wireless Business Solutions (Pty) Ltd" 75 brand="ACSA" cc="za" country="South Africa" operator="Airports Company South Africa" status="Not operational" + 76 bands="WiMAX / 28000" cc="za" country="South Africa" operator="Comsol Networks (Pty) Ltd" status="Operational" + 77 bands="5G" brand="Umoja Connect" cc="za" country="South Africa" operator="One Telecom (Pty) Ltd" 00-99 657 - 01 bands="GSM 900" brand="Eritel" cc="er" country="Eritrea" operator="Eritrea Telecommunications Services Corporation" status="Operational" + 01 bands="GSM 900 / CDMA" brand="Eritel" cc="er" country="Eritrea" operator="Eritrea Telecommunications Services Corporation" status="Operational" 00-99 658 01 bands="GSM 900 / GSM 1800 / LTE 1800" brand="Sure" cc="sh" country="Saint Helena, Ascension and Tristan da Cunha" operator="Sure South Atlantic Ltd." status="Operational" 00-99 659 - 02 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="MTN" cc="ss" country="South Sudan" operator="MTN South Sudan" status="Operational" - 03 bands="GSM 900 / GSM 1800" brand="Gemtel" cc="ss" country="South Sudan" operator="Gemtel" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE" brand="MTN" cc="ss" country="South Sudan" operator="MTN South Sudan" status="Operational" + 03 bands="GSM 900 / GSM 1800" brand="Gemtel" cc="ss" country="South Sudan" operator="Gemtel" status="Not operational" 04 bands="GSM 900 / GSM 1800" brand="Vivacell" cc="ss" country="South Sudan" operator="Network of the World (NOW)" status="Not operational" - 06 bands="GSM 900 / GSM 1800" brand="Zain" cc="ss" country="South Sudan" operator="Zain South Sudan" status="Operational" - 07 bands="CDMA" brand="Sudani" cc="ss" country="South Sudan" operator="Sudani" status="Operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 800 / LTE 1800" brand="DIGITEL" cc="ss" country="South Sudan" operator="DIGITEL Holdings Ltd." status="Operational" + 06 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 2100" brand="Zain" cc="ss" country="South Sudan" operator="Zain South Sudan" status="Operational" + 07 bands="CDMA" brand="Sudani" cc="ss" country="South Sudan" operator="Sudani" status="Not operational" 00-99 702 67 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1900" brand="DigiCell" cc="bz" country="Belize" operator="Belize Telemedia Limited (BTL)" status="Operational" @@ -2950,15 +3413,17 @@ 99 bands="CDMA2000 850" brand="SMART" cc="bz" country="Belize" operator="Speednet Communications Limited" status="Operational" 00-99 704 - 01 bands="CDMA 1900 / GSM 900 / UMTS 1900 / LTE 1900" brand="Claro" cc="gt" country="Guatemala" operator="Telecomunicaciones de Guatemala, S.A." status="Operational" - 02 bands="TDMA 800 / GSM 850 / UMTS 850 / LTE 850" brand="Tigo" cc="gt" country="Guatemala" operator="Millicom / Local partners" status="Operational" - 03 bands="CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 1900" brand="movistar" cc="gt" country="Guatemala" operator="Telefónica Móviles Guatemala (Telefónica)" status="Operational" + 01 bands="CDMA 1900 / GSM 900 / UMTS 1900 / LTE 1900 / 5G 3500" brand="Claro" cc="gt" country="Guatemala" operator="Telecomunicaciones de Guatemala, S.A." status="Operational" + 02 bands="TDMA 800 / GSM 850 / UMTS 850 / LTE 850 / 5G 3500" brand="Tigo" cc="gt" country="Guatemala" operator="Millicom / Local partners" status="Operational" + 03 bands="CDMA 1900 / GSM 1900 / UMTS 1900 / LTE 1900" brand="Claro" cc="gt" country="Guatemala" operator="Telecomunicaciones de Guatemala, S.A." status="Operational" + 04 bands="GSM 900" brand="digicel" cc="gt" country="Guatemala" operator="Digicel Group" status="Reserved" + 05 bands="iDEN 800" brand="RED/INTELFON" cc="gt" country="Guatemala" operator="INTELFON Guatemala" status="Operational" 00-99 706 01 bands="GSM 1900 / UMTS 1900" brand="Claro" cc="sv" country="El Salvador" operator="CTE Telecom Personal, S.A. de C.V." status="Operational" 02 bands="GSM 900 / UMTS 900" brand="Digicel" cc="sv" country="El Salvador" operator="Digicel, S.A. de C.V." status="Operational" 03 bands="GSM 850 / UMTS 850 / LTE 850 / LTE 1700" brand="Tigo" cc="sv" country="El Salvador" operator="Telemovil El Salvador S.A." status="Operational" - 04 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1900" brand="movistar" cc="sv" country="El Salvador" operator="Telefónica Móviles El Salvador" status="Operational" + 04 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1900" brand="Movistar" cc="sv" country="El Salvador" operator="Telefónica Móviles El Salvador" status="Operational" 05 bands="iDEN" brand="RED" cc="sv" country="El Salvador" operator="INTELFON, S.A. de C.V." status="Operational" 00-99 708 @@ -2969,140 +3434,158 @@ 000-999 710 21 bands="GSM 1900 / UMTS 850 / LTE 1700" brand="Claro" cc="ni" country="Nicaragua" operator="Empresa Nicaragüense de Telecomunicaciones, S.A. (ENITEL) (América Móvil)" status="Operational" - 30 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1900" brand="movistar" cc="ni" country="Nicaragua" operator="Telefonía Celular de Nicaragua, S.A. (Telefónica, S.A.)" status="Operational" + 300 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1900" brand="Tigo" cc="ni" country="Nicaragua" operator="Telefonía Celular de Nicaragua, S.A." status="Operational" 73 bands="GSM 1900 / UMTS 850" brand="Claro" cc="ni" country="Nicaragua" operator="Servicios de Comunicaciones S.A." status="Operational" - 00-99 712 01 bands="GSM 1800 / UMTS 850 / LTE 1800 / LTE 2600" brand="Kölbi ICE" cc="cr" country="Costa Rica" operator="Instituto Costarricense de Electricidad" status="Operational" 02 bands="GSM 1800 / UMTS 850 / LTE 1800 / LTE 2600" brand="Kölbi ICE" cc="cr" country="Costa Rica" operator="Instituto Costarricense de Electricidad" status="Operational" 03 bands="GSM 1800 / UMTS 2100 / LTE 1800" brand="Claro" cc="cr" country="Costa Rica" operator="Claro CR Telecomunicaciones (Aló)" status="Operational" - 04 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800" brand="movistar" cc="cr" country="Costa Rica" operator="Telefónica Móviles Costa Rica" status="Operational" - 20 bands="MVNO" brand="fullmóvil" cc="cr" country="Costa Rica" operator="Virtualis S.A." status="Not operational" + 04 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800" brand="Liberty" cc="cr" country="Costa Rica" operator="Liberty Latin America" status="Operational" + 20 bands="5G" brand="RACSA" cc="cr" country="Costa Rica" operator="Radiografica Costarricense S.A." 00-99 714 - 01 bands="GSM 850 / UMTS 850 / LTE 700" brand="Cable & Wireless" cc="pa" country="Panama" operator="Cable & Wireless Panama S.A." status="Operational" - 02 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700" brand="movistar" cc="pa" country="Panama" operator="Telefónica Moviles Panama S.A, Bell South Corp. (BSC)" status="Operational" - 020 bands="GSM 850 / 3G 2100 / LTE 700" brand="movistar" cc="pa" country="Panama" operator="Telefónica Móviles de Panama S.A" status="Operational" + 01 bands="GSM 850 / UMTS 850 / LTE 700 / LTE 1900" brand="+Móvil" cc="pa" country="Panama" operator="Cable & Wireless Panama S.A." status="Operational" + 02 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 1900" brand="Tigo" cc="pa" country="Panama" operator="Grupo de Comunicaciones Digitales, S.A." status="Operational" + 020 bands="GSM 850 / LTE 700" brand="Tigo" cc="pa" country="Panama" operator="Grupo de Comunicaciones Digitales, S.A." status="Operational" 03 bands="GSM 1900 / UMTS 1900 / LTE 700 / LTE 1900" brand="Claro" cc="pa" country="Panama" operator="América Móvil" status="Operational" - 04 bands="GSM 1900 / UMTS 1900 / LTE 700 / LTE 1900" brand="Digicel" cc="pa" country="Panama" operator="Digicel Group" status="Operational" + 04 bands="GSM 1900 / UMTS 1900 / LTE 700 / LTE 1900" brand="Digicel" cc="pa" country="Panama" operator="Digicel Group" status="Not operational" + 05 brand="Cable & Wireless" cc="pa" country="Panama" operator="Cable & Wireless Panama S.A." 716 - 06 bands="CDMA2000 850 / GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700" brand="Movistar" cc="pe" country="Peru" operator="Telefónica del Perú S.A.A." status="Operational" + 06 bands="CDMA2000 850 / GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / 5G 3500" brand="Movistar" cc="pe" country="Peru" operator="Telefónica del Perú S.A.A." status="Operational" 07 bands="iDEN" brand="Entel" cc="pe" country="Peru" operator="Entel Perú S.A." status="Operational" - 10 bands="GSM 1900 / UMTS 850 / LTE 700 / LTE 1900 / TD-LTE 3500" brand="Claro" cc="pe" country="Peru" operator="América Móvil Perú" status="Operational" + 10 bands="GSM 1900 / UMTS 850 / LTE 700 / LTE 1900 / TD-LTE 3500 / 5G 3500 / 5G 39000" brand="Claro" cc="pe" country="Peru" operator="América Móvil Perú" status="Operational" 15 bands="GSM 1900 / UMTS 1900 / LTE 900" brand="Bitel" cc="pe" country="Peru" operator="Viettel Peru S.A.C." status="Operational" - 17 bands="UMTS 1900 / LTE 1700 / TD-LTE 2300" brand="Entel" cc="pe" country="Peru" operator="Entel Perú S.A." status="Operational" + 17 bands="UMTS 1900 / LTE 1700 / TD-LTE 2300 / 5G 3500" brand="Entel" cc="pe" country="Peru" operator="Entel Perú S.A." status="Operational" 00-99 722 - 010 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600" brand="Movistar" cc="ar" country="Argentina" operator="Telefónica Móviles Argentina S.A." status="Operational" - 020 bands="iDEN 800" brand="Nextel" cc="ar" country="Argentina" operator="NII Holdings" status="Operational" + 01 brand="Tuenti" cc="ar" country="Argentina" operator="Telefónica Móviles Argentina S.A." status="Operational" + 010 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600 / 5G 3500" brand="Movistar & Tuenti" cc="ar" country="Argentina" operator="Telefónica Móviles Argentina S.A." status="Operational" + 020 bands="iDEN 800" brand="Nextel" cc="ar" country="Argentina" operator="NII Holdings" status="Not operational" 034 brand="Personal" cc="ar" country="Argentina" operator="Telecom Personal S.A." status="Operational" 040 brand="Globalstar" cc="ar" country="Argentina" operator="TE.SA.M Argentina S.A." status="Operational" + 07 brand="Movistar" cc="ar" country="Argentina" operator="Telefónica Móviles Argentina S.A." status="Operational" 070 bands="GSM 1900" brand="Movistar" cc="ar" country="Argentina" operator="Telefónica Móviles Argentina S.A." status="Operational" + 210 bands="LTE" brand="IMOWI" cc="ar" country="Argentina" operator="Cámara de Cooperativas de Telecomunicaciones (CATEL)" status="Operational" 310 bands="GSM 1900" brand="Claro" cc="ar" country="Argentina" operator="AMX Argentina S.A." status="Operational" - 320 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700" brand="Claro" cc="ar" country="Argentina" operator="AMX Argentina S.A." status="Operational" - 330 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700" brand="Claro" cc="ar" country="Argentina" operator="AMX Argentina S.A." status="Operational" - 341 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600" brand="Personal" cc="ar" country="Argentina" operator="Telecom Personal S.A." status="Operational" + 320 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / 5G 3500" brand="Claro" cc="ar" country="Argentina" operator="AMX Argentina S.A." status="Operational" + 330 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / 5G 3500" brand="Claro" cc="ar" country="Argentina" operator="AMX Argentina S.A." status="Operational" + 340 brand="Personal" cc="ar" country="Argentina" operator="Telecom Personal S.A." status="Operational" + 341 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1700 / LTE 2600 / 5G 700 / 5G 2600 / 5G 3500" brand="Personal" cc="ar" country="Argentina" operator="Telecom Personal S.A." status="Operational" 350 bands="GSM 900" brand="PORT-HABLE" cc="ar" country="Argentina" operator="Hutchison Telecommunications Argentina S.A." status="Not operational" - 000-999 724 00 bands="iDEN 850" brand="Nextel" cc="br" country="Brazil" operator="NII Holdings, Inc." status="Not Operational" - 01 bands="MVNO" cc="br" country="Brazil" operator="SISTEER DO BRASIL TELECOMUNICAÇÔES" - 02 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational" - 04 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational" - 05 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 2600" brand="Claro" cc="br" country="Brazil" operator="Claro" status="Operational" - 06 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational" - 10 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational" - 11 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational" + 01 bands="MVNO" cc="br" country="Brazil" operator="SISTEER DO BRASIL TELECOMUNICAÇÔES" status="Not Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational" + 04 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 900 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500" brand="TIM" cc="br" country="Brazil" operator="Telecom Italia Mobile" status="Operational" + 05 bands="GSM 900 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 2300 / 5G 2600 / 5G 3500" brand="Claro" cc="br" country="Brazil" operator="Claro" status="Operational" + 06 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational" + 10 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational" + 11 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2600 / 5G 700 / 5G 1800 / 5G 2300 / 5G 2600 / 5G 3500" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational" + 12 brand="Claro" cc="br" country="Brazil" operator="Claro" + 13 bands="MVNO" brand="NLT" cc="br" country="Brazil" operator="NLT Telecom" status="Operational" 15 bands="GSM 900 / GSM 1800 / UMTS 850" brand="Sercomtel" cc="br" country="Brazil" operator="Sercomtel Celular" status="Operational" 16 bands="GSM 1800 / UMTS 2100" brand="Brasil Telecom GSM" cc="br" country="Brazil" operator="Brasil Telecom GSM" status="Not operational" - 17 bands="MVNO" brand="Correios" cc="br" country="Brazil" operator="Correios Celular" status="Operational" + 17 bands="MVNO" brand="Surf Telecom" cc="br" country="Brazil" operator="pt" status="Operational" 18 bands="MVNO" brand="datora" cc="br" country="Brazil" operator="Datora (Vodafone)" status="Operational" + 21 bands="LTE 2600" brand="LIGUE" cc="br" country="Brazil" operator="Ligue Telecom" status="Operational" 23 bands="GSM 850 / GSM 1800 / UMTS 850 / UMTS 2100 / LTE 1800 / LTE 2600" brand="Vivo" cc="br" country="Brazil" operator="Telefônica Brasil S.A." status="Operational" 24 cc="br" country="Brazil" operator="Amazonia Celular" 28 brand="No name" cc="br" country="Brazil" status="Operational" - 30 brand="Oi" cc="br" country="Brazil" operator="TNL PCS Oi" - 31 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600" brand="Oi" cc="br" country="Brazil" operator="TNL PCS Oi" status="Operational" - 32 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800" brand="Algar Telecom" cc="br" country="Brazil" operator="Algar Telecom S.A." status="Operational" - 33 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800" brand="Algar Telecom" cc="br" country="Brazil" operator="Algar Telecom S.A." status="Operational" - 34 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800" brand="Algar Telecom" cc="br" country="Brazil" operator="Algar Telecom S.A." status="Operational" + 29 bands="5G 700 / 5G 3500" brand="Unifique" cc="br" country="Brazil" operator="Unifique Telecomunicações S/A" status="Operational" + 30 brand="Oi" cc="br" country="Brazil" operator="TNL PCS Oi" status="Not operational" + 31 bands="GSM 1800 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600 / 5G 2100" brand="Oi" cc="br" country="Brazil" operator="TNL PCS Oi" status="Not operational" + 32 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2300 / 5G 2300" brand="Algar Telecom" cc="br" country="Brazil" operator="Algar Telecom S.A." status="Operational" + 33 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2300 / 5G 2300" brand="Algar Telecom" cc="br" country="Brazil" operator="Algar Telecom S.A." status="Operational" + 34 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / LTE 2300 / 5G 2300" brand="Algar Telecom" cc="br" country="Brazil" operator="Algar Telecom S.A." status="Operational" 35 cc="br" country="Brazil" operator="Telcom Telecomunicações" - 36 cc="br" country="Brazil" operator="Options Telecomunicações" + 36 bands="MVNO" cc="br" country="Brazil" operator="Options Telecomunicações" status="Not Operational" 37 brand="aeiou" cc="br" country="Brazil" operator="Unicel" status="Not operational" - 38 brand="Claro" cc="br" country="Brazil" operator="Claro" - 39 bands="UMTS 2100 / LTE 1800 / LTE 2100" brand="Nextel" cc="br" country="Brazil" operator="NII Holdings, Inc." status="Operational" - 54 bands="MVNO" brand="Conecta" cc="br" country="Brazil" operator="PORTO SEGURO TELECOMUNICAÇÔES" status="Operational" + 38 bands="GSM 1900" brand="Claro" cc="br" country="Brazil" operator="Claro" status="Operational" + 39 bands="UMTS 2100 / LTE 1800 / LTE 2100" brand="Nextel" cc="br" country="Brazil" operator="NII Holdings, Inc." status="Not Operational" + 40 bands="MVNO" brand="Telecall" cc="br" country="Brazil" operator="Telexperts Telecomunicações S.A" status="Operational" + 54 bands="MVNO" brand="Conecta" cc="br" country="Brazil" operator="PORTO SEGURO TELECOMUNICAÇÔES" status="Not Operational" 99 brand="Local" cc="br" country="Brazil" status="Operational" 00-99 730 - 01 bands="GSM 1900 / UMTS 1900 / LTE 700 / LTE 2600" brand="entel" cc="cl" country="Chile" operator="Entel Telefonía Móvil S.A." status="Operational" - 02 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 2600" brand="movistar" cc="cl" country="Chile" operator="Telefónica Móvil de Chile" status="Operational" - 03 bands="GSM 1900 / UMTS 1900 / LTE 700 / LTE 2600" brand="CLARO CL" cc="cl" country="Chile" operator="Claro Chile S.A." status="Operational" - 04 bands="iDEN 800" brand="WOM" cc="cl" country="Chile" operator="Novator Partners" status="Operational" + 01 bands="GSM 850 / GSM 1900 / UMTS 1900 / LTE 700 / LTE 1900 / LTE 2600 / 5G 3500" brand="Entel" cc="cl" country="Chile" operator="Entel Telefonía Móvil S.A." status="Operational" + 02 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 700 / LTE 1900 / LTE 2600 / 5G 3500" brand="Movistar" cc="cl" country="Chile" operator="Telefónica Móvil de Chile" status="Operational" + 03 bands="GSM 850 / GSM 1900 / UMTS 1700 / UMTS 1900 / LTE 700 / LTE 850 / LTE 1700 / LTE 1900 / LTE 2600 / 5G 3500" brand="Claro" cc="cl" country="Chile" operator="Claro Chile S.A." status="Operational" + 04 bands="iDEN 800" brand="WOM" cc="cl" country="Chile" operator="Novator Partners" status="Not operational" 05 cc="cl" country="Chile" operator="Multikom S.A." 06 bands="MVNO" brand="Telsur" cc="cl" country="Chile" operator="Blue Two Chile S.A." status="Operational" - 07 brand="movistar" cc="cl" country="Chile" operator="Telefónica Móvil de Chile" + 07 brand="Movistar" cc="cl" country="Chile" operator="Telefónica Móvil de Chile" 08 bands="MVNO" brand="VTR Móvil" cc="cl" country="Chile" operator="VTR S.A." status="Operational" - 09 bands="UMTS 1700 / LTE 1700" brand="WOM" cc="cl" country="Chile" operator="Novator Partners" status="Operational" - 10 bands="GSM 1900 / UMTS 1900" brand="entel" cc="cl" country="Chile" operator="Entel Telefonía Móvil S.A." status="Operational" + 09 bands="UMTS 1700 / LTE 1700 / 5G 3500" brand="WOM" cc="cl" country="Chile" operator="Novator Partners" status="Operational" + 10 bands="LTE 3500" brand="Entel" cc="cl" country="Chile" operator="Entel Telefonía Móvil S.A." status="Operational" 11 cc="cl" country="Chile" operator="Celupago S.A." - 12 bands="MVNO" brand="Wanderers Móvil" cc="cl" country="Chile" operator="Telestar Móvil S.A." status="Operational" + 12 bands="MVNO" brand="Wanderers Móvil" cc="cl" country="Chile" operator="Telestar Móvil S.A." status="Not operational" 13 bands="MVNO" brand="Virgin Mobile" cc="cl" country="Chile" operator="Tribe Mobile Chile SPA" status="Operational" 14 cc="cl" country="Chile" operator="Netline Telefónica Móvil Ltda" 15 bands="MVNO" cc="cl" country="Chile" operator="Cibeles Telecom S.A." 16 bands="MVNO" cc="cl" country="Chile" operator="Nomade Telecomunicaciones S.A." 17 cc="cl" country="Chile" operator="COMPATEL Chile Limitada" 18 cc="cl" country="Chile" operator="Empresas Bunker S.A." - 19 bands="MVNO" brand="móvil Falabella" cc="cl" country="Chile" operator="Sociedad Falabella Móvil SPA" status="Operational" + 19 bands="MVNO" brand="móvil Falabella" cc="cl" country="Chile" operator="Sociedad Falabella Móvil SPA" status="Not operational" 20 cc="cl" country="Chile" operator="Inversiones Santa Fe Limitada" + 21 brand="Entel" cc="cl" country="Chile" operator="WILL S.A." status="Operational" 22 cc="cl" country="Chile" operator="Cellplus SpA" - 23 cc="cl" country="Chile" operator="Claro Servicios Empresariales S. A." - 26 cc="cl" country="Chile" operator="WILL S.A." + 23 brand="Claro" cc="cl" country="Chile" operator="Claro Servicios Empresariales S. A." status="Operational" + 24 brand="Claro" cc="cl" country="Chile" operator="Claro Chile SpA" status="Operational" + 26 brand="Entel" cc="cl" country="Chile" operator="WILL S.A." status="Operational" 27 bands="MVNO" cc="cl" country="Chile" operator="Cibeles Telecom S.A." + 29 bands="LTE 1900" brand="Entel" cc="cl" country="Chile" operator="Entel PCS Telecomunicaciones S.A." status="Operational" 99 bands="GSM 1900 / UMTS 1900" brand="Will" cc="cl" country="Chile" operator="WILL Telefonía" status="Operational" 00-99 732 - 001 brand="movistar" cc="co" country="Colombia" operator="Colombia Telecomunicaciones S.A. ESP" status="Operational" - 002 brand="Edatel" cc="co" country="Colombia" operator="Edatel S.A. ESP" + 001 brand="Movistar" cc="co" country="Colombia" operator="Colombia Telecomunicaciones S.A. ESP" status="Operational" + 002 brand="Edatel" cc="co" country="Colombia" operator="Edatel S.A. ESP" status="Not operational" 003 cc="co" country="Colombia" operator="LLEIDA S.A.S." 004 cc="co" country="Colombia" operator="COMPATEL COLOMBIA SAS" - 020 bands="LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Une EPM Telecomunicaciones S.A. E.S.P." status="Operational" + 020 bands="LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Une EPM Telecomunicaciones S.A. E.S.P." status="Not operational" 099 bands="GSM 900" brand="EMCALI" cc="co" country="Colombia" operator="Empresas Municipales de Cali" status="Operational" - 101 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600" brand="Claro" cc="co" country="Colombia" operator="Comunicacion Celular S.A. (Comcel)" status="Operational" + 100 brand="Claro" cc="co" country="Colombia" operator="Comunicacion Celular S.A. (Comcel)" + 101 bands="UMTS 850 / UMTS 1900 / LTE 1700 / LTE 2600 / 5G 3500" brand="Claro" cc="co" country="Colombia" operator="Comunicacion Celular S.A. (Comcel)" status="Operational" 102 bands="GSM 850 / GSM 1900 / CDMA 850" cc="co" country="Colombia" operator="Bellsouth Colombia" status="Not operational" - 103 bands="GSM 1900 / UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational" - 111 bands="GSM 1900 / UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational" - 123 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 850 / LTE 1700 / LTE 1900" brand="movistar" cc="co" country="Colombia" operator="Colombia Telecomunicaciones S.A. ESP" status="Operational" - 130 bands="iDEN / UMTS 1700 / LTE 1700" brand="AVANTEL" cc="co" country="Colombia" operator="Avantel S.A.S" status="Operational" + 103 bands="UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600 / 5G 3500" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational" + 111 bands="UMTS 2100 / LTE 700 / LTE 1700 / LTE 2600 / 5G 3500" brand="Tigo" cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" status="Operational" + 123 bands="GSM 850 / GSM 1900 / UMTS 850 / UMTS 1900 / LTE 850 / LTE 1700 / LTE 1900 / 5G 3500" brand="Movistar" cc="co" country="Colombia" operator="Colombia Telecomunicaciones S.A. ESP" status="Operational" + 124 brand="Movistar" cc="co" country="Colombia" operator="Colombia Telecomunicaciones S.A. ESP" + 130 bands="UMTS 1700 / LTE 1700" brand="AVANTEL" cc="co" country="Colombia" operator="Avantel S.A.S" status="Not operational" 142 cc="co" country="Colombia" operator="Une EPM Telecomunicaciones S.A. E.S.P." 154 bands="MVNO" brand="Virgin Mobile" cc="co" country="Colombia" operator="Virgin Mobile Colombia S.A.S." status="Operational" 165 cc="co" country="Colombia" operator="Colombia Móvil S.A. ESP" - 176 bands="TD-LTE 2600" cc="co" country="Colombia" operator="DirecTV Colombia Ltda" status="Operational" + 176 bands="LTE 2600 / TD-5G 2600" cc="co" country="Colombia" operator="DirecTV Colombia Ltda" status="Operational" 187 bands="LTE 1700" brand="eTb" cc="co" country="Colombia" operator="Empresa de Telecomunicaciones de Bogotá S.A. ESP" status="Operational" 199 cc="co" country="Colombia" operator="SUMA Movil SAS" - 208 cc="co" country="Colombia" operator="UFF Movil SAS" status="Not operational" + 208 bands="LTE 1700" cc="co" country="Colombia" operator="UFF Movil SAS" status="Not operational" 210 cc="co" country="Colombia" operator="Hablame Colombia SAS ESP" 220 cc="co" country="Colombia" operator="Libre Tecnologias SAS" - 230 cc="co" country="Colombia" operator="Setroc Mobile Group SAS" + 230 bands="MVNO" cc="co" country="Colombia" operator="Setroc Mobile Group SAS" 240 cc="co" country="Colombia" operator="Logistica Flash Colombia SAS" status="Operational" - 666 brand="Claro" cc="co" country="Colombia" operator="Comunicacion Celular S.A. (Comcel)" + 250 cc="co" country="Colombia" operator="Plintron Colombia SAS" + 360 bands="LTE 700 / LTE 2600" brand="WOM" cc="co" country="Colombia" operator="Partners Telecom Colombia SAS" status="Operational" + 666 brand="Claro" cc="co" country="Colombia" operator="Comunicacion Celular S.A. (Comcel)" status="Not operational" 000-999 734 01 bands="GSM 900" brand="Digitel" cc="ve" country="Venezuela" operator="Corporacion Digitel C.A." status="Not operational" - 02 bands="GSM 900 / GSM 1800 / UMTS 900 / LTE 1800" brand="Digitel GSM" cc="ve" country="Venezuela" operator="Corporacion Digitel C.A." status="Operational" + 02 bands="UMTS 900 / LTE 1800" brand="Digitel" cc="ve" country="Venezuela" operator="Corporacion Digitel C.A." status="Operational" 03 bands="LTE 2600" brand="DirecTV" cc="ve" country="Venezuela" operator="Galaxy Entertainment de Venezuela C.A." - 04 bands="GSM 850 / GSM 1900 / UMTS 1900 / LTE 1700" brand="movistar" cc="ve" country="Venezuela" operator="Telefónica Móviles Venezuela" status="Operational" - 06 bands="CDMA2000 850 / GSM 850 / UMTS 1900 / LTE 1700" brand="Movilnet" cc="ve" country="Venezuela" operator="Telecomunicaciones Movilnet" status="Operational" + 04 bands="GSM 850 / GSM 1900 / UMTS 1900 / LTE 1700" brand="Movistar" cc="ve" country="Venezuela" operator="Telefónica Móviles Venezuela" status="Operational" + 06 bands="GSM 850 / UMTS 1900 / LTE 1700" brand="Movilnet" cc="ve" country="Venezuela" operator="Telecomunicaciones Movilnet" status="Operational" + 08 cc="ve" country="Venezuela" operator="PATRIACELL C.A." 00-99 736 01 bands="GSM 1900 / UMTS 1900 / LTE 1700" brand="Viva" cc="bo" country="Bolivia" operator="Nuevatel PCS De Bolivia SA" status="Operational" - 02 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700" brand="Entel" cc="bo" country="Bolivia" operator="Entel SA" status="Operational" + 02 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 700 / 5G 3500" brand="Entel" cc="bo" country="Bolivia" operator="Entel SA" status="Operational" 03 bands="GSM 850 / UMTS 850 / UMTS 1900 / LTE 700" brand="Tigo" cc="bo" country="Bolivia" operator="Telefónica Celular De Bolivia S.A" status="Operational" 00-99 738 - 002 bands="GSM 900 / GSM 1800 / UMTS 850 / LTE 700" brand="GT&T Cellink Plus" cc="gy" country="Guyana" operator="Guyana Telephone & Telegraph Co." status="Operational" + 00 bands="WiMAX / LTE 700 / 5G" brand="E-Networks" cc="gy" country="Guyana" operator="E-Networks Inc." status="Operational" + 002 bands="GSM 900 / UMTS 850 / LTE 700" brand="GT&T Cellink Plus" cc="gy" country="Guyana" operator="Guyana Telephone & Telegraph Co." status="Operational" 003 bands="TD-LTE" cc="gy" country="Guyana" operator="Quark Communications Inc." status="Operational" - 01 bands="GSM 900 / UMTS 850" brand="Digicel" cc="gy" country="Guyana" operator="U-Mobile (Cellular) Inc." status="Operational" + 01 bands="GSM 900 / UMTS 850 / LTE 700" brand="Digicel" cc="gy" country="Guyana" operator="U-Mobile (Cellular) Inc." status="Operational" + 040 brand="E-Networks" cc="gy" country="Guyana" operator="E-Networks Inc." 05 cc="gy" country="Guyana" operator="eGovernment Unit, Ministry of the Presidency" 740 00 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1900" brand="Movistar" cc="ec" country="Ecuador" operator="Otecel S.A." status="Operational" @@ -3111,7 +3594,7 @@ 03 bands="MVNO" brand="Tuenti" cc="ec" country="Ecuador" operator="Otecel S.A." status="Operational" 00-99 742 - 04 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" country="'French Guiana (France) - GF'" operator="Free Caraïbe" status="Upcoming" + 04 bands="UMTS 900 / UMTS 2100 / LTE 1800 / LTE 2100 / LTE 2600" brand="Free" cc="gf" country="French Guiana (France)" operator="Free Caraïbe" 00-99 744 01 bands="GSM 1900 / UMTS 900 / UMTS 1900 / LTE 1700" brand="VOX" cc="py" country="Paraguay" operator="Hola Paraguay S.A." status="Operational" @@ -3122,102 +3605,131 @@ 06 bands="GSM 1800 / LTE 1700" brand="Copaco" cc="py" country="Paraguay" operator="Copaco S.A." status="Operational" 00-99 746 - 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800" brand="Telesur" cc="sr" country="Suriname" operator="Telecommunications Company Suriname (Telesur)" status="Operational" - 03 bands="GSM 900 / GSM 1800 / UMTS 850" brand="Digicel" cc="sr" country="Suriname" operator="Digicel Group Limited" status="Operational" + 02 bands="GSM 900 / GSM 1800 / UMTS 2100 / LTE 700 / LTE 1800 / 5G 3700" brand="Telesur" cc="sr" country="Suriname" operator="Telecommunications Company Suriname (Telesur)" status="Operational" + 03 bands="GSM 900 / GSM 1800 / UMTS 850 / LTE 1800" brand="Digicel" cc="sr" country="Suriname" operator="Digicel Group Limited" status="Operational" 04 bands="GSM 900 / UMTS" brand="Digicel" cc="sr" country="Suriname" operator="Digicel Group Limited" status="Not operational" 05 bands="CDMA 450" brand="Telesur" cc="sr" country="Suriname" operator="Telecommunications Company Suriname (Telesur)" 00-99 748 00 bands="TDMA" brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Not operational" - 01 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1700 / 5G 28000" brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Operational" + 01 bands="GSM 1800 / UMTS 850 / UMTS 2100 / LTE 700 / LTE 1700 / 5G 3500 / 5G 28000" brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Operational" 03 brand="Antel" cc="uy" country="Uruguay" operator="Administración Nacional de Telecomunicaciones" status="Not operational" - 07 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1900" brand="Movistar" cc="uy" country="Uruguay" operator="Telefónica Móviles Uruguay" status="Operational" - 10 bands="GSM 1900 / UMTS 1900 / LTE 1700" brand="Claro" cc="uy" country="Uruguay" operator="AM Wireless Uruguay S.A." status="Operational" + 07 bands="GSM 850 / GSM 1900 / UMTS 850 / LTE 1900 / 5G 3500" brand="Movistar" cc="uy" country="Uruguay" operator="Telefónica Móviles Uruguay" status="Operational" + 10 bands="GSM 1900 / UMTS 1900 / LTE 1700 / 5G 3500" brand="Claro" cc="uy" country="Uruguay" operator="AM Wireless Uruguay S.A." status="Operational" + 15 cc="uy" country="Uruguay" operator="ENALUR S.A." 00-99 750 001 bands="GSM 900 / LTE 1800 / WiMAX 2400 / WiMAX 3500" brand="Sure" cc="fk" country="Falkland Islands (United Kingdom)" operator="Sure South Atlantic Ltd." status="Operational" 000-999 901 - 01 bands="Satellite" brand="ICO" country="International operators" operator="ICO Satellite Management" status="Not operational" - 02 country="International operators" operator="Unassigned" status="Returned spare" + 01 bands="MVNO" country="International operators" operator="Webbing" + 02 country="International operators" operator="GlobalmatiX AG" 03 bands="Satellite" brand="Iridium" country="International operators" status="Operational" - 04 bands="Satellite" country="International operators" operator="Unassigned" status="Returned spare" + 04 country="International operators" operator="BBIX Singapore Pte. Ltd." 05 bands="Satellite" country="International operators" operator="Thuraya RMSS Network" status="Operational" 06 bands="Satellite" country="International operators" operator="Thuraya Satellite Telecommunications Company" status="Operational" - 07 country="International operators" operator="Unassigned" status="Returned spare" - 08 country="International operators" operator="Unassigned" status="Returned spare" - 09 country="International operators" operator="Unassigned" status="Returned spare" - 10 bands="Satellite" brand="ACeS" country="International operators" status="Not operational" + 07 country="International operators" operator="NTT Ltd." + 08 country="International operators" operator="SpaceX" + 09 country="International operators" operator="China Telecommunications Corporation" + 10 bands="Satellite" country="International operators" operator="Omnispace LLC" 11 bands="Satellite" brand="Inmarsat" country="International operators" status="Operational" 12 bands="GSM 1800 / LTE 800" brand="Telenor" country="International operators" operator="Telenor Maritime AS" status="Operational" - 13 bands="GSM 1800" brand="GSM.AQ" country="International operators" operator="BebbiCell AG" status="Operational" + 13 bands="GSM 1800" brand="GSM.AQ" country="International operators" operator="BebbiCell AG" status="Not operational" 14 bands="GSM 1800" brand="AeroMobile" country="International operators" operator="AeroMobile AS" status="Operational" - 15 bands="GSM 1800" brand="OnAir" country="International operators" operator="OnAir Switzerland Sarl" status="Operational" + 15 bands="GSM 1800" brand="OnAir" country="International operators" operator="SITAONAIR" status="Not operational" 16 brand="Cisco Jasper" country="International operators" operator="Cisco Systems, Inc." status="Operational" 17 bands="GSM 1800" brand="Navitas" country="International operators" operator="JT Group Limited" status="Not operational" - 18 bands="GSM 900 / GSM 1900 / CDMA2000 1900 / UMTS 1900" brand="Cellular @Sea" country="International operators" operator="AT&T Mobility" status="Operational" - 19 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Vodafone Malta Maritime" country="International operators" operator="Monaco Telecom" status="Operational" - 20 country="International operators" operator="Intermatica" - 21 bands="GSM 1800" country="International operators" operator="Wins Limited" status="Operational" - 22 country="International operators" operator="MediaLincc Ltd" - 23 country="International operators" operator="Unassigned" status="Returned spare" - 24 brand="iNum" country="International operators" operator="Voxbone" - 25 country="International operators" operator="Unassigned" status="Returned spare" + 18 bands="GSM 900 / GSM 1900 / CDMA2000 1900 / UMTS 1900 / LTE 700" brand="WMS" country="International operators" operator="Wireless Maritime Services, LLC" status="Operational" + 19 bands="GSM 900 / GSM 1800 / UMTS 2100" brand="Epic Maritime" country="International operators" operator="Monaco Telecom" status="Operational" + 20 country="International operators" operator="Intermatica" status="Not operational" + 21 bands="GSM 1800" country="International operators" operator="Wins Limited" status="Not operational" + 22 country="International operators" operator="MediaLincc Ltd" status="Not operational" + 23 bands="5G" country="International operators" operator="Bloxtel Inc." + 24 brand="iNum" country="International operators" operator="Voxbone" status="Not operational" + 25 bands="MVNO" country="International operators" operator="Datora Mobile Telecomunicações SA" 26 bands="GSM 1800 / GSM 1900" brand="TIM@sea" country="International operators" operator="Telecom Italia Mobile" status="Operational" 27 bands="GSM 1800" brand="OnMarine" country="International operators" operator="Monaco Telecom" status="Operational" 28 bands="Roaming SIM" brand="Vodafone" country="International operators" operator="GDSP (Vodafone's Global Data Service Platform)" status="Operational" - 29 brand="Telenor" country="International operators" - 30 country="International operators" operator="Unassigned" status="Returned spare" + 29 brand="Telenor" country="International operators" status="Not operational" + 30 bands="Satellite 5G" country="International operators" operator="OQ Technology" 31 bands="GSM 900" brand="Orange" country="International operators" operator="Orange S.A." status="Operational" - 32 bands="GSM 900" brand="Sky High" country="International operators" operator="MegaFon" status="Operational" - 33 country="International operators" operator="Smart Communications" + 32 bands="GSM 900" brand="Sky High" country="International operators" operator="MegaFon" status="Not operational" + 33 country="International operators" operator="Smart Communications" status="Not operational" 34 bands="MVNO" country="International operators" operator="tyntec GmbH" - 35 bands="GSM 850" country="International operators" operator="Globecomm Network Services" status="Operational" - 36 bands="GSM 1800" country="International operators" operator="Azerfon" status="Operational" + 35 bands="GSM 850" country="International operators" operator="Globecomm Network Services" status="Not operational" + 36 bands="GSM 1800" country="International operators" operator="Azerfon" status="Not operational" 37 bands="MVNO" country="International operators" operator="Transatel" status="Operational" - 38 bands="MVNO" country="International operators" operator="Multiregional TransitTelecom (MTT)" status="Operational" + 38 bands="MVNO" country="International operators" operator="Multiregional TransitTelecom (MTT)" status="Not operational" 39 bands="MVNO" country="International operators" operator="MTX Connect Ltd" status="Operational" - 40 bands="MVNO" brand="1nce GmbH" country="International operators" operator="Deutsche Telekom AG" status="Operational" + 40 bands="MVNO" brand="1NCE" country="International operators" operator="Deutsche Telekom AG" status="Operational" 41 bands="MVNO" country="International operators" operator="One Network B.V." status="Operational" - 42 country="International operators" operator="DCN Hub ehf" + 42 country="International operators" operator="IMC Island Ehf" 43 bands="MVNO" country="International operators" operator="EMnify GmbH" status="Operational" 44 country="International operators" operator="AT&T Inc." 45 country="International operators" operator="Advanced Wireless Network Company Limited" 46 bands="MVNO" country="International operators" operator="Telecom26 AG" status="Operational" - 47 country="International operators" operator="Ooredoo" + 47 country="International operators" operator="Ooredoo" status="Not operational" 48 brand="Com4" country="International operators" operator="Communication for Devices in Sweden AB" - 49 country="International operators" operator="Zain Kuwait" + 49 brand="Zain" country="International operators" operator="Mobile Telecommunications Company K.S.C.P." 50 bands="Satellite" country="International operators" operator="EchoStar Mobile" - 51 country="International operators" operator="VisionNG" + 51 country="International operators" operator="VisionNG" status="Not operational" 52 country="International operators" operator="Manx Telecom Trading Ltd." - 53 bands="LTE 2100" brand="European Aviation Network" country="International operators" operator="Deutsche Telekom AG" status="Operational" + 53 bands="LTE 2100" brand="European Aviation Network" country="International operators" operator="Inmarsat Ltd." status="Operational" 54 country="International operators" operator="Teleena Holding B.V." - 55 country="International operators" operator="Beezz Communication Solutions Ltd." + 55 country="International operators" operator="Beezz Communication Solutions Ltd." status="Not operational" 56 brand="ETSI" country="International operators" operator="European Telecommunications Standards Institute" - 57 country="International operators" operator="SAP" + 57 country="International operators" operator="SAP" status="Not operational" 58 brand="BICS" country="International operators" operator="Belgacom ICS SA" - 59 country="International operators" operator="MessageBird B.V." + 59 country="International operators" operator="Bird B.V." 60 country="International operators" operator="OneWeb" 61 country="International operators" operator="MTN Management Services" - 62 country="International operators" operator="Twilio Inc." status="Operational" - 63 country="International operators" operator="GloTel B.V." + 62 country="International operators" operator="KORE Wireless" status="Operational" + 63 bands="LTE / 5G" country="International operators" operator="Beamlink, Inc." 64 country="International operators" operator="Syniverse Technologies, LLC" - 65 bands="MVNO" country="International operators" operator="Plintron Global Technology Solutions Pty Ltd" - 66 country="International operators" operator="Limitless Mobile LLC" + 65 bands="MVNO" country="International operators" operator="Plintron Global Technology Solutions Pty Ltd" status="Not operational" + 66 bands="LTE" country="International operators" operator="Limitless Mobile LLC" status="Operational" 67 bands="MVNO" country="International operators" operator="1NCE GmbH" status="Operational" 68 country="International operators" operator="Maersk Line A/S" 69 country="International operators" operator="Legos" - 70 bands="MVNO" country="International operators" operator="Clementvale Baltic OÜ" + 70 bands="MVNO" country="International operators" operator="Clementvale Baltic OÜ" status="Not operational" 71 country="International operators" operator="Tampnet AS" - 88 country="International operators" operator="UN Office for the Coordination of Humanitarian Affairs (OCHA)" + 72 country="International operators" operator="Tele2 Sverige Aktiebolag" status="Not operational" + 73 country="International operators" operator="Cubic Telecom Limited" + 74 country="International operators" operator="Etisalat" + 75 bands="MVNO" country="International operators" operator="Giesecke+Devrient" status="Operational" + 76 country="International operators" operator="A1 Telekom Austria AG" + 77 country="International operators" operator="Bouygues Telecom" + 78 country="International operators" operator="Telecom Italia Sparkle S.p.A." + 79 country="International operators" operator="Nokia Corporation" + 80 bands="MVNO" country="International operators" operator="Flo Live Limited" + 81 bands="MVNO" country="International operators" operator="Airnity SAS" + 82 bands="MVNO" country="International operators" operator="Eseye Limited" + 83 country="International operators" operator="iBasis Netherlands BV" + 84 country="International operators" operator="Telefónica Móviles España, S.A. Unipersonal" + 85 country="International operators" operator="Telefónica Germany GmbH & Co. OHG" + 86 country="International operators" operator="BJT Partners SAS" + 87 country="International operators" operator="Cisco Systems, Inc." + 88 country="International operators" operator="Bondio Limited" + 89 bands="MVNO" country="International operators" operator="DIDWW Ireland Limited" status="Operational" + 90 bands="MVNO" country="International operators" operator="Truphone Limited" status="Not operational" + 91 country="International operators" operator="World Mobile Group Limited" + 92 country="International operators" operator="Phonegroup SA" + 93 country="International operators" operator="SkyFive AG" + 94 bands="Satellite" country="International operators" operator="Intelsat US LLC" + 95 country="International operators" operator="HMD Global Oy" status="Not operational" + 96 country="International operators" operator="KORE Wireless" + 97 bands="Satellite" country="International operators" operator="Satelio IoT Services S.L." + 98 bands="Satellite 5G 1600" country="International operators" operator="Skylo" status="Operational" + 99 bands="MVNO" country="International operators" operator="Athalos Global Services BV" status="Not operational" 00-99 902 - 01 bands="LTE" country="International operators" operator="MulteFire Allicance" status="Operational" - 72 country="International operators" operator="Tele2 IoT" - 73 country="International operators" operator="Cubic Telecom Limited" + 01 bands="LTE" country="International operators" operator="MulteFire Alliance" status="Operational" 00-99 991 - 01 country="International operators" operator="World's Global Telecom" + 01 country="International operators" operator="World's Global Telecom" status="Not operational" + 02 bands="5G" brand="5G Croco" country="International operators" operator="Orange S.A." status="Not operational" + 03 country="International operators" operator="Halys SAS" status="Not operational" + 04 bands="Satellite" country="International operators" operator="E-Space Inc." 00-99 995 01 bands="GSM 900" brand="FonePlus" cc="io" country="British Indian Ocean Territory (United Kingdom)" operator="Sure (Diego Garcia) Ltd" status="Operational" diff --git a/stdnum/imsi.py b/stdnum/imsi.py index 8cc9fc07..a04eff54 100644 --- a/stdnum/imsi.py +++ b/stdnum/imsi.py @@ -1,7 +1,7 @@ # imsi.py - functions for handling International Mobile Subscriber Identity # (IMSI) numbers # -# Copyright (C) 2011-2015 Arthur de Jong +# Copyright (C) 2011-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IMSI (International Mobile Subscriber Identity). @@ -35,31 +33,33 @@ ('310', '150', '123456789') >>> info('460001234567890')['mcc'] '460' ->>> str(info('460001234567890')['country']) +>>> info('460001234567890')['country'] 'China' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the IMSI number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def split(number): +def split(number: str) -> tuple[str, ...]: """Split the specified IMSI into a Mobile Country Code (MCC), a Mobile Network Code (MNC), a Mobile Station Identification Number (MSIN).""" - from stdnum import numdb # clean up number number = compact(number) # split the number + from stdnum import numdb return tuple(numdb.get('imsi').split(number)) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid IMSI.""" number = compact(number) if not isdigits(number): @@ -71,12 +71,12 @@ def validate(number): return number -def info(number): +def info(number: str) -> dict[str, str]: """Return a dictionary of data about the supplied number.""" - from stdnum import numdb # clean up number number = compact(number) # split the number + from stdnum import numdb info = dict(number=number) mcc_info, mnc_info, msin_info = numdb.get('imsi').info(number) info['mcc'] = mcc_info[0] @@ -88,7 +88,7 @@ def info(number): return info -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid IMSI.""" try: return bool(validate(number)) diff --git a/stdnum/in_/__init__.py b/stdnum/in_/__init__.py index 5226bd01..263fc164 100644 --- a/stdnum/in_/__init__.py +++ b/stdnum/in_/__init__.py @@ -14,8 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Indian numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.in_ import gstin as vat # noqa: F401 diff --git a/stdnum/in_/aadhaar.py b/stdnum/in_/aadhaar.py index eb57b95c..6ca8aadc 100644 --- a/stdnum/in_/aadhaar.py +++ b/stdnum/in_/aadhaar.py @@ -1,6 +1,7 @@ -# aadhaar.py - functions for handling Indian Aadhaar numbers +# aadhaar.py - functions for handling Indian personal identity numbers # # Copyright (C) 2017 Srikanth L +# Copyright (C) 2021 Gaurav Chauhan # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,19 +14,23 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . -"""Aadhaar (Indian digital resident personal identity number) +"""Aadhaar (Indian personal identity number). -Aadhaar is a 12 digit unique identity number issued to all Indian residents. -The number is assigned by the Unique Identification Authority of India -(UIDAI). +Aadhaar is a 12 digit identification number that can be obtained by Indian +citizens, non-residents passport holders of India and resident foreign +nationals. The number is issued by the Unique Identification Authority of +India (UIDAI). + +Aadhaar is made up of 12 digits where the last digits is a check digit +calculated using the Verhoeff algorithm. The numbers are generated in a +random, non-repeating sequence and do not begin with 0 or 1. More information: * https://en.wikipedia.org/wiki/Aadhaar +* https://web.archive.org/web/20140611025606/http://uidai.gov.in/UID_PDF/Working_Papers/A_UID_Numbering_Scheme.pdf >>> validate('234123412346') '234123412346' @@ -41,12 +46,18 @@ Traceback (most recent call last): ... InvalidLength: ... +>>> validate('222222222222') # number cannot be a palindrome +Traceback (most recent call last): + ... +InvalidFormat: ... >>> format('234123412346') '2341 2341 2346' >>> mask('234123412346') 'XXXX XXXX 2346' """ +from __future__ import annotations + import re from stdnum import verhoeff @@ -58,13 +69,13 @@ """Regular expression used to check syntax of Aadhaar numbers.""" -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid Aadhaar number. This checks the length, formatting and check digit.""" number = compact(number) @@ -72,11 +83,13 @@ def validate(number): raise InvalidLength() if not aadhaar_re.match(number): raise InvalidFormat() + if number == number[::-1]: + raise InvalidFormat() # Aadhaar cannot be a palindrome verhoeff.validate(number) return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid Aadhaar number. This checks the length, formatting and check digit.""" try: @@ -85,14 +98,14 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[:4], number[4:8], number[8:])) -def mask(number): - """Masks the first 8 digits as per MeitY guidelines for securing identity - information and Sensitive personal data.""" +def mask(number: str) -> str: + """Masks the first 8 digits as per Ministry of Electronics and + Information Technology (MeitY) guidelines.""" number = compact(number) return 'XXXX XXXX ' + number[-4:] diff --git a/stdnum/in_/epic.py b/stdnum/in_/epic.py new file mode 100644 index 00000000..dfc3e293 --- /dev/null +++ b/stdnum/in_/epic.py @@ -0,0 +1,89 @@ +# epic.py - functions for handling Indian voter identification numbers +# +# Copyright (C) 2021 Gaurav Chauhan +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""EPIC (Electoral Photo Identity Card, Indian Voter ID). + +The Electoral Photo Identity Card (EPIC) is an identity document issued by +the Election Commission of India (ECI) only to the India citizens who have +reached the age of 18. + +Each EPIC contains an unique 10 digit alphanumeric identifier known as EPIC +number or Voter ID number. + +Every EPIC number begins with a Functional Unique Serial Number (FUSN), a 3 +letter unique identifier for each Assembly Constituency. FUSN is followed by +a 6 digit serial number and 1 check digit of the serial number calculated +using Luhn algorithm. + +More information: + +* https://en.wikipedia.org/wiki/Voter_ID_(India) +* https://www.kotaksecurities.com/ksweb/voter-id/serial-number-in-elctoral-roll + +>>> validate('WKH1186253') +'WKH1186253' +>>> validate('WKH118624') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('1231186253') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> validate('WKH1186263') +Traceback (most recent call last): + ... +InvalidChecksum: ... +""" + +from __future__ import annotations + +import re + +from stdnum import luhn +from stdnum.exceptions import * +from stdnum.util import clean + + +_EPIC_RE = re.compile(r'^[A-Z]{3}[0-9]{7}$') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').upper().strip() + + +def validate(number: str) -> str: + """Check if the number provided is a valid EPIC number. This checks the + length, formatting and checksum.""" + number = compact(number) + if len(number) != 10: + raise InvalidLength + if not _EPIC_RE.match(number): + raise InvalidFormat() + luhn.validate(number[3:]) + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid EPIC number. This checks the + length, formatting and checksum.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/in_/gstin.py b/stdnum/in_/gstin.py new file mode 100644 index 00000000..15fd15e4 --- /dev/null +++ b/stdnum/in_/gstin.py @@ -0,0 +1,161 @@ +# gstin.py - functions for handling Indian VAT numbers +# +# Copyright (C) 2021 Gaurav Chauhan +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""GSTIN (Goods and Services Tax identification number, Indian VAT number). + +The Goods and Services Tax identification number (GSTIN) is a 15 digit unique +identifier assigned to all business entities in India registered under the +Goods and Services Tax (GST) Act, 2017. + +Each GSTIN begins with a 2 digit state code, the next 10 characters are the +holder's PAN, the 13th character is an alphanumeric digit that represents the +number of GSTIN registrations made in a state or union territory for same the +PAN, the 14th character is 'Z' and the last character is an alphanumeric +check digit calculated using Luhn mod 36 algorithm. + +More information: + +* https://bajajfinserv.in/insights/what-is-goods-and-service-tax-identification-number +* https://ddvat.gov.in/docs/List%20of%20State%20Code.pdf +* https://en.wikipedia.org/wiki/Goods_and_Services_Tax_(India) + +>>> validate('27AAPFU0939F1ZV') +'27AAPFU0939F1ZV' +>>> validate('27AAPFU0939F1Z') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('369296450896540') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> validate('27AAPFU0939F1AA') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> validate('27AAPFU0939F1ZO') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> to_pan('27AAPFU0939F1ZV') +'AAPFU0939F' +>>> info('27AAPFU0939F1ZV')['state'] +'Maharashtra' +""" + +from __future__ import annotations + +import re + +from stdnum import luhn +from stdnum.exceptions import * +from stdnum.in_ import pan +from stdnum.util import clean + + +_GSTIN_RE = re.compile(r'^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][0-9A-Z]{3}$') + +_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' + +_STATE_CODES = { + '01': 'Jammu and Kashmir', + '02': 'Himachal Pradesh', + '03': 'Punjab', + '04': 'Chandigarh', + '05': 'Uttarakhand', + '06': 'Haryana', + '07': 'Delhi', + '08': 'Rajasthan', + '09': 'Uttar Pradesh', + '10': 'Bihar', + '11': 'Sikkim', + '12': 'Arunachal Pradesh', + '13': 'Nagaland', + '14': 'Manipur', + '15': 'Mizoram', + '16': 'Tripura', + '17': 'Meghalaya', + '18': 'Assam', + '19': 'West Bengal', + '20': 'Jharkhand', + '21': 'Orissa', + '22': 'Chattisgarh', + '23': 'Madhya Pradesh', + '24': 'Gujarat', + '25': 'Daman and Diu', + '26': 'Dadar and Nagar Haveli', + '27': 'Maharashtra', + '28': 'Andhra Pradesh', + '29': 'Karnataka', + '30': 'Goa', + '31': 'Lakshadweep', + '32': 'Kerala', + '33': 'Tamil Nadu', + '34': 'Puducherry', + '35': 'Anadaman and Nicobar Islands', + '36': 'Telangana', + '37': 'Andhra Pradesh (New)', +} + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').upper().strip() + + +def validate(number: str) -> str: + """Check if the number provided is a valid GSTIN. This checks the length, + formatting and check digit.""" + number = compact(number) + if len(number) != 15: + raise InvalidLength() + if not _GSTIN_RE.match(number): + raise InvalidFormat() + if number[:2] not in _STATE_CODES or number[12] == '0' or number[13] != 'Z': + raise InvalidComponent() + pan.validate(number[2:12]) + luhn.validate(number, _ALPHABET) + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid GSTIN. This checks the length, + formatting and check digit.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def to_pan(number: str) -> str: + """Convert the number to a PAN.""" + number = compact(number) + return number[2:12] + + +def info(number: str) -> dict[str, str | int | None]: + """Provide information that can be decoded locally from GSTIN (without + API).""" + number = validate(number) + return { + 'state': _STATE_CODES.get(number[:2]), + 'pan': number[2:12], + 'holder_type': pan.info(number[2:12])['holder_type'], + 'initial': number[6], + 'registration_count': _ALPHABET.index(number[12]), + } diff --git a/stdnum/in_/pan.py b/stdnum/in_/pan.py index 483e3375..00eeffc0 100644 --- a/stdnum/in_/pan.py +++ b/stdnum/in_/pan.py @@ -1,6 +1,7 @@ -# pan.py - functions for handling Indian Permanent Account number (PAN) +# pan.py - functions for handling Indian income tax numbers # # Copyright (C) 2017 Srikanth Lakshmanan +# Copyright (C) 2021 Gaurav Chauhan # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,26 +14,28 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PAN (Permanent Account Number, Indian income tax identifier). The Permanent Account Number (PAN) is a 10 digit alphanumeric identifier for -Indian individuals, families and corporates for income tax purposes. +Indian individuals, families and corporates for income tax purposes. It is +also issued to foreign nationals subject to a valid visa. -The number is built up of 5 characters, 4 numbers and 1 character. The fourth -character indicates the type of holder of the number and the last character -is computed by an undocumented checksum algorithm. +PAN is made up of 5 letters, 4 digits and 1 alphabetic check digit. The 4th +character indicates the type of holder, the 5th character is either 1st +letter of the holder's name or holder's surname in case of 'Individual' PAN, +next 4 digits are serial numbers running from 0001 to 9999 and the last +character is a check digit computed by an undocumented checksum algorithm. More information: * https://en.wikipedia.org/wiki/Permanent_account_number +* https://incometaxindia.gov.in/tutorials/1.permanent%20account%20number%20(pan).pdf >>> validate('ACUPA7085R') 'ACUPA7085R' ->>> validate('234123412347') +>>> validate('ACUPA7085RR') Traceback (most recent call last): ... InvalidLength: ... @@ -44,12 +47,18 @@ Traceback (most recent call last): ... InvalidComponent: ... +>>> validate('ACUPA0000R') # serial number should not be '0000' +Traceback (most recent call last): + ... +InvalidComponent: ... >>> mask('AAPPV8261K') 'AAPPVXXXXK' ->>> info('AAPPV8261K')['card_holder_type'] +>>> info('AAPPV8261K')['holder_type'] 'Individual' """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -58,62 +67,66 @@ _pan_re = re.compile(r'^[A-Z]{5}[0-9]{4}[A-Z]$') +_pan_holder_types = { + 'A': 'Association of Persons (AOP)', + 'B': 'Body of Individuals (BOI)', + 'C': 'Company', + 'F': 'Firm/Limited Liability Partnership', + 'G': 'Government Agency', + 'H': 'Hindu Undivided Family (HUF)', + 'L': 'Local Authority', + 'J': 'Artificial Juridical Person', + 'P': 'Individual', + 'T': 'Trust', + 'K': 'Krish (Trust Krish)', +} +# Type 'K' may have been discontinued, not listed on Income Text Dept website. + -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip() -def validate(number): - """Check if the number provided is a valid PAN. This checks the - length and formatting.""" +def validate(number: str) -> str: + """Check if the number provided is a valid PAN. This checks the length + and formatting.""" number = compact(number) if len(number) != 10: raise InvalidLength() if not _pan_re.match(number): raise InvalidFormat() info(number) # used to check 4th digit + if number[5:9] == '0000': + raise InvalidComponent() return number -def is_valid(number): - """Check if the number provided is a valid PAN. This checks the - length and formatting.""" +def is_valid(number: str) -> bool: + """Check if the number provided is a valid PAN. This checks the length + and formatting.""" try: return bool(validate(number)) except ValidationError: return False -_card_holder_types = { - 'A': 'Association of Persons (AOP)', - 'B': 'Body of Individuals (BOI)', - 'C': 'Company', - 'F': 'Firm', - 'G': 'Government', - 'H': 'HUF (Hindu Undivided Family)', - 'L': 'Local Authority', - 'J': 'Artificial Juridical Person', - 'P': 'Individual', - 'T': 'Trust (AOP)', - 'K': 'Krish (Trust Krish)', -} - - -def info(number): +def info(number: str) -> dict[str, str]: """Provide information that can be decoded from the PAN.""" number = compact(number) - card_holder_type = _card_holder_types.get(number[3]) - if not card_holder_type: + holder_type = _pan_holder_types.get(number[3]) + if not holder_type: raise InvalidComponent() return { - 'card_holder_type': card_holder_type, + 'holder_type': holder_type, + 'card_holder_type': holder_type, # for backwards compatibility 'initial': number[4], } -def mask(number): - """Mask the PAN as per CBDT masking standard.""" +def mask(number: str) -> str: + """Mask the PAN as per Central Board of Direct Taxes (CBDT) masking + standard.""" number = compact(number) return number[:5] + 'XXXX' + number[-1:] diff --git a/stdnum/in_/vid.py b/stdnum/in_/vid.py new file mode 100644 index 00000000..0db693b7 --- /dev/null +++ b/stdnum/in_/vid.py @@ -0,0 +1,109 @@ +# vid.py - functions for handling Indian personal virtual identity numbers +# +# Copyright (C) 2024 Atul Deolekar +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""VID (Indian personal virtual identity number). + +VID is a temporary, revocable 16-digit random number mapped with the Aadhaar number. +VID is used in lieu of Aadhaar number whenever authentication or e-KYC services +are performed. + +VID is made up of 16 digits where the last digits is a check digit +calculated using the Verhoeff algorithm. The numbers are generated in a +random, non-repeating sequence and do not begin with 0 or 1. + +More information: + +* https://uidai.gov.in/en/contact-support/have-any-question/284-faqs/aadhaar-online-services/virtual-id-vid.html +* https://uidai.gov.in/images/resource/UIDAI_Circular_11012018.pdf + +>>> validate('2341234123412341') +'2341234123412341' +>>> validate('2341234123412342') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('1341234123412341') # number should not start with 0 or 1 +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> validate('13412341234123') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('2222222222222222') # number cannot be a palindrome +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('2341234123412342') +'2341 2341 2341 2342' +>>> mask('2341234123412342') +'XXXX XXXX XXXX 2342' +""" + +from __future__ import annotations + +import re + +from stdnum import verhoeff +from stdnum.exceptions import * +from stdnum.util import clean + + +_vid_re = re.compile(r'^[2-9][0-9]{15}$') +"""Regular expression used to check syntax of VID numbers.""" + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').strip() + + +def validate(number: str) -> str: + """Check if the number provided is a valid VID number. This checks + the length, formatting and check digit.""" + number = compact(number) + if len(number) != 16: + raise InvalidLength() + if not _vid_re.match(number): + raise InvalidFormat() + if number == number[::-1]: + raise InvalidFormat() # VID cannot be a palindrome + verhoeff.validate(number) + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid VID number. This checks + the length, formatting and check digit.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return ' '.join((number[:4], number[4:8], number[8:12], number[12:])) + + +def mask(number: str) -> str: + """Masks the first 8 digits as per Ministry of Electronics and + Information Technology (MeitY) guidelines.""" + number = compact(number) + return 'XXXX XXXX XXXX ' + number[-4:] diff --git a/stdnum/is_/__init__.py b/stdnum/is_/__init__.py index ef061478..99b63945 100644 --- a/stdnum/is_/__init__.py +++ b/stdnum/is_/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Icelandic numbers.""" +from __future__ import annotations + # provide aliases from stdnum.is_ import kennitala as personalid # noqa: F401 from stdnum.is_ import vsk as vat # noqa: F401 diff --git a/stdnum/is_/kennitala.py b/stdnum/is_/kennitala.py index e8109157..31030123 100644 --- a/stdnum/is_/kennitala.py +++ b/stdnum/is_/kennitala.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Kennitala (Icelandic personal and organisation identity code). @@ -40,6 +38,8 @@ '120174-3399' """ +from __future__ import annotations + import datetime import re @@ -58,20 +58,20 @@ r'(?P[09])$') -def compact(number): +def compact(number: str) -> str: """Convert the kennitala to the minimal representation. This strips surrounding whitespace and separation dash, and converts it to upper case.""" return clean(number, '-').upper().strip() -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (3, 2, 7, 6, 5, 4, 3, 2, 1, 0) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid kennitala. It checks the format, whether a valid date is given and whether the check digit is correct.""" @@ -100,7 +100,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid HETU. It checks the format, whether a valid date is given and whether the check digit is correct.""" try: @@ -109,7 +109,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:6] + '-' + number[6:] diff --git a/stdnum/is_/vsk.py b/stdnum/is_/vsk.py index 6fd6ddd8..76dd2a89 100644 --- a/stdnum/is_/vsk.py +++ b/stdnum/is_/vsk.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VSK number (Virðisaukaskattsnúmer, Icelandic VAT number). @@ -30,11 +28,13 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' ').upper().strip() @@ -43,7 +43,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid VAT number. This checks the length and formatting.""" number = compact(number) @@ -54,7 +54,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid VAT number. This checks the length and formatting.""" try: diff --git a/stdnum/isan.py b/stdnum/isan.py index 4f982182..3062b5cc 100644 --- a/stdnum/isan.py +++ b/stdnum/isan.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISAN (International Standard Audiovisual Number). @@ -47,12 +45,14 @@ '' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_37_36 from stdnum.util import clean -def split(number): +def split(number: str) -> tuple[str, str, str, str, str]: """Split the number into a root, an episode or part, a check digit a version and another check digit. If any of the parts are missing an empty string is returned.""" @@ -65,17 +65,17 @@ def split(number): return number[0:12], number[12:16], number[16:], '', '' -def compact(number, strip_check_digits=True): +def compact(number: str, strip_check_digits: bool = True) -> str: """Convert the ISAN to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace. The check digits are removed by default.""" - number = list(split(number)) + parts = list(split(number)) if strip_check_digits: - number[2] = number[4] = '' - return ''.join(number) + parts[2] = parts[4] = '' + return ''.join(parts) -def validate(number, strip_check_digits=False, add_check_digits=False): +def validate(number: str, strip_check_digits: bool = False, add_check_digits: bool = False) -> str: """Check if the number provided is a valid ISAN. If check digits are present in the number they are validated. If strip_check_digits is True any existing check digits will be removed (after checking). If @@ -106,7 +106,7 @@ def validate(number, strip_check_digits=False, add_check_digits=False): return root + episode + check1 + version + check2 -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ISAN. If check digits are present in the number they are validated.""" try: @@ -115,7 +115,12 @@ def is_valid(number): return False -def format(number, separator='-', strip_check_digits=False, add_check_digits=True): +def format( + number: str, + separator: str = '-', + strip_check_digits: bool = False, + add_check_digits: bool = True, +) -> str: """Reformat the number to the standard presentation format. If add_check_digits is True the check digit will be added if they are not present yet. If both strip_check_digits and add_check_digits are True the @@ -127,30 +132,30 @@ def format(number, separator='-', strip_check_digits=False, add_check_digits=Tru check1 = mod_37_36.calc_check_digit(root + episode) if add_check_digits and not check2 and version: check2 = mod_37_36.calc_check_digit(root + episode + version) - number = [root[i:i + 4] for i in range(0, 12, 4)] + [episode] + parts = [root[i:i + 4] for i in range(0, 12, 4)] + [episode] if check1: - number.append(check1) + parts.append(check1) if version: - number.extend((version[0:4], version[4:])) + parts.extend((version[0:4], version[4:])) if check2: - number.append(check2) - return separator.join(number) + parts.append(check2) + return separator.join(parts) -def to_binary(number): +def to_binary(number: str) -> bytes: """Convert the number to its binary representation (without the check digits).""" from binascii import a2b_hex return a2b_hex(compact(number, strip_check_digits=True)) -def to_xml(number): +def to_xml(number: str) -> str: """Return the XML form of the ISAN as a string.""" number = format(number, strip_check_digits=True, add_check_digits=False) return '' % ( number[0:14], number[15:19], number[20:]) -def to_urn(number): +def to_urn(number: str) -> str: """Return the URN representation of the ISAN.""" return 'URN:ISAN:' + format(number, add_check_digits=True) diff --git a/stdnum/isbn.dat b/stdnum/isbn.dat index 9a4eb2fc..25a2ba83 100644 --- a/stdnum/isbn.dat +++ b/stdnum/isbn.dat @@ -1,35 +1,42 @@ # generated from RangeMessage.xml, downloaded from # https://www.isbn-international.org/export_rangemessage.xml -# file serial 788740c8-ebcc-43eb-8de8-f6a711889b42 -# file date Fri, 7 Aug 2020 13:02:30 CEST +# file serial 6e5a8502-5e3f-4baa-9b1a-ff835dd18851 +# file date Sun, 4 Jan 2026 16:49:25 GMT 978 0-5,600-649,65-65,7-7,80-94,950-989,9900-9989,99900-99999 0 agency="English language" 00-19,200-227,2280-2289,229-368,3690-3699,370-638,6390-6397 6398000-6399999,640-644,6450000-6459999,646-647,6480000-6489999,649-654 - 6550-6559,656-699,7000-8499,85000-89999,900000-949999,9500000-9999999 + 6550-6559,656-699,7000-8499,85000-89999,900000-900370,9003710-9003719 + 900372-949999,9500000-9999999 1 agency="English language" - 000-009,01-02,030-034,0350-0399,04-06,0700-0999,100-397,3980-5499 - 55000-64999,6500-6799,68000-68599,6860-7139,714-716,7170-7319 - 7320000-7399999,74000-77499,7750000-7753999,77540-77639,7764000-7764999 - 77650-77699,7770000-7776999,77770-78999,7900-7999,80000-80049 - 80050-80499,80500-83799,8380000-8384999,83850-86719,8672-8675 - 86760-86979,869800-915999,9160000-9165059,916506-972999,9730-9877 - 987800-991149,9911500-9911999,991200-998989,9989900-9999999 + 000-009,01-02,030-034,0350-0399,040-047,0480-0499,05-05,0670000-0699999 + 0700-0999,100-397,3980-5499,55000-64999,6500-6799,68000-68599,6860-7139 + 714-716,7170-7319,7320000-7399999,74000-76199,7620-7634,7635000-7649999 + 76500-77499,7750000-7753999,77540-77639,7764000-7764999,77650-77699 + 7770000-7782999,77830-78999,7900-7999,80000-80049,80050-80499 + 80500-83799,8380000-8384999,83850-86719,8672-8675,86760-86979 + 869800-915999,9160000-9165059,916506-916869,9168700-9169079 + 916908-919163,9191640-9195649,919565-919599,9196000-9196549 + 919655-972999,9730-9877,987800-991149,9911500-9911999,991200-998989 + 9989900-9999999 2 agency="French language" - 00-19,200-349,35000-39999,400-489,490000-494999,495-495,4960-4966 - 49670-49699,497-699,7000-8399,84000-89999,900000-919799,91980-91980 - 919810-919942,9199430-9199689,919969-949999,9500000-9999999 + 00-19,200-349,35000-39999,400-486,487000-494999,495-495,4960-4966 + 49670-49699,497-527,5280-5299,530-699,7000-8399,84000-89999 + 900000-919799,91980-91980,919810-919942,9199430-9199689,919969-949999 + 9500000-9999999 3 agency="German language" - 00-02,030-033,0340-0369,03700-03999,04-19,200-699,7000-8499,85000-89999 - 900000-949999,9500000-9539999,95400-96999,9700000-9849999,98500-99999 + 00-02,030-033,0340-0369,03700-03999,04-19,200-389,39-39,400-688 + 68900-69499,6950-8499,85000-89999,900000-949999,9500000-9539999 + 95400-96999,9700000-9849999,98500-99959,9996-9999 4 agency="Japan" 00-19,200-699,7000-8499,85000-89999,900000-949999,9500000-9999999 5 agency="former U.S.S.R" - 00000-00499,0050-0099,01-19,200-420,4210-4299,430-430,4310-4399,440-440 - 4410-4499,450-603,6040000-6049999,605-699,7000-8499,85000-89999 - 900000-909999,91000-91999,9200-9299,93000-94999,9500000-9500999 - 9501-9799,98000-98999,9900000-9909999,9910-9999 + 00000-00499,0050-0099,01-19,200-361,3620-3623,36240-36299,363-420 + 4210-4299,430-430,4310-4399,440-440,4410-4499,450-603,6040000-6049999 + 605-699,7000-8499,85000-89999,900000-909999,91000-91999,9200-9299 + 93000-94999,9500000-9500999,9501-9799,98000-98999,9900000-9909999 + 9910-9999 600 agency="Iran" 00-09,100-499,5000-8999,90000-98679,9868-9929,993-995,99600-99999 601 agency="Kazakhstan" @@ -40,21 +47,22 @@ 603 agency="Saudi Arabia" 00-04,05-49,500-799,8000-8999,90000-99999 604 agency="Vietnam" - 0-4,50-89,900-979,9800-9999 - 605 agency="Turkey" - 00-02,030-039,04-09,100-199,2000-2399,240-399,4000-5999,60000-74999 - 7500-7999,80000-89999,9000-9999 + 0-2,300-399,40-46,470-497,4980-4999,50-89,900-979,9800-9999 + 605 agency="Türkiye" + 00-02,030-039,04-05,06000-06999,07-09,100-199,2000-2399,240-399 + 4000-5999,60000-74999,7500-7999,80000-89999,9000-9999 606 agency="Romania" - 000-089,09-49,500-799,8000-9099,910-919,92000-96499,9650-9749,975-999 + 000-099,10-49,500-799,8000-9099,910-919,92000-95999,9600-9749,975-999 607 agency="Mexico" - 00-39,400-749,7500-9499,95000-99999 + 00-25,2600-2649,26500-26999,27-39,400-588,5890-5929,59300-59999,600-691 + 69200-69999,700-749,7500-9499,95000-99999 608 agency="North Macedonia" 0-0,10-19,200-449,4500-6499,65000-69999,7-9 609 agency="Lithuania" 00-39,400-799,8000-9499,95000-99999 611 agency="Thailand" 612 agency="Peru" - 00-29,300-399,4000-4499,45000-49999,5000-5149 + 00-29,300-399,4000-4499,45000-49999,5000-5299,99000-99999 613 agency="Mauritius" 0-9 614 agency="Lebanon" @@ -74,30 +82,50 @@ 621 agency="Philippines" 00-29,400-599,8000-8999,95000-99999 622 agency="Iran" - 00-08,200-299,6000-7499,95000-99999 + 00-10,110-129,1300-1799,200-459,4600-8749,87500-99999 623 agency="Indonesia" - 00-09,200-299,6500-7999,90000-99999 + 00-10,110-524,5250-8799,88000-99999 624 agency="Sri Lanka" - 00-04,200-249,5000-5999,95000-99999 - 625 agency="Turkey" - 00-00,400-449,7000-7999 + 00-04,200-249,4850-6899,91000-99999 + 625 agency="Türkiye" + 00-01,320-442,44300-44499,445-449,5500-7793,77940-77949,7795-8749 + 92500-99999 + 626 agency="Taiwan" + 00-04,300-499,7000-7999,92500-99999 + 627 agency="Pakistan" + 28-31,500-534,7400-7999,94500-95149 + 628 agency="Colombia" + 00-09,500-549,7500-8499,95000-99999 + 629 agency="Malaysia" + 00-02,455-499,7500-7999,94000-99999 + 630 agency="Romania" + 300-399,6500-6849,95000-99999 + 631 agency="Argentina" + 00-09,300-399,6500-7499,90000-99999 + 632 agency="Vietnam" + 00-11,600-679 + 633 agency="Egypt" + 00-01,300-349,8250-8999,99500-99999 + 634 agency="Indonesia" + 00-04,200-349,7000-7999,96000-99999 65 agency="Brazil" - 00-01,250-299,300-302,5000-5129,5500-5999,80000-81824,86000-89999 - 900000-902449,990000-999999 + 00-01,250-299,300-302,5000-6199,80000-81824,82650-89999,900000-902449 + 978500-999999 7 agency="China, People's Republic" 00-09,100-499,5000-7999,80000-89999,900000-999999 80 agency="former Czechoslovakia" - 00-19,200-699,7000-8499,85000-89999,900000-998999,99900-99999 + 00-19,200-529,53000-54999,550-689,69000-69999,7000-8499,85000-89999 + 900000-998999,99900-99999 81 agency="India" - 00-19,200-699,7000-8499,85000-89999,900000-999999 + 00-18,19000-19999,200-689,69000-69999,7000-8499,85000-89999,900000-999999 82 agency="Norway" 00-19,200-689,690000-699999,7000-8999,90000-98999,990000-999999 83 agency="Poland" 00-19,200-599,60000-69999,7000-8499,85000-89999,900000-999999 84 agency="Spain" - 00-11,120000-129999,1300-1399,140-149,15000-19999,200-699,7000-8499 - 85000-89999,9000-9199,920000-923999,92400-92999,930000-949999 - 95000-96999,9700-9999 + 00-09,10000-10499,1050-1199,120000-129999,1300-1399,140-149,15000-19999 + 200-699,7000-8499,85000-89999,9000-9199,920000-923999,92400-92999 + 930000-949999,95000-96999,9700-9999 85 agency="Brazil" 00-19,200-454,455000-455299,45530-45599,456-528,52900-53199,5320-5339 534-539,54000-54029,54030-54039,540400-540499,54050-54089,540900-540999 @@ -120,18 +148,40 @@ 92 agency="International NGO Publishers and EU Organizations" 0-5,60-79,800-899,9000-9499,95000-98999,990000-999999 93 agency="India" - 00-09,100-499,5000-7999,80000-94999,950000-999999 + 00-09,100-469,47000-47999,48000-49999,5000-7999,80000-95999,960000-999999 94 agency="Netherlands" - 000-599,6000-8999,90000-99999 + 000-599,6000-6387,638800-638809,63881-63881,638820-638839,63884-63885 + 638860-638869,63887-63889,6389-6395,639600-639609,63961-63962 + 639630-639639,63964-63964,639650-639659,63966-63969,6397-6399 + 640000-640009,64001-64004,640050-640059,64006-64006,640070-640089 + 64009-64009,6401-6406,640700-640739,64074-64074,640750-640759 + 64076-64077,640780-640799,6408-6419,64200-64201,642020-642029 + 64203-64203,642040-642049,64205-64206,642070-642079,64208-64208 + 642090-642099,6421-6432,64330-64331,643320-643329,64333-64333 + 643340-643359,64336-64336,643370-643379,64338-64339,6434-6435 + 643600-643609,64361-64363,643640-643659,64366-64366,643670-643679 + 64368-64369,6437-6443,644400-644409,64441-64441,644420-644429 + 64443-64443,644440-644449,64445-64446,644470-644489,64449-64449 + 6445-6450,64510-64512,645130-645139,64514-64515,645160-645199,6452-6458 + 645900-645909,64591-64592,645930-645949,64595-64596,645970-645989 + 64599-64599,6460-6465,646600-646609,64661-64662,646630-646659 + 64666-64666,646670-646689,64669-64669,6467-6474,64750-64751 + 647520-647539,64754-64754,647550-647559,64756-64757,647580-647589 + 64759-64759,6476-6476,647700-647708,64771-64771,647723-647729 + 64773-64773,647740-647769,64777-64779,647800-647809,64781-64781 + 647820-647829,64783-64786,647870-647879,64788-64789,6479-6493 + 649400-649409,64941-64942,649430-649449,64945-64946,649470-649479 + 64948-64948,649490-649499,6495-6497,64980-64980,649810-649829 + 64983-64984,649850-649869,64987-64987,649880-649899,6499-8999,90000-99999 950 agency="Argentina" 00-49,500-899,9000-9899,99000-99999 951 agency="Finland" 0-1,20-54,550-889,8900-9499,95000-99999 952 agency="Finland" - 00-19,200-499,5000-5999,60-65,6600-6699,67000-69999,7000-7999,80-94 - 9500-9899,99000-99999 + 00-18,19500-19999,200-499,5000-5999,60-64,65000-65999,6600-6699 + 67000-69999,7000-7999,80-94,9500-9899,99000-99999 953 agency="Croatia" - 0-0,10-14,150-479,48000-49999,500-500,50100-50999,51-54,55000-59999 + 0-0,10-14,150-459,46000-49999,500-500,50100-50999,51-54,55000-59999 6000-9499,95000-99999 954 agency="Bulgaria" 00-28,2900-2999,300-799,8000-8999,90000-92999,9300-9999 @@ -140,12 +190,12 @@ 41000-44999,4500-4999,50000-54999,550-710,71100-71499,7150-9499 95000-99999 956 agency="Chile" - 00-08,09000-09999,10-19,200-599,6000-6999,7000-9999 + 00-07,08000-08499,09000-09999,10-19,200-599,6000-6999,7000-9999 957 agency="Taiwan" 00-02,0300-0499,05-19,2000-2099,21-27,28000-30999,31-43,440-819 8200-9699,97000-99999 958 agency="Colombia" - 00-48,490-509,5100-5199,52000-53999,5400-5599,56000-59999,600-799 + 00-49,500-509,5100-5199,52000-53999,5400-5599,56000-59999,600-799 8000-9499,95000-99999 959 agency="Cuba" 00-19,200-699,7000-8499,85000-99999 @@ -153,7 +203,7 @@ 00-19,200-659,6600-6899,690-699,7000-8499,85000-92999,93-93,9400-9799 98000-99999 961 agency="Slovenia" - 00-19,200-599,6000-8999,90000-95999 + 00-19,200-599,6000-8999,90000-97999 962 agency="Hong Kong, China" 00-19,200-699,7000-8499,85000-86999,8700-8999,900-999 963 agency="Hungary" @@ -166,12 +216,12 @@ 00-12,130-139,14-14,1500-1699,170-199,2000-2789,279-289,2900-2999 300-699,7000-8999,90000-90999,910-949,95000-97999,980-999 967 agency="Malaysia" - 00-00,0100-0999,10000-19999,2000-2499,250-254,2900-2999,300-499 - 5000-5999,60-89,900-989,9900-9989,99900-99999 + 0000-0999,10000-19999,2000-2499,250-254,25500-26999,2700-2799,2800-2999 + 300-499,5000-5999,60-89,900-989,9900-9989,99900-99999 968 agency="Mexico" 01-39,400-499,5000-7999,800-899,9000-9999 969 agency="Pakistan" - 0-1,20-22,23000-23999,24-39,400-749,7500-9999 + 0-1,20-20,210-219,2200-2299,23000-23999,24-39,400-749,7500-9999 970 agency="Mexico" 01-59,600-899,9000-9099,91000-96999,9700-9999 971 agency="Philippines" @@ -184,61 +234,81 @@ 95000-99999 974 agency="Thailand" 00-19,200-699,7000-8499,85000-89999,90000-94999,9500-9999 - 975 agency="Turkey" + 975 agency="Türkiye" 00000-01999,02-23,2400-2499,250-599,6000-9199,92000-98999,990-999 976 agency="Caribbean Community" 0-3,40-59,600-799,8000-9499,95000-99999 977 agency="Egypt" - 00-19,200-499,5000-6999,700-849,85000-89999,90-98,990-999 + 00-19,200-499,5000-6999,700-849,85000-87399,8740-8899,890-894,8950-8999 + 90-95,9600-9699,970-999 978 agency="Nigeria" - 000-199,2000-2999,30000-79999,8000-8999,900-999 + 000-199,2000-2999,30000-67999,68-68,690-699,765-799,8000-8999,900-999 979 agency="Indonesia" 000-099,1000-1499,15000-19999,20-29,3000-3999,400-799,8000-9499 95000-99999 980 agency="Venezuela" 00-19,200-599,6000-9999 981 agency="Singapore" - 00-16,17000-17999,18-19,200-299,3000-3099,310-399,4000-9999 + 00-16,17000-17999,18-19,200-299,3000-3099,310-399,4000-5999,92-99 982 agency="South Pacific" 00-09,100-699,70-89,9000-9799,98000-99999 983 agency="Malaysia" 00-01,020-199,2000-3999,40000-44999,45-49,50-79,800-899,9000-9899 99000-99999 984 agency="Bangladesh" - 00-39,400-799,8000-8999,90000-99999 + 00-21,220-224,2250-2599,26-28,29000-29999,30-38,3900-3999,400-799 + 8000-8999,90000-99999 985 agency="Belarus" 00-39,400-599,6000-8799,880-899,90000-99999 986 agency="Taiwan" - 00-11,120-539,5400-7999,80000-99999 + 00-05,06000-06999,0700-0799,08-11,120-539,5400-7999,80000-99999 987 agency="Argentina" - 00-09,1000-1999,20000-29999,30-35,3600-3999,4000-4199,42-43,4400-4499 - 45000-48999,4900-4999,500-829,8300-8499,85-89,9000-9499,95000-99999 + 00-09,1000-1999,20000-29999,30-35,3600-4199,42-43,4400-4499,45000-48999 + 4900-4999,500-824,8250-8279,82800-82999,8300-8499,85-88,8900-9499 + 95000-99999 988 agency="Hong Kong, China" - 00-11,12000-19999,200-739,74000-76999,77000-79999,8000-9699,97000-99999 + 00-11,12000-19999,200-699,70000-79999,8000-9699,97000-99999 989 agency="Portugal" - 0-1,20-53,54000-54999,550-799,8000-9499,95000-99999 + 0-0,20-34,35000-36999,37-48,49000-49999,50-52,53000-54999,550-799 + 8000-9499,95000-99999 + 9906 agency="Tajikistan" + 20-20,700-724,9900-9999 + 9907 agency="Ecuador" + 0-0,50-64,800-874 + 9908 agency="Estonia" + 0-1,50-69,825-899,9700-9999 + 9909 agency="Tunisia" + 00-19,750-849,9800-9999 + 9910 agency="Uzbekistan" + 01-15,225-299,5000-5499,550-799,8000-9999 + 9911 agency="Montenegro" + 20-24,550-749,9500-9999 + 9912 agency="Tanzania" + 40-44,750-799,9800-9999 + 9913 agency="Uganda" + 00-09,600-709,9500-9999 9914 agency="Kenya" - 40-44,700-749,9850-9999 + 30-55,700-799,9350-9999 9915 agency="Uruguay" 40-59,650-799,9300-9999 9916 agency="Estonia" - 0-0,10-39,4-4,600-749,9500-9999 + 0-0,10-39,4-5,600-789,79-91,9200-9399,94-94,9500-9999 9917 agency="Bolivia" - 0-0,30-34,600-699,9800-9999 + 0-0,30-34,600-699,9625-9999 9918 agency="Malta" 0-0,20-29,600-799,9500-9999 9919 agency="Mongolia" - 20-27,500-599,9500-9999 + 0-0,20-29,500-599,9000-9999 9920 agency="Morocco" - 35-39,550-799,9000-9999 + 200-229,23-42,430-799,8550-9999 9921 agency="Kuwait" 0-0,30-39,700-899,9700-9999 9922 agency="Iraq" - 20-29,600-799,9000-9999 + 20-29,600-799,8050-9999 9923 agency="Jordan" - 0-0,10-49,700-899,9700-9999 + 0-0,10-69,700-899,9400-9999 9924 agency="Cambodia" - 30-39,500-649,9000-9999 + 28-39,500-659,8950-9999 9925 agency="Cyprus" 0-2,30-54,550-734,7350-9999 9926 agency="Bosnia and Herzegovina" @@ -246,17 +316,17 @@ 9927 agency="Qatar" 00-09,100-399,4000-4999 9928 agency="Albania" - 00-09,100-399,4000-4999 + 00-09,100-399,4000-4999,800-899,90-99 9929 agency="Guatemala" 0-3,40-54,550-799,8000-9999 9930 agency="Costa Rica" 00-49,500-939,9400-9999 9931 agency="Algeria" - 00-29,300-899,9000-9999 + 00-23,240-899,9000-9999 9932 agency="Lao People's Democratic Republic" 00-39,400-849,8500-9999 9933 agency="Syria" - 0-0,10-39,400-899,9000-9999 + 0-0,10-39,400-869,87-89,9000-9999 9934 agency="Latvia" 0-0,10-49,500-799,8000-9999 9935 agency="Iceland" @@ -266,18 +336,18 @@ 9937 agency="Nepal" 0-2,30-49,500-799,8000-9999 9938 agency="Tunisia" - 00-79,800-949,9500-9999 + 00-79,800-949,9500-9749,975-990,9910-9999 9939 agency="Armenia" - 0-4,50-79,800-899,9000-9799,98-99 + 0-3,40-47,480-499,50-79,800-899,9000-9599,960-979,98-99 9940 agency="Montenegro" 0-1,20-49,500-839,84-86,8700-9999 9941 agency="Georgia" 0-0,10-39,400-799,8-8,9000-9999 9942 agency="Ecuador" - 00-74,750-849,8500-8999,900-984,9850-9999 + 00-55,560-699,7000-7499,750-849,8500-8999,900-984,9850-9999 9943 agency="Uzbekistan" 00-29,300-399,4000-9749,975-999 - 9944 agency="Turkey" + 9944 agency="Türkiye" 0000-0999,100-499,5000-5999,60-69,700-799,80-89,900-999 9945 agency="Dominican Republic" 00-00,010-079,08-39,400-569,57-57,580-799,80-80,810-849,8500-9999 @@ -292,9 +362,9 @@ 9950 agency="Palestine" 00-29,300-849,8500-9999 9951 agency="Kosova" - 00-39,400-849,8500-9999 + 00-38,390-849,8500-9799,980-999 9952 agency="Azerbaijan" - 0-1,20-39,400-799,8000-9999 + 0-0,15-39,400-799,8000-9999 9953 agency="Lebanon" 0-0,10-39,400-599,60-89,9000-9299,93-96,970-999 9954 agency="Morocco" @@ -329,6 +399,8 @@ 00-39,400-899,9000-9999 9968 agency="Costa Rica" 00-49,500-939,9400-9999 + 9969 agency="Algeria" + 00-12,500-674,9650-9999 9970 agency="Uganda" 00-39,400-899,9000-9999 9971 agency="Singapore" @@ -393,7 +465,7 @@ 99913 agency="Andorra" 0-2,30-35,600-604 99914 agency="International NGO Publishers" - 0-4,50-69,7-7,80-89,900-999 + 0-4,50-69,7-7,80-86,870-879,88-89,900-999 99915 agency="Maldives" 0-4,50-79,800-999 99916 agency="Namibia" @@ -415,7 +487,7 @@ 99924 agency="Nicaragua" 0-1,20-79,800-999 99925 agency="Paraguay" - 0-3,40-79,800-999 + 0-0,10-19,200-299,3-3,40-79,800-999 99926 agency="Honduras" 0-0,10-59,600-869,87-89,90-99 99927 agency="Albania" @@ -443,7 +515,7 @@ 99938 agency="Srpska, Republic of" 0-1,20-59,600-899,90-99 99939 agency="Guatemala" - 0-5,60-89,900-999 + 0-2,30-59,60-89,900-999 99940 agency="Georgia" 0-0,10-69,700-999 99941 agency="Armenia" @@ -455,7 +527,7 @@ 99944 agency="Ethiopia" 0-4,50-79,800-999 99945 agency="Namibia" - 0-5,60-89,900-999 + 0-4,50-89,900-979,98-99 99946 agency="Nepal" 0-2,30-59,600-999 99947 agency="Tajikistan" @@ -463,7 +535,7 @@ 99948 agency="Eritrea" 0-4,50-79,800-999 99949 agency="Mauritius" - 0-1,20-89,900-999 + 0-1,20-79,8-8,900-989,99-99 99950 agency="Cambodia" 0-4,50-79,800-999 99951 agency="Reserved Agency" @@ -502,7 +574,7 @@ 99968 agency="Botswana" 0-3,400-599,60-89,900-999 99969 agency="Oman" - 0-4,50-79,800-999 + 0-4,50-79,800-949,95-99 99970 agency="Haiti" 0-4,50-89,900-999 99971 agency="Myanmar" @@ -516,30 +588,62 @@ 99975 agency="Tajikistan" 0-2,300-399,40-79,800-999 99976 agency="Srpska, Republic of" - 0-1,20-59,600-799,900-999 + 00-03,040-099,10-15,160-199,20-59,600-819,82-89,900-999 99977 agency="Rwanda" - 0-1,40-69,700-799,995-999 + 0-1,40-69,700-799,975-999 99978 agency="Mongolia" 0-4,50-69,700-999 99979 agency="Honduras" - 0-4,50-79,800-999 + 0-3,40-79,800-999 99980 agency="Bhutan" - 0-0,30-59,800-999 + 0-0,30-64,700-999 99981 agency="Macau" - 0-1,30-59,800-999 + 0-0,10-10,110-149,15-19,200-219,22-74,750-999 99982 agency="Benin" - 0-0,50-62,900-969 + 0-3,50-76,865-999 99983 agency="El Salvador" + 0-0,35-69,900-999 + 99984 agency="Brunei Darussalam" 0-0,50-69,950-999 99985 agency="Tajikistan" - 55-59,950-999 + 0-1,200-229,23-79,800-999 + 99986 agency="Myanmar" + 0-0,50-69,950-999 + 99987 agency="Luxembourg" + 550-999 + 99988 agency="Sudan" + 0-0,10-10,50-54,800-824 + 99989 agency="Paraguay" + 0-1,50-79,900-999 + 99990 agency="Ethiopia" + 0-1,45-57,930-999 + 99991 agency="Burkina Faso" + 0-0,50-55,980-999 + 99992 agency="Oman" + 0-2,50-69,900-999 + 99993 agency="Mauritius" + 0-3,50-54,980-999 + 99994 agency="Haiti" + 0-0,50-56,960-999 + 99995 agency="Seychelles" + 50-55,975-999 + 99996 agency="Macau" + 0-1,40-59,900-999 + 99997 agency="Srpska, Republic of" + 0-0,40-54,950-999 + 99998 agency="Namibia" + 80-89 979 - 10-12,8-8 + 10-15,8-8 10 agency="France" 00-19,200-699,7000-8999,90000-97599,976000-999999 11 agency="Korea, Republic" - 00-24,250-549,5500-8499,85000-94999,950000-999999 + 00-23,24000-24999,250-549,5500-8499,85000-94999,950000-999999 12 agency="Italy" - 200-299,5950-5999,80000-84999 + 200-299,5450-5999,80000-84999,985000-999999 + 13 agency="Spain" + 00-00,600-604,7000-7349,87500-89999,990000-999999 8 agency="United States" - 6000-6999,9850000-9850009 + 200-229,230-239,2400-2599,2600-2799,2800-2999,3000-3199,3200-3499 + 3500-8849,88500-89999,90000-90999,9850000-9899999,9900000-9929999 + 9930000-9959999,9985000-9999999 diff --git a/stdnum/isbn.py b/stdnum/isbn.py index 06af4e87..165119b8 100644 --- a/stdnum/isbn.py +++ b/stdnum/isbn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISBN (International Standard Book Number). @@ -61,15 +59,17 @@ '1-85798-218-5' """ +from __future__ import annotations + from stdnum import ean from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number, convert=False): +def compact(number: str, convert: bool = False) -> str: """Convert the ISBN to the minimal representation. This strips the number of any valid ISBN separators and removes surrounding whitespace. If the - covert parameter is True the number is also converted to ISBN-13 + convert parameter is True the number is also converted to ISBN-13 format.""" number = clean(number, ' -').strip().upper() if len(number) == 9: @@ -79,17 +79,17 @@ def compact(number, convert=False): return number -def _calc_isbn10_check_digit(number): +def _calc_isbn10_check_digit(number: str) -> str: """Calculate the ISBN check digit for 10-digit numbers. The number passed - should not have the check bit included.""" + should not have the check digit included.""" check = sum((i + 1) * int(n) for i, n in enumerate(number)) % 11 return 'X' if check == 10 else str(check) -def validate(number, convert=False): +def validate(number: str, convert: bool = False) -> str: """Check if the number provided is a valid ISBN (either a legacy 10-digit - one or a 13-digit one). This checks the length and the check bit but does + one or a 13-digit one). This checks the length and the check digit but does not check if the group and publisher are valid (use split() for that).""" number = compact(number, convert=False) if not isdigits(number[:-1]): @@ -108,7 +108,7 @@ def validate(number, convert=False): return number -def isbn_type(number): +def isbn_type(number: str) -> str | None: """Check the passed number and return 'ISBN13', 'ISBN10' or None (for invalid) for checking the type of number passed.""" try: @@ -121,9 +121,9 @@ def isbn_type(number): return 'ISBN13' -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ISBN (either a legacy 10-digit - one or a 13-digit one). This checks the length and the check bit but does + one or a 13-digit one). This checks the length and the check digit but does not check if the group and publisher are valid (use split() for that).""" try: return bool(validate(number)) @@ -131,7 +131,7 @@ def is_valid(number): return False -def to_isbn13(number): +def to_isbn13(number: str) -> str: """Convert the number to ISBN-13 format.""" number = number.strip() min_number = clean(number, ' -') @@ -150,7 +150,7 @@ def to_isbn13(number): return '978' + number -def to_isbn10(number): +def to_isbn10(number: str) -> str: """Convert the number to ISBN-10 format.""" number = number.strip() min_number = compact(number, convert=False) @@ -172,12 +172,11 @@ def to_isbn10(number): return number + digit -def split(number, convert=False): +def split(number: str, convert: bool = False) -> tuple[str, str, str, str, str]: """Split the specified ISBN into an EAN.UCC prefix, a group prefix, a - registrant, an item number and a check-digit. If the number is in ISBN-10 - format the returned EAN.UCC prefix is '978'. If the covert parameter is + registrant, an item number and a check digit. If the number is in ISBN-10 + format the returned EAN.UCC prefix is '978'. If the convert parameter is True the number is converted to ISBN-13 format first.""" - from stdnum import numdb # clean up number number = compact(number, convert) # get Bookland prefix if any @@ -186,6 +185,7 @@ def split(number, convert=False): number = '978' + number delprefix = True # split the number + from stdnum import numdb result = numdb.get('isbn').split(number[:-1]) itemnr = result.pop() if result else '' prefix = result.pop(0) if result else '' @@ -195,11 +195,11 @@ def split(number, convert=False): return ('' if delprefix else prefix, group, publisher, itemnr, number[-1]) -def format(number, separator='-', convert=False): +def format(number: str, separator: str = '-', convert: bool = False) -> str: """Reformat the number to the standard presentation format with the EAN.UCC prefix (if any), the group prefix, the registrant, the item - number and the check-digit separated (if possible) by the specified + number and the check digit separated (if possible) by the specified separator. Passing an empty separator should equal compact() though this - is less efficient. If the covert parameter is True the number is + is less efficient. If the convert parameter is True the number is converted to ISBN-13 format first.""" return separator.join(x for x in split(number, convert) if x) diff --git a/stdnum/isil.dat b/stdnum/isil.dat index 3dce0390..883dd512 100644 --- a/stdnum/isil.dat +++ b/stdnum/isil.dat @@ -1,37 +1,45 @@ # generated from ISIL Registration Authority, downloaded from -# https://english.slks.dk/libraries/library-standards/isil/ +# https://slks.dk/english/work-areas/libraries-and-literature/library-standards/isil AR$ country="Argentine Republic" ra="Argentine Standardization and Certification Institute (IRAM)" ra_url="http://www.iram.org.ar/" AT$ country="Austria" ra="Die Österreichische Bibliothekenverbund und Service GmbH" ra_url="http://www.obvsg.at/" AU$ country="Australia" ra="National Library of Australia" ra_url="http://www.nla.gov.au/ilrs" BE$ country="Belgium" ra="Royal Library of Belgium" ra_url="http://www.kbr.be/" -BY$ country="Belarus" ra="National Library of Belarus" ra_url="http://www.nlb.by/portal/page/portal/index?lang=en" +BY$ country="Belarus" ra="National Library of Belarus" BG$ country="Bulgaria" ra="National Library of Bulgaria" ra_url="http://www.nationallibrary.bg/wp/?page_id=220" -CA$ country="Canada" ra="Library and Archives Canada" ra_url="http://www.bac-lac.gc.ca/eng/Pages/home.aspx" -CH$ country="Switzerland" ra="Swiss National Library" ra_url="https://www.nb.admin.ch/snl/en/home.html" +BO$ ra="National and University Library of Bosnia and Herzegovina" +CA$ country="Canada" ra="Library and Archives Canada" ra_url="https://library-archives.canada.ca/eng/services/services-libraries/canadian-library-directory/pages/library-symbols.aspx#cansymbols" +CH$ country="Switzerland" ra="Swiss National Library" ra_url="https://www.isil.nb.admin.ch/en/" CY$ country="Cyprus" ra="Cyprus University of Technology – Library" ra_url="http://library.cut.ac.cy/en/isil" +CZ$ country="Czech Republic" ra="National Library of the Czech Republic" ra_url="https://www.nkp.cz/" DE$ country="Germany" ra="Staatsbibliothek zu Berlin" ra_url="http://sigel.staatsbibliothek-berlin.de/" -DK$ country="Denmark" ra="Danish Agency for Culture and Palaces" ra_url="https://english.slks.dk/libraries/" -EG$ country="Egypt" ra="Egyptian National Scientific and Technical Information Network (ENSTINET)" ra_url="http://www.sti.sci.eg/index.php?option=com_content&view=article&id=30:focal-point&catid=1:pages&Itemid=56" +DK$ country="Denmark" ra="Danish Agency for Culture and Palaces" ra_url="https://slks.dk/english/work-areas/libraries-and-literature" +EG$ country="Egypt" ra="Egyptian National Scientific and Technical Information Network (ENSTINET)" FI$ country="Finland" ra="The National Library of Finland" ra_url="http://isil.kansalliskirjasto.fi/en/" FR$ country="France" ra="Agence Bibliographique de l'Enseignement Superieur" ra_url="http://www.abes.fr/" -GB$ country="United Kingdom" ra="British Library" ra_url="http://www.bl.uk/bibliographic/isilagency.html" +GB$ country="United Kingdom" ra="British Library*" ra_url="https://www.bl.uk/more/collection-metadata-services/" GL$ country="Greenland" ra="Central and Public Library of Greenland" ra_url="https://www.katak.gl/" +HR$ ra="Nacionalna i sveučilišna knjižnica u Zagrebu" ra_url="https://nsk.hr/en/" HU$ country="Hungary" ra="National Széchényi Library" ra_url="http://www.oszk.hu/orszagos-konyvtari-szabvanyositas/isil-kodok" -IL$ country="Israel" ra="National Library of Israel" ra_url="http://nli.org.il/eng" -IR$ country="Islamic Republic of Iran" ra="National Library and Archives of Islamic Republic of Iran of Iran" ra_url="http://www.nlai.ir/special_services/stds/isil.htm" -IT$ country="Italy" ra="Istituto Centrale per il Catalogo Unico delle biblioteche italiane e per le informazioni bibliografiche" ra_url="http://www.iccu.sbn.it/genera.jsp?id=78&l=en" +IL$ country="Israel" ra="National Library of Israel" ra_url="http://nli.org.il" +IR$ country="Islamic Republic of Iran" ra="National Library and Archives of Islamic Republic of Iran" +IT$ country="Italy" ra="Istituto Centrale per il Catalogo Unico delle biblioteche italiane e per le informazioni bibliografiche" ra_url="https://www.iccu.sbn.it/" JP$ country="Japan" ra="National Diet Library" ra_url="http://www.ndl.go.jp/en/library/isil/index.html" -KR$ country="Republic of Korea" ra="The National Library of Korea" ra_url="http://www.nl.go.kr/isil/" +KR$ country="Republic of Korea" ra="The National Library of Korea" ra_url="https://www.nl.go.kr/" +KZ$ country="Republic of Kazakhstan" ra="National Library of the Republic of Kazachstan" ra_url="https://www.nlrk.kz/index.php?lang=en" LU$ country="Luxembourg" ra="Archives nationales de Luxembourg" ra_url="http://www.anlux.public.lu/" -NL$ country="The Netherlands" ra="Koninklijke Bibliotheek, National Library of the Netherlands" ra_url="http://www.kb.nl/expertise/voor-bibliotheken/interbibliotheciar-leenverkeer/internationale-standard-identifier-for-libraries-isil" +MD$ country="Republic of Moldova" ra="National Library of the Republic of Moldova" ra_url="http://bnrm.md/" +NL$ country="The Netherlands" ra="Koninklijke Bibliotheek, National Library of the Netherlands" ra_url="http://www.kb.nl" NO$ country="Norway" ra="National Library of Norway" ra_url="http://www.nb.no/" +NP$ country="Nepal" ra="n/a" NZ$ country="New Zealand" ra="National Library of New Zealand Te Puna Matauranga o Aotearoa" ra_url="http://natlib.govt.nz/" QA$ country="Qatar" ra="Qatar National Library (QNL)" ra_url="http://www.qnl.qa/" -RO$ country="Romania" ra="National Library of Romania" ra_url="http://www.bibnat.ro/Sistemul-ISIL-in-Romania-s382-ro.htm" +RO$ country="Romania" ra="National Library of Romania" ra_url="https://oldsite.bibnat.ro/Sistemul-ISIL-in-Romania-s382-ro.htm" RU$ country="Russian Federation" ra="Russian National Public Library for Science and Technology" ra_url="http://english.gpntb.ru/" -SI$ country="The Republic of Slovenia" ra="National and University Library" ra_url="http://www.nuk.uni-lj.si/nukeng3.asp?id=311364382" +SI$ country="The Republic of Slovenia" ra="National and University Library" ra_url="https://www.nuk.uni-lj.si/eng/node/543" SK$ country="Slovak Republic" ra="Slovak National Library" ra_url="http://www.snk.sk/en/information-for/libraries-and-librarians/isil.html" US$ country="United States of America" ra="Library of Congress" ra_url="http://www.loc.gov/marc/organizations/" -O$ ra="See OCLC" +EUR$ ra="HAEU" ra_url="http://www.eui.eu/Research/HistoricalArchivesOfEU/FindingAidsAndResearch/HAEU-Non-national-ISIL-Allocation-Agency.aspx" +GTB$ ra="Kronosdoc" ra_url="https://www.kronosdoc.com/" +O$ ra="See OCLC" ra_url="http://www.oclc.org" OCLC$ ra="OCLC" ra_url="http://www.oclc.org" -ZDB$ ra="Staatsbibliothek zu Berlin" +ZDB$ ra="Staatsbibliothek zu Berlin" ra_url="https://staatsbibliothek-berlin.de/" diff --git a/stdnum/isil.py b/stdnum/isil.py index d69c5fcc..767b95c0 100644 --- a/stdnum/isil.py +++ b/stdnum/isil.py @@ -1,7 +1,7 @@ # isil.py - functions for handling identifiers for libraries and related # organizations # -# Copyright (C) 2011-2017 Arthur de Jong +# Copyright (C) 2011-2022 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISIL (International Standard Identifier for Libraries). @@ -55,6 +53,8 @@ 'IT-RM0267' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean @@ -64,13 +64,13 @@ '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-:/') -def compact(number): +def compact(number: str) -> str: """Convert the ISIL to the minimal representation. This strips surrounding whitespace.""" return clean(number, '').strip() -def _is_known_agency(agency): +def _is_known_agency(agency: str) -> bool: """Check whether the specified agency is valid.""" # look it up in the db from stdnum import numdb @@ -79,7 +79,7 @@ def _is_known_agency(agency): return len(results) == 1 and bool(results[0][1]) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid ISIL.""" number = compact(number) if not all(x in _alphabet for x in number): @@ -91,7 +91,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ISIL.""" try: return bool(validate(number)) @@ -99,7 +99,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) parts = number.split('-') diff --git a/stdnum/isin.py b/stdnum/isin.py index 9463ec5f..545bc2d7 100644 --- a/stdnum/isin.py +++ b/stdnum/isin.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISIN (International Securities Identification Number). @@ -41,6 +39,8 @@ 'GB00BYXJL758' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean @@ -69,7 +69,7 @@ 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI', 'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW'] -# These special code are allowed for ISIN +# These special codes are allowed for ISIN _country_codes = set(_iso_3116_1_country_codes + [ 'EU', # European Union 'QS', # internally used by Euroclear France @@ -88,13 +88,13 @@ _alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip().upper() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digits for the number.""" # convert to numeric first, then double some, then sum individual digits number = ''.join(str(_alphabet.index(n)) for n in number) @@ -103,7 +103,7 @@ def calc_check_digit(number): return str((10 - sum(int(n) for n in number)) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length and check digit.""" number = compact(number) @@ -118,7 +118,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length and check digit.""" try: @@ -127,8 +127,7 @@ def is_valid(number): return False -def from_natid(country_code, number): +def from_natid(country_code: str, number: str) -> str: """Generate an ISIN from a national security identifier.""" - number = compact(number) - number = country_code.upper() + (9 - len(number)) * '0' + number + number = country_code.upper() + compact(number).zfill(9) return number + calc_check_digit(number) diff --git a/stdnum/ismn.py b/stdnum/ismn.py index bedc31df..ca02099e 100644 --- a/stdnum/ismn.py +++ b/stdnum/ismn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISMN (International Standard Music Number). @@ -42,18 +40,20 @@ '9790230671187' """ +from __future__ import annotations + from stdnum import ean from stdnum.exceptions import * from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the ISMN to the minimal representation. This strips the number of any valid ISMN separators and removes surrounding whitespace.""" return clean(number, ' -.').strip().upper() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid ISMN (either a legacy 10-digit one or a 13-digit one). This checks the length and the check bit but does not check if the publisher is known.""" @@ -71,7 +71,7 @@ def validate(number): return number -def ismn_type(number): +def ismn_type(number: str) -> str | None: """Check the type of ISMN number passed and return 'ISMN13', 'ISMN10' or None (for invalid).""" try: @@ -84,7 +84,7 @@ def ismn_type(number): return 'ISMN13' -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ISMN (either a legacy 10-digit one or a 13-digit one). This checks the length and the check bit but does not check if the publisher is known.""" @@ -94,7 +94,7 @@ def is_valid(number): return False -def to_ismn13(number): +def to_ismn13(number: str) -> str: """Convert the number to ISMN13 (EAN) format.""" number = number.strip() min_number = compact(number) @@ -115,7 +115,7 @@ def to_ismn13(number): (6, '700000', '899999'), (7, '9000000', '9999999')) -def split(number): +def split(number: str) -> tuple[str, str, str, str, str]: """Split the specified ISMN into a bookland prefix (979), an ISMN prefix (0), a publisher element (3 to 7 digits), an item element (2 to 6 digits) and a check digit.""" @@ -126,9 +126,10 @@ def split(number): if low <= number[4:4 + length] <= high: return (number[:3], number[3], number[4:4 + length], number[4 + length:-1], number[-1]) + raise AssertionError('unreachable') # pragma: no cover -def format(number, separator='-'): +def format(number: str, separator: str = '-') -> str: """Reformat the number to the standard presentation format with the prefixes, the publisher element, the item element and the check-digit separated by the specified separator. The number is converted to the diff --git a/stdnum/isni.py b/stdnum/isni.py new file mode 100644 index 00000000..cb8b35f2 --- /dev/null +++ b/stdnum/isni.py @@ -0,0 +1,80 @@ +# isni.py - functions for handling International Standard Name Identifiers +# +# Copyright (C) 2025 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""ISNI (International Standard Name Identifier). + +The International Standard Name Identifier (ISNI) is used to identify +contributors to media content such as books, television programmes, and +newspaper articles. The number consists of 16 digits where the last character +is a check digit. + +More information: + +* https://en.wikipedia.org/wiki/International_Standard_Name_Identifier +* https://isni.org/ + +>>> validate('0000 0001 2281 955X') +'000000012281955X' +>>> validate('0000 0001 1111 955X') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('0000 0001 2281') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> format('000000012281955X') +'0000 0001 2281 955X' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.iso7064 import mod_11_2 +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the ISNI to the minimal representation. This strips the number + of any valid ISNI separators and removes surrounding whitespace.""" + return clean(number, ' -').strip().upper() + + +def validate(number: str) -> str: + """Check if the number is a valid ISNI. This checks the length and + whether the check digit is correct.""" + number = compact(number) + if not isdigits(number[:-1]): + raise InvalidFormat() + if len(number) != 16: + raise InvalidLength() + mod_11_2.validate(number) + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid ISNI.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return ' '.join((number[:4], number[4:8], number[8:12], number[12:16])) diff --git a/stdnum/iso11649.py b/stdnum/iso11649.py index d0b784fe..16e84e54 100644 --- a/stdnum/iso11649.py +++ b/stdnum/iso11649.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISO 11649 (Structured Creditor Reference). @@ -45,18 +43,20 @@ 'RF18 5390 0754 7034' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_97_10 from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any invalid separators and removes surrounding whitespace.""" return clean(number, ' -.,/:').upper().strip() -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid ISO 11649 structured creditor reference number.""" number = compact(number) @@ -68,7 +68,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ISO 11649 structured creditor number. This checks the length, formatting and check digits.""" try: @@ -77,7 +77,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Format the number provided for output. Blocks of 4 characters, the last block can be less than 4 characters. See diff --git a/stdnum/iso6346.py b/stdnum/iso6346.py index 225b8a98..c7edf347 100644 --- a/stdnum/iso6346.py +++ b/stdnum/iso6346.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISO 6346 (International standard for container identification) @@ -42,6 +40,8 @@ 'TASU 117000 0' """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -51,13 +51,13 @@ _iso6346_re = re.compile(r'^\w{3}(U|J|Z|R)\d{7}$') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip().upper() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate check digit and return it for the 10 digit owner code and serial number.""" number = compact(number) @@ -67,7 +67,7 @@ def calc_check_digit(number): for i, n in enumerate(number)) % 11 % 10) -def validate(number): +def validate(number: str) -> str: """Validate the given number (unicode) for conformity to ISO 6346.""" number = compact(number) if len(number) != 11: @@ -79,7 +79,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check whether the number conforms to the standard ISO6346. Unlike the validate function, this will not raise ValidationError(s).""" try: @@ -88,7 +88,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[:4], number[4:-1], number[-1:])) diff --git a/stdnum/iso7064/__init__.py b/stdnum/iso7064/__init__.py index afc529fe..c336f8d8 100644 --- a/stdnum/iso7064/__init__.py +++ b/stdnum/iso7064/__init__.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of the ISO 7064 algorithms. diff --git a/stdnum/iso7064/mod_11_10.py b/stdnum/iso7064/mod_11_10.py index bab172f1..3d074692 100644 --- a/stdnum/iso7064/mod_11_10.py +++ b/stdnum/iso7064/mod_11_10.py @@ -1,6 +1,6 @@ # mod_11_10.py - functions for performing the ISO 7064 Mod 11, 10 algorithm # -# Copyright (C) 2010, 2011, 2012, 2013 Arthur de Jong +# Copyright (C) 2010-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The ISO 7064 Mod 11, 10 algorithm. @@ -35,10 +33,12 @@ '002006673085' """ +from __future__ import annotations + from stdnum.exceptions import * -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum. A valid number should have a checksum of 1.""" check = 5 for n in number: @@ -46,24 +46,24 @@ def checksum(number): return check -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the extra digit that should be appended to the number to make it a valid number.""" return str((1 - ((checksum(number) or 10) * 2) % 11) % 10) -def validate(number): +def validate(number: str) -> str: """Check whether the check digit is valid.""" try: valid = checksum(number) == 1 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check whether the check digit is valid.""" try: return bool(validate(number)) diff --git a/stdnum/iso7064/mod_11_2.py b/stdnum/iso7064/mod_11_2.py index daee35dc..095b6a37 100644 --- a/stdnum/iso7064/mod_11_2.py +++ b/stdnum/iso7064/mod_11_2.py @@ -1,6 +1,6 @@ # mod_11_2.py - functions for performing the ISO 7064 Mod 11, 2 algorithm # -# Copyright (C) 2010, 2011, 2012, 2013 Arthur de Jong +# Copyright (C) 2010-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The ISO 7064 Mod 11, 2 algorithm. @@ -37,10 +35,12 @@ 1 """ +from __future__ import annotations + from stdnum.exceptions import * -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum. A valid number should have a checksum of 1.""" check = 0 for n in number: @@ -48,25 +48,25 @@ def checksum(number): return check -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the extra digit that should be appended to the number to make it a valid number.""" c = (1 - 2 * checksum(number)) % 11 return 'X' if c == 10 else str(c) -def validate(number): +def validate(number: str) -> str: """Check whether the check digit is valid.""" try: valid = checksum(number) == 1 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check whether the check digit is valid.""" try: return bool(validate(number)) diff --git a/stdnum/iso7064/mod_37_2.py b/stdnum/iso7064/mod_37_2.py index 99a5288d..2502c9db 100644 --- a/stdnum/iso7064/mod_37_2.py +++ b/stdnum/iso7064/mod_37_2.py @@ -1,6 +1,6 @@ # mod_37_2.py - functions for performing the ISO 7064 Mod 37, 2 algorithm # -# Copyright (C) 2010, 2011, 2012, 2013 Arthur de Jong +# Copyright (C) 2010-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The ISO 7064 Mod 37, 2 algorithm. @@ -40,10 +38,12 @@ 1 """ +from __future__ import annotations + from stdnum.exceptions import * -def checksum(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*'): +def checksum(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*') -> int: """Calculate the checksum. A valid number should have a checksum of 1.""" modulus = len(alphabet) check = 0 @@ -52,25 +52,25 @@ def checksum(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*'): return check -def calc_check_digit(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*'): +def calc_check_digit(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*') -> str: """Calculate the extra digit that should be appended to the number to make it a valid number.""" modulus = len(alphabet) return alphabet[(1 - 2 * checksum(number, alphabet)) % modulus] -def validate(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*'): +def validate(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*') -> str: """Check whether the check digit is valid.""" try: valid = checksum(number, alphabet) == 1 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*'): +def is_valid(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ*') -> bool: """Check whether the check digit is valid.""" try: return bool(validate(number, alphabet)) diff --git a/stdnum/iso7064/mod_37_36.py b/stdnum/iso7064/mod_37_36.py index 6b3dea51..2d0cba52 100644 --- a/stdnum/iso7064/mod_37_36.py +++ b/stdnum/iso7064/mod_37_36.py @@ -1,6 +1,6 @@ # mod_37_36.py - functions for performing the ISO 7064 Mod 37, 36 algorithm # -# Copyright (C) 2010, 2011, 2012, 2013 Arthur de Jong +# Copyright (C) 2010-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The ISO 7064 Mod 37, 36 algorithm. @@ -38,10 +36,12 @@ '002006673085' """ +from __future__ import annotations + from stdnum.exceptions import * -def checksum(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'): +def checksum(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') -> int: """Calculate the checksum. A valid number should have a checksum of 1.""" modulus = len(alphabet) check = modulus // 2 @@ -50,25 +50,25 @@ def checksum(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'): return check -def calc_check_digit(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'): +def calc_check_digit(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') -> str: """Calculate the extra digit that should be appended to the number to make it a valid number.""" modulus = len(alphabet) return alphabet[(1 - ((checksum(number, alphabet) or modulus) * 2) % (modulus + 1)) % modulus] -def validate(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'): +def validate(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') -> str: """Check whether the check digit is valid.""" try: valid = checksum(number, alphabet) == 1 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number, alphabet='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'): +def is_valid(number: str, alphabet: str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') -> bool: """Check whether the check digit is valid.""" try: return bool(validate(number, alphabet)) diff --git a/stdnum/iso7064/mod_97_10.py b/stdnum/iso7064/mod_97_10.py index f5cae926..9df5bd3a 100644 --- a/stdnum/iso7064/mod_97_10.py +++ b/stdnum/iso7064/mod_97_10.py @@ -1,6 +1,6 @@ # mod_97_10.py - functions for performing the ISO 7064 Mod 97, 10 algorithm # -# Copyright (C) 2010-2017 Arthur de Jong +# Copyright (C) 2010-2022 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The ISO 7064 Mod 97, 10 algorithm. @@ -34,41 +32,40 @@ '35' """ +from __future__ import annotations + from stdnum.exceptions import * -def _to_base10(number): +def _to_base10(number: str) -> str: """Prepare the number to its base10 representation.""" - try: - return ''.join( - str(int(x, 36)) for x in number) - except Exception: - raise InvalidFormat() + return ''.join( + str(int(x, 36)) for x in number) -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum. A valid number should have a checksum of 1.""" return int(_to_base10(number)) % 97 -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the extra digits that should be appended to the number to make it a valid number.""" - return '%02d' % ((98 - 100 * checksum(number)) % 97) + return '%02d' % (98 - checksum(number + '00')) -def validate(number): +def validate(number: str) -> str: """Check whether the check digit is valid.""" try: valid = checksum(number) == 1 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check whether the check digit is valid.""" try: return bool(validate(number)) diff --git a/stdnum/iso9362.py b/stdnum/iso9362.py index 1902d3b7..0dc8f600 100644 --- a/stdnum/iso9362.py +++ b/stdnum/iso9362.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # flake8: noqa diff --git a/stdnum/isrc.py b/stdnum/isrc.py new file mode 100644 index 00000000..12e5317d --- /dev/null +++ b/stdnum/isrc.py @@ -0,0 +1,109 @@ +# isrc.py - functions for International Standard Recording Codes (ISRC) +# coding: utf-8 +# +# Copyright (C) 2021 Nuno André Novo +# Copyright (C) 2021 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""ISRC (International Standard Recording Code). + +The ISRC is an international standard code (ISO 3901) for uniquely +identifying sound recordings and music video recordings. + +More information: + +* https://en.wikipedia.org/wiki/International_Standard_Recording_Code + +>>> validate('US-SKG-19-12345') +'USSKG1912345' +>>> validate('XX-SKG-19-12345') +Traceback (most recent call last): + ... +InvalidComponent: ... +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.isin import _iso_3116_1_country_codes +from stdnum.util import clean + + +# An ISRC is composed of a country code, a registrant code a year of +# reference and designation code. +_isrc_re = re.compile( + r'^(?P[A-Z]{2})(?P[A-Z0-9]{3})(?P[0-9]{2})(?P[0-9]{5})$') + + +# These special codes are allowed for ISRC +# Source: https://isrc.ifpi.org/downloads/Valid_Characters.pdf +_country_codes = set(_iso_3116_1_country_codes + [ + 'BC', # Pro-música Brazil - Brasil + 'BK', # Pro-música Brazil - Brasil + 'BP', # Pro-música Brazil - Brasil + 'BX', # Pro-música Brazil - Brasil + 'CB', # Connect - Canada + 'CP', # reserved for further overflow + 'DG', # reserved for further overflow + 'FX', # SCPP - France + 'GX', # PPL UK - United Kingdom + 'KS', # KMCA - South Korea + 'QM', # US new registrants due to US codes became exhausted + 'QN', # International ISRC Agency codes - Worldwide + 'QT', # RIAA - US + 'QZ', # RIAA - US + 'UK', # PPL UK - United Kingdom + 'XK', # International ISRC Agency codes - Kosovo + 'YU', # International ISRC Agency codes - Former Yugoslavia before 2006 + 'ZB', # RISA - South Africa + 'ZZ', # International ISRC Agency codes - Worldwide +]) + + +def compact(number: str) -> str: + """Convert the ISRC to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').strip().upper() + + +def validate(number: str) -> str: + """Check if the number provided is a valid ISRC. This checks the length, + the alphabet, and the country code but does not check if the registrant + code is known.""" + number = compact(number) + if len(number) != 12: + raise InvalidLength() + match = _isrc_re.search(number) + if not match: + raise InvalidFormat() + if match.group('country') not in _country_codes: + raise InvalidComponent() + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid ISRC.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str, separator: str = '-') -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return separator.join((number[0:2], number[2:5], number[5:7], number[7:])) diff --git a/stdnum/issn.py b/stdnum/issn.py index 10c6af94..86577d5c 100644 --- a/stdnum/issn.py +++ b/stdnum/issn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ISSN (International Standard Serial Number). @@ -49,26 +47,28 @@ '9770264359008' """ +from __future__ import annotations + from stdnum import ean from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the ISSN to the minimal representation. This strips the number of any valid ISSN separators and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def calc_check_digit(number): - """Calculate the ISSN check digit for 10-digit numbers. The number passed - should not have the check bit included.""" +def calc_check_digit(number: str) -> str: + """Calculate the ISSN check digit for 8-digit numbers. The number passed + should not have the check digit included.""" check = (11 - sum((8 - i) * int(n) for i, n in enumerate(number))) % 11 return 'X' if check == 10 else str(check) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ISSN. This checks the length and whether the check digit is correct.""" number = compact(number) @@ -81,7 +81,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid ISSN.""" try: return bool(validate(number)) @@ -89,13 +89,13 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:4] + '-' + number[4:] -def to_ean(number, issue_code='00'): +def to_ean(number: str, issue_code: str = '00') -> str: """Convert the number to EAN-13 format.""" number = '977' + validate(number)[:-1] + issue_code return number + ean.calc_check_digit(number) diff --git a/stdnum/it/__init__.py b/stdnum/it/__init__.py index dbf24799..6995eaae 100644 --- a/stdnum/it/__init__.py +++ b/stdnum/it/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Italian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.it import iva as vat # noqa: F401 diff --git a/stdnum/it/aic.py b/stdnum/it/aic.py index 4c6afc76..937ede6a 100644 --- a/stdnum/it/aic.py +++ b/stdnum/it/aic.py @@ -17,9 +17,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """AIC (Italian code for identification of drugs). @@ -45,7 +43,9 @@ '009CVD' >>> from_base32('009CVD') '000307052' -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -55,12 +55,12 @@ _base32_alphabet = '0123456789BCDFGHJKLMNPQRSTUVWXYZ' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation.""" return clean(number, ' ').upper().strip() -def from_base32(number): +def from_base32(number: str) -> str: """Convert a BASE32 representation of an AIC to a BASE10 one.""" number = compact(number) if not all(x in _base32_alphabet for x in number): @@ -70,7 +70,7 @@ def from_base32(number): return str(s).zfill(9) -def to_base32(number): +def to_base32(number: str) -> str: """Convert a BASE10 representation of an AIC to a BASE32 one.""" number = compact(number) if not isdigits(number): @@ -84,7 +84,7 @@ def to_base32(number): return res.zfill(6) -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the BASE10 AIC code.""" number = compact(number) weights = (1, 2, 1, 2, 1, 2, 1, 2) @@ -92,7 +92,7 @@ def calc_check_digit(number): for x in (w * int(n) for w, n in zip(weights, number))) % 10) -def validate_base10(number): +def validate_base10(number: str) -> str: """Check if a string is a valid BASE10 representation of an AIC.""" number = compact(number) if len(number) != 9: @@ -106,7 +106,7 @@ def validate_base10(number): return number -def validate_base32(number): +def validate_base32(number: str) -> str: """Check if a string is a valid BASE32 representation of an AIC.""" number = compact(number) if len(number) != 6: @@ -114,7 +114,7 @@ def validate_base32(number): return validate_base10(from_base32(number)) -def validate(number): +def validate(number: str) -> str: """Check if a string is a valid AIC. BASE10 is the canonical form and is 9 chars long, while BASE32 is 6 chars.""" number = compact(number) @@ -124,7 +124,7 @@ def validate(number): return validate_base10(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the given string is a valid AIC code.""" try: return bool(validate(number)) diff --git a/stdnum/it/codicefiscale.py b/stdnum/it/codicefiscale.py index b38022c7..9618bcd6 100644 --- a/stdnum/it/codicefiscale.py +++ b/stdnum/it/codicefiscale.py @@ -20,9 +20,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Codice Fiscale (Italian tax code for individuals). @@ -55,6 +53,8 @@ 'H' """ +from __future__ import annotations + import datetime import re @@ -91,13 +91,13 @@ del values -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -:').strip().upper() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Compute the control code for the given personal number. The passed number should be the first 15 characters of a fiscal code.""" code = sum(_odd_values[x] if n % 2 == 0 else _even_values[x] @@ -105,7 +105,7 @@ def calc_check_digit(number): return 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[code % 26] -def get_birth_date(number, minyear=1920): +def get_birth_date(number: str, minyear: int = 1920) -> datetime.date: """Get the birth date from the person's fiscal code. Only the last two digits of the year are stored in the number. The dates @@ -132,7 +132,7 @@ def get_birth_date(number, minyear=1920): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the gender of the person's fiscal code. >>> get_gender('RCCMNL83S18D969H') @@ -146,7 +146,7 @@ def get_gender(number): return 'M' if int(number[9:11]) < 32 else 'F' -def validate(number): +def validate(number: str) -> str: """Check if the given fiscal code is valid. This checks the length and whether the check digit is correct.""" number = compact(number) @@ -163,7 +163,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the given fiscal code is valid.""" try: return bool(validate(number)) diff --git a/stdnum/it/iva.py b/stdnum/it/iva.py index 2670f995..1edc2d59 100644 --- a/stdnum/it/iva.py +++ b/stdnum/it/iva.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Partita IVA (Italian VAT number). @@ -34,12 +32,14 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -:').upper().strip() @@ -48,7 +48,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -57,14 +57,13 @@ def validate(number): if len(number) != 11: raise InvalidLength() # check the province of residence - if not('001' <= number[7:10] <= '100') and \ - number[7:10] not in ('120', '121', '888', '999'): + if not ('001' <= number[7:10] <= '100' or number[7:10] in ('120', '121', '888', '999')): raise InvalidComponent() luhn.validate(number) return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/jp/__init__.py b/stdnum/jp/__init__.py index 9b99e0e9..8d6c1261 100644 --- a/stdnum/jp/__init__.py +++ b/stdnum/jp/__init__.py @@ -14,9 +14,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Japanese numbers.""" + +from __future__ import annotations + from stdnum.jp import cn as vat # noqa: F401 diff --git a/stdnum/jp/cn.py b/stdnum/jp/cn.py index ff31e356..8466f40b 100644 --- a/stdnum/jp/cn.py +++ b/stdnum/jp/cn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CN (法人番号, hōjin bangō, Japanese Corporate Number). @@ -40,17 +38,19 @@ '5-8356-7825-6246' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '- ').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" weights = (1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2) @@ -58,7 +58,7 @@ def calc_check_digit(number): return str(9 - s) -def validate(number): +def validate(number: str) -> str: """Check if the number is valid. This checks the length and check digit.""" number = compact(number) @@ -71,7 +71,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid CN.""" try: return bool(validate(number)) @@ -79,7 +79,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join( diff --git a/stdnum/jp/in_.py b/stdnum/jp/in_.py new file mode 100644 index 00000000..891935be --- /dev/null +++ b/stdnum/jp/in_.py @@ -0,0 +1,92 @@ +# in_.py - functions for handling Japanese Individual Numbers (IN) +# coding: utf-8 +# +# Copyright (C) 2025 Luca Sicurello +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""IN (個人番号, kojin bangō, Japanese Individual Number). + +The Japanese Individual Number (個人番号, kojin bangō), often referred to as My +number (マイナンバー, mai nambā), is assigned to identify citizens and residents. +The number consists of 12 digits where the last digit is a check digit. No +personal information (such as name, gender, date of birth, etc.) is encoded +in the number. + +More information: + + * https://en.wikipedia.org/wiki/Individual_Number + * https://digitalforensic.jp/2016/03/14/column404/ + +>>> validate('6214 9832 0257') +'621498320257' +>>> validate('6214 9832 0258') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('6214 9832 025X') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('621498320257') +'6214 9832 0257' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, '- ').strip() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit. The number passed should not have + the check digit included.""" + weights = (6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2) + s = sum(w * int(n) for w, n in zip(weights, number)) + return str(-s % 11 % 10) + + +def validate(number: str) -> str: + """Check if the number is valid. This checks the length and check + digit.""" + number = compact(number) + if len(number) != 12: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if calc_check_digit(number[:-1]) != number[-1]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid IN.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the presentation format found on + My Number Cards.""" + number = compact(number) + return ' '.join( + (number[0:4], number[4:8], number[8:12])) diff --git a/stdnum/ke/__init__.py b/stdnum/ke/__init__.py new file mode 100644 index 00000000..80500ad8 --- /dev/null +++ b/stdnum/ke/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Kenyan numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Kenyan numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.ke import pin as vat # noqa: F401 diff --git a/stdnum/ke/pin.py b/stdnum/ke/pin.py new file mode 100644 index 00000000..3838e4d5 --- /dev/null +++ b/stdnum/ke/pin.py @@ -0,0 +1,95 @@ +# pin.py - functions for handling Kenya PIN numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""PIN (Personal Identification Number, Kenya tax number). + +The Personal Identification Number (KRA PIN) is an 11 digit unique number that +is issued by Kenya Revenue Authority (KRA) for purposes of transacting business +with KRA, other Government agencies and service providers. It can be issued for +individuals and non-individuals like companies, schools, organisations, etc. + +The number consists of 11 characters, where the first one is an A (for +individuals) or a P (for non-individuals), the last one is a letter, and the +rest are digits. + +More information: + +* https://www.kra.go.ke/individual/individual-pin-registration/learn-about-pin/about-pin +* https://itax.kra.go.ke/KRA-Portal/pinChecker.htm + +>>> validate('P051365947M') +'P051365947M' +>>> validate('A004416331M') +'A004416331M' +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('V1234567890') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('a004416331m') +'A004416331M' +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean + + +# The number consists of 11 characters, where the first one is an A (for +# individuals) or a P (for non-individuals), the last one is a letter, and the +# rest are digits. +_pin_re = re.compile(r'^[A|P]{1}[0-9]{9}[A-Z]{1}$') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').strip().upper() + + +def validate(number: str) -> str: + """Check if the number is a valid Kenya PIN number. + + This checks the length and formatting. + """ + number = compact(number) + if len(number) != 11: + raise InvalidLength() + match = _pin_re.search(number) + if not match: + raise InvalidFormat() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Kenya PIN number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/kr/__init__.py b/stdnum/kr/__init__.py index b8d75f2f..92bdfc02 100644 --- a/stdnum/kr/__init__.py +++ b/stdnum/kr/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of South Korean numbers.""" +from __future__ import annotations + # provide aliases from stdnum.kr import brn as vat # noqa: F401 diff --git a/stdnum/kr/brn.py b/stdnum/kr/brn.py index 3bdea1d7..3befcec3 100644 --- a/stdnum/kr/brn.py +++ b/stdnum/kr/brn.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """BRN (사업자 등록 번호, South Korea Business Registration Number). @@ -44,11 +42,13 @@ '134-86-72683' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -57,7 +57,7 @@ def compact(number): return clean(number, ' -').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid South Korea BRN number. This checks the length and formatting. @@ -72,7 +72,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid South Korea BRN number.""" try: return bool(validate(number)) @@ -80,21 +80,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[:3], number[3:5], number[5:]]) - - -def check_ftc(number, timeout=30): # pragma: no cover - """Check the number against the Korea Fair Trade Commission website.""" - import lxml.html - import requests - number = compact(number) - url = 'https://www.ftc.go.kr/bizCommPop.do' - document = lxml.html.fromstring( - requests.get(url, params={'wrkr_no': number}, timeout=timeout).text) - data = dict(zip( - [(x.text or '').strip() for x in document.findall('.//th')], - [(x.text or '').strip() for x in document.findall('.//td')])) - return data or None diff --git a/stdnum/kr/brn.txt b/stdnum/kr/brn.txt new file mode 100644 index 00000000..366b976b --- /dev/null +++ b/stdnum/kr/brn.txt @@ -0,0 +1,666 @@ +Python 3.8.3 (default, May 14 2020, 11:03:12) +[GCC 9.3.0] on linux +Type "help", "copyright", "credits" or "license" for more information. +>>> import requests +>>> from pkg_resources import resource_filename +>>> certificate = resource_filename('stdnum.kr.brn', 'GPKIRootCA1.crt') +>>> certificate +'/local/arthur/python-stdnum/stdnum/kr/GPKIRootCA1.crt' +>>> number = '1098139795' +>>> response = requests.get('https://www.ftc.go.kr/bizCommPop.do', params={'wrkr_no': number}, timeout=10, verify=certificate) +>>> response + +>>> response.ok +True +>>> import lxml.html + +>>> document = lxml.html.fromstring(response.text) +>>> document.find('.//th') + +>>> document.findall('.//th') +[, , , , , , , , , , , , , , , ] + + +import requests +from pkg_resources import resource_filename +import lxml.html + + +document = lxml.html.fromstring(response.text) + +headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'} + + +def check_ftc(number, timeout=30): + url = 'https://www.ftc.go.kr/bizCommPop.do' + #certificate = resource_filename(__name__, 'GPKIRootCA1.crt') + document = lxml.html.fromstring( + requests.get(url, params={'wrkr_no': number}, timeout=timeout, verify=certificate, headers=headers).text) + data = dict(zip( + [x.text.strip() for x in document.findall('.//th')], + [x.text.strip() for x in document.findall('.//td')])) + return data or None + + + + data.update(zip( + [x.text.strip() for x in result.findall('.//th')], + [x.text.strip() for x in result.findall('.//td/span')])) + + + + + +sames = defaultdict(list) +for number in numbers: + sames[number[:7] + 'x'].append(number) +complete = [number for number, values in sames.items() if len(values) == 10] +for i in range(5): + number = random.choice(complete) + print('%s %s' % (number, ''.join(x[-1] for x in sames[number]))) + + +def freq(lst, start, end): + counts = defaultdict(int) + for x in lst: + counts[x[start:end]] += 1 + for k, v in sorted(counts.items()): + print('%s %4d' % (k, v)) + + + +sames = defaultdict(list) +for number in numbers: + sames[number[:7] + 'x'].append(number) + +complete = [number for number, values in sames.items() if len(values) == 10] +for i in range(5): + number = random.choice(complete) + print('%s %s' % (number, ''.join(x[-1] for x in sames[number]))) + + + +valid = ['1018213065', '1028103525', '1028142945', '1048125258', +'1048136565', '1048403406', '1058661489', '1078713471', '1078770962', +'1081983613', '1098133637', '1098139795', '1101416596', '1108105034', +'1108107390', '1108140725', '1108402173', '1130243949', '1138192367', +'1138621886', '1138638602', '1148600579', '1148604968', '1148661464', +'1168200276', '1178177714', '1191996781', '1198644529', '1208157465', +'1208639706', '1208200052', '1248179802', '1283949844', '1288177295', +'1298638970', '1298639907', '1308192528', '1308689294', '1328604520', +'1348624634', '1348672683', '1350924640', '1352980067', '1358106333', +'1418118585', '1448125090', '1480500404', '1562300883', '1698600394', +'1839800113', '1938600010', '2018199798', '2018517396', '2028104367', +'2040691556', '2048646427', '2068650913', '2088124115', '2118608983', +'2118623306', '2118767960', '2141158465', '2148104230', '2148778980', +'2148798889', '2148851159', '2158786862', '2178114493', '2190139810', +'2208183676', '2208718070', '2208875699', '2208888699', '2248141168', +'2758701259', '2808601410', '3018191475', '3018612266', '3031273313', +'3058138564', '3058170638', '3058187876', '3121225168', '3123006675', +'3148125684', '3148653230', '3188102096', '3218100982', '3481300692', +'3648100669', '3833700143', '4028215272', '4102553731', '4150683258', +'5012678904', '5038609407', '5048185233', '5150768272', '5684100305', +'5829000497', '6028166559', '6158211718', '6162512643', '6178611575', +'6498200117', '6808700210', '7668800563', '7828600130', '8098101574', +'8168100840', '8841701026'] + +valid = ['1018213065', '1028103525', '1028142945', '1048125258', +'1048136565', '1048403406', '1058661489', '1078713471', '1078770962', +'1081983613', '1098133637', '1098139795', '1101416596', '1108105034', +'1108107390', '1108140725', '1108402173', '1130243949', '1138192367', +'1138621886', '1138638602', '1148600579', '1148604968', '1148661464', +'1168200276', '1178177714', '1191996781', '1198644529', '1208157465', +'1208200052', '1208639706', '1248179802', '1283949844', '1288177295', +'1298638970', '1298639907', '1308192528', '1308689294', '1328604520', +'1348624634', '1348672683', '1350924640', '1352980067', '1358106333', +'1418118585', '1448125090', '1480500404', '1562300883', '1698600394', +'1839800113', '1938600010', '2018199798', '2018517396', '2028104367', +'2040691556', '2048646427', '2068650913', '2088124115', '2118608983', +'2118623306', '2118767960', '2122529409', '2141158465', '2148104230', +'2148778980', '2148798889', '2148851159', '2158786862', '2178114493', +'2190139810', '2208183676', '2208718070', '2208875699', '2208888699', +'2248141168', '2758701259', '2808601410', '3018191475', '3018612266', +'3031273313', '3058138564', '3058170638', '3058187876', '3090151285', +'3090152187', '3090152284', '3090152299', '3121225168', '3123006675', +'3148125684', '3148653230', '3188102096', '3218100982', '3481300692', +'3648100669', '3833700143', '4028215272', '4102553731', '4150683258', +'4558600621', '4750300791', '5012678904', '5038609407', '5048185233', +'5150768272', '5684100305', '5829000497', '6028166559', '6158211718', +'6162512643', '6178611575', '6498200117', '6808700210', '7668800563', +'7828600130', '8098101574', '8168100840', '8841701026', '8841701220'] + + + +def find(number): + for x in range(10): + for c in range(10): + n = number.replace('x', str(x)) + str(c) + print(n) + if check_ftc(n): + yield n + + +'1358106333' + +candidates = list(find('1358106x')) + + +# begin with analysis of check digit frequency + +[16, 3, 9, 14, 12, 15, 13, 9, 9, 11] + + +# >>> [int( y * 100 / 111 - 10) for x,y in sorted(counts.items())] +[4, -7, -1, 2, 0, 3, 1, -1, -1, 0] + +# so 0 and 5 are more likely while 1 is considerably less likely + + +'8841701026' +candidates = list(find('88417010x')) +['8841701026'] + +candidates = list(find('8841701x2')) +['8841701026', '8841701220'] + +candidates = list(find('884170x02')) +['8841701026'] + +# USE THIS TO SAVE RESULTS TO REBUILD checked BETWEEN RUNS +valid = sorted(k for k, v in checked.items() if v) +['1018213065', '1028103525', '1028142945', '1048125258', '1048136565', +'1048403406', '1058661489', '1078713471', '1078770962', '1081983613', +'1098133637', '1098139795', '1101416596', '1108105034', '1108107390', +'1108140725', '1108402173', '1130243949', '1138192367', '1138621886', +'1138638602', '1148600579', '1148604968', '1148661464', '1168200276', +'1178177714', '1191996781', '1198644529', '1208157465', '1208200052', +'1208639706', '1248179802', '1283949844', '1288177295', '1298638970', +'1298639907', '1308192528', '1308689294', '1328604520', '1348624634', +'1348672683', '1350924640', '1352980067', '1358106333', '1418118585', +'1448125090', '1480500404', '1562300883', '1698600394', '1839800113', +'1938600010', '2018199798', '2018517396', '2028104367', '2040691556', +'2048646427', '2068650913', '2088124115', '2118608983', '2118623306', +'2118767960', '2141158465', '2148104230', '2148778980', '2148798889', +'2148851159', '2158786862', '2178114493', '2190139810', '2208183676', +'2208718070', '2208875699', '2208888699', '2248141168', '2758701259', +'2808601410', '3018191475', '3018612266', '3031273313', '3058138564', +'3058170638', '3058187876', '3090151285', '3090152187', '3090152284', +'3090152299', '3121225168', '3123006675', '3148125684', '3148653230', +'3188102096', '3218100982', '3481300692', '3648100669', '3833700143', +'4028215272', '4102553731', '4150683258', '5012678904', '5038609407', +'5048185233', '5150768272', '5684100305', '5829000497', '6028166559', +'6158211718', '6162512643', '6178611575', '6498200117', '6808700210', +'7668800563', '7828600130', '8098101574', '8168100840', '8841701026', +'8841701220'] + + +invalid = sorted(k for k, v in checked.items() if not v) +['0090152280', '0090152281', '0090152282', '0090152283', '0090152284', +'0090152285', '0090152286', '0090152287', '0090152288', '0090152289', +'1051741513', '1068207200', '1078209351', '1090152280', '1090152281', +'1090152282', '1090152283', '1090152284', '1090152285', '1090152286', +'1090152287', '1090152288', '1090152289', '1098162393', '1101239727', +'1108005030', '1108005031', '1108005032', '1108005033', '1108005034', +'1108005035', '1108005036', '1108005037', '1108005038', '1108005039', +'1108100000', '1108100001', '1108100002', '1108100003', '1108100004', +'1108100005', '1108100006', '1108100007', '1108100008', '1108100009', +'1108100010', '1108100011', '1108100012', '1108100013', '1108100014', +'1108100015', '1108100016', '1108100017', '1108100018', '1108100019', +'1108100020', '1108100021', '1108100022', '1108100023', '1108100024', +'1108100025', '1108100026', '1108100027', '1108100028', '1108100029', +'1108100030', '1108100031', '1108100032', '1108100033', '1108100034', +'1108100035', '1108100036', '1108100037', '1108100038', '1108100039', +'1108100040', '1108100041', '1108100042', '1108100043', '1108100044', +'1108100045', '1108100046', '1108100047', '1108100048', '1108100049', +'1108100050', '1108100051', '1108100052', '1108100053', '1108100054', +'1108100055', '1108100056', '1108100057', '1108100058', '1108100059', +'1108100060', '1108100061', '1108100062', '1108100063', '1108100064', +'1108100065', '1108100066', '1108100067', '1108100068', '1108100069', +'1108100070', '1108100071', '1108100072', '1108100073', '1108100074', +'1108100075', '1108100076', '1108100077', '1108100078', '1108100079', +'1108100080', '1108100081', '1108100082', '1108100083', '1108100084', +'1108100085', '1108100086', '1108100087', '1108100088', '1108100089', +'1108100090', '1108100091', '1108100092', '1108100093', '1108100094', +'1108100095', '1108100096', '1108100097', '1108100098', '1108100099', +'1108101030', '1108101031', '1108101032', '1108101033', '1108101034', +'1108101035', '1108101036', '1108101037', '1108101038', '1108101039', +'1108102030', '1108102031', '1108102032', '1108102033', '1108102034', +'1108102035', '1108102036', '1108102037', '1108102038', '1108102039', +'1108103030', '1108103031', '1108103032', '1108103033', '1108103034', +'1108103035', '1108103036', '1108103037', '1108103038', '1108103039', +'1108104030', '1108104031', '1108104032', '1108104033', '1108104034', +'1108104035', '1108104036', '1108104037', '1108104038', '1108104039', +'1108105000', '1108105001', '1108105002', '1108105003', '1108105004', +'1108105005', '1108105006', '1108105007', '1108105008', '1108105009', +'1108105010', '1108105011', '1108105012', '1108105013', '1108105014', +'1108105015', '1108105016', '1108105017', '1108105018', '1108105019', +'1108105020', '1108105021', '1108105022', '1108105023', '1108105024', +'1108105025', '1108105026', '1108105027', '1108105028', '1108105029', +'1108105030', '1108105031', '1108105032', '1108105033', '1108105035', +'1108105036', '1108105037', '1108105038', '1108105039', '1108105040', +'1108105041', '1108105042', '1108105043', '1108105044', '1108105045', +'1108105046', '1108105047', '1108105048', '1108105049', '1108105050', +'1108105051', '1108105052', '1108105053', '1108105054', '1108105055', +'1108105056', '1108105057', '1108105058', '1108105059', '1108105060', +'1108105061', '1108105062', '1108105063', '1108105064', '1108105065', +'1108105066', '1108105067', '1108105068', '1108105069', '1108105070', +'1108105071', '1108105072', '1108105073', '1108105074', '1108105075', +'1108105076', '1108105077', '1108105078', '1108105079', '1108105080', +'1108105081', '1108105082', '1108105083', '1108105084', '1108105085', +'1108105086', '1108105087', '1108105088', '1108105089', '1108105090', +'1108105091', '1108105092', '1108105093', '1108105094', '1108105095', +'1108105096', '1108105097', '1108105098', '1108105099', '1108105130', +'1108105131', '1108105132', '1108105133', '1108105134', '1108105135', +'1108105136', '1108105137', '1108105138', '1108105139', '1108105230', +'1108105231', '1108105232', '1108105233', '1108105234', '1108105235', +'1108105236', '1108105237', '1108105238', '1108105239', '1108105330', +'1108105331', '1108105332', '1108105333', '1108105334', '1108105335', +'1108105336', '1108105337', '1108105338', '1108105339', '1108105430', +'1108105431', '1108105432', '1108105433', '1108105434', '1108105435', +'1108105436', '1108105437', '1108105438', '1108105439', '1108105530', +'1108105531', '1108105532', '1108105533', '1108105534', '1108105535', +'1108105536', '1108105537', '1108105538', '1108105539', '1108105630', +'1108105631', '1108105632', '1108105633', '1108105634', '1108105635', +'1108105636', '1108105637', '1108105638', '1108105639', '1108105730', +'1108105731', '1108105732', '1108105733', '1108105734', '1108105735', +'1108105736', '1108105737', '1108105738', '1108105739', '1108105830', +'1108105831', '1108105832', '1108105833', '1108105834', '1108105835', +'1108105836', '1108105837', '1108105838', '1108105839', '1108105930', +'1108105931', '1108105932', '1108105933', '1108105934', '1108105935', +'1108105936', '1108105937', '1108105938', '1108105939', '1108106030', +'1108106031', '1108106032', '1108106033', '1108106034', '1108106035', +'1108106036', '1108106037', '1108106038', '1108106039', '1108107030', +'1108107031', '1108107032', '1108107033', '1108107034', '1108107035', +'1108107036', '1108107037', '1108107038', '1108107039', '1108108030', +'1108108031', '1108108032', '1108108033', '1108108034', '1108108035', +'1108108036', '1108108037', '1108108038', '1108108039', '1108109030', +'1108109031', '1108109032', '1108109033', '1108109034', '1108109035', +'1108109036', '1108109037', '1108109038', '1108109039', '1108115000', +'1108115001', '1108115002', '1108115003', '1108115004', '1108115005', +'1108115006', '1108115007', '1108115008', '1108115009', '1108115010', +'1108115011', '1108115012', '1108115013', '1108115014', '1108115015', +'1108115016', '1108115017', '1108115018', '1108115019', '1108115020', +'1108115021', '1108115022', '1108115023', '1108115024', '1108115025', +'1108115026', '1108115027', '1108115028', '1108115029', '1108115030', +'1108115031', '1108115032', '1108115033', '1108115034', '1108115035', +'1108115036', '1108115037', '1108115038', '1108115039', '1108115040', +'1108115041', '1108115042', '1108115043', '1108115044', '1108115045', +'1108115046', '1108115047', '1108115048', '1108115049', '1108115050', +'1108115051', '1108115052', '1108115053', '1108115054', '1108115055', +'1108115056', '1108115057', '1108115058', '1108115059', '1108115060', +'1108115061', '1108115062', '1108115063', '1108115064', '1108115065', +'1108115066', '1108115067', '1108115068', '1108115069', '1108115070', +'1108115071', '1108115072', '1108115073', '1108115074', '1108115075', +'1108115076', '1108115077', '1108115078', '1108115079', '1108115080', +'1108115081', '1108115082', '1108115083', '1108115084', '1108115085', +'1108115086', '1108115087', '1108115088', '1108115089', '1108115090', +'1108115091', '1108115092', '1108115093', '1108115094', '1108115095', +'1108115096', '1108115097', '1108115098', '1108115099', '1108125030', +'1108125031', '1108125032', '1108125033', '1108125034', '1108125035', +'1108125036', '1108125037', '1108125038', '1108125039', '1108135030', +'1108135031', '1108135032', '1108135033', '1108135034', '1108135035', +'1108135036', '1108135037', '1108135038', '1108135039', '1108145030', +'1108145031', '1108145032', '1108145033', '1108145034', '1108145035', +'1108145036', '1108145037', '1108145038', '1108145039', '1108155030', +'1108155031', '1108155032', '1108155033', '1108155034', '1108155035', +'1108155036', '1108155037', '1108155038', '1108155039', '1108165030', +'1108165031', '1108165032', '1108165033', '1108165034', '1108165035', +'1108165036', '1108165037', '1108165038', '1108165039', '1108175030', +'1108175031', '1108175032', '1108175033', '1108175034', '1108175035', +'1108175036', '1108175037', '1108175038', '1108175039', '1108185030', +'1108185031', '1108185032', '1108185033', '1108185034', '1108185035', +'1108185036', '1108185037', '1108185038', '1108185039', '1108195030', +'1108195031', '1108195032', '1108195033', '1108195034', '1108195035', +'1108195036', '1108195037', '1108195038', '1108195039', '1108205030', +'1108205031', '1108205032', '1108205033', '1108205034', '1108205035', +'1108205036', '1108205037', '1108205038', '1108205039', '1108305030', +'1108305031', '1108305032', '1108305033', '1108305034', '1108305035', +'1108305036', '1108305037', '1108305038', '1108305039', '1108405030', +'1108405031', '1108405032', '1108405033', '1108405034', '1108405035', +'1108405036', '1108405037', '1108405038', '1108405039', '1108505030', +'1108505031', '1108505032', '1108505033', '1108505034', '1108505035', +'1108505036', '1108505037', '1108505038', '1108505039', '1108605030', +'1108605031', '1108605032', '1108605033', '1108605034', '1108605035', +'1108605036', '1108605037', '1108605038', '1108605039', '1108705030', +'1108705031', '1108705032', '1108705033', '1108705034', '1108705035', +'1108705036', '1108705037', '1108705038', '1108705039', '1108805030', +'1108805031', '1108805032', '1108805033', '1108805034', '1108805035', +'1108805036', '1108805037', '1108805038', '1108805039', '1108905030', +'1108905031', '1108905032', '1108905033', '1108905034', '1108905035', +'1108905036', '1108905037', '1108905038', '1108905039', '1128130811', +'1138526486', '1138646500', '1138660856', '1148144645', '1148262150', +'1188109714', '1190243947', '1198208146', '1198263265', '1198679111', +'1198708063', '1218125326', '1218142209', '1218178347', '1228162455', +'1248613144', '1248665341', '1248685333', '1271187351', '1280241206', +'1288163302', '1298116573', '1298123356', '1298130691', '1298185385', +'1304717700', '1308635857', '1308679710', '1318200372', '1318640843', +'1328138608', '1338129441', '1338132077', '1338140621', '1348106679', +'1348644004', '135810600', '135810601', '135810602', '135810603', +'135810604', '135810605', '135810606', '135810607', '135810608', '135810609', +'135810610', '135810611', '135810612', '135810613', '135810614', '135810615', +'135810616', '135810617', '135810618', '135810619', '135810620', '135810621', +'135810622', '135810623', '135810624', '135810625', '135810626', '135810627', +'135810628', '135810629', '135810630', '1358106300', '1358106301', +'1358106302', '1358106303', '1358106304', '1358106305', '1358106306', +'1358106307', '1358106308', '1358106309', '135810631', '1358106310', +'1358106311', '1358106312', '1358106313', '1358106314', '1358106315', +'1358106316', '1358106317', '1358106318', '1358106319', '135810632', +'1358106320', '1358106321', '1358106322', '1358106323', '1358106324', +'1358106325', '1358106326', '1358106327', '1358106328', '1358106329', +'135810633', '1358106330', '1358106331', '1358106332', '1358106334', +'1358106335', '1358106336', '1358106337', '1358106338', '1358106339', +'1358106340', '1358106341', '1358106342', '1358106343', '1358106344', +'1358106345', '1358106346', '1358106347', '1358106348', '1358106349', +'1358106350', '1358106351', '1358106352', '1358106353', '1358106354', +'1358106355', '1358106356', '1358106357', '1358106358', '1358106359', +'1358106360', '1358106361', '1358106362', '1358106363', '1358106364', +'1358106365', '1358106366', '1358106367', '1358106368', '1358106369', +'1358106370', '1358106371', '1358106372', '1358106373', '1358106374', +'1358106375', '1358106376', '1358106377', '1358106378', '1358106379', +'1358106380', '1358106381', '1358106382', '1358106383', '1358106384', +'1358106385', '1358106386', '1358106387', '1358106388', '1358106389', +'1358106390', '1358106391', '1358106392', '1358106393', '1358106394', +'1358106395', '1358106396', '1358106397', '1358106398', '1358106399', +'1378639058', '1388103499', '1388144092', '1388144277', '1408167744', +'1438110463', '1878200055', '2018154845', '2018176228', '2018625781', +'2028142420', '2058126341', '2061812345', '2090152280', '2090152281', +'2090152282', '2090152283', '2090152284', '2090152285', '2090152286', +'2090152287', '2090152288', '2090152289', '2098205326', '2098206382', +'2118639754', '2148799743', '2148849333', '2208166148', '2208205060', +'2208757205', '2208869974', '2218132210', '2218301195', '2228103192', +'2318102896', '2798101263', '3018114992', '3018262166', '3038144911', +'3038207378', '3068122629', '3068200417', '3088141001', '3090051280', +'3090051281', '3090051282', '3090051283', '3090051284', '3090051285', +'3090051286', '3090051287', '3090051288', '3090051289', '3090101280', +'3090101281', '3090101282', '3090101283', '3090101284', '3090101285', +'3090101286', '3090101287', '3090101288', '3090101289', '3090102280', +'3090102281', '3090102282', '3090102283', '3090102284', '3090102285', +'3090102286', '3090102287', '3090102288', '3090102289', '3090111280', +'3090111281', '3090111282', '3090111283', '3090111284', '3090111285', +'3090111286', '3090111287', '3090111288', '3090111289', '3090112280', +'3090112281', '3090112282', '3090112283', '3090112284', '3090112285', +'3090112286', '3090112287', '3090112288', '3090112289', '3090121280', +'3090121281', '3090121282', '3090121283', '3090121284', '3090121285', +'3090121286', '3090121287', '3090121288', '3090121289', '3090122280', +'3090122281', '3090122282', '3090122283', '3090122284', '3090122285', +'3090122286', '3090122287', '3090122288', '3090122289', '3090131280', +'3090131281', '3090131282', '3090131283', '3090131284', '3090131285', +'3090131286', '3090131287', '3090131288', '3090131289', '3090132280', +'3090132281', '3090132282', '3090132283', '3090132284', '3090132285', +'3090132286', '3090132287', '3090132288', '3090132289', '3090141280', +'3090141281', '3090141282', '3090141283', '3090141284', '3090141285', +'3090141286', '3090141287', '3090141288', '3090141289', '3090142280', +'3090142281', '3090142282', '3090142283', '3090142284', '3090142285', +'3090142286', '3090142287', '3090142288', '3090142289', '3090150280', +'3090150281', '3090150282', '3090150283', '3090150284', '3090150285', +'3090150286', '3090150287', '3090150288', '3090150289', '3090151280', +'3090151281', '3090151282', '3090151283', '3090151284', '3090151286', +'3090151287', '3090151288', '3090151289', '3090152080', '3090152081', +'3090152082', '3090152083', '3090152084', '3090152085', '3090152086', +'3090152087', '3090152088', '3090152089', '3090152180', '3090152181', +'3090152182', '3090152183', '3090152184', '3090152185', '3090152186', +'3090152188', '3090152189', '3090152200', '3090152201', '3090152202', +'3090152203', '3090152204', '3090152205', '3090152206', '3090152207', +'3090152208', '3090152209', '3090152210', '3090152211', '3090152212', +'3090152213', '3090152214', '3090152215', '3090152216', '3090152217', +'3090152218', '3090152219', '3090152220', '3090152221', '3090152222', +'3090152223', '3090152224', '3090152225', '3090152226', '3090152227', +'3090152228', '3090152229', '3090152230', '3090152231', '3090152232', +'3090152233', '3090152234', '3090152235', '3090152236', '3090152237', +'3090152238', '3090152239', '3090152240', '3090152241', '3090152242', +'3090152243', '3090152244', '3090152245', '3090152246', '3090152247', +'3090152248', '3090152249', '3090152250', '3090152251', '3090152252', +'3090152253', '3090152254', '3090152255', '3090152256', '3090152257', +'3090152258', '3090152259', '3090152260', '3090152261', '3090152262', +'3090152263', '3090152264', '3090152265', '3090152266', '3090152267', +'3090152268', '3090152269', '3090152270', '3090152271', '3090152272', +'3090152273', '3090152274', '3090152275', '3090152276', '3090152277', +'3090152278', '3090152279', '3090152280', '3090152281', '3090152282', +'3090152283', '3090152285', '3090152286', '3090152287', '3090152288', +'3090152289', '3090152290', '3090152291', '3090152292', '3090152293', +'3090152294', '3090152295', '3090152296', '3090152297', '3090152298', +'3090152380', '3090152381', '3090152382', '3090152383', '3090152384', +'3090152385', '3090152386', '3090152387', '3090152388', '3090152389', +'3090152480', '3090152481', '3090152482', '3090152483', '3090152484', +'3090152485', '3090152486', '3090152487', '3090152488', '3090152489', +'3090152580', '3090152581', '3090152582', '3090152583', '3090152584', +'3090152585', '3090152586', '3090152587', '3090152588', '3090152589', +'3090152680', '3090152681', '3090152682', '3090152683', '3090152684', +'3090152685', '3090152686', '3090152687', '3090152688', '3090152689', +'3090152780', '3090152781', '3090152782', '3090152783', '3090152784', +'3090152785', '3090152786', '3090152787', '3090152788', '3090152789', +'3090152880', '3090152881', '3090152882', '3090152883', '3090152884', +'3090152885', '3090152886', '3090152887', '3090152888', '3090152889', +'3090152980', '3090152981', '3090152982', '3090152983', '3090152984', +'3090152985', '3090152986', '3090152987', '3090152988', '3090152989', +'3090153280', '3090153281', '3090153282', '3090153283', '3090153284', +'3090153285', '3090153286', '3090153287', '3090153288', '3090153289', +'3090154280', '3090154281', '3090154282', '3090154283', '3090154284', +'3090154285', '3090154286', '3090154287', '3090154288', '3090154289', +'3090155280', '3090155281', '3090155282', '3090155283', '3090155284', +'3090155285', '3090155286', '3090155287', '3090155288', '3090155289', +'3090156280', '3090156281', '3090156282', '3090156283', '3090156284', +'3090156285', '3090156286', '3090156287', '3090156288', '3090156289', +'3090157280', '3090157281', '3090157282', '3090157283', '3090157284', +'3090157285', '3090157286', '3090157287', '3090157288', '3090157289', +'3090158280', '3090158281', '3090158282', '3090158283', '3090158284', +'3090158285', '3090158286', '3090158287', '3090158288', '3090158289', +'3090159280', '3090159281', '3090159282', '3090159283', '3090159284', +'3090159285', '3090159286', '3090159287', '3090159288', '3090159289', +'3090161280', '3090161281', '3090161282', '3090161283', '3090161284', +'3090161285', '3090161286', '3090161287', '3090161288', '3090161289', +'3090162280', '3090162281', '3090162282', '3090162283', '3090162284', +'3090162285', '3090162286', '3090162287', '3090162288', '3090162289', +'3090171280', '3090171281', '3090171282', '3090171283', '3090171284', +'3090171285', '3090171286', '3090171287', '3090171288', '3090171289', +'3090172280', '3090172281', '3090172282', '3090172283', '3090172284', +'3090172285', '3090172286', '3090172287', '3090172288', '3090172289', +'3090181280', '3090181281', '3090181282', '3090181283', '3090181284', +'3090181285', '3090181286', '3090181287', '3090181288', '3090181289', +'3090182280', '3090182281', '3090182282', '3090182283', '3090182284', +'3090182285', '3090182286', '3090182287', '3090182288', '3090182289', +'3090191280', '3090191281', '3090191282', '3090191283', '3090191284', +'3090191285', '3090191286', '3090191287', '3090191288', '3090191289', +'3090192280', '3090192281', '3090192282', '3090192283', '3090192284', +'3090192285', '3090192286', '3090192287', '3090192288', '3090192289', +'3090251280', '3090251281', '3090251282', '3090251283', '3090251284', +'3090251285', '3090251286', '3090251287', '3090251288', '3090251289', +'3090351280', '3090351281', '3090351282', '3090351283', '3090351284', +'3090351285', '3090351286', '3090351287', '3090351288', '3090351289', +'3090451280', '3090451281', '3090451282', '3090451283', '3090451284', +'3090451285', '3090451286', '3090451287', '3090451288', '3090451289', +'3090551280', '3090551281', '3090551282', '3090551283', '3090551284', +'3090551285', '3090551286', '3090551287', '3090551288', '3090551289', +'3090651280', '3090651281', '3090651282', '3090651283', '3090651284', +'3090651285', '3090651286', '3090651287', '3090651288', '3090651289', +'3090751280', '3090751281', '3090751282', '3090751283', '3090751284', +'3090751285', '3090751286', '3090751287', '3090751288', '3090751289', +'3090851280', '3090851281', '3090851282', '3090851283', '3090851284', +'3090851285', '3090851286', '3090851287', '3090851288', '3090851289', +'3090951280', '3090951281', '3090951282', '3090951283', '3090951284', +'3090951285', '3090951286', '3090951287', '3090951288', '3090951289', +'3118122413', '3128195317', '3148201980', '3148600956', '3148642432', +'3148663209', '3178104543', '3178111175', '3748101516', '3751000859', +'3758800519', '3949200410', '3988500113', '4090152280', '4090152281', +'4090152282', '4090152283', '4090152284', '4090152285', '4090152286', +'4090152287', '4090152288', '4090152289', '4098633769', '4108283844', +'4108653770', '4158119511', '4158211025', '4168148042', '4178507912', +'4208700883', '5048511802', '5068206755', '5090152280', '5090152281', +'5090152282', '5090152283', '5090152284', '5090152285', '5090152286', +'5090152287', '5090152288', '5090152289', '5148168599', '5150462016', +'5150532580', '5158110315', '5158140648', '5338500526', '5338701306', +'5531436227', '5802100836', '6038124270', '6068154507', '6068606989', +'6090152280', '6090152281', '6090152282', '6090152283', '6090152284', +'6090152285', '6090152286', '6090152287', '6090152288', '6090152289', +'6098199124', '6100984339', '6108104971', '6158609068', '6162446281', +'6211541743', '6321101006', '6398600985', '6698100996', '6828500885', +'7090152280', '7090152281', '7090152282', '7090152283', '7090152284', +'7090152285', '7090152286', '7090152287', '7090152288', '7090152289', +'7288600316', '7358500501', '7600600079', '8090152280', '8090152281', +'8090152282', '8090152283', '8090152284', '8090152285', '8090152286', +'8090152287', '8090152288', '8090152289', '8841700020', '8841700021', +'8841700022', '8841700023', '8841700024', '8841700025', '8841700026', +'8841700027', '8841700028', '8841700029', '8841701000', '8841701001', +'8841701002', '8841701003', '8841701004', '8841701005', '8841701006', +'8841701007', '8841701008', '8841701009', '8841701010', '8841701011', +'8841701012', '8841701013', '8841701014', '8841701015', '8841701016', +'8841701017', '8841701018', '8841701019', '8841701020', '8841701021', +'8841701022', '8841701023', '8841701024', '8841701025', '8841701027', +'8841701028', '8841701029', '8841701030', '8841701031', '8841701032', +'8841701033', '8841701034', '8841701035', '8841701036', '8841701037', +'8841701038', '8841701039', '8841701040', '8841701041', '8841701042', +'8841701043', '8841701044', '8841701045', '8841701046', '8841701047', +'8841701048', '8841701049', '8841701050', '8841701051', '8841701052', +'8841701053', '8841701054', '8841701055', '8841701056', '8841701057', +'8841701058', '8841701059', '8841701060', '8841701061', '8841701062', +'8841701063', '8841701064', '8841701065', '8841701066', '8841701067', +'8841701068', '8841701069', '8841701070', '8841701071', '8841701072', +'8841701073', '8841701074', '8841701075', '8841701076', '8841701077', +'8841701078', '8841701079', '8841701080', '8841701081', '8841701082', +'8841701083', '8841701084', '8841701085', '8841701086', '8841701087', +'8841701088', '8841701089', '8841701090', '8841701091', '8841701092', +'8841701093', '8841701094', '8841701095', '8841701096', '8841701097', +'8841701098', '8841701099', '8841701120', '8841701121', '8841701122', +'8841701123', '8841701124', '8841701125', '8841701126', '8841701127', +'8841701128', '8841701129', '8841701221', '8841701222', '8841701223', +'8841701224', '8841701225', '8841701226', '8841701227', '8841701228', +'8841701229', '8841701320', '8841701321', '8841701322', '8841701323', +'8841701324', '8841701325', '8841701326', '8841701327', '8841701328', +'8841701329', '8841701420', '8841701421', '8841701422', '8841701423', +'8841701424', '8841701425', '8841701426', '8841701427', '8841701428', +'8841701429', '8841701520', '8841701521', '8841701522', '8841701523', +'8841701524', '8841701525', '8841701526', '8841701527', '8841701528', +'8841701529', '8841701620', '8841701621', '8841701622', '8841701623', +'8841701624', '8841701625', '8841701626', '8841701627', '8841701628', +'8841701629', '8841701720', '8841701721', '8841701722', '8841701723', +'8841701724', '8841701725', '8841701726', '8841701727', '8841701728', +'8841701729', '8841701820', '8841701821', '8841701822', '8841701823', +'8841701824', '8841701825', '8841701826', '8841701827', '8841701828', +'8841701829', '8841701920', '8841701921', '8841701922', '8841701923', +'8841701924', '8841701925', '8841701926', '8841701927', '8841701928', +'8841701929', '8841702020', '8841702021', '8841702022', '8841702023', +'8841702024', '8841702025', '8841702026', '8841702027', '8841702028', +'8841702029', '8841703020', '8841703021', '8841703022', '8841703023', +'8841703024', '8841703025', '8841703026', '8841703027', '8841703028', +'8841703029', '8841704020', '8841704021', '8841704022', '8841704023', +'8841704024', '8841704025', '8841704026', '8841704027', '8841704028', +'8841704029', '8841705020', '8841705021', '8841705022', '8841705023', +'8841705024', '8841705025', '8841705026', '8841705027', '8841705028', +'8841705029', '8841706020', '8841706021', '8841706022', '8841706023', +'8841706024', '8841706025', '8841706026', '8841706027', '8841706028', +'8841706029', '8841707020', '8841707021', '8841707022', '8841707023', +'8841707024', '8841707025', '8841707026', '8841707027', '8841707028', +'8841707029', '8841708020', '8841708021', '8841708022', '8841708023', +'8841708024', '8841708025', '8841708026', '8841708027', '8841708028', +'8841708029', '8841709020', '8841709021', '8841709022', '8841709023', +'8841709024', '8841709025', '8841709026', '8841709027', '8841709028', +'8841709029', '9090152280', '9090152281', '9090152282', '9090152283', +'9090152284', '9090152285', '9090152286', '9090152287', '9090152288', +'9090152289'] + +list(find('30901522x')) +['3090152284', '3090152299'] 8->9 4->9 + + + +#weights = (2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5) + +weights = (4, 5, 6, 7, 8, 9, 2, 3, 4) + + +def calc_check_digit(number): + """Calculate the check digit.""" + check = sum(w * int(n) for w, n in zip(weights, number)) + return str((11 - (check % 11)) % 10) + + +most popular first three digits: +['110', '214'] + +most popular company types +['86', '81'] + +most popular prefixes: +['11081', '11486', '30581'] + + +>>> [x for x in valid if x.startswith('11081')] +['1108105034', '1108107390', '1108140725'] +>>> list(find('11081050x')) +['1108105034'] +>>> list(find('1108105x3')) +['1108105034'] +>>> list(find('110810x03')) +['1108105034'] +>>> list(find('11081x503')) +['1108105034'] +>>> list(find('1108x0503')) +['1108105034'] +>>> list(find('11081000x')) +[] +>>> list(find('11081150x')) +[] +>>> list(find('30901522x')) +['3090152284', '3090152299'] 8->9: 4->9 (5?) +>>> list(find('3090152x8')) +['3090152187', '3090152284'] 1->2: 7->4 (8?) +>>> list(find('309015x28')) +['3090151285', '3090152284'] 1->2: 5->4 (10?) +>>> list(find('30901x228')) +['3090152284'] +>>> list(find('30901x128')) +>>> list(find('30901x128')) +['3090151285'] +>>> list(find('3090x5128')) +['3090151285'] + + +# 214-81-0011? + + +checked = {} + +def check_ftc(number, timeout=30): # pragma: no cover + """Check the number against the Korea Fair Trade Commission website.""" + from pkg_resources import resource_filename + import lxml.html + import requests + number = compact(number) + if number in checked: + return checked[number] + url = 'https://www.ftc.go.kr/bizCommPop.do' + certificate = resource_filename(__name__, 'GPKIRootCA1.crt') + document = lxml.html.fromstring( + requests.get(url, params={'wrkr_no': number}, timeout=timeout, verify=certificate).text) + data = dict(zip( + [(x.text or '').strip() for x in document.findall('.//th')], + [(x.text or '').strip() for x in document.findall('.//td')])) + checked[number] = data or None + return data or None + + +def check(number): + return not (number[:3] < '101' or number[3:5] == '00' or number[5:-1] == '0000') + + +while True: + number = ''.join(random.choice('0123456789') for x in range(10)) + if not (number[:3] < '101' or number[3:5] == '00' or number[5:-1] == '0000'): + print(number) + if number not in valid and number not in invalid: + try: + if check_ftc(number, 60): + valid.add(number) + validfile.write('%s\n' % number) + invalidfile.flush() + else: + invalid.add(number) + invalidfile.write('%s\n' % number) + invalidfile.flush() + except: + traceback.print_exc() + time.sleep(1) + + +The above resulted in 8 valid numbers in about 2.5 months time. Most of the time +the service was unavailable and it seems they changed their CA certificate at some point. diff --git a/stdnum/kr/rrn.py b/stdnum/kr/rrn.py index b67493cf..9a8bf8e6 100644 --- a/stdnum/kr/rrn.py +++ b/stdnum/kr/rrn.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RRN (South Korean resident registration number). @@ -33,7 +31,7 @@ More information: -* http://www.law.go.kr/lsSc.do?tabMenuId=tab18&p1=&subMenu=1&nwYn=1§ion=&tabNo=&query=개인정보+보호법 +* https://www.law.go.kr/lsSc.do?tabMenuId=tab18&p1=&subMenu=1&nwYn=1§ion=&tabNo=&query=개인정보+보호법 * https://en.wikipedia.org/wiki/Resident_registration_number * https://techscience.org/a/2015092901/ @@ -45,26 +43,28 @@ InvalidChecksum: ... """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '-').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5) check = sum(w * int(n) for w, n in zip(weights, number)) return str((11 - (check % 11)) % 10) -def get_birth_date(number, allow_future=True): +def get_birth_date(number: str, allow_future: bool = True) -> datetime.date: """Split the date parts from the number and return the birth date. If allow_future is False birth dates in the future are rejected.""" number = compact(number) @@ -90,7 +90,7 @@ def get_birth_date(number, allow_future=True): return date_of_birth -def validate(number, allow_future=True): +def validate(number: str, allow_future: bool = True) -> str: """Check if the number is a valid RNN. This checks the length, formatting and check digit. If allow_future is False birth dates in the future are rejected.""" @@ -110,7 +110,7 @@ def validate(number, allow_future=True): return number -def is_valid(number, allow_future=True): +def is_valid(number: str, allow_future: bool = True) -> bool: """Check if the number provided is valid.""" try: return bool(validate(number, allow_future)) @@ -118,7 +118,7 @@ def is_valid(number, allow_future=True): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) if len(number) == 13: diff --git a/stdnum/lei.py b/stdnum/lei.py index 376fd476..06b5c524 100644 --- a/stdnum/lei.py +++ b/stdnum/lei.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """LEI (Legal Entity Identifier). @@ -28,7 +26,7 @@ More information: * https://en.wikipedia.org/wiki/Legal_Entity_Identifier -* http://www.lei-lookup.com/ +* https://www.lei-lookup.com/ * https://www.gleif.org/ * http://openleis.com/ @@ -40,18 +38,20 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_97_10 from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding white space.""" return clean(number, ' -').strip().upper() -def validate(number): +def validate(number: str) -> str: """Check if the number is valid. This checks the length, format and check digits.""" number = compact(number) @@ -59,7 +59,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is valid.""" try: return bool(validate(number)) diff --git a/stdnum/li/__init__.py b/stdnum/li/__init__.py new file mode 100644 index 00000000..86f558eb --- /dev/null +++ b/stdnum/li/__init__.py @@ -0,0 +1,19 @@ +# __init__.py - collection of Liechtenstein numbers +# coding: utf-8 +# +# Copyright (C) 2020 Matthias Schmid +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Liechtenstein numbers.""" diff --git a/stdnum/li/peid.py b/stdnum/li/peid.py new file mode 100644 index 00000000..6be8ac30 --- /dev/null +++ b/stdnum/li/peid.py @@ -0,0 +1,68 @@ +# peid.py - library for Liechtenstein Personenidentifikationsnummer +# +# Copyright (C) 2020 Matthias Schmid +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""PEID (Liechtenstein tax code for individuals and entities). + +The Personenidentifikationsnummer (PEID) is an numeric code up to 12 digits +used to identify entities and individuals residing in Liechtenstein. + +More information: + +* https://www.oera.li/ +* https://www.oecd.org/tax/automatic-exchange/crs-implementation-and-assistance/tax-identification-numbers/LIECHTENSTEIN%20TIN.pdf + +>>> compact('00001234567') +'1234567' +>>> validate('1234567') # personal number or entity number +'1234567' +>>> validate('00001234567') +'1234567' +>>> validate('00001234568913454545') +Traceback (most recent call last): + ... +InvalidLength: The number has an invalid length. +""" # noqa: E501 + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' .').strip().lstrip('0') + + +def validate(number: str) -> str: + """Check if the given fiscal code is valid.""" + number = compact(number) + if len(number) < 4 or len(number) > 12: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + + return number + + +def is_valid(number: str) -> bool: + """Check if the given fiscal code is valid.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/lt/__init__.py b/stdnum/lt/__init__.py index 3a02b292..72228039 100644 --- a/stdnum/lt/__init__.py +++ b/stdnum/lt/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Lithuanian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.lt import pvm as vat # noqa: F401 diff --git a/stdnum/lt/asmens.py b/stdnum/lt/asmens.py index a45dcdfc..25a7d7f1 100644 --- a/stdnum/lt/asmens.py +++ b/stdnum/lt/asmens.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Asmens kodas (Lithuanian, personal numbers). @@ -37,18 +35,20 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.ee.ik import calc_check_digit, get_birth_date from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def validate(number, validate_birth_date=True): +def validate(number: str, validate_birth_date: bool = True) -> str: """Check if the number provided is valid. This checks the length, formatting, embedded date and check digit.""" number = compact(number) @@ -63,7 +63,7 @@ def validate(number, validate_birth_date=True): return number -def is_valid(number, validate_birth_date=True): +def is_valid(number: str, validate_birth_date: bool = True) -> bool: """Check if the number provided is valid. This checks the length, formatting, embedded date and check digit.""" try: diff --git a/stdnum/lt/pvm.py b/stdnum/lt/pvm.py index a0984f4c..8b01cb9f 100644 --- a/stdnum/lt/pvm.py +++ b/stdnum/lt/pvm.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PVM (Pridėtinės vertės mokestis mokėtojo kodas, Lithuanian VAT number). @@ -37,11 +35,13 @@ '100004801610' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -50,7 +50,7 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" check = sum((1 + i % 9) * int(n) for i, n in enumerate(number)) % 11 @@ -59,7 +59,7 @@ def calc_check_digit(number): return str(check % 11 % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -80,7 +80,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/lu/__init__.py b/stdnum/lu/__init__.py index 3c28de8b..32aebead 100644 --- a/stdnum/lu/__init__.py +++ b/stdnum/lu/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Luxembourgian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.lu import tva as vat # noqa: F401 diff --git a/stdnum/lu/tva.py b/stdnum/lu/tva.py index 4ec80946..558ccdeb 100644 --- a/stdnum/lu/tva.py +++ b/stdnum/lu/tva.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """TVA (taxe sur la valeur ajoutée, Luxembourgian VAT number). @@ -32,11 +30,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' :.-').upper().strip() @@ -45,12 +45,12 @@ def compact(number): return number -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the number.""" return '%02d' % (int(number) % 89) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -63,7 +63,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/luhn.py b/stdnum/luhn.py index afa48297..fe77f0a2 100644 --- a/stdnum/luhn.py +++ b/stdnum/luhn.py @@ -1,6 +1,6 @@ # luhn.py - functions for performing the Luhn and Luhn mod N algorithms # -# Copyright (C) 2010, 2011, 2012, 2013 Arthur de Jong +# Copyright (C) 2010-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The Luhn and Luhn mod N algorithms. @@ -44,34 +42,36 @@ 14 """ +from __future__ import annotations + from stdnum.exceptions import * -def checksum(number, alphabet='0123456789'): +def checksum(number: str, alphabet: str = '0123456789') -> int: """Calculate the Luhn checksum over the provided number. The checksum is returned as an int. Valid numbers should have a checksum of 0.""" n = len(alphabet) - number = tuple(alphabet.index(i) + values = tuple(alphabet.index(i) for i in reversed(str(number))) - return (sum(number[::2]) + + return (sum(values[::2]) + sum(sum(divmod(i * 2, n)) - for i in number[1::2])) % n + for i in values[1::2])) % n -def validate(number, alphabet='0123456789'): +def validate(number: str, alphabet: str = '0123456789') -> str: """Check if the number provided passes the Luhn checksum.""" if not bool(number): raise InvalidFormat() try: valid = checksum(number, alphabet) == 0 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number, alphabet='0123456789'): +def is_valid(number: str, alphabet: str = '0123456789') -> bool: """Check if the number passes the Luhn checksum.""" try: return bool(validate(number, alphabet)) @@ -79,7 +79,7 @@ def is_valid(number, alphabet='0123456789'): return False -def calc_check_digit(number, alphabet='0123456789'): +def calc_check_digit(number: str, alphabet: str = '0123456789') -> str: """Calculate the extra digit that should be appended to the number to make it a valid number.""" ck = checksum(str(number) + alphabet[0], alphabet) diff --git a/stdnum/lv/__init__.py b/stdnum/lv/__init__.py index e6de3598..a4ab3130 100644 --- a/stdnum/lv/__init__.py +++ b/stdnum/lv/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Latvian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.lv import pvn as vat # noqa: F401 diff --git a/stdnum/lv/pvn.py b/stdnum/lv/pvn.py index 006b5c0c..d73ee4c9 100644 --- a/stdnum/lv/pvn.py +++ b/stdnum/lv/pvn.py @@ -1,7 +1,7 @@ # pvn.py - functions for handling Latvian PVN (VAT) numbers # coding: utf-8 # -# Copyright (C) 2012-2019 Arthur de Jong +# Copyright (C) 2012-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,16 +14,19 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PVN (Pievienotās vērtības nodokļa, Latvian VAT number). The PVN is a 11-digit number that can either be a reference to a legal entity (in which case the first digit > 3) or a natural person (in which case it should be the same as the personal code (personas kods)). Personal -codes start with 6 digits to denote the birth date in the form ddmmyy. +codes start "32". Older personal codes start with 6 digits to denote the birth +date in the form ddmmyy. + +More information: + +* https://en.wikipedia.org/wiki/National_identification_number#Latvia >>> validate('LV 4000 3521 600') '40003521600' @@ -31,14 +34,22 @@ Traceback (most recent call last): ... InvalidChecksum: ... ->>> validate('161175-19997') # personal code +>>> validate('161175-19997') # personal code, old format '16117519997' >>> validate('161375-19997') # invalid date Traceback (most recent call last): ... InvalidComponent: ... +>>> validate('328673-00679') # personal code, new format +'32867300679' +>>> validate('328673-00677') # personal code, new format +Traceback (most recent call last): + ... +InvalidChecksum: ... """ +from __future__ import annotations + import datetime from stdnum.exceptions import * @@ -50,7 +61,7 @@ # https://www6.vid.gov.lv/VID_PDB?aspxerrorpath=/vid_pdb/pvn.asp -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -59,13 +70,13 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum for legal entities.""" weights = (9, 1, 4, 8, 3, 10, 2, 5, 7, 6, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def calc_check_digit_pers(number): +def calc_check_digit_pers(number: str) -> str: """Calculate the check digit for personal codes. The number passed should not have the check digit included.""" # note that this algorithm has not been confirmed by an independent source @@ -74,7 +85,7 @@ def calc_check_digit_pers(number): return str(check % 11 % 10) -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) day = int(number[0:2]) @@ -87,7 +98,7 @@ def get_birth_date(number): raise InvalidComponent() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -99,6 +110,10 @@ def validate(number): # legal entity if checksum(number) != 3: raise InvalidChecksum() + elif number.startswith('32'): + # personal code without a date of birth (issued from July 2017 onwards) + if calc_check_digit_pers(number[:-1]) != number[-1]: + raise InvalidChecksum() else: # natural resident, check if birth date is valid get_birth_date(number) @@ -108,7 +123,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/ma/__init__.py b/stdnum/ma/__init__.py new file mode 100644 index 00000000..b895e1ff --- /dev/null +++ b/stdnum/ma/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Moroccan numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Moroccan numbers.""" + +from __future__ import annotations + +# provide vat as an alias +from stdnum.ma import ice as vat # noqa: F401 diff --git a/stdnum/ma/ice.py b/stdnum/ma/ice.py new file mode 100644 index 00000000..d1922bb2 --- /dev/null +++ b/stdnum/ma/ice.py @@ -0,0 +1,102 @@ +# ice.py - functions for handling Morocco ICE numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# Copyright (C) 2022 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""ICE (Identifiant Commun de l’Entreprise, التعريف الموحد للمقاولة, Morocco tax number). + +The ICE is a number that identifies the company and its branches in a unique +and uniform way by all Moroccan administrations. It comes in addition to the +other legal identifiers, notably the "identifiant fiscal" (IF), the "numéro de +registre de commerce" (RC) and the CNSS number. The ICE does not replace these +identifiers, which remain mandatory. + +The ICE is intended to ease communication among Moroccan administration +branches, therefore simplifying procedures, increasing reliability and speed, +and therefore reducing costs. + +The ICE applies to legal entities and their branches, as well as to natural +persons. + +The ICE consists of 15 characters, where the first 9 represent the enterprise, +the following 4 represent its establishments, and the last 2 are control +characters. + +More information: + +* https://www.ice.gov.ma/ +* https://www.ice.gov.ma/ICE/Depliant_ICE.pdf +* https://www.ice.gov.ma/ICE/Guide_ICE.pdf + +>>> validate('001561191000066') +'001561191000066' +>>> validate('00 21 36 09 30 00 040') +'002136093000040' +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('001561191000065') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('00 21 36 09 30 00 040') +'002136093000040' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.iso7064 import mod_97_10 +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators, removes surrounding + whitespace. + """ + return clean(number, ' ') + + +def validate(number: str) -> str: + """Check if the number is a valid Morocco ICE number. + + This checks the length and formatting. + """ + number = compact(number) + if len(number) != 15: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if mod_97_10.checksum(number) != 0: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Morocco ICE number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number).zfill(15) diff --git a/stdnum/mac.py b/stdnum/mac.py index 6ca29fba..42b82093 100644 --- a/stdnum/mac.py +++ b/stdnum/mac.py @@ -1,6 +1,6 @@ # mac.py - functions for handling MAC (Ethernet) addresses # -# Copyright (C) 2018 Arthur de Jong +# Copyright (C) 2018-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """MAC address (Media Access Control address). @@ -35,7 +33,7 @@ 'D0-50-99-84-A2-A0' >>> is_multicast('d0:50:99:84:a2:a0') False ->>> str(get_manufacturer('d0:50:99:84:a2:a0')) +>>> get_manufacturer('d0:50:99:84:a2:a0') 'ASRock Incorporation' >>> get_oui('d0:50:99:84:a2:a0') 'D05099' @@ -43,6 +41,8 @@ '84A2A0' """ +from __future__ import annotations + import re from stdnum import numdb @@ -53,14 +53,14 @@ _mac_re = re.compile('^([0-9a-f]{2}:){5}[0-9a-f]{2}$') -def compact(number): +def compact(number: str) -> str: """Convert the MAC address to the minimal, consistent representation.""" number = clean(number, ' ').strip().lower().replace('-', ':') # zero-pad single-digit elements return ':'.join('0' + n if len(n) == 1 else n for n in number.split(':')) -def _lookup(number): +def _lookup(number: str) -> tuple[str, str]: """Look up the manufacturer in the IEEE OUI registry.""" number = compact(number).replace(':', '').upper() info = numdb.get('oui').info(number) @@ -72,23 +72,23 @@ def _lookup(number): raise InvalidComponent() -def get_manufacturer(number): +def get_manufacturer(number: str) -> str: """Look up the manufacturer in the IEEE OUI registry.""" return _lookup(number)[1] -def get_oui(number): +def get_oui(number: str) -> str: """Return the OUI (organization unique ID) part of the address.""" return _lookup(number)[0] -def get_iab(number): +def get_iab(number: str) -> str: """Return the IAB (individual address block) part of the address.""" number = compact(number).replace(':', '').upper() return number[len(get_oui(number)):] -def is_unicast(number): +def is_unicast(number: str) -> bool: """Check whether the number is a unicast address. Unicast addresses are received by one node in a network (LAN).""" @@ -96,7 +96,7 @@ def is_unicast(number): return int(number[:2], 16) & 1 == 0 -def is_multicast(number): +def is_multicast(number: str) -> bool: """Check whether the number is a multicast address. Multicast addresses are meant to be received by (potentially) multiple @@ -104,7 +104,7 @@ def is_multicast(number): return not is_unicast(number) -def is_broadcast(number): +def is_broadcast(number: str) -> bool: """Check whether the number is the broadcast address. Broadcast addresses are meant to be received by all nodes in a network.""" @@ -112,18 +112,18 @@ def is_broadcast(number): return number == 'ff:ff:ff:ff:ff:ff' -def is_universally_administered(number): +def is_universally_administered(number: str) -> bool: """Check if the address is supposed to be assigned by the manufacturer.""" number = compact(number) return int(number[:2], 16) & 2 == 0 -def is_locally_administered(number): +def is_locally_administered(number: str) -> bool: """Check if the address is meant to be configured by an administrator.""" return not is_universally_administered(number) -def validate(number, validate_manufacturer=None): +def validate(number: str, validate_manufacturer: bool | None = None) -> str: """Check if the number provided is a valid MAC address. The existence of the manufacturer is by default only checked for @@ -141,7 +141,7 @@ def validate(number, validate_manufacturer=None): return number -def is_valid(number, validate_manufacturer=None): +def is_valid(number: str, validate_manufacturer: bool | None = None) -> bool: """Check if the number provided is a valid IBAN.""" try: return bool(validate(number, validate_manufacturer=validate_manufacturer)) @@ -149,6 +149,6 @@ def is_valid(number, validate_manufacturer=None): return False -def to_eui48(number): +def to_eui48(number: str) -> str: """Convert the MAC address to EUI-48 format.""" return compact(number).upper().replace(':', '-') diff --git a/stdnum/mc/__init__.py b/stdnum/mc/__init__.py index 33e9a335..478d9775 100644 --- a/stdnum/mc/__init__.py +++ b/stdnum/mc/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Monacan numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.mc import tva as vat # noqa: F401 diff --git a/stdnum/mc/tva.py b/stdnum/mc/tva.py index 0fe3bf5e..10c61728 100644 --- a/stdnum/mc/tva.py +++ b/stdnum/mc/tva.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """n° TVA (taxe sur la valeur ajoutée, Monacan VAT number). @@ -34,17 +32,19 @@ InvalidComponent: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.fr import tva -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return 'FR' + tva.compact(number) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = tva.validate(number) @@ -53,7 +53,7 @@ def validate(number): return 'FR' + number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/md/__init__.py b/stdnum/md/__init__.py index f9220652..1a3e1730 100644 --- a/stdnum/md/__init__.py +++ b/stdnum/md/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Moldavian numbers.""" diff --git a/stdnum/md/idno.py b/stdnum/md/idno.py index 4ba80638..c36f746d 100644 --- a/stdnum/md/idno.py +++ b/stdnum/md/idno.py @@ -1,4 +1,4 @@ -# rnc.py - functions for handling Moldavian company identification numbers +# idno.py - functions for handling Moldavian company identification numbers # coding: utf-8 # # Copyright (C) 2019 Arthur de Jong @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IDNO (Moldavian company identification number). @@ -37,23 +35,25 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (7, 3, 1, 7, 3, 1, 7, 3, 1, 7, 3, 1) return str(sum(w * int(n) for w, n in zip(weights, number)) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is valid. This checks the length, formatting and check digit.""" number = compact(number) @@ -66,7 +66,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is valid. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/me/__init__.py b/stdnum/me/__init__.py index afb24427..512b9a08 100644 --- a/stdnum/me/__init__.py +++ b/stdnum/me/__init__.py @@ -14,8 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Montenegro numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.me import pib as vat # noqa: F401 diff --git a/stdnum/me/iban.py b/stdnum/me/iban.py index 248aa22c..8403232a 100644 --- a/stdnum/me/iban.py +++ b/stdnum/me/iban.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Montenegro IBAN (International Bank Account Number). @@ -37,6 +35,8 @@ InvalidComponent: ... """ +from __future__ import annotations + from stdnum import iban from stdnum.exceptions import * @@ -48,12 +48,12 @@ format = iban.format -def _checksum(number): +def _checksum(number: str) -> int: """Calculate the check digits over the provided part of the number.""" return int(number) % 97 -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid Montenegro IBAN.""" number = iban.validate(number, check_country=False) if not number.startswith('ME'): @@ -63,7 +63,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid Montenegro IBAN.""" try: return bool(validate(number)) diff --git a/stdnum/me/pib.py b/stdnum/me/pib.py new file mode 100644 index 00000000..ff5913c8 --- /dev/null +++ b/stdnum/me/pib.py @@ -0,0 +1,82 @@ +# pib.py - functions for handling Montenegro PIB numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# Copyright (C) 2022 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""PIB (Poreski Identifikacioni Broj, Montenegro tax number). + +This number consists of 8 digits. + +More information: + +* http://www.pretraga.crps.me:8083/ +* https://www.vatify.eu/montenegro-vat-number.html + +>>> validate('02655284') +'02655284' +>>> validate('02655283') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('02655284') +'02655284' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. + """ + return clean(number, ' ') + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit for the number.""" + weights = (8, 7, 6, 5, 4, 3, 2) + return str((-sum(w * int(n) for w, n in zip(weights, number))) % 11 % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid Montenegro PIB number.""" + number = compact(number) + if len(number) != 8: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Montenegro PIB number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/meid.py b/stdnum/meid.py index 5dedd8f9..e7b3fed7 100644 --- a/stdnum/meid.py +++ b/stdnum/meid.py @@ -1,6 +1,6 @@ # meid.py - functions for handling Mobile Equipment Identifiers (MEIDs) # -# Copyright (C) 2010-2017 Arthur de Jong +# Copyright (C) 2010-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """MEID (Mobile Equipment Identifier). @@ -38,6 +36,8 @@ '29360 87365 0070 3710 0' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -45,20 +45,20 @@ _hex_alphabet = '0123456789ABCDEF' -def _cleanup(number): +def _cleanup(number: str) -> str: """Remove any grouping information from the number and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def _ishex(number): +def _ishex(number: str) -> bool: for x in number: if x not in _hex_alphabet: return False return True -def _parse(number): +def _parse(number: str) -> tuple[str, str]: number = _cleanup(number) if len(number) in (14, 15): # 14 or 15 digit hex representation @@ -74,7 +74,7 @@ def _parse(number): raise InvalidLength() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number. The number should not already have a check digit.""" # both the 18-digit decimal format and the 14-digit hex format @@ -86,7 +86,7 @@ def calc_check_digit(number): return luhn.calc_check_digit(number, alphabet=_hex_alphabet) -def compact(number, strip_check_digit=True): +def compact(number: str, strip_check_digit: bool = True) -> str: """Convert the MEID number to the minimal (hexadecimal) representation. This strips grouping information, removes surrounding whitespace and converts to hexadecimal if needed. If the check digit is to be preserved @@ -105,22 +105,13 @@ def compact(number, strip_check_digit=True): return number + cd -def _bit_length(n): - """Return the number of bits necessary to store the number in binary.""" - try: - return n.bit_length() - except AttributeError: # pragma: no cover (Python 2.6 only) - import math - return int(math.log(n, 2)) + 1 - - -def validate(number, strip_check_digit=True): +def validate(number: str, strip_check_digit: bool = True) -> str: """Check if the number is a valid MEID number. This converts the representation format of the number (if it is decimal it is not converted to hexadecimal).""" - from stdnum import luhn # first parse the number number, cd = _parse(number) + from stdnum import luhn if len(number) == 18: # decimal format can be easily determined if cd: @@ -128,7 +119,7 @@ def validate(number, strip_check_digit=True): # convert to hex manufacturer_code = int(number[0:10]) serial_num = int(number[10:18]) - if _bit_length(manufacturer_code) > 32 or _bit_length(serial_num) > 24: + if manufacturer_code.bit_length() > 32 or serial_num.bit_length() > 24: raise InvalidComponent() number = '%08X%06X' % (manufacturer_code, serial_num) cd = calc_check_digit(number) @@ -145,7 +136,7 @@ def validate(number, strip_check_digit=True): return number + cd -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid MEID number.""" try: return bool(validate(number)) @@ -153,7 +144,12 @@ def is_valid(number): return False -def format(number, separator=' ', format=None, add_check_digit=False): +def format( + number: str, + separator: str = ' ', + format: str | None = None, + add_check_digit: bool = False, +) -> str: """Reformat the number to the standard presentation format. The separator used can be provided. If the format is specified (either 'hex' or 'dec') the number is reformatted in that format, otherwise the current @@ -177,24 +173,24 @@ def format(number, separator=' ', format=None, add_check_digit=False): cd = calc_check_digit(number) # split number according to format if len(number) == 14: - number = [number[i * 2:i * 2 + 2] - for i in range(7)] + [cd] + parts = [number[i * 2:i * 2 + 2] + for i in range(7)] + [cd] else: - number = (number[:5], number[5:10], number[10:14], number[14:], cd) - return separator.join(x for x in number if x) + parts = [number[:5], number[5:10], number[10:14], number[14:], cd] + return separator.join(x for x in parts if x) -def to_binary(number): +def to_binary(number: str) -> bytes: """Convert the number to its binary representation (without the check digit).""" from binascii import a2b_hex return a2b_hex(compact(number, strip_check_digit=True)) -def to_pseudo_esn(number): +def to_pseudo_esn(number: str) -> str: """Convert the provided MEID to a pseudo ESN (pESN). The ESN is returned in compact hexadecimal representation.""" - import hashlib # return the last 6 digits of the SHA1 hash prefixed with the reserved # manufacturer code + import hashlib return '80' + hashlib.sha1(to_binary(number)).hexdigest()[-6:].upper() diff --git a/stdnum/mk/__init__.py b/stdnum/mk/__init__.py new file mode 100644 index 00000000..fab00712 --- /dev/null +++ b/stdnum/mk/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of North Macedonia numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of North Macedonia numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.mk import edb as vat # noqa: F401 diff --git a/stdnum/mk/edb.py b/stdnum/mk/edb.py new file mode 100644 index 00000000..c3a482a0 --- /dev/null +++ b/stdnum/mk/edb.py @@ -0,0 +1,96 @@ +# edb.py - functions for handling North Macedonia EDB numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# Copyright (C) 2025 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""ЕДБ (Едниствен Даночен Број, North Macedonia tax number). + +This number consists of 13 digits, sometimes with an additional "MK" prefix. + +More information: + +* http://www.ujp.gov.mk/en + +>>> validate('4030000375897') +'4030000375897' +>>> validate('МК 4020990116747') # Cyrillic letters +'4020990116747' +>>> validate('MK4057009501106') # ASCII letters +'4057009501106' +>>> validate('4030000375890') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('МК 4020990116747') # Cyrillic letters +'4020990116747' +>>> format('MK4057009501106') # ASCII letters +'4057009501106' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. + """ + number = clean(number, ' -').upper().strip() + # First two are ASCII, second two are Cyrillic + for prefix in ('MK', 'МК'): + if number.startswith(prefix): + number = number[len(prefix):] + return number + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit.""" + weights = (7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2) + total = sum(int(n) * w for n, w in zip(number, weights)) + return str((-total % 11) % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid North Macedonia ЕДБ number. + + This checks the length, formatting and check digit. + """ + number = compact(number) + if len(number) != 13: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid North Macedonia ЕДБ number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/mt/__init__.py b/stdnum/mt/__init__.py index e1d2ef78..5692ac20 100644 --- a/stdnum/mt/__init__.py +++ b/stdnum/mt/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Maltese numbers.""" diff --git a/stdnum/mt/vat.py b/stdnum/mt/vat.py index 6d7899ec..f18604c6 100644 --- a/stdnum/mt/vat.py +++ b/stdnum/mt/vat.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VAT (Maltese VAT number). @@ -30,11 +28,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -43,13 +43,13 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (3, 4, 6, 7, 8, 9, 10, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 37 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -62,7 +62,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/mu/__init__.py b/stdnum/mu/__init__.py index 1fff1660..efe73814 100644 --- a/stdnum/mu/__init__.py +++ b/stdnum/mu/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Mauritian numbers.""" diff --git a/stdnum/mu/nid.py b/stdnum/mu/nid.py index fef4193e..fe645b6d 100644 --- a/stdnum/mu/nid.py +++ b/stdnum/mu/nid.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ID number (Mauritian national identifier). @@ -38,6 +36,8 @@ * https://mnis.govmu.org/English/ID%20Card/Pages/default.aspx """ +from __future__ import annotations + import datetime import re @@ -52,20 +52,20 @@ _alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separation dash.""" return clean(number, ' ').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the number.""" check = sum((14 - i) * _alphabet.index(n) for i, n in enumerate(number[:13])) return _alphabet[(17 - check) % 17] -def _get_date(number): +def _get_date(number: str) -> datetime.date: """Convert the part of the number that represents a date into a datetime. Note that the century may be incorrect.""" day = int(number[1:3]) @@ -77,7 +77,7 @@ def _get_date(number): raise InvalidComponent() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ID number.""" number = compact(number) if len(number) != 14: @@ -90,7 +90,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid RFC.""" try: return bool(validate(number)) diff --git a/stdnum/mx/__init__.py b/stdnum/mx/__init__.py index 51c4fe49..3f5d29e0 100644 --- a/stdnum/mx/__init__.py +++ b/stdnum/mx/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Mexican numbers.""" +from __future__ import annotations + # provide aliases from stdnum.mx import curp as personalid # noqa: F401 from stdnum.mx import rfc as vat # noqa: F401 diff --git a/stdnum/mx/curp.py b/stdnum/mx/curp.py index 0e05b748..e86b0999 100644 --- a/stdnum/mx/curp.py +++ b/stdnum/mx/curp.py @@ -1,7 +1,7 @@ # curp.py - functions for handling Mexican personal identifiers # coding: utf-8 # -# Copyright (C) 2019 Arthur de Jong +# Copyright (C) 2019-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CURP (Clave Única de Registro de Población, Mexican personal ID). @@ -42,6 +40,8 @@ 'M' """ +from __future__ import annotations + import datetime import re @@ -66,13 +66,13 @@ '''.split()) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separation dash.""" return clean(number, '-_ ').upper().strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) year = int(number[4:6]) @@ -88,7 +88,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the gender (M/F) from the person's CURP.""" number = compact(number) if number[10] == 'H': @@ -103,18 +103,18 @@ def get_gender(number): _alphabet = '0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ' -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" check = sum(_alphabet.index(c) * (18 - i) for i, c in enumerate(number[:17])) return str((10 - check % 10) % 10) -def validate(number, validate_check_digits=False): +def validate(number: str, validate_check_digits: bool = True) -> str: """Check if the number is a valid CURP.""" number = compact(number) if len(number) != 18: raise InvalidLength() - if not re.match(u'^[A-Z]{4}[0-9]{6}[A-Z]{6}[0-9A-Z][0-9]$', number): + if not re.match('^[A-Z]{4}[0-9]{6}[A-Z]{6}[0-9A-Z][0-9]$', number): raise InvalidFormat() if number[:4] in _name_blacklist: raise InvalidComponent() @@ -122,12 +122,12 @@ def validate(number, validate_check_digits=False): get_gender(number) if number[11:13] not in _valid_states: raise InvalidComponent() - if number[-1] != calc_check_digit(number): + if validate_check_digits and number[-1] != calc_check_digit(number): raise InvalidChecksum() return number -def is_valid(number, validate_check_digits=False): +def is_valid(number: str, validate_check_digits: bool = True) -> bool: """Check if the number provided is a valid CURP.""" try: return bool(validate(number, validate_check_digits)) diff --git a/stdnum/mx/rfc.py b/stdnum/mx/rfc.py index 2904ed87..ebdaa052 100644 --- a/stdnum/mx/rfc.py +++ b/stdnum/mx/rfc.py @@ -1,7 +1,7 @@ # rfc.py - functions for handling Mexican tax numbers # coding: utf-8 # -# Copyright (C) 2015 Arthur de Jong +# Copyright (C) 2015-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RFC (Registro Federal de Contribuyentes, Mexican tax number). @@ -60,11 +58,13 @@ 'GODE 561231 GR8' """ +from __future__ import annotations + import datetime import re from stdnum.exceptions import * -from stdnum.util import clean, to_unicode +from stdnum.util import clean # these values should not appear as first part of a personal number @@ -78,16 +78,16 @@ # characters used for checksum calculation, -_alphabet = u'0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ Ñ' +_alphabet = '0123456789ABCDEFGHIJKLMN&OPQRSTUVWXYZ Ñ' -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separation dash.""" return clean(number, '-_ ').upper().strip() -def _get_date(number): +def _get_date(number: str) -> datetime.date: """Convert the part of the number that represents a date into a datetime. Note that the century may be incorrect.""" year = int(number[0:2]) @@ -99,42 +99,40 @@ def _get_date(number): raise InvalidComponent() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" - number = to_unicode(number) number = (' ' + number)[-12:] check = sum(_alphabet.index(n) * (13 - i) for i, n in enumerate(number)) return _alphabet[(11 - check) % 11] -def validate(number, validate_check_digits=False): +def validate(number: str, validate_check_digits: bool = False) -> str: """Check if the number is a valid RFC.""" number = compact(number) - n = to_unicode(number) - if len(n) in (10, 13): + if len(number) in (10, 13): # number assigned to person - if not re.match(u'^[A-Z&Ñ]{4}[0-9]{6}[0-9A-Z]{0,3}$', n): + if not re.match('^[A-Z&Ñ]{4}[0-9]{6}[0-9A-Z]{0,3}$', number): raise InvalidFormat() - if n[:4] in _name_blacklist: + if number[:4] in _name_blacklist: raise InvalidComponent() - _get_date(n[4:10]) - elif len(n) == 12: + _get_date(number[4:10]) + elif len(number) == 12: # number assigned to company - if not re.match(u'^[A-Z&Ñ]{3}[0-9]{6}[0-9A-Z]{3}$', n): + if not re.match('^[A-Z&Ñ]{3}[0-9]{6}[0-9A-Z]{3}$', number): raise InvalidFormat() - _get_date(n[3:9]) + _get_date(number[3:9]) else: raise InvalidLength() - if validate_check_digits and len(n) >= 12: - if not re.match(u'^[1-9A-V][1-9A-Z][0-9A]$', n[-3:]): + if validate_check_digits and len(number) >= 12: + if not re.match('^[1-9A-V][1-9A-Z][0-9A]$', number[-3:]): raise InvalidComponent() - if n[-1] != calc_check_digit(n[:-1]): + if number[-1] != calc_check_digit(number[:-1]): raise InvalidChecksum() return number -def is_valid(number, validate_check_digits=False): +def is_valid(number: str, validate_check_digits: bool = False) -> bool: """Check if the number provided is a valid RFC.""" try: return bool(validate(number, validate_check_digits)) @@ -142,7 +140,7 @@ def is_valid(number, validate_check_digits=False): return False -def format(number, separator=' '): +def format(number: str, separator: str = ' ') -> str: """Reformat the number to the standard presentation format.""" number = compact(number) if len(number) == 12: diff --git a/stdnum/my/__init__.py b/stdnum/my/__init__.py index e20908ed..059c8c74 100644 --- a/stdnum/my/__init__.py +++ b/stdnum/my/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Malaysian numbers.""" diff --git a/stdnum/my/bp.dat b/stdnum/my/bp.dat index a4658ff2..241ad8fb 100644 --- a/stdnum/my/bp.dat +++ b/stdnum/my/bp.dat @@ -1,6 +1,6 @@ # generated from National Registration Department of Malaysia, downloaded from -# https://www.jpn.gov.my/kod-negeri/ -# https://www.jpn.gov.my/en/kod-negara/ +# https://www.jpn.gov.my/index.php?option=com_content&view=article&id=453&lang=en +# https://www.jpn.gov.my/index.php?option=com_content&view=article&id=471&lang=en 01 state="Johor" country="Malaysia" countries="Malaysia" 02 state="Kedah" country="Malaysia" countries="Malaysia" @@ -61,12 +61,13 @@ 61 country="INDONESIA" countries="INDONESIA" 62 countries="CAMBODIA, DEMOCRATIC KAMPUCHE, KAMPUCHEA" 63 country="LAOS" countries="LAOS" -64 countries="BURMA, MYANMAR" +64 countries="BURMA, BYELORUSSIA, MYANMAR" 65 country="PHILIPPINES" countries="PHILIPPINES" 66 country="SINGAPURA" countries="SINGAPURA" 67 country="THAILAND" countries="THAILAND" 68 country="VIETNAM" countries="VIETNAM" -71,72 country="LUAR NEGARA" countries="LUAR NEGARA" +71 country="LUAR NEGARA" countries="LUAR NEGARA" +72 country="LUAR NEGARA" countries="LUAR NEGARA" 74 country="CHINA" countries="CHINA" 75 country="INDIA" countries="INDIA" 76 country="PAKISTAN" countries="PAKISTAN" @@ -77,13 +78,13 @@ 83 countries="AMERICAN SAMOA, ASIA PASIFIK, AUSTRALIA, CHRISTMAS ISLAND, COCOS(KEELING) ISLANDS, COOK ISLANDS, FIJI, FRENCH POLYNESIA, GUAM, HEARD AND MCDONALD ISLANDS, MARSHALL ISLANDS, MICRONESIA, NEW CALEDONIA, NEW ZEALAND, NIUE, NORFOLK ISLANDS, PAPUA NEW GUINEA, TIMOR LESTE, TOKELAU, UNITED STATES MINOR OUTLYING ISLANDS, WALLIS AND FUTUNA ISLANDS" 84 countries="AMERIKA SELATAN, ANGUILLA, ARGENTINA, ARUBA, BOLIVIA, BRAZIL, CHILE, COLOMBIA, ECUADOR, FRENCH GUIANA, GUADELOUPE, GUYANA, PARAGUAY, PERU, SOUTH GEORGIA & THE SOUTH SANDWICH ISLANDS, SURINAME, URUGUAY, VENEZUELA" 85 countries="AFRIKA, AFRIKA SELATAN, ALGERIA, ANGOLA, BOTSWANA, BURUNDI, CAMEROON, CENTRAL AFRICAN REPUBLIC, CHAD, CONGO-BRAZZAVILLE, CONGO-KINSHASA, DJIBOUTI, EGYPT, ERITREA, ETHIOPIA, GABON, GAMBIA, GHANA, GUINEA, KENYA, LIBERIA, MALAWI, MALI, MAURITANIA, MAYOTTE, MOROCCO, MOZAMBIQUE, NAMIBIA, NIGER, NIGERIA, REUNION, RWANDA, SENEGAL, SIERRA LEONE, SOMALIA, SUDAN, SWAZILAND, TANZANIA, TOGO, TONGA, TUNISIA, UGANDA, WESTERN SAHARA, ZAIRE, ZAMBIA, ZIMBABWE" -86 countries="ARMENIA, AUSTRIA, BELGIUM, CYPRUS, DENMARK, EUROPAH, FAEROE ISLANDS, FINLAND, FINLAND, METROPOLITAN, FRANCE, GERMANY, GERMANY (DEM.REP), GERMANY (FED.REP), GREECE, HOLY SEE (VATICAN CITY), ITALY, LUXEMBOURG, MACEDONIA, MALTA, MEDITERANEAN, MONACO, NETHERLANDS, NORWAY, PORTUGAL, REP. OF MOLDOVA, SLOVAKIA, SLOVENIA, SPAIN, SWEDEN, SWITZERLAND, UK-DEPENDENT TERRITORIES CIT, UK-NATIONAL OVERSEAS, UK-OVERSEAS CITIZEN, UK-PROTECTED PERSON, UK-SUBJECT" +86 countries="ARMENIA, AUSTRIA, BELGIUM, CYPRUS, DENMARK, EUROPAH, FAEROE ISLANDS, FINLAND, FINLAND, METROPOLITAN, FRANCE, GERMANY, GERMANY (DEM.REP), GERMANY (FED.REP), GREECE, HOLY SEE (VATICAN CITY), ITALY, LUXEMBOURG, MACEDONIA, MALTA, MEDITERANEAN, MONACO, NETHERLANDS, NORWAY, PORTUGAL, REP. OF MOLDOVA, SLOVAKIA, SLOVENIA, SPAIN, SWEDEN, SWITZERLAND, UK-DEPENDENT TERRITORIES CITY, UK-NATIONAL OVERSEAS, UK-OVERSEAS CITIZEN, UK-PROTECTED PERSON, UK-SUBJECT" 87 countries="BRITAIN, GREAT BRITAIN, IRELAND" 88 countries="BAHRAIN, IRAN, IRAQ, ISRAEL, JORDAN, KUWAIT, LEBANON, OMAN, QATAR, REPUBLIC OF YEMEN, SYRIA, TIMUR TENGAH, TURKEY, UNITED ARAB EMIRATE, YEMEN ARAB REP., YEMEN PEOPLE DEM.RE" 89 countries="JAPAN, KOREA (SELATAN), KOREA (UTARA), TAIWAN, TIMUR JAUH" 90 countries="BAHAMAS, BARBADOS, BELIZE, CARIBBEAN, COSTA RICA, CUBA, DOMINICA, DOMINICAN REPUBLIC, EL SALVADOR, GRENADA, GUATEMALA, HAITI, HONDURAS, JAMAICA, MARTINIQUE, MEXICO, NICARAGUA, PANAMA, PUERTO RICO, ST. KITTS AND NEVIS, ST. LUCIA, ST. VINCENT AND THE GRENADINES, TRINIDAD & TOBAGO, TURKS AND CAICOS ISLANDS, VIRGIN ISLANDS (USA)" 91 countries="AMERIKA UTARA, CANADA, GREENLAND, NETHERLANDS ANTILLES, ST. PIERRE AND MIQUELON, UNITED STATES OF AMERICA" -92 countries="ALBANIA, BELARUS, BOSNIA HERZEGOVINA, BULGARIA, BYELORUSSIA, CROATIA, CZECH REPUBLIC, CZECHOSLOVAKIA, ESTONIA, GEORGIA, HUNGARY, LATVIA, LITHUANIA, MONTENEGRO, POLAND, REPUBLIC OF KOSOVO, ROMANIA, RUSSIAN FEDERATION, SERBIA, U.S.S.R, UKRAINE" +92 countries="ALBANIA, BELARUS, BOSNIA HERZEGOVINA, BULGARIA, CROATIA, CZECH REPUBLIC, CZECHOSLOVAKIA, ESTONIA, GEORGIA, HUNGARY, LATVIA, LITHUANIA, MONTENEGRO, POLAND, REPUBLIC OF KOSOVO, ROMANIA, RUSSIAN FEDERATION, SERBIA, U.S.S.R, UKRAINE" 93 countries="AFGHANISTAN, ANDORRA/ANDORA, ANTARTICA, ANTIGUA & BARBUDA, AZERBAIJAN, BENIN, BERMUDA, BHUTAN, BORA-BORA, BOUVET ISLAND, BRITISH INDIAN OCEAN TERRITORY, BURKINA FASO/BURKINA, CAPE VERDE, CAYMAN ISLANDS, COMOROS, DAHOMEY, EQUATORIAL GUINEA, FALKLAND ISLANDS, FRENCH SOUTHERN TERRITORIES, GIBRALTAR, GUINEA-BISSAU, HONG KONG, ICELAND, IVORY COAST, KAZAKHSTAN, KIRIBATI, KYRGYZSTAN, LESOTHO, LIBYA, LIECHTENSTEIN, MACAU, MADAGASCAR, MAGHRIBI, MALAGASY, MALDIVES, MAURITIUS, MONGOLIA, MONTSERRAT, NAURU, NEPAL, NORTHERN MARIANAS ISLANDS, OUTER MONGOLIA, PALAU, PALESTINE, PITCAIRN ISLANDS, SAMAO BARAT, SAMOA, SAN MARINO, SAO TOME & PRINCIPE, SEYCHELLES, SOLOMON ISLANDS, ST. HELENA, ST.LUCIA, ST.VICENT, SVALBARD AND JAN MAYEN ISLANDS, SWAPO, TAJIKISTAN, TURKMENISTAN, TUVALU, UPPER VOLTA, UZBEKISTAN, VANUATU, VATICAN CITY, VIRGIN ISLANDS (BRITISH), WESTERN SAMOA, YUGOSLAVIA" 98 countries="STATELESS PERSON ARTICLE 1/1954, Tanpa Negara" 99 countries="MAKLUMAT TIADA, MEKAH, NEUTRAL ZONE, REFUGEE, REFUGEE ARTICLE 1/1951, UN SPECIALIZED AGENCY, UNITED NATIONS ORGANIZATION, UNSPECIFIED NATIONALITY" diff --git a/stdnum/my/nric.py b/stdnum/my/nric.py index 37170d4b..feee2e0e 100644 --- a/stdnum/my/nric.py +++ b/stdnum/my/nric.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NRIC No. (Malaysian National Registration Identity Card Number). @@ -23,7 +21,7 @@ permanent residents. The number consist of 12 digits in three sections. The first 6 digits -represent the birth date, followed by two digits represeting the birth +represent the birth date, followed by two digits representing the birth place and finally four digits. The gender of a person can be derived from the last digit: odd numbers for males and even numbers for females. @@ -41,19 +39,21 @@ '770305-02-1234' """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -*').strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date. Note that in some cases it may return the registration date instead of the birth date and it may be a century off.""" @@ -72,7 +72,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_birth_place(number): +def get_birth_place(number: str) -> dict[str, str]: """Use the number to look up the place of birth of the person. This can either be a state or federal territory within Malaysia or a country outside of Malaysia.""" @@ -84,7 +84,7 @@ def get_birth_place(number): return results -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid NRIC number. This checks the length, formatting and birth date and place.""" number = compact(number) @@ -97,7 +97,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid NRIC number.""" try: return bool(validate(number)) @@ -105,7 +105,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:6] + '-' + number[6:8] + '-' + number[8:] diff --git a/stdnum/mz/__init__.py b/stdnum/mz/__init__.py new file mode 100644 index 00000000..8765976f --- /dev/null +++ b/stdnum/mz/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Mozambique numbers +# coding: utf-8 +# +# Copyright (C) 2023 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Mozambique numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.mz import nuit as vat # noqa: F401 diff --git a/stdnum/mz/nuit.py b/stdnum/mz/nuit.py new file mode 100644 index 00000000..a6d6156b --- /dev/null +++ b/stdnum/mz/nuit.py @@ -0,0 +1,87 @@ +# nuit.py - functions for handling Mozambique NUIT numbers +# coding: utf-8 +# +# Copyright (C) 2023 Leandro Regueiro +# Copyright (C) 2025 Luca Sicurello +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""NUIT (Número Único de Identificação Tributaria, Mozambique tax number). + +This number consists of 9 digits, sometimes separated in three groups of three +digits using whitespace to make it easier to read. + +The first digit indicates the type of entity. The next seven digits are a +sequential number. The last digit is the check digit, which is used to verify +the number was correctly typed. + +More information: + +* https://www.mobilize.org.mz/nuit-numero-unico-de-identificacao-tributaria/ +* https://www.at.gov.mz/por/Perguntas-Frequentes2/NUIT + +>>> validate('400339910') +'400339910' +>>> validate('400 005 834') +'400005834' +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> format('400339910') +'400 339 910' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation.""" + return clean(number, ' -.').strip() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit.""" + weights = (8, 9, 4, 5, 6, 7, 8, 9) + check = sum(w * int(n) for w, n in zip(weights, number)) % 11 + return '01234567891'[check] + + +def validate(number: str) -> str: + """Check if the number is a valid Mozambique NUIT number.""" + number = compact(number) + if len(number) != 9: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if calc_check_digit(number[:-1]) != number[-1]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Mozambique NUIT number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return ' '.join([number[:3], number[3:-3], number[-3:]]) diff --git a/stdnum/nl/__init__.py b/stdnum/nl/__init__.py index 408d065b..860477ac 100644 --- a/stdnum/nl/__init__.py +++ b/stdnum/nl/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Dutch numbers.""" +from __future__ import annotations + # provide aliases from stdnum.nl import btw as vat # noqa: F401 from stdnum.nl import postcode as postal_code # noqa: F401 diff --git a/stdnum/nl/brin.py b/stdnum/nl/brin.py index 656873a3..06152cba 100644 --- a/stdnum/nl/brin.py +++ b/stdnum/nl/brin.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """BRIN number (the Dutch school identification number). @@ -45,6 +43,8 @@ InvalidFormat: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -57,13 +57,13 @@ _brin_re = re.compile(r'^(?P[0-9]{2}[A-Z]{2})(?P[0-9]{2})?$') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -.').upper().strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Brun number. This currently does not check whether the number points to a registered school.""" number = compact(number) @@ -75,7 +75,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Brun number.""" try: return bool(validate(number)) diff --git a/stdnum/nl/bsn.py b/stdnum/nl/bsn.py index b869100e..af2907ad 100644 --- a/stdnum/nl/bsn.py +++ b/stdnum/nl/bsn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """BSN (Burgerservicenummer, the Dutch citizen identification number). @@ -28,7 +26,7 @@ * https://en.wikipedia.org/wiki/National_identification_number#Netherlands * https://nl.wikipedia.org/wiki/Burgerservicenummer -* http://www.burgerservicenummer.nl/ +* https://www.burgerservicenummer.nl/ >>> validate('1112.22.333') '111222333' @@ -44,26 +42,26 @@ '1112.22.333' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" - number = clean(number, ' -.').strip() - # pad with leading zeroes - return (9 - len(number)) * '0' + number + return clean(number, ' -.').strip().zfill(9) -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum over the number. A valid number should have a checksum of 0.""" return (sum((9 - i) * int(n) for i, n in enumerate(number[:-1])) - int(number[-1])) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid BSN. This checks the length and whether the check digit is correct.""" number = compact(number) @@ -76,7 +74,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid BSN.""" try: return bool(validate(number)) @@ -84,7 +82,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the passed number to the standard presentation format.""" number = compact(number) return number[:4] + '.' + number[4:6] + '.' + number[6:] diff --git a/stdnum/nl/btw.py b/stdnum/nl/btw.py index 6d123725..6387f5df 100644 --- a/stdnum/nl/btw.py +++ b/stdnum/nl/btw.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Btw-identificatienummer (Omzetbelastingnummer, the Dutch VAT number). @@ -47,13 +45,15 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_97_10 from stdnum.nl import bsn from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.').upper().strip() @@ -62,7 +62,7 @@ def compact(number): return bsn.compact(number[:-3]) + number[-3:] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid btw number. This checks the length, formatting and check digit.""" number = compact(number) @@ -79,7 +79,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid btw number.""" try: return bool(validate(number)) diff --git a/stdnum/nl/identiteitskaartnummer.py b/stdnum/nl/identiteitskaartnummer.py new file mode 100644 index 00000000..4405058a --- /dev/null +++ b/stdnum/nl/identiteitskaartnummer.py @@ -0,0 +1,87 @@ +# identiteitskaartnummer.py - functions for handling Dutch passport numbers +# coding: utf-8 +# +# Copyright (C) 2024 Jeff Horemans +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Identiteitskaartnummer, Paspoortnummer (the Dutch passport number). + +Each Dutch passport has an unique number of 9 alphanumerical characters. +The first 2 characters are always letters and the last character is a number. +The 6 characters in between can be either. + +The letter "O" is never used to prevent it from being confused with the number "0". +Zeros are allowed, but are not used in numbers issued after December 2019. + +More information: + +* https://www.rvig.nl/node/356 +* https://nl.wikipedia.org/wiki/Paspoort#Nederlands_paspoort + +>>> compact('EM0000000') +'EM0000000' +>>> compact('XR 1001R5 8') +'XR1001R58' +>>> validate('EM0000000') +'EM0000000' +>>> validate('XR1001R58') +'XR1001R58' +>>> validate('XR1001R') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> validate('581001RXR') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> validate('XR1O01R58') +Traceback (most recent call last): + ... +InvalidComponent: ... +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding white space.""" + return clean(number, ' ').strip().upper() + + +def validate(number: str) -> str: + """Check if the number is a valid passport number. + This checks the length, formatting and check digit.""" + number = compact(number) + if len(number) != 9: + raise InvalidLength() + if not re.match('^[A-Z]{2}[0-9A-Z]{6}[0-9]$', number): + raise InvalidFormat() + if 'O' in number: + raise InvalidComponent(InvalidComponent("The letter 'O' is not allowed")) + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Dutch passport number.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/nl/onderwijsnummer.py b/stdnum/nl/onderwijsnummer.py index ad3545c0..73774672 100644 --- a/stdnum/nl/onderwijsnummer.py +++ b/stdnum/nl/onderwijsnummer.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Onderwijsnummer (the Dutch student identification number). @@ -43,6 +41,8 @@ InvalidFormat: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.nl.bsn import checksum, compact from stdnum.util import isdigits @@ -51,7 +51,7 @@ __all__ = ['compact', 'validate', 'is_valid'] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid onderwijsnummer. This checks the length and whether the check digit is correct and whether it starts with the right sequence.""" @@ -67,7 +67,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid onderwijsnummer.""" try: return bool(validate(number)) diff --git a/stdnum/nl/postcode.py b/stdnum/nl/postcode.py index e91acc8a..96c870d0 100644 --- a/stdnum/nl/postcode.py +++ b/stdnum/nl/postcode.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Postcode (the Dutch postal code). @@ -40,6 +38,8 @@ InvalidComponent: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -52,7 +52,7 @@ _postcode_blacklist = ('SA', 'SD', 'SS') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -61,7 +61,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is in the correct format. This currently does not check whether the code corresponds to a real address.""" number = compact(number) @@ -73,7 +73,7 @@ def validate(number): return '%s %s' % (match.group('pt1'), match.group('pt2')) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid postal code.""" try: return bool(validate(number)) diff --git a/stdnum/no/__init__.py b/stdnum/no/__init__.py index 2a9e88d7..ca24ce98 100644 --- a/stdnum/no/__init__.py +++ b/stdnum/no/__init__.py @@ -14,12 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Norwegian numbers.""" +from __future__ import annotations + # provide aliases from stdnum.no import fodselsnummer as personalid # noqa: F401 from stdnum.no import mva as vat # noqa: F401 diff --git a/stdnum/no/fodselsnummer.py b/stdnum/no/fodselsnummer.py index 50d27b6b..2c10cacd 100644 --- a/stdnum/no/fodselsnummer.py +++ b/stdnum/no/fodselsnummer.py @@ -16,9 +16,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Fødselsnummer (Norwegian birth number, the national identity number). @@ -42,31 +40,33 @@ '151086 95077' """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -:') -def calc_check_digit1(number): +def calc_check_digit1(number: str) -> str: """Calculate the first check digit for the number.""" weights = (3, 7, 6, 1, 8, 9, 4, 5, 2) return str((11 - sum(w * int(n) for w, n in zip(weights, number))) % 11) -def calc_check_digit2(number): +def calc_check_digit2(number: str) -> str: """Calculate the second check digit for the number.""" weights = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2) return str((11 - sum(w * int(n) for w, n in zip(weights, number))) % 11) -def get_gender(number): +def get_gender(number: str) -> str: """Get the person's birth gender ('M' or 'F').""" number = compact(number) if int(number[8]) % 2: @@ -75,7 +75,7 @@ def get_gender(number): return 'F' -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Determine and return the birth date.""" number = compact(number) day = int(number[0:2]) @@ -96,9 +96,9 @@ def get_birth_date(number): month -= 40 if individual_digits < 500: year += 1900 - elif 500 <= individual_digits < 750 and year >= 54: + elif individual_digits < 750 and year >= 54: year += 1800 - elif 500 <= individual_digits < 1000 and year < 40: + elif individual_digits < 1000 and year < 40: year += 2000 elif 900 <= individual_digits < 1000 and year >= 40: year += 1900 @@ -111,7 +111,7 @@ def get_birth_date(number): raise InvalidComponent('The number does not contain valid birth date information.') -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid birth number.""" number = compact(number) if len(number) != 11: @@ -128,7 +128,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid birth number.""" try: return bool(validate(number)) @@ -136,7 +136,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:6] + ' ' + number[6:] diff --git a/stdnum/no/iban.py b/stdnum/no/iban.py index 34a0ac79..5d1afde3 100644 --- a/stdnum/no/iban.py +++ b/stdnum/no/iban.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Norwegian IBAN (International Bank Account Number). @@ -44,6 +42,8 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum import iban from stdnum.exceptions import * from stdnum.no import kontonr @@ -56,7 +56,7 @@ format = iban.format -def to_kontonr(number): +def to_kontonr(number: str) -> str: """Return the Norwegian bank account number part of the number.""" number = compact(number) if not number.startswith('NO'): @@ -64,14 +64,14 @@ def to_kontonr(number): return number[4:] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid Norwegian IBAN.""" number = iban.validate(number, check_country=False) kontonr.validate(to_kontonr(number)) return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid Norwegian IBAN.""" try: return bool(validate(number)) diff --git a/stdnum/no/kontonr.py b/stdnum/no/kontonr.py index 1a466e02..ecd114f2 100644 --- a/stdnum/no/kontonr.py +++ b/stdnum/no/kontonr.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Konto nr. (Norwegian bank account number) @@ -42,12 +40,14 @@ 'NO93 8601 11 17947' """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' .-').strip() @@ -56,13 +56,13 @@ def compact(number): return number -def _calc_check_digit(number): +def _calc_check_digit(number: str) -> str: """Calculate the check digit for the 11-digit number.""" weights = (6, 7, 8, 9, 4, 5, 6, 7, 8, 9) return str(sum(w * int(n) for w, n in zip(weights, number)) % 11) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid bank account number.""" number = compact(number) if not isdigits(number): @@ -77,7 +77,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid bank account number.""" try: return bool(validate(number)) @@ -85,7 +85,7 @@ def is_valid(number): return False -def to_iban(number): +def to_iban(number: str) -> str: """Convert the number to an IBAN.""" from stdnum import iban separator = ' ' if ' ' in number else '' @@ -94,10 +94,9 @@ def to_iban(number): number)) -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" - number = compact(number) - number = (11 - len(number)) * '0' + number + number = compact(number).zfill(11) return '.'.join([ number[:4], number[4:6], diff --git a/stdnum/no/mva.py b/stdnum/no/mva.py index 60a14214..982fa1f5 100644 --- a/stdnum/no/mva.py +++ b/stdnum/no/mva.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """MVA (Merverdiavgift, Norwegian VAT number). @@ -34,12 +32,14 @@ 'NO 995 525 828 MVA' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.no import orgnr from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' ').upper().strip() @@ -48,7 +48,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid MVA number. This checks the length, formatting and check digit.""" number = compact(number) @@ -58,7 +58,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid MVA number.""" try: return bool(validate(number)) @@ -66,7 +66,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return 'NO ' + orgnr.format(number[:9]) + ' ' + number[9:] diff --git a/stdnum/no/orgnr.py b/stdnum/no/orgnr.py index a3860284..c3bc668b 100644 --- a/stdnum/no/orgnr.py +++ b/stdnum/no/orgnr.py @@ -16,15 +16,18 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Orgnr (Organisasjonsnummer, Norwegian organisation number). The Organisasjonsnummer is a 9-digit number with a straightforward check mechanism. +More information: + +* https://nn.wikipedia.org/wiki/Organisasjonsnummer +* https://no.wikipedia.org/wiki/Organisasjonsnummer + >>> validate('988 077 917') '988077917' >>> validate('988 077 918') @@ -35,23 +38,25 @@ '988 077 917' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (3, 2, 7, 6, 5, 4, 3, 2, 1) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid organisation number. This checks the length, formatting and check digit.""" number = compact(number) @@ -64,7 +69,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid organisation number.""" try: return bool(validate(number)) @@ -72,7 +77,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:3] + ' ' + number[3:6] + ' ' + number[6:] diff --git a/stdnum/numdb.py b/stdnum/numdb.py index 003708fd..9c2e0291 100644 --- a/stdnum/numdb.py +++ b/stdnum/numdb.py @@ -1,6 +1,6 @@ # numdb.py - module for handling hierarchically organised numbers # -# Copyright (C) 2010-2019 Arthur de Jong +# Copyright (C) 2010-2023 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Query structured number format files with number properties. @@ -39,53 +37,36 @@ To split the number and get properties for each part: ->>> dbfile.info('01006') == [ -... ('0', {'prop1': 'foo'}), -... ('100', {'prop2': 'bar'}), -... ('6', {}), -... ] -True ->>> dbfile.info('02006') == [ -... ('0', {'prop1': 'foo'}), -... ('200', {'prop2': 'bar', 'prop3': 'baz'}), -... ('6', {}), -... ] -True ->>> dbfile.info('03456') == [ -... ('0', {'prop1': 'foo'}), -... ('345', {'prop2': 'bar', 'prop3': 'baz'}), -... ('6', {}), -... ] -True ->>> dbfile.info('902006') == [ -... ('90', {'prop1': 'booz'}), -... ('20', {'prop2': 'foo'}), -... ('06', {}), -... ] -True ->>> dbfile.info('909856') == [ -... ('90', {'prop1': 'booz'}), -... ('985', {'prop2': 'fooz'}), -... ('6', {}), -... ] -True ->>> dbfile.info('9889') == [ -... ('98', {'prop1': 'booz'}), -... ('89', {'prop2': 'foo'}), -... ] -True ->>> dbfile.info('633322') == [ -... ('6', {'prop1': 'boo'}), -... ('333', {'prop2': 'bar', 'prop3': 'baz', 'prop4': 'bla'}), -... ('22', {}), -... ] -True +>>> import pprint +>>> pprint.pprint(dbfile.info('01006')) +[('0', {'prop1': 'foo'}), ('100', {'prop2': 'bar'}), ('6', {})] +>>> pprint.pprint(dbfile.info('02006')) +[('0', {'prop1': 'foo'}), ('200', {'prop2': 'bar', 'prop3': 'baz'}), ('6', {})] +>>> pprint.pprint(dbfile.info('03456')) +[('0', {'prop1': 'foo'}), ('345', {'prop2': 'bar', 'prop3': 'baz'}), ('6', {})] +>>> pprint.pprint(dbfile.info('902006')) +[('90', {'prop1': 'booz'}), ('20', {'prop2': 'foo'}), ('06', {})] +>>> pprint.pprint(dbfile.info('909856')) +[('90', {'prop1': 'booz'}), ('985', {'prop2': 'fooz'}), ('6', {})] +>>> pprint.pprint(dbfile.info('9889')) +[('98', {'prop1': 'booz'}), ('89', {'prop2': 'foo'})] +>>> pprint.pprint(dbfile.info('633322')) +[('6', {'prop1': 'boo'}), ('333', {'prop2': 'bar', 'prop3': 'baz', 'prop4': 'bla'}), ('22', {})] +>>> pprint.pprint(dbfile.info('1200333')) +[('1', {'prop1': 'foo'}), ('200', {'prop2': 'bar', 'prop3': 'baz'}), ('333', {'prop4': 'bax'})] """ +from __future__ import annotations + import re -from pkg_resources import resource_stream + +TYPE_CHECKING = False +if TYPE_CHECKING: # pragma: no cover (only used when type checking) + from collections.abc import Generator, Iterable + from typing import IO, Any + PrefixInfo = tuple[int, str, str, dict[str, str], list['PrefixInfo']] _line_re = re.compile( @@ -110,60 +91,50 @@ class NumDB(): """Number database.""" - def __init__(self): + prefixes: list[PrefixInfo] + + def __init__(self) -> None: """Construct an empty database.""" self.prefixes = [] @staticmethod - def _merge(results): - """Merge the provided list of possible results into a single result - list (this is a generator).""" - # expand the results to all have the same length - ml = max(len(x) for x in results) - results = [x + (ml - len(x)) * [None] - for x in results] - # go over each part - for parts in zip(*results): - # regroup parts into parts list and properties list - partlist, proplist = list(zip(*(x for x in parts if x))) - part = min(partlist, key=len) - props = {} - for p in proplist: - props.update(p) - yield part, props - - @staticmethod - def _find(number, prefixes): + def _find(number: str, prefixes: list[PrefixInfo]) -> list[tuple[str, dict[str, str]]]: """Lookup the specified number in the list of prefixes, this will return basically what info() should return but works recursively.""" if not number: return [] - results = [] - if prefixes: - for length, low, high, props, children in prefixes: - if low <= number[:length] <= high and len(number) >= length: - results.append([(number[:length], props)] + - NumDB._find(number[length:], children)) - # not-found fallback - if not results: - return [(number, {})] - # merge the results into a single result - return list(NumDB._merge(results)) - - def info(self, number): + part = number + properties: dict[str, Any] = {} + next_prefixes: list[PrefixInfo] = [] + # go over prefixes and find matches + for length, low, high, props, children in prefixes: + if len(part) >= length and low <= part[:length] <= high: + # only use information from the shortest match + if length < len(part): + part = part[:length] + properties = {} + next_prefixes = [] + properties.update(props) + next_prefixes.extend(children) + # return first part and recursively find next matches + return [(part, properties)] + NumDB._find(number[len(part):], next_prefixes) + + def info(self, number: str) -> list[tuple[str, dict[str, str]]]: """Split the provided number in components and associate properties with each component. This returns a tuple of tuples. Each tuple consists of a string (a part of the number) and a dict of properties. """ return NumDB._find(number, self.prefixes) - def split(self, number): + def split(self, number: str) -> list[str]: """Split the provided number in components. This returns a tuple with the number of components identified.""" return [part for part, props in self.info(number)] -def _parse(fp): +def _parse( + fp: Iterable[str], +) -> Generator[tuple[int, int, str, str, dict[str, str], list[PrefixInfo]]]: """Read lines of text from the file pointer and generate indent, length, low, high, properties tuples.""" for line in fp: @@ -172,37 +143,48 @@ def _parse(fp): continue # pragma: no cover (optimisation takes it out) # any other line should parse match = _line_re.search(line) + assert match is not None indent = len(match.group('indent')) ranges = match.group('ranges') props = dict(_prop_re.findall(match.group('props'))) + children: list[PrefixInfo] = [] for rnge in ranges.split(','): if '-' in rnge: low, high = rnge.split('-') else: low, high = rnge, rnge - yield indent, len(low), low, high, props + yield indent, len(low), low, high, props, children -def read(fp): +def read(fp: Iterable[str]) -> NumDB: """Return a new database with the data read from the specified file.""" last_indent = 0 db = NumDB() stack = {0: db.prefixes} - for indent, length, low, high, props in _parse(fp): + for indent, length, low, high, props, children in _parse(fp): if indent > last_indent: - # populate the children field of the last indent - stack[last_indent][-1][4] = [] + # set our stack location to the last parent entry stack[indent] = stack[last_indent][-1][4] - stack[indent].append([length, low, high, props, None]) + stack[indent].append((length, low, high, props, children)) last_indent = indent return db -def get(name): +def _get_resource_stream(name: str) -> IO[bytes]: + """Return a readable file-like object for the resource.""" + try: # pragma: no cover (Python 3.9 and newer) + import importlib.resources + return importlib.resources.files(__package__).joinpath(name).open('rb') + except (ImportError, AttributeError): # pragma: no cover (older Python versions) + import pkg_resources # type: ignore + return pkg_resources.resource_stream(__name__, name) # type: ignore[no-any-return] + + +def get(name: str) -> NumDB: """Open a database with the specified name to perform queries on.""" if name not in _open_databases: import codecs reader = codecs.getreader('utf-8') - with reader(resource_stream(__name__, name + '.dat')) as fp: + with reader(_get_resource_stream(name + '.dat')) as fp: _open_databases[name] = read(fp) return _open_databases[name] diff --git a/stdnum/nz/__init__.py b/stdnum/nz/__init__.py index 150057ee..d0727397 100644 --- a/stdnum/nz/__init__.py +++ b/stdnum/nz/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of New Zealand numbers.""" +from __future__ import annotations + # provide aliases from stdnum.nz import ird as vat # noqa: F401 diff --git a/stdnum/nz/bankaccount.py b/stdnum/nz/bankaccount.py index c4510737..f910977d 100644 --- a/stdnum/nz/bankaccount.py +++ b/stdnum/nz/bankaccount.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """New Zealand bank account number @@ -42,6 +40,8 @@ '01-0242-0100194-000' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -84,32 +84,32 @@ } -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" - number = clean(number).strip().replace(' ', '-').split('-') - if len(number) == 4: + parts = clean(number).strip().replace(' ', '-').split('-') + if len(parts) == 4: # zero pad the different sections if they are found lengths = (2, 4, 7, 3) - return ''.join(n.zfill(l) for n, l in zip(number, lengths)) + return ''.join(n.zfill(l) for n, l in zip(parts, lengths)) else: # otherwise zero pad the account type - number = ''.join(number) + number = ''.join(parts) return number[:13] + number[13:].zfill(3) -def info(number): +def info(number: str) -> dict[str, str]: """Return a dictionary of data about the supplied number. This typically returns the name of the bank and branch and a BIC if it is valid.""" number = compact(number) from stdnum import numdb info = {} - for nr, found in numdb.get('nz/banks').info(number): + for _nr, found in numdb.get('nz/banks').info(number): info.update(found) return info -def _calc_checksum(number): +def _calc_checksum(number: str) -> int: # pick the algorithm and parameters algorithm = _algorithms.get(number[:2], 'X') if algorithm == 'A' and number[6:13] >= '0990000': @@ -122,7 +122,7 @@ def _calc_checksum(number): (w * int(n) for w, n in zip(weights, number))) % mod2 -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid bank account number.""" number = compact(number) if not isdigits(number): @@ -137,7 +137,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid bank account number.""" try: return bool(validate(number)) @@ -145,7 +145,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([ diff --git a/stdnum/nz/banks.dat b/stdnum/nz/banks.dat index 9c86f5b6..960149f9 100644 --- a/stdnum/nz/banks.dat +++ b/stdnum/nz/banks.dat @@ -1,4 +1,4 @@ -# generated from BankBranchRegister-10Aug2020.xlsx downloaded from +# generated from BankBranchRegister-05Jan2026.xlsx downloaded from # https://www.paymentsnz.co.nz/resources/industry-registers/bank-branch-register/download/xlsx/ 01 bank="ANZ Bank New Zealand" 0001 branch="ANZ Retail 1" @@ -27,23 +27,18 @@ 0088 branch="ANZ AS/400 Test" 0091 branch="Conversion Branch Exception" 0092 branch="Personal Credit Management" - 0102,0113,0121,0125,0137,0141,0143,0147,0154,0165,0178,0186,0194,0205,0210,0218,0226,0234-0236,0242,0244,0258,0262,0274,0281,0295,0297-0298,0302,0321,0330,0354,0362,0367,0370,0381-0382,0387,0391,0398,0403,0422,0425,0427,0434,0439,0451,0455,0461,0482,0486,0504,0533,0542,0546,0598,0641,0650-0651,0671,0677-0678,0685,0695,0707,0721,0745,0759,0771,0777-0778,0782,0815,0834,0902,0913,0926,0961 branch="ANZ Retail" + 0102,0113,0121,0125,0137,0141,0143,0147,0154,0161,0165,0178,0186,0194,0204-0205,0210,0215,0218,0226,0234-0236,0242,0244,0258,0262,0270,0274,0277,0281,0295,0297-0298,0302,0321,0330,0354,0362,0367,0370,0381-0382,0387,0391,0398,0403,0422,0425,0427,0434,0438-0439,0451,0455,0461,0482,0486-0487,0504-0505,0533,0542,0546,0598,0641,0650-0651,0671,0677-0678,0681,0685,0695,0707,0721,0745,0748,0753,0755,0759,0771,0777-0778,0782,0798,0815,0825,0834,0902,0913,0926,0961 branch="ANZ Retail" 0107 branch="Credit Assessment" 0126 branch="ANZ Group Credit Cards" 0129,0249,0310-0311,0349,0450,0530,0623,0646,0653,0682,0697,0702,0723,0761,0763,0787,0790,0804,0886,0893,0906-0907 branch="Retail" - 0142 branch="424A St Lukes Mall" - 0161 branch="Sylvia Park" + 0142 branch="St Lukes " 0170 branch="Howick" 0171,1847 branch="Royal Oak" 0182,1848 branch="Glenfield Mall" 0183 branch="Stoddard Road" 0190 branch="Manukau" 0202 branch="Newton" - 0204 branch="New Lynn" - 0215 branch="Highbrook" 0221 branch="Botany Downs" - 0270,1841 branch="St Lukes Mall" - 0277 branch="Albany 2" 0286,1850 branch="Takanini" 0288 branch="Waiheke Island" 0307 branch="Dargaville" @@ -56,13 +51,10 @@ 0373 branch="Mount Maunganui" 0395 branch="Paeroa" 0414 branch="Rotorua Mall" - 0438 branch="Karori" 0447 branch="Te Kuiti" 0467 branch="Rotorua" 0475,1193 branch="Bayfair" - 0487 branch="Whangarei" 0495 branch="NorthWest" - 0505 branch="Wellington" 0509,0537 branch="Victoria St Central" 0514 branch="Christchurch SPB Branch" 0517,1823 branch="Courtenay Place" @@ -81,24 +73,18 @@ 0664 branch="University Of Canterbury" 0666 branch="Levin" 0676,1192 branch="Chatham Islands" - 0681 branch="Marton" 0691 branch="Storford Lodge" 0731 branch="Paraparaumu" 0735,1852 branch="Silverdale" - 0748 branch="Bethlehem" - 0753 branch="Hamilton East" 0754 branch="Palmerston North" - 0755 branch="Terrace End" 0769 branch="ANZ Bank" 0770 branch="Gisborne 3" 0795 branch="Waverley" 0797 branch="Christchurch" - 0798 branch="Addington" 0806,1158 branch="The Palms" 0811 branch="Hornby" 0819 branch="Riccarton" 0822 branch="Sydenham" - 0825,1188 branch="Merivale" 0833 branch="Ferrymead" 0841 branch="Geraldine" 0843 branch="Greymouth" @@ -186,6 +172,7 @@ 1185 branch="Upper Hutt 2" 1186 branch="UDC Property Lending" 1187 branch="Hamilton 2" + 1188 branch="Merivale" 1189 branch="Riccarton Business Centre" 1190 branch="New Lynn 4" 1191 branch="Paihia" @@ -231,28 +218,30 @@ 1838 branch="Albany Mall" 1839 branch="Auckland (Queen and Victoria Streets)" 1840 branch="Mount Eden" + 1841 branch="St Lukes Mall" 1843,1888 branch="ANZ Asian Banking" 1844 branch="WestCity" 1845 branch="ANZ On Line Business" 1846 branch="Manukau Mall" 1849 branch="Grey Lynn" 1853-1854 branch="Transaction Banking" + 1881 branch="PSO - Shared Ownership" 1889 branch="CTM Processing" + 6150 branch="ANZ Corporate Headquarters - MBP" 02 bank="Bank of New Zealand" 0018 branch="Northern Regional Office" 0040 branch="Dunedin Proof Centre" 0100 bic="BKNZNZ22100" branch="Auckland" 0108 branch="Downtown" 0110 branch="St Lukes Mall" - 0112 branch="Birkenhead" - 0120 branch="Browns Bay" - 0124 branch="Auckland International Airport" + 0112,0120,0278,1262 branch="Link Drive" + 0124 branch="Manukau" 0128 branch="Customs Street" 0130 branch="BNZ International Services Auckland" 0135 branch="International Operations Northern Region" 0136 branch="Devonport" 0139 branch="Kumeu" - 0144 branch="Dominion Road" + 0144,0248 branch="Ponsonby" 0148 branch="Glen Innes" 0151 branch="John Henry Centre" 0152 branch="Henderson" @@ -275,26 +264,23 @@ 0232 branch="Papatoetoe" 0238 branch="Parnell" 0240 branch="Penrose" - 0248 branch="Ponsonby" - 0256 branch="Remuera" - 0261 branch="St Heliers" + 0256,0261 branch="Remuera" 0264 branch="Mt Eden" 0271 branch="Milford" 0272 branch="BNZ Takapuna" - 0278,1262 branch="Link Drive" 0280 branch="Town Hall" 0290 branch="262 Queen Street" 0300 branch="Cambridge" 0304 branch="Coromandel" 0308 branch="Dargaville" - 0312 branch="Frankton" + 0312 branch="Hamilton " 0316 branch="Hamilton Banking Centre" 0320 branch="Hamilton North" 0324 branch="Helensville" - 0328 branch="Huntly" + 0328,1272 branch="The Base" 0332 branch="Kaikohe Store" 0336 branch="Kaitaia" - 0340 branch="Katikati" + 0340,0466 branch="Cameron Road Banking Centre" 0341 branch="Bryce Street" 0342 branch="Hamilton East" 0343 branch="University Of Waikato" @@ -303,7 +289,7 @@ 0358 branch="Manurewa" 0360 branch="Matamata" 0364 branch="Maungaturoto" - 0368 branch="Morrinsville" + 0368,0436 branch="Morrinsville" 0372 branch="Mt Maunganui" 0376 branch="Ngaruawahia" 0378 branch="Rotorua Central" @@ -313,15 +299,13 @@ 0390 branch="Orewa" 0392 branch="Otorohanga" 0396 branch="Paeroa Store" - 0400 branch="Papakura" - 0404 branch="Pukekohe" + 0400 branch="Takanini" + 0404,0476 branch="Pukekohe" 0408 branch="Putaruru" 0410 branch="Chartwell" - 0412,0416 branch="Rotorua" - 0424 branch="Taumarunui" + 0412,0416,0424 branch="Rotorua" 0428 branch="Taupo" - 0432 branch="Tauranga Store" - 0436 branch="Te Aroha" + 0432 branch="Cameron Road " 0440 branch="Te Awamutu" 0444 branch="Te Kauwhata" 0448 branch="Te Kuiti" @@ -329,11 +313,9 @@ 0454 branch="BNZ The Base" 0456 branch="Thames" 0464 branch="Tokoroa" - 0466 branch="Cameron Road Banking Centre" 0468 branch="Tuakau" 0470 branch="Turangi" - 0472 branch="Waihi" - 0476 branch="Waiuku" + 0472 branch="CAMERON ROAD BANKING CENTRE" 0478 branch="Trust Bank Auckland/BNZ" 0480 branch="Warkworth Store" 0484 branch="Wellsford" @@ -345,14 +327,13 @@ 0506 branch="222 Lambton Quay" 0512,0568 branch="Courtenay Place" 0520 branch="Kilbirnie Store" - 0524 branch="Johnsonville" + 0524,0548 branch="Porirua" 0528 branch="Lower Hutt" 0534 branch="Mayfair" 0536 branch="North End" 0540 branch="Naenae" 0544 branch="Petone" - 0548 branch="Porirua" - 0551 branch="BNZ International Services Wellington" + 0551 branch="BNZ North End" 0552 branch="BNZ Porirua" 0554 branch="Reserve Bank" 0555 branch="International Service Centre" @@ -376,7 +357,7 @@ 0628 branch="Feilding" 0630 branch="Fitzherbert Avenue" 0632 branch="Foxton" - 0636 branch="Gisborne" + 0636,0784 branch="Gisborne" 0640 branch="Greytown" 0644 branch="Hastings" 0648 branch="Hawera Store" @@ -392,25 +373,22 @@ 0686 branch="Lower Emerson Street" 0688 branch="Masterton" 0692 branch="Motueka" - 0700 branch="Napier" + 0700,0766 branch="Napier" 0704 branch="Nelson" 0708 branch="New Plymouth" - 0712 branch="Ohakune" + 0712 branch="Whanganui" 0716 branch="Opunake" 0719 branch="Terrace End" 0720 branch="Otaki" 0727 branch="Palmerston North" 0733 branch="Paraparaumu" 0741 branch="Stortford Lodge" - 0747 branch="Richmond" - 0756 branch="Stratford" + 0747,0764 branch="Richmond" + 0756 branch="Hawera" 0760 branch="Taihape" - 0764 branch="Takaka" - 0766 branch="Taradale" 0772 branch="Upper Hutt" 0776 branch="Waipawa" 0780 branch="Waipukurau" - 0784 branch="Wairoa" 0788 branch="Waitara" 0792 branch="Wanganui" 0796 branch="Woodville" @@ -420,36 +398,30 @@ 0816 branch="Papanui" 0820 branch="Riccarton" 0828 branch="Sydenham" - 0832 branch="Akaroa" - 0836 branch="Ashburton" + 0832,0860 branch="Leeston" + 0836,0868 branch="Ashburton" 0840 branch="Geraldine" 0842 branch="BNZ Ferrymead" - 0844 branch="Greymouth" + 0844,0880,0896 branch="Greymouth" 0848 branch="Hokitika" 0852 branch="Kaiapoi" 0856 branch="Kaikoura" 0858 branch="BNZ International Services Christchurch" - 0860 branch="Leeston" 0863 branch="New Brighton" 0864 branch="Ferrymead Store" 0865 branch="Armagh Street" - 0868 branch="Methven" 0871 branch="City South" 0874 branch="Upper Riccarton" 0875 branch="University of Canterbury" 0876 branch="Rangiora" - 0880 branch="Reefton" 0884 branch="Temuka" - 0888 branch="Timaru" - 0892 branch="Waimate" - 0896 branch="Westport" + 0888,0892 branch="Timaru" 0900,0912 branch="Dunedin" 0908 branch="Dunedin North" 0910 branch="South Dunedin" 0916 branch="Alexandra" - 0918 branch="Balclutha" + 0918,0922 branch="Gore" 0920 branch="Cromwell" - 0922 branch="Gore" 0924 branch="Invercargill" 0929 branch="University Of Otago" 0930 branch="Lumsden" @@ -458,8 +430,7 @@ 0940 branch="Oamaru" 0944 branch="Otautau" 0946 branch="Palmerston" - 0948 branch="Queenstown" - 0950 branch="Ranfurly" + 0948,0950,1265 branch="Whakatipu" 0953 branch="Roxburgh" 0957 branch="Winton" 0959 branch="Wyndham" @@ -480,9 +451,10 @@ 1210 branch="Greerton" 1211 branch="Rfs Operations" 1212 branch="Customer Account Services Wellington" + 1213 branch="Newmarket Mall" 1214 branch="Auckland Banking Zone Office" 1215 branch="Corporate Banking Wellington" - 1216 branch="Meadowlands" + 1216,1256,1263 branch="Botany" 1217 branch="Lending Services Auckland" 1218 branch="Corporate Banking South Island" 1219 branch="Customer Account Services Auckland" @@ -491,6 +463,7 @@ 1222 branch="DMS Auckland" 1223 branch="Telebusiness Centre" 1225 branch="Auckland International Airport Agency" + 1226 branch="Direct Banking" 1227 branch="Macquarie Investment Management Limited" 1228 branch="Mortgage Distribution Fund" 1229 branch="National Australia Bank Integration Br." @@ -520,34 +493,33 @@ 1253 branch="The Palms Mall" 1254 branch="Whangamata" 1255 branch="PC Internet Banking" - 1256,1263 branch="Botany" 1257 branch="80 Queen Street" - 1258 branch="Papamoa" + 1258 branch="Bayfair" 1259 branch="BNZ Barrington Mall" 1260 branch="Glenfield" 1261 branch="BNZ Direct" 1264 branch="BNZ Parnell" - 1265 branch="Remarkables Park" 1266 branch="Rolleston" 1267 branch="BNZ Parkside" 1268 branch="BNZ Christchurch" 1269 branch="BNZ Harbour Quays" 1271 branch="Awhi Credit Union" - 1272 branch="The Base" 1273 branch="Bank of Baroda" 1274 branch="BNZ Connect" 1275 branch="Sylvia Park Store" 1276 branch="Commercial Bay" 1278 branch="Russley" + 1280 branch="Booster Financial Services Ltd" + 1281 branch="Afterpay Ltd" 1283 branch="Access Prepaid Worldwide CPP" - 1284 branch="Access Prepaid Worldwide - Qantas Cash NZ" 1285 branch="NorthWest" 1286 branch="BNZ Institutional Banking" - 1290 branch="Transferwise Limited" - 1291 branch="Transferwise Ltd" + 1288 branch="Coventry Group (NZ) Ltd" + 1289-1292 branch="Wise Payments Ltd" 1294 branch="Waddle Loans Ltd" 1295 branch="Toll Networks (NZ) Ltd" - 1296 branch="Toll Carriers Ltd" + 1296,1299 branch="TMNZ Limited Partnership" + 1297 branch="Latipay" 1298 branch="Whangaparaoa" 2025-2053 branch="BNZ Account" 2054 branch="BNZ Account Test Branch" @@ -627,14 +599,13 @@ 0430 branch="Taupo" 0431 branch="Heu Heu Street Taupo" 0435,0445,1548,1720 branch="Cameron Road" - 0442-0443,1564 branch="Te Awamutu" + 0442-0443,0449,1562,1564 branch="Te Awamutu" 0446 branch="Grey Street Tauranga" - 0449,1562 branch="Te Kuiti" 0458 branch="Thames" 0463 branch="Tokoroa" 0474 branch="Te Puke" 0481,0485 branch="Warkworth" - 0490,1544 branch="Whakatane" + 0490,1544,1546 branch="Whakatane" 0502,0584,1540 branch="318 Lambton Quay" 0503 branch="Wellington" 0510,0515,0558 branch="Courtenay Place" @@ -654,14 +625,13 @@ 0588 branch="International Business" 0595 branch="SBO Centre" 0597 branch="Northern Test Branch" - 0599 branch="Blenheim" - 0605,0683,0762 branch="Marton" + 0599,1710 branch="Blenheim" + 0605,0626-0627,0683 branch="Feilding" 0609,0687,0690 branch="Masterton" 0614-0615 branch="Dannevirke" - 0617,0725 branch="Pahiatua" - 0618,0638-0639,0749 branch="Gisborne" + 0617,0718,0725-0726,0728,1521-1523 branch="Terrace End" + 0618,0638-0639,0749,0785 branch="Gisborne" 0619,0758 branch="Stratford" - 0626-0627 branch="Feilding" 0631 branch="Taradale" 0633,0667,0670,1532 branch="Levin" 0642,0739,1518 branch="Hastings" @@ -676,34 +646,33 @@ 0698-0699,1517 branch="Napier" 0703,0706 branch="Nelson" 0710 branch="Broadway, Palmerston North" - 0718,0726,0728,1521-1523 branch="Terrace End" 0722 branch="Armagh Street" 0732,0734,1531 branch="Paraparaumu" 0742 branch="Waverley" 0750 branch="243 Queen St Richmond" 0751,1709 branch="Richmond" + 0762 branch="Marton" 0767 branch="Hornby" 0774-0775 branch="Upper Hutt" 0779 branch="Waipukurau" - 0783,0785 branch="Wairoa" + 0783 branch="Wairoa" 0791,1567 branch="Wanganui" 0794 branch="St Johns Wanganui" 0799 branch="93 Armagh Street ChCh" 0802,0866,1592-1593 branch="Christchurch Central" - 0803 branch="Christchurch" - 0809,1745-1746 branch="Windsor" + 0803,0854 branch="Christchurch" + 0809,0960,1745-1746,1748 branch="Windsor" 0813 branch="Courier Banking CHCH" 0814,1595,1597,1700 branch="The Palms" - 0818,0854,1702 branch="Papanui" + 0818 branch="Papanui" 0823,1583 branch="Riccarton" 0824 branch="126 Riccarton Road" - 0826,0855,1704,1707 branch="Merivale" + 0826,0855,1702,1704,1707 branch="Merivale" 0827 branch="Sydenham" 0830,0857,1705-1706 branch="Upper Riccarton" 0835,0838,1719 branch="Ashburton" 0839,1716 branch="Geraldine" - 0846-0847 branch="Greymouth" - 0850 branch="Hokitika" + 0846-0847,0850 branch="Greymouth" 0859,1520,1591 branch="Eastgate" 0861 branch="High Street Christchurch" 0873 branch="NZIO Auckland" @@ -720,7 +689,6 @@ 0933 branch="Invercargill 34 Dee St" 0937,0947 branch="Oamaru" 0951,1733,1735,1738 branch="Alexandra" - 0960,1748 branch="Winton" 0978 branch="Stationery Department" 1300 branch="Core Business Systems" 1301 branch="Whangarei Proof Centre" @@ -739,7 +707,7 @@ 1315 branch="IBC - Christchurch" 1316 branch="Courier Banking Auckland" 1317 branch="Auckland Support Centre" - 1318,1571 branch="Te Awa The Base" + 1318,1570-1571,1574 branch="Te Awa The Base" 1319 branch="North Shore IPC" 1321,1372 branch="Operations Centre" 1322,1504 branch="Albany" @@ -810,14 +778,12 @@ 1530 branch="SBO Centre 2" 1538 branch="Ruakaka" 1539 branch="Westpac 4" - 1546 branch="Opotiki" 1547,1551 branch="Bayfair" 1549 branch="Tauranga Crossing" 1550 branch="Katikati" 1553,1587-1588 branch="Rolleston" 1556-1557,1559,1561 branch="Chartwell" 1565 branch="Britomart Migrant" - 1570,1574 branch="Huntly" 1572 branch="Paeroa" 1575-1577 branch="Waihi" 1578 branch="Whitianga" @@ -828,7 +794,6 @@ 1590,1596,1599 branch="Ferrymead" 1594,1598,1703 branch="Barrington" 1701 branch="Auckland Airport" - 1710 branch="Picton" 1714-1715 branch="Northtown" 1725 branch="Mosgiel" 1734,1736 branch="Balclutha" @@ -889,9 +854,7 @@ 1903 branch="Transaction Banking 103" 1904 branch="Transaction Banking 110" 1905 branch="Transaction Banking 111" - 1906 branch="Transaction Banking 112" - 1907 branch="Transaction Banking 113" - 1908 branch="Transaction Banking 114" + 1906-1908 branch="Agency" 1909 branch="Transaction Banking 115" 1910 branch="Transaction Banking 116" 1911 branch="Transaction Banking 117" @@ -903,10 +866,11 @@ 1917 branch="Transaction Banking 123" 1918 branch="Transaction Banking 124" 1919 branch="Transaction Banking 125" + 5050 branch="Westpc Insurance" 7355 branch="Branch On Demand" 04 bank="ANZ Bank New Zealand" - 2020,2022-2024 branch="ANZ Institutional" - 2021 branch="JP Morgan Chase" + 2014-2015,2019-2024 branch="ANZ Institutional" + 2016-2018 branch="ANZ (FNZ Custodians Ltd)" 05 bank="China Construction Bank NZ Ltd" 8884-8889 branch="Shortland Street" 06 bank="ANZ Bank New Zealand" @@ -918,44 +882,30 @@ 0082 branch="Sylvia Park" 0101 branch="Auckland" 0103 branch="Lending Services" - 0111,0177,0229-0230,0359,0471,0582,0669,0817,0909,0977,0983 branch="ANZ Retail" - 0115 branch="Birkenhead" - 0122 branch="Browns Bay" + 0111,0115,0122,0169,0177,0188,0201,0209,0217,0222,0229-0230,0254,0257,0266,0284,0294,0329,0359,0379,0383,0401,0409,0413,0453,0469,0471,0479,0491,0541,0565,0577,0582,0622,0663,0665,0669,0729,0738,0765,0805,0807,0817,0829,0909,0942,0977,0983 branch="ANZ Retail" 0134 branch="Transaction Services" 0145 branch="Dominion Road" 0153 branch="Henderson" - 0158 branch="Auckland University" + 0158 branch="ANZ Retail" 0163 branch="Auckland Corporate and Commercial Banking" 0164 branch="Retail Debt Management (Personal)" - 0169 branch="Uxbridge Road" 0172 branch="Hunters Corner" 0185 branch="New Lynn" - 0188 branch="Milford" 0193 branch="Newmarket" 0197 branch="Manukau Mall" 0199 branch="Ponsonby" - 0201 branch="Upper Queen Street" - 0209 branch="Onehunga" - 0217 branch="Otahuhu" - 0222 branch="Pakuranga" 0225,0237,0265,0365,0377,0393,0437,0561,0569,0583,0757,0789,0849,0894,0927,0936,0954,0968,0991 branch="Retail" 0233 branch="NBNZ Property Finance" 0241 branch="Greenlane" - 0254 branch="Huapai" - 0257 branch="Remuera" - 0266 branch="St Heliers" 0273 branch="Takapuna" - 0284 branch="Mt Albert" 0287 branch="205 Queen Street" 0293 branch="East Tamaki" - 0294 branch="Wairau Road" 0299 branch="Katikati" 0301 branch="Cambridge" 0309 branch="Dargaville" 0313 branch="Frankton" 0317 branch="Hamilton" 0323 branch="45 Queen Street" - 0329 branch="Huntly" 0333 branch="Kaikohe" 0335 branch="Hamilton Agri" 0337 branch="Kaitaia" @@ -963,42 +913,30 @@ 0361 branch="Matamata" 0369 branch="Morrinsville" 0375 branch="ANZ Finance" - 0379 branch="Mt Maunganui" - 0383 branch="Orewa" 0397 branch="Normanby Road" - 0401 branch="Papakura" 0405 branch="Pukekohe" - 0409 branch="Putaruru" 0411 branch="Direct Investments" - 0413 branch="Fenton Street" 0421 branch="Constellation Drive" 0429 branch="Taupo" 0433 branch="Tauranga" 0441 branch="Te Awamutu" - 0453 branch="Te Puke" 0457 branch="Thames" 0459 branch="The Base" 0465 branch="Tokoroa" - 0469 branch="Tuakau" 0473 branch="Waihi" 0477 branch="Waiuku" - 0479 branch="Whangaparaoa" 0483 branch="Warkworth" 0489 branch="Whakatane" - 0491 branch="Eleventh Avenue" - 0493 branch="Bank Street" + 0493 branch="Whangarei" 0501 branch="Willis Street" 0507 branch="Wellington Commercial" 0513 branch="Courtenay Place" 0529 branch="Lower Hutt" - 0541 branch="Johnsonville" 0545 branch="Petone" 0549 branch="Porirua" 0556 branch="Papamoa" - 0565 branch="188 Lambton Quay" 0574 branch="Kilbirnie" 0575 branch="Credit Assessment" - 0577 branch="Wellington South" 0580 branch="ANZ Corporate Headquarters" 0581 branch="Molesworth Street" 0589 branch="Nat IBIS Testing" @@ -1009,29 +947,21 @@ 0603 branch="Chartwell" 0606 branch="Victoria University" 0613 branch="87 - 89 High Street" - 0622 branch="Lincoln North" - 0629,0663 branch="Manchester Street" + 0629 branch="Manchester Street" 0637 branch="Gisborne" 0645 branch="Hastings" 0649 branch="Hawera" - 0665 branch="Upper Riccarton" 0689 branch="Masterton" 0701 branch="Napier" 0705 branch="Nelson" 0709 branch="New Plymouth" - 0729 branch="Cuba and Rangitikei" 0730 branch="Paraparaumu" - 0738 branch="Stortford Lodge" 0746 branch="Palmerston North" - 0765 branch="Havelock North" 0773 branch="Upper Hutt" 0781 branch="Waipukurau" 0793 branch="Wanganui" 0801 branch="Christchurch" - 0805 branch="Auckland Airport" - 0807 branch="Fitzgerald Avenue" 0821 branch="Riccarton Road" - 0829 branch="385 Colombo Street" 0831 branch="Victoria Square" 0837 branch="Ashburton" 0845 branch="Greymouth North" @@ -1051,7 +981,6 @@ 0925 branch="Invercargill" 0939 branch="Mosgiel" 0941 branch="Oamaru" - 0942 branch="Otago University" 0943 branch="Wanaka" 0949 branch="Queenstown" 0956 branch="Mid Corporate" @@ -1061,6 +990,7 @@ 0994 branch="Nationwide Home Loans Ltd" 0996 branch="Nat Wellington Clearings" 0998 branch="Albany Mall" + 1458 branch="ANZ Corporate Headquarters - MBP" 08 bank="Bank of New Zealand" 6501 branch="Auckland Proof Centre" 6502 branch="International" @@ -1506,7 +1436,7 @@ 3071 branch="South Te Atatu" 3072 branch="Glenfield" 3073 branch="Eastridge" - 3074 branch="Kelston" + 3074 branch="Auckland Central and West Small Business" 3075 branch="Parnell" 3076 branch="Bader Drive" 3077 branch="St Lukes" @@ -1532,7 +1462,7 @@ 3097 branch="Kaikohe" 3098 branch="Dargaville" 3099 branch="Whangarei" - 3100 branch="Titirangi" + 3100 branch="Digital 3" 3101 branch="Kensington" 3102 branch="Paihia" 3103 branch="Henderson West" @@ -1550,13 +1480,13 @@ 3115 branch="Walton Street" 3116 branch="Consumer Finance" 3117 branch="Cavendish Drive" - 3118 branch="Central Park Service Centre" + 3118 branch="Digital 7" 3119 branch="Wairau Park" 3120 branch="Managed Funds" 3121 branch="ASB Bank International" 3122 branch="Hamilton" 3123 branch="Waikato Commercial Banking" - 3124 branch="Electronic Banking Cards Branch" + 3124 branch="Private Banking Christchurch 4" 3125 branch="Digital 4" 3126 branch="Digital 5" 3127 branch="Subsidiaries Branch" @@ -1590,10 +1520,11 @@ 3157 branch="Paraparaumu" 3158 branch="Richmond" 3159 branch="Timaru" - 3161 branch="Reefton" + 3160 branch="Private Banking West Auckland 2" + 3161 branch="Digital 10" 3162 branch="Taupo" 3163 branch="Wanganui" - 3164 branch="Murchison" + 3164 branch="Digital 11" 3165 branch="Nelson Branch" 3166 branch="Hokitika" 3167 branch="Blenheim" @@ -1659,11 +1590,11 @@ 3231 branch="ASB Securities" 3232 branch="Westcity" 3233 branch="Botany Downs" - 3234 branch="Queenstown" + 3234 branch="Queenstown Advice Centre " 3235 branch="CMU" 3236 branch="Sovereign Home Loans Branch" 3237 branch="East Tamaki Commercial Banking" - 3238 branch="Whangarei Hvc Unit" + 3238 branch="Digital 6" 3239 branch="Contact Centre C:Drive" 3240 branch="The Palms Branch - Shirley" 3241 branch="Kiwi Bank Bureau Services" @@ -1698,7 +1629,7 @@ 3270 branch="Self Service Terminals 3" 3271 branch="Ashburton Branch" 3273 branch="Contact Centre Staff First" - 3274 branch="West Auckland Broker Centre" + 3274 branch="Digital 8" 3275 branch="Christchurch Region Broker Centre" 3276 branch="Counties Region Broker Centre" 3277 branch="East Auckland Broker Centre" @@ -1706,6 +1637,7 @@ 3279 branch="Tauranga Region Broker Centre" 3280 branch="Wellington Region Broker Centre" 3281 branch="Northland Region Broker Centre" + 3282 branch="Private Banking East Auckland 4" 3284 branch="Wellington Processing Centre" 3286 branch="National Operations AKLD" 3287 branch="Sylvia Park Branch" @@ -1727,7 +1659,7 @@ 3409 branch="Contact Centre Team Rimu" 3410 branch="Contact Centre Team Puriri" 3411 branch="Contact Centre Team Kanuka" - 3412,3414,3416-3419,3421-3422,3424-3426,3445,3447,3450,3458 branch="ASB Contact Centre" + 3412,3414,3416-3419,3421-3422,3424-3426,3445,3447,3458 branch="ASB Contact Centre" 3413 branch="Contact Centre Team Miro" 3415 branch="Contact Centre Team Kowhai" 3420 branch="Contact Centre Team Kohekohe" @@ -1735,7 +1667,7 @@ 3427 branch="Broadway Branch" 3428 branch="Auckland University" 3429 branch="Pago Business" - 3430 branch="Victoria Street West Branch" + 3430 branch="Digital 9" 3431 branch="Thames Valley Rural Banking" 3432 branch="Christchurch Processing Centre" 3433 branch="ASB - True Rewards" @@ -1751,7 +1683,8 @@ 3443 branch="ASB Rural Corporate Banking" 3446 branch="Contact Centre Team Toatoa" 3448 branch="Direct Banking" - 3449 branch="Contact Centre Team Mahoe" + 3449 branch="Digital 2" + 3450 branch="ASB Bank Support Centre" 3451 branch="Contact Centre Team Kamahi" 3452 branch="Contact Centre Team Koru" 3453 branch="Ronwood Avenue" @@ -1819,6 +1752,7 @@ 3633 branch="Cameron Road" 3634 branch="South Island Premier Banking" 3635 branch="Private Banking Central North Island" + 3636 branch="Canturbury and nelson Small Business " 3637 branch="ASB Securities No 2 Account" 3638 branch="ASB Private Banking Nelson" 3639 branch="ASB Private Banking Dunedin" @@ -1919,9 +1853,8 @@ 4798 branch="Payline" 4799 branch="Head Office" 15 bank="TSB Bank" - 3941 branch="TSB Holiday Shoppe" - 3942 branch="City" - 3943 branch="City Branch" + 3941,3954,3957-3958,3960,3970,3975 branch="TSB Service Centre" + 3942-3943,3953 branch="TSB Centre" 3944 branch="Fitzroy" 3945 branch="Waitara" 3946 branch="Inglewood" @@ -1931,19 +1864,22 @@ 3950 branch="Hawera" 3951 branch="Eltham" 3952 branch="Opunake" - 3953 branch="TSB Centre" - 3954 branch="Frankleigh Park" 3955 branch="Vogeltown" 3956 branch="Bell Block" - 3957 branch="Merrilands" - 3958 branch="Oakura" - 3959 branch="TSB Bank Customer Engagement Centre" - 3960 branch="TSB Service Centre" - 3968-3978 branch="TSB Bank Direct" - 3979 branch="Bank Direct" + 3959 branch="TSB Customer Engagement Centre" + 3968 branch="Newmarket" + 3969 branch="Nelson" + 3971 branch="Wellington" + 3972 branch="Hamilton" + 3973 branch="Tauranga" + 3974 branch="Hastings" + 3976 branch="Christchurch" + 3977 branch="Palmerston North" + 3978 branch="Takapuna" + 3979 branch="Napier" 3981 branch="TSB Support Services" - 3987 branch="Botany Service Centre" - 3988 branch="Northwest Service Centre" + 3987 branch="Botany" + 3988 branch="Northwest" 16 bank="Westpac" 4402 branch="Motueka" 4403 branch="Takaka" @@ -2293,23 +2229,17 @@ 30 bank="HSBC New Zealand" 2901 branch="Auckland" 2902 branch="Wellington" - 2903,2908 branch="Auckland - Queen Street Branch" + 2903 branch="Auckland-Queen Street Branch" 2904 branch="Auckland - Corporate" 2906 branch="New Zealand Management" 2907 branch="Christchurch" + 2908 branch="Auckland - Queen Street Branch" 2909 branch="Botany Town Premier" - 2910,2916,2918 branch="Takapuna" 2911 branch="Corporate Partners Branch" 2912 branch="HSBC Botany Downs" - 2915 branch="Wellington Mortgage Centre" - 2921 branch="Botany Town Centre Personal Banking" + 2916 branch="Takapuna" 2922 branch="Botany Town Centre Commercial Banking" - 2931 branch="Alliances Branch" 2932 branch="Customer Services Centre Branch" - 2933 branch="PFS Christchurch" - 2934 branch="Private Clients Branch" - 2935 branch="HSBC One Queen Street - Alliance Branch" - 2936 branch="HSBC One Queen Street - Retail Branch" 2937 branch="HSBC One Queen Street - Commercial Branch" 2940 branch="Payment Services" 2948 branch="Treasury" diff --git a/stdnum/nz/ird.py b/stdnum/nz/ird.py index 50b6d012..250689f3 100644 --- a/stdnum/nz/ird.py +++ b/stdnum/nz/ird.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IRD number (New Zealand Inland Revenue Department (Te Tari Tāke) number). @@ -44,13 +42,15 @@ InvalidLength: ... >>> format('49098576') '49-098-576' -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation.""" number = clean(number, ' -').upper().strip() if number.startswith('NZ'): @@ -58,7 +58,7 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included. @@ -66,7 +66,7 @@ def calc_check_digit(number): primary_weights = (3, 2, 7, 6, 5, 4, 3, 2) secondary_weights = (7, 4, 3, 2, 5, 2, 7, 6) # pad with leading zeros - number = (8 - len(number)) * '0' + number + number = number.zfill(8) s = -sum(w * int(n) for w, n in zip(primary_weights, number)) % 11 if s != 10: return str(s) @@ -74,7 +74,7 @@ def calc_check_digit(number): return str(s) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid IRD number.""" number = compact(number) if len(number) not in (8, 9): @@ -88,7 +88,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid IRD number.""" try: return bool(validate(number)) @@ -96,7 +96,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[:-6], number[-6:-3], number[-3:]]) diff --git a/stdnum/oui.dat b/stdnum/oui.dat index a14c8bb3..9c1cf5da 100644 --- a/stdnum/oui.dat +++ b/stdnum/oui.dat @@ -1,11 +1,11 @@ # list of IEEE MAC Address Block registry entries -# http://standards-oui.ieee.org/oui/oui.csv -# http://standards-oui.ieee.org/oui28/mam.csv -# http://standards-oui.ieee.org/oui36/oui36.csv +# https://standards-oui.ieee.org/oui/oui.csv +# https://standards-oui.ieee.org/oui28/mam.csv +# https://standards-oui.ieee.org/oui36/oui36.csv 000000-000009,0000AA o="XEROX CORPORATION" 00000A o="OMRON TATEISI ELECTRONICS CO." 00000B o="MATRIX CORPORATION" -00000C,000142-000143,000163-000164,000196-000197,0001C7,0001C9,000216-000217,00023D,00024A-00024B,00027D-00027E,0002B9-0002BA,0002FC-0002FD,000331-000332,00036B-00036C,00039F-0003A0,0003E3-0003E4,0003FD-0003FE,000427-000428,00044D-00044E,00046D-00046E,00049A-00049B,0004C0-0004C1,0004DD-0004DE,000500-000501,000531-000532,00055E-00055F,000573-000574,00059A-00059B,0005DC-0005DD,000628,00062A,000652-000653,00067C,0006C1,0006D6-0006D7,0006F6,00070D-00070E,00074F-000750,00077D,000784-000785,0007B3-0007B4,0007EB-0007EC,000820-000821,00082F-000832,00087C-00087D,0008A3-0008A4,0008C2,0008E2-0008E3,000911-000912,000943-000944,00097B-00097C,0009B6-0009B7,0009E8-0009E9,000A41-000A42,000A8A-000A8B,000AB7-000AB8,000AF3-000AF4,000B45-000B46,000B5F-000B60,000B85,000BBE-000BBF,000BFC-000BFD,000C30-000C31,000C85-000C86,000CCE-000CCF,000D28-000D29,000D65-000D66,000DBC-000DBD,000DEC-000DED,000E38-000E39,000E83-000E84,000ED6-000ED7,000F23-000F24,000F34-000F35,000F8F-000F90,000FF7-000FF8,001007,00100B,00100D,001011,001014,00101F,001029,00102F,001054,001079,00107B,0010A6,0010F6,0010FF,001120-001121,00115C-00115D,001192-001193,0011BB-0011BC,001200-001201,001243-001244,00127F-001280,0012D9-0012DA,001319-00131A,00135F-001360,00137F-001380,0013C3-0013C4,00141B-00141C,001469-00146A,0014A8-0014A9,0014F1-0014F2,00152B-00152C,001562-001563,0015C6-0015C7,0015F9-0015FA,001646-001647,00169C-00169D,0016C7-0016C8,00170E-00170F,00173B,001759-00175A,001794-001795,0017DF-0017E0,001818-001819,001873-001874,0018B9-0018BA,001906-001907,00192F-001930,001955-001956,0019A9-0019AA,0019E7-0019E8,001A2F-001A30,001A6C-001A6D,001AA1-001AA2,001AE2-001AE3,001B0C-001B0D,001B2A-001B2B,001B53-001B54,001B8F-001B90,001BD4-001BD5,001C0E-001C0F,001C57-001C58,001CB0-001CB1,001CF6,001CF9,001D45-001D46,001D70-001D71,001DA1-001DA2,001DE5-001DE6,001E13-001E14,001E49-001E4A,001E79-001E7A,001EBD-001EBE,001EF6-001EF7,001F26-001F27,001F6C-001F6D,001F9D-001F9E,001FC9-001FCA,00211B-00211C,002155-002156,0021A0-0021A1,0021D7-0021D8,00220C-00220D,002255-002256,002290-002291,0022BD-0022BE,002304-002305,002333-002334,00235D-00235E,0023AB-0023AC,0023EA-0023EB,002413-002414,002450-002451,002497-002498,0024C3-0024C4,0024F7,0024F9,002545-002546,002583-002584,0025B4-0025B5,00260A-00260B,002651-002652,002698-002699,0026CA-0026CB,00270C-00270D,002790,0027E3,0029C2,002A10,002A6A,002CC8,002F5C,003019,003024,003040,003071,003078,00307B,003080,003085,003094,003096,0030A3,0030B6,0030F2,003217,00351A,0038DF,003A7D,003A98-003A9C,003C10,00400B,004096,0041D2,00425A,004268,00451D,00500B,00500F,005014,00502A,00503E,005050,005053-005054,005073,005080,0050A2,0050A7,0050BD,0050D1,0050E2,0050F0,00562B,0057D2,0059DC,005D73,005F86,006009,00602F,00603E,006047,00605C,006070,006083,0062EC,006440,006BF1,006CBC,007278,007686,00778D,007888,007E95,0081C4,008731,008764,008A96,008E73,00900C,009021,00902B,00905F,00906D,00906F,009086,009092,0090A6,0090AB,0090B1,0090BF,0090D9,0090F2,009AD2,009E1E,00A289,00A2EE,00A38E,00A3D1,00A5BF,00A6CA,00A742,00AA6E,00AF1F,00B04A,00B064,00B08E,00B0C2,00B0E1,00B1E3,00B670,00B771,00B8B3,00BC60,00BE75,00BF77,00C164,00C1B1,00C88B,00CAE5,00CCFC,00D006,00D058,00D063,00D079,00D090,00D097,00D0BA-00D0BC,00D0C0,00D0D3,00D0E4,00D0FF,00D6FE,00D78F,00DA55,00DEFB,00E014,00E01E,00E034,00E04F,00E08F,00E0A3,00E0B0,00E0F7,00E0F9,00E0FE,00E16D,00EABD,00EBD5,00EEAB,00F28B,00F663,00F82C,00FCBA,00FD22,00FEC8,042AE2,045FB9,046273,046C9D,0476B0,04C5A4,04DAD2,04EB40,04FE7F,081735,081FF3,084FA9,084FF9,0896AD,08CC68,08CCA7,08D09F,08ECF5,0C1167,0C2724,0C6803,0C75BD,0C8525,0CD0F8,0CD996,0CF5A4,1005CA,108CCF,10B3C6,10B3D5-10B3D6,10BD18,10F311,10F920,14169D,14A2A0,18339D,188090,188B45,188B9D,189C5D,18E728,18EF63,1C17D3,1C1D86,1C6A7A,1CAA07,1CDEA7,1CDF0F,1CE6C7,1CE85D,203706,203A07,204C9E,20BBC0,2401C7,24169D,247E12,24B657,24E9B3,2834A2,285261,286F7F,2893FE,28940F,28AC9E,28C7CE,2C01B5,2C0BE9,2C3124,2C3311,2C36F8,2C3ECF,2C3F38,2C4F52,2C542D,2C5741,2C5A0F,2C73A0,2C86D2,2CABEB,2CD02D,2CF89B,3037A6,308BB2,30E4DB,30F70D,346288,346F90,34A84E,34BDC8,34DBFD,34ED1B,34F8E7,380E4D,381C1A,382056,3890A5,38ED18,3C08F6,3C0E23,3C13CC,3C410E,3C510E,3C5731,3C5EC3,3CCE73,3CDF1E,40017A,405539,40A6E8,40CE24,40F078,40F4EC,4403A7,442B03,44ADD9,44D3CA,44E4D9,4C0082,4C4E35,4C710C-4C710D,4C776D,4CA64D,4CBC48,4CE175-4CE176,500604,5006AB,500F80,5017FF,501CB0,501CBF,502FA8,503DE5,5057A8,5061BF,5067AE,508789,50F722,544A00,5475D0,54781A,547C69,547FEE,5486BC,5488DE,548ABA,54A274,580A20,5835D9,588D09,58971E,5897BD,58AC78,58BC27,58BFEA,58F39C,5C5015,5C5AC7,5C710D,5C838F,5CA48A,5CA62D,5CE176,5CFC66,60735C,6400F1,641225,64168D,643AEA,649EF3,64A0E7,64AE0C,64D814,64D989,64E950,64F69D,682C7B,683B78,687DB4,6886A7,6899CD,689CE2,689E0B,68BC0C,68BDAB,68CAE4,68EFBD,6C2056,6C310E,6C410E,6C416A,6C504D,6C5E3B,6C6CD3,6C710D,6C8BD3,6C9989,6C9CED,6CAB05,6CB2AE,6CDD30,6CFA89,7001B5,700B4F,700F6A,70105C,7018A7,701F53,703509,70617B,70695A,706BB9,706D15,706E6D,70708B,7079B3,707DB9,708105,70B317,70C9C6,70CA9B,70D379,70DB98,70DF2F,70E422,70EA1A,70F096,70F35A,7426AC,74860B,7488BB,74A02F,74A2E6,7802B1,780CF0,78725D,78BAF9,78BC1A,78DA6E,7C0ECE,7C210D-7C210E,7C310E,7C69F6,7C95F3,7CAD4F,7CAD74,802DBF,80E01D,80E86F,843DC6,8478AC,84802D,848A8D,84B261,84B517,84B802,881DFC,8843E1,885A92,887556,88908D,88F031,88F077,8C604F,8C941F,8CB64F,9077EE,94AEF0,94D469,9C4E20,9C57AD,9CAFCA,9CE176,A0239F,A03D6F,A0554F,A09351,A0B439,A0CF5B,A0E0AF,A0ECF9,A0F849,A40CC3,A41875,A44C11,A4530E,A45630,A46C2A,A48873,A4934C,A4B239,A4B439,A80C0D,A89D21,A8B1D4,A8B456,AC3A67,AC4A56,AC4A67,AC7A56,AC7E8A,ACA016,ACF2C5,ACF5E6,B000B4,B02680,B07D47,B08BCF,B0907E,B0AA77,B0FAEB,B40216,B41489,B4A4E3,B4A8B9,B4DE31,B4E9B0,B83861,B8621F,B8BEBF,BC1665,BC16F5,BC26C7,BC4A56,BC5A56,BC671C,BCC493,BCF1F2,C014FE,C0255C,C0626B,C064E4,C067AF,C07BBC,C08C60,C40ACB,C4143C,C444A0,C46413,C471FE,C47295,C47D4F,C4B239,C4B36A,C4B9CD,C4C603,C4F7D5,C80084,C84C75,C884A1,C89C1D,C8F9F9,CC167E,CC46D6,CC5A53,CC70ED,CC7F75-CC7F76,CC8E71,CC9070,CC9891,CCD539,CCD8C1,CCDB93,CCEF48,D0574C,D072DC,D0A5A6,D0C282,D0C789,D0D0FD,D0EC35,D42C44,D46A35,D46D50,D4789B,D48CB5,D4A02A,D4AD71,D4ADBD,D4C93C,D4D748,D4E880,D824BD,D867D9,D8B190,DC3979,DC774C,DC7B94,DC8C37,DCA5F4,DCCEC1,DCEB94,DCF719,E00EDA,E02F6D,E05FB9,E0899D,E0ACF1,E0D173,E41F7B,E4AA5D,E4C722,E4D3F1,E80462,E84040,E86549,E8B748,E8BA70,E8EDF3,EC1D8B,EC3091,EC4476,ECBD1D,ECC882,ECE1A9,F02572,F02929,F07816,F07F06,F09E63,F0B2E5,F0F755,F40F1B,F41FC2,F44E05,F47F35,F4ACC1,F4BD9E,F4CFE2,F4DBE6,F4EA67,F80BCB,F80F6F,F84F57,F866F2,F86BD9,F872EA,F87B20,F8A5C5,F8B7E2,F8C288,FC589A,FC5B39,FC9947,FCFBFB o="Cisco Systems, Inc" +00000C,000142-000143,000163-000164,000196-000197,0001C7,0001C9,000216-000217,00023D,00024A-00024B,00027D-00027E,0002B9-0002BA,0002FC-0002FD,000331-000332,00036B-00036C,00039F-0003A0,0003E3-0003E4,0003FD-0003FE,000427-000428,00044D-00044E,00046D-00046E,00049A-00049B,0004C0-0004C1,0004DD-0004DE,000500-000501,000531-000532,00055E-00055F,000573-000574,00059A-00059B,0005DC-0005DD,000628,00062A,000652-000653,00067C,0006C1,0006D6-0006D7,0006F6,00070D-00070E,00074F-000750,00077D,000784-000785,0007B3-0007B4,0007EB-0007EC,000820-000821,00082F-000832,00087C-00087D,0008A3-0008A4,0008C2,0008E2-0008E3,000911-000912,000943-000944,00097B-00097C,0009B6-0009B7,0009E8-0009E9,000A41-000A42,000A8A-000A8B,000AB7-000AB8,000AF3-000AF4,000B45-000B46,000B5F-000B60,000B85,000BBE-000BBF,000BFC-000BFD,000C30-000C31,000C85-000C86,000CCE-000CCF,000D28-000D29,000D65-000D66,000DBC-000DBD,000DEC-000DED,000E38-000E39,000E83-000E84,000ED6-000ED7,000F23-000F24,000F34-000F35,000F8F-000F90,000FF7-000FF8,001007,00100B,00100D,001011,001014,00101F,001029,00102F,001054,001079,00107B,0010A6,0010F6,0010FF,001120-001121,00115C-00115D,001192-001193,0011BB-0011BC,001200-001201,001243-001244,00127F-001280,0012D9-0012DA,001319-00131A,00135F-001360,00137F-001380,0013C3-0013C4,00141B-00141C,001469-00146A,0014A8-0014A9,0014F1-0014F2,00152B-00152C,001562-001563,0015C6-0015C7,0015F9-0015FA,001646-001647,00169C-00169D,0016C7-0016C8,00170E-00170F,00173B,001759-00175A,001794-001795,0017DF-0017E0,001818-001819,001873-001874,0018B9-0018BA,001906-001907,00192F-001930,001955-001956,0019A9-0019AA,0019E7-0019E8,001A2F-001A30,001A6C-001A6D,001AA1-001AA2,001AE2-001AE3,001B0C-001B0D,001B2A-001B2B,001B53-001B54,001B8F-001B90,001BD4-001BD5,001C0E-001C0F,001C57-001C58,001CB0-001CB1,001CF6,001CF9,001D45-001D46,001D70-001D71,001DA1-001DA2,001DE5-001DE6,001E13-001E14,001E49-001E4A,001E79-001E7A,001EBD-001EBE,001EF6-001EF7,001F26-001F27,001F6C-001F6D,001F9D-001F9E,001FC9-001FCA,00211B-00211C,002155-002156,0021A0-0021A1,0021D7-0021D8,00220C-00220D,002255-002256,002290-002291,0022BD-0022BE,002304-002305,002333-002334,00235D-00235E,0023AB-0023AC,0023EA-0023EB,002413-002414,002450-002451,002497-002498,0024C3-0024C4,0024F7,0024F9,002545-002546,002583-002584,0025B4-0025B5,00260A-00260B,002651-002652,002698-002699,0026CA-0026CB,00270C-00270D,002790,0027E3,0029C2,002A10,002A6A,002CC8,002F5C,003019,003024,003040,003071,003078,00307B,003080,003085,003094,003096,0030A3,0030B6,0030F2,003217,00351A,0038DF,003A7D,003A98-003A9C,003C10,00400B,004096,0041D2,00425A,004268,00451D,00500B,00500F,005014,00502A,00503E,005050,005053-005054,005073,005080,0050A2,0050A7,0050BD,0050D1,0050E2,0050F0,00562B,0057D2,00596C,0059DC,005D73,005F86,006009,00602F,00603E,006047,00605C,006070,006083,0062EC,006440,006BF1,006CBC,007278,007686,00778D,007888,007E95,0081C4,008731,008764,008A96,008E73,00900C,009021,00902B,00905F,00906D,00906F,009086,009092,0090A6,0090AB,0090B1,0090BF,0090D9,0090F2,009AD2,009E1E,00A289,00A2EE,00A38E,00A3D1,00A5BF,00A6CA,00A742,00AA6E,00AF1F,00B04A,00B064,00B08E,00B0C2,00B0E1,00B1E3,00B670,00B771,00B8B3,00BC60,00BE75,00BF77,00C164,00C1B1,00C88B,00CAE5,00CCFC,00D006,00D058,00D063,00D079,00D090,00D097,00D0BA-00D0BC,00D0C0,00D0D3,00D0E4,00D0FF,00D6FE,00D78F,00DA55,00DEFB,00DF1D,00E014,00E01E,00E034,00E04F,00E08F,00E0A3,00E0B0,00E0F7,00E0F9,00E0FE,00E16D,00EABD,00EBD5,00EEAB,00F28B,00F663,00F82C,00FCBA,00FD22,00FEC8,042AE2,045FB9,046273,046C9D,0476B0,04A741,04BD97,04C5A4,04DAD2,04E387,04EB40,04FE7F,080FE5,081735,081FF3,0845D1,084FA9,084FF9,087B87,0896AD,089707,08CC68,08CCA7,08D09F,08ECF5,08F3FB,08F4F0,0C1167,0C2724,0C6803,0C75BD,0C8525,0CAF31,0CD0F8,0CD5D3,0CD996,0CF5A4,1005CA,1006ED,105725,108CCF,1096C6,10A829,10B3C6,10B3D5-10B3D6,10BD18,10E376,10F311,10F920,14169D,141923,148473,14A2A0,14BC68,14E22A,18339D,1859F5,188090,188B45,188B9D,189C5D,18E728,18EF63,18F935,1C17D3,1C1D86,1C6A7A,1CAA07,1CD1E0,1CDEA7,1CDF0F,1CE6C7,1CE85D,1CFC17,200BC5,203706,203A07,204C9E,20BBC0,20CC27,20CFAE,20DBEA,20F120,2401C7,24161B,24169D,242A04,2436DA,246C84,247121,247E12,24813B,24B657,24D5E4,24D79C,24E9B3,2834A2,285261,286B5C,286F7F,2893FE,28940F,28AC9E,28AFFD,28B591,28C7CE,2C01B5,2C0BE9,2C1A05,2C3124,2C3311,2C36F8,2C3ECF,2C3F38,2C4F52,2C542D,2C5741,2C5A0F,2C658D,2C73A0,2C86D2,2CABEB,2CD02D,2CE38E,2CF814,2CF89B,3001AF,3037A6,308BB2,30E4DB,30F70D,30FEFA,341B2D,34588A,345DA8,346288,346F90,347069,34732D,348818,34A84E,34B883,34BDC8,34C3FD,34DBFD,34ED1B,34F8E7,380E4D,381C1A,382056,3890A5,3891B7,38AA09,38ED18,38FDF8,3C08F6,3C0E23,3C13CC,3C26E4,3C410E,3C510E,3C5731,3C5EC3,3C8B7F,3CCE73,3CDF1E,3CFEAC,40017A,4006D5,401482,404244,405539,40A6E8,40B5C1,40CE24,40F078,40F49F,40F4EC,4403A7,441A5C,442B03,44643C,448816,448DD5,44ADD9,44AE25,44B6BE,44C20C,44D3CA,44E4D9,4800B3,481BA4,482E72,487410,488002,488B0A,4891D5,48A170,4C0082,4C01F7,4C421E,4C4E35,4C5D3C,4C710C-4C710D,4C776D,4CA64D,4CBC48,4CD0F9,4CE175-4CE176,4CEC0F,5000E0,500604,5006AB,500F80,5017FF,501CB0,501CBF,502FA8,503DE5,504921,5057A8,505C88,5061BF,5067AE,508789,50F722,544A00,5451DE,5475D0,54781A,547C69,547FEE,5486BC,5488DE,548ABA,549FC6,54A274,580A20,5835D9,58569F,588B1C,588D09,58971E,5897BD,58AC78,58BC27,58BFEA,58DF59,58F39C,5C3192,5C3E06,5C5015,5C5AC7,5C64F1,5C710D,5C838F,5CA48A,5CA62D,5CB12E,5CE176,5CFC66,6026AA,60735C,60A954,60B9C0,6400F1,640864,641225,64168D,643AEA,648F3E,649EF3,64A0E7,64AE0C,64D814,64D989,64E950,64F69D,680489,682C7B,683B78,687161,687909,687DB4,6886A7,6887C6,6899CD,689CE2,689E0B,68BC0C,68BDAB,68CAE4,68D972,68E59E,68EFBD,6C0309,6C03B5,6C13D5,6C2056,6C29D2,6C310E,6C410E,6C416A,6C4EF6,6C4FA1,6C504D,6C5E3B,6C6CD3,6C710D,6C8BD3,6C8D77,6C9989,6C9CED,6CAB05,6CB2AE,6CD6E3,6CDD30,6CFA89,7001B5,700B4F,700F6A,70105C,7018A7,701F53,703509,70617B,70695A,706BB9,706D15,706E6D,70708B,7079B3,707DB9,708105,70A983,70B317,70BC48,70BD96,70C9C6,70CA9B,70D379,70DA48,70DB98,70DF2F,70E422,70EA1A,70F096,70F35A,7411B2,7426AC,74860B,7488BB,748FC2,74A02F,74A2E6,74AD98,74E2E7,7802B1,780CF0,78119D,7824BE,7864A0,78725D,788517,78BAF9,78BC1A,78DA6E,78F1C6,7C0ECE,7C210D-7C210E,7C310E,7C69F6,7C8767,7C95F3,7CAD4F,7CAD74,7CB353,7CF880,80248F,80276C,802DBF,806132,806A00,80E01D,80E86F,840C6D,843DC6,845A3E,8478AC,84802D,848A8D,84B261,84B517,84B802,84EBEF,84F147,84FFC2,881DFC,8843E1,884F59,885A92,887556,887ABC,88908D,889CAD,88F031,88F077,88FC5D,8C1E80,8C44A5,8C604F,8C8442,8C941F,8C9461,8CB50E,8CB64F,905671,9077EE,908855,908A80,90E95E,90EB50,940D4B,9433D8,94AEF0,94D469,98A2C0,98D7E1,9C098B,9C3818,9C4E20,9C5416,9C57AD,9C6697,9CA9B8,9CAFCA,9CD57D,9CE176,A00F37,A0239F,A0334F,A03D6E-A03D6F,A0554F,A09351,A0A47F,A0B439,A0BC6F,A0C7D2,A0CF5B,A0E0AF,A0ECF9,A0F849,A4004E,A40CC3,A410B6,A411BB,A41875,A44C11,A4530E,A45630,A46C2A,A47806,A48873,A4934C,A49700,A49BCD,A4A584,A4B239,A4B439,A4DCD5,A80C0D,A84FB1,A89D21,A8B1D4,A8B456,AC2AA1,AC3A67,AC4A56,AC4A67,AC7A56,AC7E8A,ACA016,ACBCD9,ACF2C5,ACF5E6,B000B4,B02680,B07D47,B08BCF-B08BD0,B08D57,B0907E,B0A651,B0AA77,B0C53C,B0FAEB,B40216,B41489,B44C90,B4A4E3,B4A8B9,B4CADD,B4DE31,B4E9B0,B8114B,B83861,B8621F,B8A377,B8BEBF,B8C924,B8FE90,BC1665,BC16F5,BC26C7,BC2CE6,BC4A56,BC5A56,BC671C,BC8D1F,BCABF5,BCC493,BCD295,BCE712,BCF1F2,BCFAEB,C014FE,C0255C,C02C17,C0626B,C064E4,C067AF,C07BBC,C08B2A,C08C60,C0F87F,C40ACB,C4143C,C418FC,C444A0,C44606,C44D84,C46413,C471FE,C47295,C47D4F,C47EE0,C4AB4D,C4B239,C4B36A,C4B9CD,C4C603,C4F7D5,C80084,C828E5,C834E5,C84709,C84C75,C8608F,C878F7,C88234,C884A1,C89C1D,C8F9F9,CC167E,CC36CF,CC46D6,CC5A53,CC6A33,CC70ED,CC79D7,CC7F75-CC7F76,CC8E71,CC9070,CC9891,CCB6C8,CCD342,CCD539,CCD8C1,CCDB93,CCED4D,CCEF48,D009C8,D02C39,D0574C,D072DC,D08543,D0A5A6,D0C282,D0C789,D0D0FD,D0DC2C,D0E042,D0EC35,D42C44,D46624,D46A35,D46D50,D47798,D4789B,D47F35,D48CB5,D4A02A,D4AD71,D4ADBD,D4C93C,D4D748,D4E880,D4EB68,D824BD,D867D9,D8B190,DC0539,DC0B09,DC3979,DC774C,DC7B94,DC8C37,DCA5F4,DCCEC1,DCD83B,DCEB94,DCF719,E00EDA,E02A66,E02F6D,E05FB9,E069BA,E0899D,E08C3C,E0ACF1,E0D173,E0D491,E41F7B,E4379F,E4387E,E44E2D,E462C4,E489CA,E4A41C,E4AA5D,E4C722,E4D3F1,E80462,E80AB9,E84040,E85C0A,E86549,E879A3,E8B748,E8BA70,E8BCE4,E8D322,E8DC6C,E8EB34,E8EDF3,EC01D5,EC192E,EC1D8B,EC3091,EC4476,ECA78D,ECBB78,ECBD1D,ECC018,ECC882,ECCE13,ECDD24,ECE1A9,ECF40C,F003BC,F01D2D,F02572,F02929,F04A02,F07816,F07F06,F09E63,F0B2E5,F0D805,F0F755,F40F1B,F41FC2,F43392,F44E05,F47470,F47F35,F4ACC1,F4BD9E,F4CFE2,F4DBE6,F4EA67,F4EE31,F80BCB,F80F6F,F814DD,F83918,F84F57,F866F2,F868FF,F86BD9,F872EA,F87A41,F87B20,F8A5C5,F8A73A,F8B7E2,F8C288,F8C650,F8E57E,F8E94F,FC589A,FC5B39,FC7288,FC9947,FCFBFB o="Cisco Systems, Inc" 00000D o="FIBRONICS LTD." 00000E,000B5D,001742,002326,00E000,2CD444,38AFD7,502690,5C9AD8,68847E,742B62,8C736E,A06610,A8B2DA,B09928,B0ACFA,C47D46,E01877,E47FB2,EC7949,FC084A o="FUJITSU LIMITED" 00000F o="NEXT, INC." @@ -65,11 +65,11 @@ 000045 o="FORD AEROSPACE & COMM. CORP." 000046 o="OLIVETTI NORTH AMERICA" 000047 o="NICOLET INSTRUMENTS CORP." -000048,0026AB,381A52,389D92,44D244,50579C,64EB8C,9CAED3,A4EE57,AC1826,B0E892,DCCD2F,E0BB9E,F8D027 o="Seiko Epson Corporation" +000048,0026AB,381A52,389D92,44D244,50579C,5805D9,64C6D2,64EB8C,6855D4,9CAED3,A4D73C,A4EE57,AC1826,B0E892,D4808B,DC83BF,DCCD2F,E0BB9E,F82551,F8D027 o="Seiko Epson Corporation" 000049 o="APRICOT COMPUTERS, LTD" 00004A,0080DF o="ADC CODENOLL TECHNOLOGY CORP." 00004B o="ICL DATA OY" -00004C,001697,00255C,003013,58C232,743A65,8CDF9D,D49234 o="NEC Corporation" +00004C,001697,00255C,003013,58C232,743A65,8CDF9D,D49234,F8CA85 o="NEC Corporation" 00004D o="DCI CORPORATION" 00004E o="AMPEX CORPORATION" 00004F o="LOGICRAFT, INC." @@ -77,7 +77,7 @@ 000051 o="HOB ELECTRONIC GMBH & CO. KG" 000052 o="Intrusion.com, Inc." 000053 o="COMPUCORP" -000054,001100 o="Schneider Electric" +000054,00006C,000417,001100,9C0E51 o="Schneider Electric" 000055 o="COMMISSARIAT A L`ENERGIE ATOM." 000056 o="DR. B. STRUCK" 000057 o="SCITEX CORPORATION LTD." @@ -88,8 +88,8 @@ 00005C o="TELEMATICS INTERNATIONAL INC." 00005D o="CS TELECOM" 00005E o="ICANN, IANA Department" -00005F,0008F6,000BA2,001CFC,0025DC,084EBF o="Sumitomo Electric Industries, Ltd" -000060 o="KONTRON ELEKTRONIK GMBH" +00005F,0008F6,000BA2,001CFC,0025DC,084EBF,44388C,A4DE26 o="Sumitomo Electric Industries, Ltd" +000060,003059,08855B o="Kontron Europe GmbH" 000061 o="GATEWAY COMMUNICATIONS" 000062 o="BULL HN INFORMATION SYSTEMS" 000063 o="BARCO CONTROL ROOMS GMBH" @@ -125,10 +125,10 @@ 000082 o="LECTRA SYSTEMES SA" 000083 o="TADPOLE TECHNOLOGY PLC" 000084 o="SUPERNET" -000085,001E8F,00BBC1,180CAC,2C9EFC,349F7B,60128B,7438B7,74BFC0,84BA3B,888717,9C32CE,D8492F,F48139,F4A997,F80D60,F8A26D o="CANON INC." +000085,001E8F,00BBC1,180CAC,2C9EFC,349F7B,40F8DF,5003CF,5C625A,60128B,6C3C7C,6CF2D8,7438B7,74BFC0,80030D,84BA3B,888717,9C32CE,A4F01F,D8492F,DCC2C9,F48139,F4A997,F80D60,F8A26D o="CANON INC." 000086 o="MEGAHERTZ CORPORATION" 000087 o="HITACHI, LTD." -000088,00010F,000480,00051E,000533,000CDB,0012F2,0014C9,001BED,002438,0027F8,006069,0060DF,00E052,080088,50EB1A,609C9F,748EF8,78A6E1,889471,8C7CFF,C4F57C,CC4E24,D81FCC o="Brocade Communications Systems LLC" +000088,00010F,000480,00051E,000533,000CDB,0012F2,0014C9,001BED,002438,0027F8,006069,0060DF,00E052,080088,50EB1A,609C9F,748EF8,78A6E1,889471,8C7CFF,BCE9E2,C4F57C,CC4E24,D81FCC o="Brocade Communications Systems LLC" 000089 o="CAYMAN SYSTEMS INC." 00008A o="DATAHOUSE INFORMATION SYSTEMS" 00008B o="INFOTRON" @@ -178,15 +178,15 @@ 0000B9 o="MCDONNELL DOUGLAS COMPUTER SYS" 0000BA o="SIIG, INC." 0000BB o="TRI-DATA" -0000BC,001D9C,086195,184C08,34C0F9,5C8816,E49069,F45433 o="Rockwell Automation" -0000BD o="Mitsubishi Cable Industries, Ltd. / Ryosei Systems" +0000BC,001D9C,086195,184C08,34C0F9,404101,5C2167,5C8816,68C8EB,BCF499,E48EBB,E49069,F45433 o="Rockwell Automation" +0000BD o="RYOSEI, Ltd." 0000BE o="THE NTI GROUP" 0000BF o="SYMMETRIC COMPUTER SYSTEMS" 0000C0 o="WESTERN DIGITAL CORPORATION" 0000C2 o="INFORMATION PRESENTATION TECH." 0000C3,0006EC,0017F3 o="Harris Corporation" 0000C4 o="WATERS DIV. OF MILLIPORE" -0000C5,0000CA,0003E0,0004BD,00080E,000B06,000CE5,000E5C,000F9F,000FCC,00111A,001180,0011AE,001225,00128A,0012C9,001311,001371,001404,00149A,0014E8,00152F,001596,00159A,0015A2-0015A4,0015A8,0015CE-0015D1,001626,001675,0016B5,001700,001784,0017E2,0017EE,0018A4,0018C0,00192C,00195E,0019A6,0019C0,001A1B,001A66,001A77,001AAD,001ADB,001ADE,001B52,001BDD,001C11-001C12,001CC1,001CC3,001CFB,001D6B,001DBE,001DCD-001DD6,001E46,001E5A,001E8D,001F7E,001FC4,002040,00211E,002136,002143,002180,002210,0022B4,00230B,002374-002375,002395,0023A2-0023A3,0023AF,0023ED-0023EE,002493,002495,0024A0-0024A1,0024C1,0025F1-0025F2,002636,002641-002642,0026BA,0026D9,003676,005094,0050E3,00909C,00ACE0,00D037,00D088,00E06F,044E5A,083E0C,0CB771,0CEAC9,0CF893,1005B1,105611,10868C,109397,145BD1,14ABF0,14C03E,14CFE2,14D4FE,1820D5,1835D1,189C27,18B81F,1C1448,1C1B68,203D66,207355,20E564,20F19E,20F375,240A63,287AEE,28C87A,2C1DB8,2C584F,2C7E81,2C9569,2C9924,2C9E5F,2CA17D,306023,341FE4,347A60,384C90,386BBB,38700C,3C0461,3C36E4,3C438E,3C754A,3C7A8A,3CDFA9,400D10,402B50,404C77,407009,40B7F3,40FC89,4434A7,446AB7,44AAF5,44E137,484EFC,48D343,4C1265,4C38D8,5075F1,509551,5465DE,54E2E0,5819F8,5856E8,5C571A,5C8FE0,5CB066,5CE30E,601971,608CE6,6092F5,60D248,6402CB,641269,6455B1,64ED57,6C639C,6CA604,6CC1D2,6CCA08,704FB8,705425,707630,707E43,7085C6,70B14E,745612,748A0D,74E7C6,74EAE8,74F612,7823AE,78719C,789684,7C2634,7CBFB1,8096B1,80E540,80F503,8461A0,8496D8,84BB69,84E058,8871B1,88964E,88EF16,8C09F4,8C5A25,8C5BF0,8C61A3,8C7F3B,900DCB,901ACA,903EAB,909D7D,90B134,90C792,946269,94877C,948FCF,94CCB9,94E8C5,984B4A,986B3D,98F781,98F7D7,9C3426,9CC8FC,A055DE,A0687E,A0C562,A41588,A47AA4,A49813,A4ED4E,A811FC,A8705D,A897CD,A89FEC,A8F5DD,ACB313,ACDB48,ACEC80,ACF8CC,B077AC,B083D6,B0935B,B0DAF9,B4F2E8,B81619,BC2E48,BC644B,BCCAB5,C005C2,C089AB,C0A00D,C0C522,C83FB4,C85261,C863FC,C8AA21,CC65AD,CC75E2,CC7D37,CCA462,D039B3,D0E54D,D404CD,D40598,D40AA9,D42C0F,D43FCB,D4AB82,D4B27A,D82522,DC4517,E02202,E0B70A,E0B7B1,E45740,E46449,E48399,E49F1E,E83381,E83EFC,E86D52,E8825B,E8892C,E8ED05,EC7097,ECA940,F0AF85,F0FCC8,F40E83,F80BBE,F82DC0,F87B7A,F88B37,F8A097,F8EDA5,F8F532,FC51A4,FC6FB7,FC8E7E,FCAE34 o="ARRIS Group, Inc." +0000C5,0000CA,0003E0,0004BD,00080E,000B06,000CE5,000E5C,000F9F,000FCC,00111A,001180,0011AE,001225,00128A,0012C9,001311,001371,001404,00149A,0014E8,00152F,001596,00159A,0015A2-0015A4,0015A8,0015CE-0015D1,001626,001675,0016B5,001700,001784,0017E2,0017EE,0018A4,0018C0,00192C,00195E,0019A6,0019C0,001A1B,001A66,001A77,001AAD,001ADB,001ADE,001B52,001BDD,001C11-001C12,001CC1,001CC3,001CFB,001D6B,001DBE,001DCD-001DD6,001E46,001E5A,001E8D,001F7E,001FC4,002040,00211E,002136,002143,002180,002210,0022B4,00230B,002374-002375,002395,0023A2-0023A3,0023AF,0023ED-0023EE,002493,002495,0024A0-0024A1,0024C1,0025F1-0025F2,002636,002641-002642,0026BA,0026D9,003676,005094,0050E3,00909C,00ACE0,00D037,00D088,00E06F,044E5A,083E0C,0C7FB2,0CB771,0CEAC9,0CF893,1005B1,105611,10868C,109397,10E177,145BD1,14ABF0,14C03E,14CFE2,14D4FE,1820D5,1835D1,189C27,18B81F,1C1448,1C1B68,1C937C,203D66,207355,20E564,20F19E,20F375,240A63,2494CB,24A186,287AEE,28C87A,28F5D1,2C00AB,2C1DB8,2C584F,2C7E81,2C9569,2C9924,2C9E5F,2CA17D,306023,341FE4,347A60,384C90,386BBB,38700C,3C0461,3C36E4,3C438E,3C754A,3C7A8A,3CDFA9,400D10,402B50,404C77,407009,40B7F3,40FC89,4434A7,446AB7,44AAF5,44E137,484EFC,48D343,4C1265,4C38D8,5075F1,509551,50A5DC,5465DE,54E2E0,5819F8,5856E8,5860D8,5C571A,5C8FE0,5CB066,5CE30E,601971,608CE6,6092F5,60D248,6402CB,641269,6455B1,64ED57,6833EE,6C639C,6CA604,6CC1D2,6CCA08,704FB8,705425,707630,707E43,7085C6,70B14E,70DFF7,745612,748A0D,74E7C6,74EAE8,74F612,7823AE,786A1F,78719C,789684,7C2634,7CBFB1,8096B1,80E540,80F503,8461A0,8496D8,84BB69,84E058,8871B1,88964E,88EF16,8C09F4,8C5A25,8C5BF0,8C61A3,8C763F,8C7F3B,900DCB,901ACA,903EAB,90935A,909D7D,90B134,90C792,946269,94877C,948FCF,94CCB9,94E8C5,984B4A,986B3D,98F781,98F7D7,9C3426,9CC8FC,A055DE,A0687E,A0C562,A0E7AE,A405D6,A41588,A4438C,A47AA4,A49813,A4ED4E,A811FC,A8705D,A897CD,A89FEC,A8F5DD,ACB313,ACDB48,ACEC80,ACF8CC,B05DD4,B077AC,B083D6,B0935B,B0DAF9,B4F2E8,B81619,BC2E48,BC5BD5,BC644B,BCCAB5,C005C2,C089AB,C09435,C0A00D,C0C522,C83FB4,C85261,C863FC,C8AA21,CC3E79,CC65AD,CC75E2,CC7D37,CCA462,D039B3,D0E54D,D404CD,D40598,D40AA9,D42C0F,D43FCB,D46C6D,D4AB82,D4B27A,D82522,DC4517,DCA633,E02202,E0B70A,E0B7B1,E45740,E46449,E48399,E49F1E,E4F75B,E83381,E83EFC,E86D52,E8825B,E8892C,E8ED05,EC7097,ECA940,F0AF85,F0FCC8,F40E83,F80BBE,F82DC0,F863D9,F8790A,F87B7A,F88B37,F8A097,F8EDA5,F8F532,FC51A4,FC6FB7,FC8E7E,FCAE34 o="Commscope" 0000C6 o="EON SYSTEMS" 0000C7 o="ARIX CORPORATION" 0000C8 o="ALTOS COMPUTER SYSTEMS" @@ -226,7 +226,7 @@ 0000ED o="APRIL" 0000EE o="NETWORK DESIGNERS, LTD." 0000EF o="KTI" -0000F0,0007AB,001247,0012FB,001377,001599,0015B9,001632,00166B-00166C,0016DB,0017C9,0017D5,0018AF,001A8A,001B98,001C43,001D25,001DF6,001E7D,001EE1-001EE2,001FCC-001FCD,00214C,0021D1-0021D2,002339-00233A,002399,0023D6-0023D7,002454,002490-002491,0024E9,002566-002567,00265D,00265F,006F64,0073E0,007C2D,008701,00B5D0,00BF61,00C3F4,00E3B2,00F46F,00FA21,04180F,041BBA,04B1A1,04B429,04BA8D,04BDBF,04FE31,0808C2,0821EF,08373D,083D88,087808,088C2C,08AED6,08BFA0,08D42B,08ECA9,08EE8B,08FC88,08FD0E,0C1420,0C2FB0,0C715D,0C8910,0CA8A7,0CB319,0CDFA4,0CE0DC,1007B6,101DC0,1029AB,103047,103917,103B59,1077B1,1089FB,108EE0,109266,10D38A,10D542,140152,141F78,1432D1,14568E,1489FD,1496E5,149F3C,14A364,14B484,14BB6E,14F42A,1816C9,1819D6,181EB0,182195,18227E,182666,183A2D,183F47,184617,184E16,184ECB,1854CF,1867B0,188331,18895B,18AB1D,18E2C2,1C232C,1C3ADE,1C5A3E,1C62B8,1C66AA,1CAF05,1CE61D,2013E0,202D07,20326C,205531,205EF7,206E9C,20D390,20D5BF,244B03,244B81,245AB5,2468B0,24920E,24C696,24DBED,24F5AA,24FCE5,2802D8,2827BF,28395E,288335,28987B,28BAB5,28CC01,2C4053,2C4401,2CAE2B,2CBABA,301966,306A85,3096FB,30C7AE,30CBF8,30CDA7,30D587,30D6C9,34145F,342D0D,343111,3482C5,348A7B,34AA8B,34BE00,34C3AC,380195,380A94,380B40,3816D1,382DD1,382DE8,386A77,389496,389AF6,38D40B,38ECE4,3C0518,3C20F6,3C576C,3C5A37,3C6200,3C8BFE,3CA10D,3CBBFD,3CDCBC,3CF7A4,40163B,40D3AE,444E1A,445CE9,446D6C,44783E,44F459,48137E,4827EA,4844F7,4849C7,485169,48794D,489DD1,48C796,4C3C16,4CA56D,4CBCA5,4CC95E,4CDD31,5001BB,503275,503DA1,5050A4,5056BF,507705,508569,5092B9,509EA7,50A4C8,50B7C3,50C8E5,50F0D3,50F520,50FC9F,54219D,5440AD,5492BE,549B12,54B802,54BD79,54F201,54FA3E,54FCF0,58B10F,58C38B,58C5CB,5C2E59,5C3C27,5C497D,5C5181,5C865C,5C9960,5CC1D7,5CCB99,5CE8EB,5CF6DC,60684E,606BBD,6077E2,608E08,608F5C,60A10A,60A4D0,60AF6D,60C5AD,60D0A9,641CAE,641CB0,646CB2,647791,647BCE,6489F1,64B310,64B853,64E7D8,680571,682737,684898,685ACF,687D6B,68BFC4,68E7C2,68EBAE,6C006B,6C2F2C,6C2F8A,6C8336,6CB7F4,6CDDBC,6CF373,701F3C,70288B,702AD5,705AAC,70CE8C,70F927,70FD46,74458A,749EF5,74EB80,78009E,781FDB,782327,7825AD,7840E4,7846D4,78471D,78521A,78595E,789ED0,78A873,78ABBB,78BDBC,78C3E9,78F7BE,7C0BC6,7C1C68,7C2302,7C2EDD,7C38AD,7C6456,7C787E,7C8956,7C8BB5,7C9122,7CF854,7CF90E,8018A7,8020FD,8031F0,804E70,804E81,805719,80656D,807B3E,8086D9,80CEB9,84119E,8425DB,842E27,8437D5,845181,8455A5,849866,84A466,84B541,84C0EF,88299C,887598,888322,889B39,889F6F,88A303,88ADD2,88BD45,8C1ABF,8C71F8,8C7712,8C79F5,8C83E1,8CBFA6,8CC8CD,8CE5C0,9000DB,900628,90633B,9097F3,90B144,90EEC7,90F1AA,9401C2,942DDC,94350A,945103,9463D1,9476B7,947BE7,948BC1,94B10A,94D771,98063C,981DFA,98398E,9852B1,9880EE,988389,98B8BC,9C0298,9C2A83,9C3AAF,9C65B0,9C8C6E,9CA513,9CD35B,9CE063,9CE6E7,A00798,A01081,A02195,A027B6,A06090,A07591,A0821F,A0AC69,A0B4A5,A0CBFD,A407B6,A4307A,A46CF1,A48431,A49A58,A4D990,A4EBD3,A80600,A816D0,A82BB9,A830BC,A8346A,A8515B,A87C01,A88195,A887B3,A89FBA,A8F274,AC3613,AC5A14,ACAFB9,ACC33A,ACEE9E,B047BF,B06FE0,B0C4E7,B0C559,B0D09C,B0DF3A,B0EC71,B41A1D,B43A28,B46293,B47443,B4BFF6,B4CE40,B4EF39,B857D8,B85A73,B85E7B,B86CE8,B8BBAF,B8BC5B,B8C68E,B8D9CE,BC1485,BC20A4,BC4486,BC4760,BC5451,BC72B1,BC765E,BC79AD,BC7ABF,BC7E8B,BC851F,BCA58B,BCB1F3,BCD11F,BCE63F,C01173,C0174D,C03D03,C048E6,C06599,C087EB,C08997,C0BDC8,C0D2DD,C0D3C0,C0DCDA,C44202,C45006,C4576E,C462EA,C4731E,C488E5,C493D9,C4AE12,C81479,C819F7,C83870,C87E75,C8A823,C8D7B0,CC051B,CC07AB,CC2119,CC464E,CC6EA4,CCB11A,CCF9E8,CCFE3C,D003DF,D0176A,D03169,D059E4,D0667B,D07FA0,D087E2,D0B128,D0C1B1,D0DFC7,D0FCCC,D411A3,D47AE2,D487D8,D48890,D48A39,D49DC0,D4AE05,D4E6B7,D4E8B2,D80831,D80B9A,D831CF,D85575,D857EF,D85B2A,D868C3,D890E8,D8C4E9,D8E0E1,DC44B6,DC6672,DC74A8,DC8983,DCCF96,DCDCE2,DCF756,E09971,E0AA96,E0CBEE,E0D083,E0DB10,E4121D,E432CB,E440E2,E458B8,E458E7,E45D75,E47CF9,E47DBD,E492FB,E4B021,E4E0C5,E4F3C4,E4F8EF,E4FAED,E8039A,E81132,E83A12,E84E84,E86DCB,E89309,E8B4C8,E8E5D6,EC107B,ECAA25,ECE09B,F008F1,F05A09,F05B7B,F06BCA,F0728C,F08A76,F0E77E,F0EE10,F40E22,F4428F,F47190,F47B5E,F47DEF,F49F54,F4C248,F4D9FB,F4FEFB,F83F51,F877B8,F884F2,F8D0BD,F8E61A,F8F1E6,FC039F,FC1910,FC4203,FC643A,FC8F90,FCA13E,FCA621,FCAAB6,FCC734,FCDE90,FCF136 o="Samsung Electronics Co.,Ltd" +0000F0,0007AB,001247,0012FB,001377,001599,0015B9,001632,00166B-00166C,0016DB,0017C9,0017D5,0018AF,001A8A,001B98,001C43,001D25,001DF6,001E7D,001EE1-001EE2,001FCC-001FCD,00214C,0021D1-0021D2,002339-00233A,002399,0023D6-0023D7,002454,002490-002491,0024E9,002566-002567,00265D,00265F,002B70,006F64,0073E0,007C2D,007D3B,008701,00B5D0,00BF61,00C3F4,00E3B2,00F46F,00FA21,04180F,041BBA,04292E,04B1A1,04B429,04B9E3,04BA8D,04BDBF,04CB01,04E4B6,04FE31,08023C,0808C2,081093,0821EF,08373D,083D88,087808,088C2C,08A5DF,08AED6,08BFA0,08D42B,08ECA9,08EE8B,08FC88,08FD0E,0C02BD,0C1420,0C2FB0,0C323A,0C715D,0C8910,0C8DCA,0CA8A7,0CB319,0CDFA4,0CE0DC,1007B6,101DC0,1029AB,102B41,103047,103917,103B59,1077B1,1089FB,108EE0,109266,10ABC9,10D38A,10D542,10E4C2,10EC81,140152,140B9E,141F78,1432D1,14568E,1489FD,1496E5,149F3C,14A364,14B484,14BB6E,14E01D,14F42A,1816C9,1819D6,181EB0,182195,18227E,182654,182666,183A2D,183F47,184617,184E16,184ECB,1854CF,185BB3,1867B0,1869D4,188331,18895B,18AB1D,18CE94,18E2C2,1C232C,1C3ADE,1C5A3E,1C62B8,1C66AA,1C76F2,1C869A,1CAF05,1CAF4A,1CE57F,1CE61D,1CF8D0,2013E0,2015DE,202D07,20326C,203B67,205531,205EF7,206E9C,20D390,20D5BF,240935,240A3F,241153,2424B7,244B03,244B81,245AB5,2460B3,2468B0,24920E,24A452,24C613,24C696,24DBED,24F0D3,24F40A,24F5AA,24FCE5,2802D8,280708,2827BF,28395E,283DC2,288335,28987B,289F04,28AF42,28BAB5,28CC01,28DE1C,28E6A9,2C15BF,2C4053,2C4401,2C9975,2CAE2B,2CBABA,2CDA46,301966,306A85,307467,3096FB,30C7AE,30C9CC,30CBF8,30CDA7,30D587,30D6C9,34145F,342D0D,343111,3482C5,348A7B,34AA8B,34BE00,34C3AC,34E3FB,34F043,380195,380A94,380B40,3816D1,382DD1,382DE8,384A80,3868A4,386A77,388A06,388CEF,388F30,389496,389AF6,38D40B,38ECE4,3C0518,3C0A7A,3C195E,3C20F6,3C318A,3C576C,3C5A37,3C6200,3C8BFE,3CA10D,3CBBFD,3CDCBC,3CF7A4,4011C3,40163B,4035E6,405EF6,40D3AE,40DE24,4416FA,444E1A,445CE9,446D6C,44783E,44C63C,44EA30,44F459,48137E,4827EA,4844F7,4849C7,485169,4861EE,48794D,489DD1,48BCE1,48C796,48EF1C,4C2E5E,4C3946,4C3C16,4C5739,4C66A6,4CA56D,4CBCA5,4CC95E,4CDD31,4CEBB0,5001BB,503275,503DA1,5049B0,5050A4,5056BF,507705,508569,5092B9,509EA7,50A4C8,50B7C3,50C8E5,50F0D3,50F520,50FC9F,54104F,54219D,543AD6,5440AD,5444A3,5492BE,549B12,54B802,54BD79,54D17D,54DD4F,54F201,54FA3E,54FCF0,582071,5879E0,58A639,58B10F,58C38B,58C5CB,5C10C5,5C2E59,5C3C27,5C497D,5C5136,5C5181,5C5E0A,5C865C,5C9960,5CAC3D,5CC1D7,5CCB99,5CD33D,5CDC49,5CE8EB,5CEDF4,5CF6DC,603AAF,60684E,606BBD,6077E2,607FCB,608E08,608F5C,60A10A,60A4D0,60AF6D,60B4A2,60C5AD,60D0A9,60FF12,64037F,6407F6,6417CD,641B2F,641CAE,641CB0,645DF4,6466D8,646CB2,647791,647BCE,6489F1,64B310,64B5F2,64B853,64D0D6,64E7D8,680571,682737,684898,684AE9,685ACF,6872C3,687D6B,68BFC4,68DFE4,68E7C2,68EBAE,68FCCA,6C006B,6C2F2C,6C2F8A,6C5563,6C70CB,6C8336,6CACC2,6CB7F4,6CDDBC,6CF373,700971,701F3C,70288B,702AD5,704EE0,705AAC,70B13D,70CE8C,70F927,70FD46,74190A,741EB1,74458A,746DFA,749EF5,74EB80,74F441,74F67A,78009E,781FDB,782327,7825AD,7833C6,783716,7840E4,7846D4,78471D,78521A,78595E,786089,789ED0,78A873,78ABBB,78B6FE,78BDBC,78C11D,78C3E9,78F238,78F7BE,7C0A3F,7C0BC6,7C1C68,7C2302,7C2EDD,7C38AD,7C6456,7C752D,7C787E,7C7BBF,7C8956,7C8BB5,7C9122,7CC225,7CF854,7CF90E,800794,800D3F,8018A7,801970,8020FD,8031F0,80398C,804786,804E70,804E81,80542D,80549C,805719,80656D,8075BF,807B3E,8086D9,808ABD,809FF5,80CEB9,84119E,842289,8425DB,842E27,8437D5,845181,8455A5,845F04,849866,84A466,84B541,84C0EF,84EEE4,88299C,885E54,887598,888322,889B39,889F6F,88A303,88ADD2,88BD45,8C1ABF,8C2E72,8C6A3B,8C71F8,8C7712,8C79F5,8C83E1,8CA3EC,8CBFA6,8CC5D0,8CC8CD,8CDEE6,8CE5C0,8CEA48,9000DB,900628,90633B,908175,9097F3,90B144,90B622,90EEC7,90F1AA,9401C2,942DDC,94350A,945103,945244,9463D1,9476B7,947BE7,948BC1,94B10A,94D771,94E129,94E6BA,98063C,980D6F,981DFA,98398E,983FE8,984E8A,9852B1,9880EE,988389,98B08B,98B8BC,98D742,98FB27,9C0298,9C2595,9C2A83,9C2E7A,9C3928,9C3AAF,9C5FB0,9C65B0,9C73B1,9C8306,9C8C6E,9CA513,9CD35B,9CE063,9CE6E7,A00798,A01081,A01B9E,A02195,A027B6,A0562C,A06090,A07591,A07D9C,A0821F,A0AC69,A0B0BD,A0B4A5,A0CBFD,A0D05B,A0D722,A0D7F3,A407B6,A4307A,A46CF1,A475B9,A48431,A49A58,A49DDD,A49FE7,A4A490,A4C69A,A4D990,A4EBD3,A80600,A816D0,A82BB9,A830BC,A8346A,A84B4D,A8515B,A87650,A8798D,A87C01,A88195,A887B3,A89FBA,A8BA69,A8D162,A8EE67,A8F274,AC1E92,AC3613,AC5A14,AC6C90,AC80FB,ACAFB9,ACC33A,ACEE9E,B047BF,B04A6A,B05476,B06FE0,B099D7,B0C4E7,B0C559,B0D09C,B0DF3A,B0E45C,B0EC71,B0F2F6,B40B1D,B41A1D,B43A28,B440DC,B46293,B47064,B47443,B49D02,B4BFF6,B4CE40,B4D5E5,B4EF39,B857D8,B85A73,B85E7B,B86CE8,B8A0B8,B8A825,B8B409,B8BBAF,B8BC5B,B8C68E,B8D9CE,BC0EAB,BC107B,BC1485,BC20A4,BC277A,BC32B2,BC4486,BC455B,BC4760,BC5274,BC5451,BC72B1,BC765E,BC79AD,BC7ABF,BC7E8B,BC851F,BC9307,BCA080,BCA58B,BCB1F3,BCB2CC,BCD11F,BCE63F,BCF730,C01173,C0174D,C0238D,C03D03,C048E6,C06599,C07AD6,C087EB,C08997,C0BDC8,C0D2DD,C0D3C0,C0D5E2,C0DCDA,C418E9,C41C07,C44202,C45006,C4576E,C45D83,C462EA,C4731E,C47764,C47D9F,C488E5,C493D9,C4AE12,C4EF3D,C8120B,C81479,C819F7,C83870,C85142,C87E75,C8908A,C8A6EF,C8A823,C8BD4D,C8BD69,C8D7B0,CC051B,CC07AB,CC20AC,CC2119,CC464E,CC6EA4,CCB11A,CCE686,CCE9FA,CCF826,CCF9E8,CCF9F0,CCFE3C,D003DF,D004B0,D0176A,D01B49,D03169,D039FA,D056FB,D059E4,D0667B,D07FA0,D087E2,D0B128,D0C1B1,D0C24E,D0D003,D0DFC7,D0FCCC,D411A3,D47AE2,D487D8,D48890,D48A39,D49DC0,D4AE05,D4E6B7,D4E8B2,D80831,D80B9A,D831CF,D85575,D857EF,D85B2A,D868A0,D868C3,D87154,D890E8,D8A35C,D8C4E9,D8E0E1,DC44B6,DC6672,DC69E2,DC74A8,DC8983,DCC49C,DCCCE6,DCCF96,DCDCE2,DCF756,E0036B,E09971,E09D13,E0AA96,E0C377,E0CBEE,E0D083,E0DB10,E41088,E4121D,E432CB,E440E2,E458B8,E458E7,E45D75,E47CF9,E47DBD,E49282,E492FB,E49F7D,E4A430,E4B021,E4E0C5,E4ECE8,E4F3C4,E4F8EF,E4FAED,E8039A,E81132,E83A12,E84E84,E85497,E86DCB,E87F6B,E89309,E8AACB,E8B4C8,E8C913,E8E5D6,EC107B,EC7CB6,EC90C1,ECAA25,ECB550,ECE09B,F0051B,F008F1,F03965,F05A09,F05B7B,F065AE,F06BCA,F0704F,F0728C,F08A76,F0CD31,F0E77E,F0EE10,F0F564,F40E22,F42B8C,F4428F,F47190,F47B5E,F47DEF,F49F54,F4C248,F4D9FB,F4DD06,F4F309,F4FEFB,F83F51,F84E58,F85B6E,F877B8,F884F2,F88F07,F8D0BD,F8E61A,F8F1E6,FC039F,FC1910,FC1A46,FC4203,FC643A,FC8F90,FC936B,FCA13E,FCA621,FCAAB6,FCC734,FCDE90,FCF136 o="Samsung Electronics Co.,Ltd" 0000F1 o="MAGNA COMPUTER CORPORATION" 0000F2 o="SPIDER COMMUNICATIONS" 0000F3 o="GANDALF DATA LIMITED" @@ -287,13 +287,13 @@ 00012D o="Komodo Technology" 00012E o="PC Partner Ltd." 00012F o="Twinhead International Corp" -000130,000496,001977,00E02B,08EA44,206C8A,209EF7,348584,4018B1,40882F,489BD5,5859C2,5C0E8B,7467F7,787D53,7C95B1,885BDD,887E25,90B832,949B2C,9C5D12,A4EA8E,B42D56,B4C799,B85001,B87CF2,BCF310,C413E2,C8665D,C8675E,D854A2,D88466,DCB808,E01C41,F09CE9,F46E95,F4EAB5,FC0A81 o="Extreme Networks, Inc." +000130,000496,001977,0089C9,00DCB2,00E02B,00E60E,08EA44,0C9B78,0CED71,1849F8,1C984B,206C8A,209EF7,241FBD,248185,30F856,348584,4018B1,403F43,40882F,40B215,40E317,44E4E6,489BD5,4C0A4E,4C231A,500A9C,5858CD,5859C2,5C0E8B,601D56,602D74,6C0370,7467F7,787D53,7896A3,7C95B1,7CA4F7,809562,885BDD,887E25,8C497A,90B832,949B2C,9C5D12,A473AB,A49791,A4C7F6,A4EA8E,A8C647,AC4DD9,AC7F8D,ACED32,B027CF,B42D56,B4A3BD,B4C799,B85001,B87CF2,BC34D6,BCF310,C413E2,C851FB,C8665D,C8675E,C8BE35,D802C0,D854A2,D88466,D8E016,DC233B,DCB808,DCBB3D,DCDCC3,DCE650,E01C41,E0A129,E41613,E444E5,E4DBAE,E4FD8C,F02B7C,F06426,F09CE9,F45424,F46E95,F4CE48,F4EAB5,FC0A81 o="Extreme Networks Headquarters" 000131 o="Bosch Security Systems, Inc." 000132 o="Dranetz - BMI" 000133 o="KYOWA Electronic Instruments C" 000134 o="Selectron Systems AG" 000135 o="KDC Corp." -000136,0045E2,0090A2,283926,6014B3,702559,784561,B0FC36,C83DD4 o="CyberTAN Technology Inc." +000136,0045E2,0090A2,24FE9A,283926,6014B3,702559,784561,B0FC36,C83DD4 o="CyberTAN Technology Inc." 000137 o="IT Farm Corporation" 000138,E09153 o="XAVi Technologies Corp." 000139 o="Point Multimedia Systems" @@ -307,15 +307,15 @@ 000141 o="CABLE PRINT" 000145 o="WINSYSTEMS, INC." 000146 o="Tesco Controls, Inc." -000147,000271 o="Zhone Technologies" +000147,000271,00180C,003052,0050CA,00A01B,00E0DF,304F75,40F21C,9C65EE,CC6C52,D096FB o="Zhone Technologies, Inc." 000148 o="X-traWeb Inc." 000149 o="TDT AG" -00014A,0013A9,001A80,001DBA,0024BE,045D4B,080046,104FA8,30F9ED,3C0771,544249,5453ED,78843C,AC9B0A,D8D43C,F0BF97,FCF152 o="Sony Corporation" +00014A,000AD9,000E07,000FDE,0012EE,0013A9,001620,0016B8,001813,001963,001A75,001A80,001B59,001CA4,001D28,001DBA,001E45,001EDC,001FE4,00219E,002298,002345,0023F1,0024BE,0024EF,0025E7,00EB2D,045D4B,080046,104FA8,18002D,1C7B21,205476,2421AB,283F69,3017C8,303926,307512,30A8DB,30F9ED,387862,3C01EF,3C0771,3C38F4,402BA1,4040A7,40B837,44746C,44D4E0,4C21D0,54263D,544249,5453ED,58170C,581862,584822,5CB524,68764F,6C0E0D,6C23B9,78843C,8099E7,8400D2,848EDF,84C7EA,88C9E8,8C6422,90C115,94CE2C,9C5CF9,A0E453,AC800A,AC9B0A,B4527D-B4527E,B8F934,BC6E64,C43ABE,D05162,D4389C,D8D43C,E063E5,F0BF97,F84E17,FCF152 o="Sony Corporation" 00014B o="Ennovate Networks, Inc." 00014C o="Berkeley Process Control" 00014D o="Shin Kin Enterprises Co., Ltd" 00014E o="WIN Enterprises, Inc." -00014F,001992,002445,00A0C8 o="Adtran Inc" +00014F,001992,002445,00A0C8,205F3D,28D0CB,38F8F6,5422E0,588785,64A0AC,844D4C,AC139C,AC51EE,BC2106,CC6618 o="Adtran Inc" 000150 o="GILAT COMMUNICATIONS, LTD." 000151 o="Ensemble Communications" 000152 o="CHROMATEK INC." @@ -386,7 +386,7 @@ 000199 o="HeiSei Electronics" 00019A o="LEUNIG GmbH" 00019B o="Kyoto Microcomputer Co., Ltd." -00019C o="JDS Uniphase Inc." +00019C o="Lumentum" 00019D o="E-Control Systems, Inc." 00019E o="ESS Technology, Inc." 00019F o="ReadyNet" @@ -433,7 +433,7 @@ 0001C8 o="THOMAS CONRAD CORP." 0001CA o="Geocast Network Systems, Inc." 0001CB o="EVR" -0001CC o="Japan Total Design Communication Co., Ltd." +0001CC o="Brand Maker Enabler Inc." 0001CD o="ARtem" 0001CE o="Custom Micro Products, Ltd." 0001CF o="Alpha Data Parallel Systems, Ltd." @@ -444,7 +444,7 @@ 0001D4 o="Leisure Time, Inc." 0001D5 o="HAEDONG INFO & COMM CO., LTD" 0001D6 o="manroland AG" -0001D7,000A49,0023E9,0094A1,14A9D0,F41563 o="F5 Networks, Inc." +0001D7,000A49,0023E9,0094A1,14A9D0,242D4B,F41563 o="F5 Inc." 0001D8 o="Teltronics, Inc." 0001D9 o="Sigma, Inc." 0001DA o="WINCOMM Corporation" @@ -456,7 +456,7 @@ 0001E0 o="Fast Systems, Inc." 0001E1,DCD255 o="Kinpo Electronics, Inc." 0001E2 o="Ando Electric Corporation" -0001E3,000BA3,000E8C,10DFFC,286336,40ECF8,883F99,AC6417 o="Siemens AG" +0001E3,000BA3,000E8C,10DFFC,286336,30B851,40ECF8,883F99,A86D04,AC6417,EC1C5D o="Siemens AG" 0001E4 o="Sitera, Inc." 0001E5 o="Supernet, Inc." 0001E6-0001E7,0002A5,0004EA,000802,000883,0008C7,000A57,000BCD,000D9D,000E7F,000EB3,000F20,000F61,001083,0010E3,00110A,001185,001279,001321,0014C2,001560,001635,001708,0017A4,001871,0018FE,0019BB,001A4B,001B78,001CC4,001E0B,001F29,00215A,002264,00237D,002481,0025B3,002655,00306E,0030C1,00508B,0060B0,00805F,0080A0,009C02,080009,082E5F,101F74,10604B,1062E5,10E7C6,1458D0,186024,18A905,1CC1DE,24BE05,288023,28924A,2C233A,2C27D7,2C4138,2C44FD,2C59E5,2C768A,308D99,30E171,3464A9,3863BB,38EAA7,3C4A92,3C5282,3CA82A,3CD92B,40A8F0,40B034,441EA1,443192,480FCF,48BA4E,5065F3,5820B1,5C8A38,5CB901,643150,645106,68B599,6C3BE5,6CC217,705A0F,7446A0,784859,78ACC0,78E3B5,78E7D1,80C16E,80CE62,80E82C,843497,84A93E,8851FB,8CDCD4,9457A5,984BE1,98E7F4,9C7BEF,9C8E99,9CB654,A01D48,A02BB8,A0481C,A08CFD,A0B3CC,A0D3C1,A45D36,AC162D,ACE2D3,B00CD1,B05ADA,B499BA,B4B52F,B4B686,B8AF67,BCEAFA,C4346B,C46516,C8CBB8,C8D3FF,C8D9D2,CC3E5F,D07E28,D0BF9C,D48564,D4C9EF,D89D67,D8D385,DC4A3E,E4115B,E4E749,E83935,EC8EB5,EC9A74,ECB1D7,F0921C,F430B9,F43909,F4CE46,F8B46A,FC15B4,FC3FDB o="Hewlett Packard" @@ -480,7 +480,7 @@ 0001F9 o="TeraGlobal Communications Corp." 0001FA o="HOROSCAS" 0001FB o="DoTop Technology, Inc." -0001FC o="Keyence Corporation" +0001FC,7495A7 o="Keyence Corporation" 0001FD o="Digital Voice Systems, Inc." 0001FF o="Data Direct Networks, Inc." 000200 o="Net & Sys Co., Ltd." @@ -497,7 +497,7 @@ 00020B o="Native Networks, Inc." 00020C o="Metro-Optix" 00020D o="Micronpc.com" -00020E,00065F,0016FA,00208F,30C507,F854AF o="ECI Telecom Ltd." +00020E,00065F,0016FA,00208F,30C507,CC40B2,F854AF o="ECI Telecom Ltd." 00020F o="AATR" 000210 o="Fenecom" 000211 o="Nature Worldwide Technology Corp." @@ -576,7 +576,7 @@ 000260 o="Accordion Networks, Inc." 000261,64209F o="Tilgin AB" 000262 o="Soyo Group Soyo Com Tech Co., Ltd" -000263 o="UPS Manufacturing SRL" +000263 o="RPS S.p.A." 000264 o="AudioRamp.com" 000265 o="Virditech Co. Ltd." 000266 o="Thermalogic Corporation" @@ -622,7 +622,7 @@ 000292 o="Logic Innovations, Inc." 000293 o="Solid Data Systems" 000294 o="Tokyo Sokushin Co., Ltd." -000295 o="IP.Access Limited" +000295 o="MAVENIR IPA UK LTD" 000296 o="Lectron Co,. Ltd." 000297 o="C-COR.net" 000298 o="Broadframe Corporation" @@ -635,7 +635,7 @@ 0002A0 o="Flatstack Ltd." 0002A1 o="World Wide Packets" 0002A2 o="Hilscher GmbH" -0002A3 o="ABB Switzerland Ltd, Power Systems" +0002A3 o="Hitachi Energy Switzerland Ltd" 0002A4 o="AddPac Technology Co., Ltd." 0002A6 o="Effinet Systems Co., Ltd." 0002A7 o="Vivace Networks" @@ -668,9 +668,9 @@ 0002C4 o="OPT Machine Vision Tech Co., Ltd" 0002C5 o="Evertz Microsystems Ltd." 0002C6 o="Data Track Technology PLC" -0002C7,0006F5,0006F7,000704,0016FE,0019C1,001BFB,001E3D,00214F,002306,002433,002643,04766E,0498F3,28A183,30C3D9,34C731,38C096,48F07B,5816D7,60380E,64D4BD,7495EC,9C8D7C,AC7A4D,B4EC02,BC428C,BC7536,E0750A,E0AE5E,FC62B9 o="ALPS ELECTRIC CO., LTD." +0002C7,0006F5,0006F7,000704,0016FE,0019C1,001BFB,001E3D,00214F,002306,002433,002643,04766E,0498F3,28A183,30C3D9,30DF17,34C731,38C096,44EB2E,48F07B,5816D7,60380E,6405E4,64D4BD,7495EC,847051,9409C9,9C8D7C,AC7A4D,B4EC02,BC428C,BC7536,C0408D,C4B757,E02DF0,E0750A,E0AE5E,ECD909,FC62B9,FC9816 o="ALPSALPINE CO,.LTD" 0002C8 o="Technocom Communications Technology (pte) Ltd" -0002C9,00258B,043F72,08C0EB,0C42A1,1070FD,1C34DA,248A07,506B4B,7CFE90,900A84,98039B,B8599F,B8CEF6,E41D2D,EC0D9A,F45214 o="Mellanox Technologies, Inc." +0002C9,00258B,043F72,04C5CD,0820E7,08C0EB,0C42A1,1070FD,1C34DA,204D52,248A07,2801CD,2C5EAB,2C9D90,3825F3,5000E6,506B4B,549B24,58A2E1,5C2573,605E65,6433AA,7C8C09,7CFE90,8C913A,900A84,90E317,946DAE,98039B,9C0591,9C63C0,A088C2,B0CF0E,B45CB5,B83FD2,B8599F,B8CEF6,B8E924,C470BD,CC40F3,D89424,E09D73,E41D2D,E46DAB,E89E49,E8EBD3,EC0D9A,F0BC50,F0FB7F,F45214,FC6A1C o="Mellanox Technologies, Inc." 0002CA o="EndPoints, Inc." 0002CB o="TriState Ltd." 0002CC o="M.C.C.I" @@ -689,7 +689,7 @@ 0002D9 o="Reliable Controls" 0002DA o="ExiO Communications, Inc." 0002DB o="NETSEC" -0002DC o="Fujitsu General Limited" +0002DC o="GENERAL Inc." 0002DD o="Bromax Communications, Ltd." 0002DE o="Astrodesign, Inc." 0002DF o="Net Com Systems, Inc." @@ -725,7 +725,7 @@ 0002FF o="Handan BroadInfoCom" 000300 o="Barracuda Networks, Inc." 000301 o="EXFO" -000302,00055B o="Charles Industries, Ltd." +000302,00055B o="Charles Industries" 000303 o="JAMA Electronics Co., Ltd." 000304 o="Pacific Broadband Communications" 000305 o="MSC Vertriebs GmbH" @@ -759,10 +759,10 @@ 000321 o="Reco Research Co., Ltd." 000322 o="IDIS Co., Ltd." 000323 o="Cornet Technology, Inc." -000324 o="SANYO Consumer Electronics Co., Ltd." +000324 o="LIMNO Co., Ltd." 000325 o="Arima Computer Corp." 000326 o="Iwasaki Information Systems Co., Ltd." -000327 o="ACT'L" +000327,000594,003011,003056,9CB206 o="HMS Industrial Networks" 000328 o="Mace Group, Inc." 000329 o="F3, Inc." 00032A o="UniData Communication Systems, Inc." @@ -773,7 +773,7 @@ 00032F o="Global Sun Technology, Inc." 000330 o="Imagenics, Co., Ltd." 000333 o="Digitel Co., Ltd." -000334 o="Newport Electronics" +000334 o="Omega Engineering Inc." 000335 o="Mirae Technology" 000336 o="Zetes Technologies" 000337 o="Vaone, Inc." @@ -786,11 +786,11 @@ 00033E o="Tateyama System Laboratory Co., Ltd." 00033F o="BigBand Networks, Ltd." 000340 o="Floware Wireless Systems, Ltd." -000341 o="Axon Digital Design" +000341,001CF3 o="EVS Broadcast Equipment" 000343 o="Martin Professional A/S" 000344 o="Tietech.Co., Ltd." 000345 o="Routrek Networks Corporation" -000346 o="Hitachi Kokusai Electric, Inc." +000346,004031 o="KOKUSAI DENKI Electric Inc." 000348 o="Norscan Instruments, Ltd." 000349 o="Vidicode Datacommunicatie B.V." 00034A o="RIAS Corporation" @@ -799,12 +799,11 @@ 00034E o="Pos Data Company, Ltd." 00034F o="Sur-Gard Security" 000350 o="BTICINO SPA" -000351 o="Diebold, Inc." +000351,000356,3CBD14 o="Diebold Nixdorf" 000352 o="Colubris Networks" 000353 o="Mitac, Inc." 000354 o="Fiber Logic Communications" 000355 o="TeraBeam Internet Systems" -000356 o="Wincor Nixdorf International GmbH" 000357 o="Intervoice-Brite, Inc." 000358,1853E0 o="Hanyang Digitech Co.Ltd" 000359 o="DigitalSis" @@ -836,7 +835,7 @@ 000375 o="NetMedia, Inc." 000376 o="Graphtec Technology, Inc." 000377 o="Gigabit Wireless" -000378,044F17,08EB74,0C08B4,2832C5,2C088C,3438B7,38F85E,403DEC,4CD08A,6CB56B,840283,8C444F,90F305,940937,942CB3,A0722C,B0B3AD,C85D38,CC4EEC,CCAB2C,DCD321,E820E2,E8B2FE,ECC302 o="HUMAX Co., Ltd." +000378,044F17,08EB74,0C08B4,10C4CA,2832C5,2C088C,3438B7,38F85E,403DEC,4CD08A,6C4BB4,6CB56B,840283,8C444F,90D092,90F305,940937,942CB3,A0722C,A8C266,B0B3AD,C85D38,CC4EEC,CCAB2C,D0FCD0,D86C5A,DCD321,E820E2,E8B2FE,ECC302 o="HUMAX Co., Ltd." 000379 o="Proscend Communications, Inc." 00037A,002258 o="Taiyo Yuden Co., Ltd." 00037B o="IDEC IZUMI Corporation" @@ -853,7 +852,7 @@ 000386 o="Ho Net, Inc." 000387 o="Blaze Network Products" 000388 o="Fastfame Technology Co., Ltd." -000389,00197F,00237F,0CE0E4,48C1AC,BCF292,E422A5,F4B688 o="PLANTRONICS, INC." +000389,00197F,00237F,0CE0E4,385C76,48C1AC,8C9B2D,BCF292,E422A5,F4B688 o="PLANTRONICS, INC." 00038A o="America Online, Inc." 00038B o="PLUS-ONE I&T, Inc." 00038C o="Total Impact" @@ -863,7 +862,7 @@ 000390 o="Digital Video Communications, Inc." 000391 o="Advanced Digital Broadcast, Ltd." 000392 o="Hyundai Teletek Co., Ltd." -000393,000502,000A27,000A95,000D93,0010FA,001124,001451,0016CB,0017F2,0019E3,001B63,001CB3,001D4F,001E52,001EC2,001F5B,001FF3,0021E9,002241,002312,002332,00236C,0023DF,002436,002500,00254B,0025BC,002608,00264A,0026B0,0026BB,003065,003EE1,0050E4,0056CD,005B94,006171,006D52,007D60,008865,00A040,00B362,00C610,00CDFE,00DB70,00F4B9,00F76F,040CCE,041552,041E64,042665,04489A,044BED,0452F3,045453,0469F8,047295,04D3CF,04DB56,04E536,04F13E,04F7E4,080007,082CB6,086698,086D41,087045,087402,08E689,08F4AB,08F69C,08F8BC,0C1539,0C3021,0C3B50,0C3E9F,0C4DE9,0C5101,0C74C2,0C771A,0CBC9F,0CD746,101C0C,102959,103025,1040F3,10417F,1093E9,1094BB,109ADD,10DDB1,14109F,14205E,145A05,1460CB,147DDA,14876A,148FC6,1495CE,1499E2,149D99,14BD61,14C213,14C88B,14D00D,182032,183451,183EEF,1855E3,186590,187EB9,18810E,189EFC,18AF61,18AF8F,18E7F4,18EE69,18F1D8,18F643,1C1AC0,1C36BB,1C5CF2,1C9148,1C9E46,1CABA7,1CE62B,203CAE,206980,20768F,2078F0,207D74,209BCD,20A2E4,20AB37,20C9D0,20E2A8,20E874,20EE28,241B7A,241EEB,24240E,245BA7,24A074,24A2E1,24AB81,24D0DF,24E314,24F094,24F677,280B5C,283737,285AEB,286AB8,286ABA,2877F1,28A02B,28CFDA,28CFE9,28E02C,28E14C,28E7CF,28EC95,28ED6A,28F033,28F076,28FF3C,2C1F23,2C200B,2C3361,2C61F6,2CB43A,2CBE08,2CF0A2,2CF0EE,3010E4,3035AD,305714,30636B,309048,3090AB,30D9D9,30F7C5,3408BC,341298,34159E,34363B,344262,3451C9,347C25,34A395,34A8EB,34AB37,34C059,34E2FD,34FD6A,380F4A,38484C,38539C,3866F0,3871DE,38892C,38B54D,38C986,38CADA,38EC0D,38F9D3,3C0754,3C15C2,3C22FB,3C2EF9,3C2EFF,3C4DBE,3C7D0A,3CAB8E,3CBF60,3CCD36,3CD0F8,3CE072,402619,403004,40331A,403CFC,404D7F,406C8F,4070F5,40831D,4098AD,409C28,40A6D9,40B395,40BC60,40CBC0,40D32D,40F946,440010,4418FD,442A60,443583,444ADB,444C0C,4490BB,44A8FC,44C65D,44D884,44E66E,44FB42,48262C,483B38,48437C,484BAA,4860BC,48746E,48A195,48A91C,48B8A3,48BF6B,48D705,48E9F1,4C3275,4C569D,4C57CA,4C6BE8,4C74BF,4C7C5F,4C7CD9,4C8D79,4CB199,503237,507A55,507AC5,5082D5,50A67F,50BC96,50DE06,50EAD6,542696,542B8D,5433CB,544E90,5462E2,54724F,549963,549F13,54AE27,54E43A,54EAA8,581FAA,58404E,5855CA,586B14,587F57,58B035,58E28F,58E6BA,5C0947,5C1DD9,5C5948,5C8D4E,5C95AE,5C969D,5C97F3,5CADCF,5CF5DA,5CF7E6,5CF938,600308,6030D4,60334B,606944,6070C0,607EC9,608373,608B0E,608C4A,609217,609AC1,60A37D,60C547,60D9C7,60F445,60F81D,60FACD,60FB42,60FEC5,640BD7,64200C,645AED,647033,6476BA,649ABE,64A3CB,64A5C3,64B0A6,64B9E8,64C753,64D2C4,64E682,680927,685B35,68644B,68967B,689C70,68A86D,68AB1E,68AE20,68D93C,68DBCA,68EF43,68FB7E,68FEF7,6C19C0,6C3E6D,6C4008,6C4A85,6C4D73,6C709F,6C72E7,6C8DC1,6C94F8,6C96CF,6CAB31,6CC26B,6CE85C,701124,7014A6,703C69,703EAC,70480F,705681,70700D,7073CB,7081EB,70A2B3,70CD60,70DEE2,70E72C,70EA5A,70ECE4,70EF00,70F087,741BB2,74428B,748114,748D08,748F3C,749EAF,74B587,74E1B6,74E2F5,7831C1,783A84,784F43,7867D7,786C1C,787B8A,787E61,78886D,789F70,78A3E4,78CA39,78D162,78D75F,78E3DE,78FD94,7C0191,7C04D0,7C11BE,7C5049,7C6D62,7C6DF8,7C9A1D,7CA1AE,7CAB60,7CC3A1,7CC537,7CD1C3,7CF05F,7CFADF,80006E,800C67,804971,804A14,805FC5,808223,80929F,80B03D,80BE05,80D605,80E650,80EA96,80ED2C,842999,843835,844167,846878,84788B,848506,8489AD,848E0C,84A134,84AB1A,84AD8D,84B153,84FCAC,84FCFE,881908,881FA1,885395,8863DF,886440,8866A5,886B6E,88A479,88A9B7,88AE07,88B291,88C08B,88C663,88CB87,88E87F,88E9FE,8C006D,8C2937,8C2DAA,8C5877,8C7B9D,8C7C92,8C8590,8C861E,8C8EF2,8C8FE9,8CFABA,8CFE57,9027E4,903C92,9060F1,907240,90812A,908158,90840D,908C43,908D6C,909C4A,90A25B,90B0ED,90B21F,90B931,90C1C6,90DD5D,90E17B,90FD61,940C98,941625,949426,94B01F,94BF2D,94E96A,94F6A3,94F6D6,9800C6,9801A7,9803D8,9810E8,98460A,985AEB,9860CA,989E63,98B8E3,98CA33,98D6BB,98E0D9,98F0AB,98FE94,9C04EB,9C207B,9C293F,9C35EB,9C4FDA,9C648B,9C84BF,9C8BA0,9CE33F,9CE65E,9CF387,9CF48E,9CFC01,A01828,A03BE3,A04EA7,A056F3,A0999B,A0D795,A0EDCD,A0FBC5,A43135,A45E60,A46706,A483E7,A4B197,A4B805,A4C361,A4D18C,A4D1D2,A4D931,A4E975,A4F1E8,A82066,A85B78,A85C2C,A860B6,A8667F,A886DD,A88808,A88E24,A8913D,A8968A,A8BBCF,A8BE27,A8FAD8,AC15F4,AC1D06,AC1F74,AC293A,AC3C0B,AC61EA,AC7F3E,AC87A3,AC88FD,AC9085,ACBC32,ACCF5C,ACE4B5,ACFDEC,B019C6,B03495,B035B5,B0481A,B065BD,B0702D,B09FBA,B0CA68,B418D1,B440A4,B44BD2,B48B19,B49CDF,B4F0AB,B4F61C,B8098A,B817C2,B841A4,B844D9,B853AC,B85D0A,B8634D,B8782E,B87BC5,B88D12,B89047,B8B2F8,B8C111,B8C75D,B8E856,B8F12A,B8F6B1,B8FF61,BC0963,BC3BAF,BC4CC4,BC52B7,BC5436,BC6778,BC6C21,BC926B,BC9FEF,BCA5A9,BCA920,BCB863,BCE143,BCEC5D,BCFED9,C01ADA,C06394,C0847A,C09AD0,C09F42,C0A53E,C0A600,C0B658,C0CCF8,C0CECD,C0D012,C0E862,C0F2FB,C42AD0,C42C03,C4618B,C48466,C4910C,C49880,C4B301,C81EE7,C82A14,C8334B,C83C85,C869CD,C86F1D,C88550,C8B1CD,C8B5B7,C8BCC8,C8D083,C8E0EB,C8F650,CC088D,CC08E0,CC20E8,CC25EF,CC29F5,CC2DB7,CC4463,CC660A,CC785F,CCC760,CCD281,D0034B,D023DB,D02598,D02B20,D03311,D03FAA,D04F7E,D06544,D0817A,D0A637,D0C5F3,D0D23C,D0D2B0,D0E140,D446E1,D4619D,D461DA,D4909C,D49A20,D4A33D,D4DCCD,D4F46F,D8004D,D81C79,D81D72,D83062,D84C90,D88F76,D89695,D89E3F,D8A25E,D8BB2C,D8CF9C,D8D1CB,D8DC40,DC080F,DC0C5C,DC2B2A,DC2B61,DC3714,DC415F,DC5285,DC56E7,DC86D8,DC9B9C,DCA4CA,DCA904,DCD3A2,E02B96,E0338E,E05F45,E06678,E0897E,E0ACCB,E0B52D,E0B55F,E0B9BA,E0C767,E0C97A,E0EB40,E0F5C6,E0F847,E425E7,E42B34,E450EB,E47684,E48B7F,E490FD,E498D6,E49A79,E49ADC,E4B2FB,E4C63D,E4CE8F,E4E0A6,E4E4AB,E8040B,E80688,E83617,E87F95,E8802E,E88152,E8854B,E88D28,E8B2AC,E8FBE9,EC2651,EC2CE2,EC3586,EC852F,ECADB8,ECCED7,F01898,F02475,F05CD5,F0766F,F07807,F07960,F0989D,F099B6,F099BF,F0A35A,F0B0E7,F0B479,F0C1F1,F0C371,F0CBA1,F0D1A9,F0DBE2,F0DBF8,F0DCE2,F0F61C,F40616,F40E01,F40F24,F41BA1,F431C3,F437B7,F45C89,F4AFE7,F4DBE3,F4F15A,F4F951,F80377,F81093,F81EDF,F82793,F82D7C,F83880,F84E73,F86214,F86FC1,F887F1,F895EA,F8E94E,F8FFC2,FC183C,FC1D43,FC253F,FC2A9C,FC66CF,FCB6D8,FCD848,FCE998,FCFC48 o="Apple, Inc." +000393,000502,000A27,000A95,000D93,0010FA,001124,001451,0016CB,0017F2,0019E3,001B63,001CB3,001D4F,001E52,001EC2,001F5B,001FF3,0021E9,002241,002312,002332,00236C,0023DF,002436,002500,00254B,0025BC,002608,00264A,0026B0,0026BB,003065,003EE1,0050E4,0056CD,005B94,006171,006D52,007D60,00812A,008865,008A76,009235,0097F1,00A040,00B362,00C585,00C610,00CDFE,00DB70,00F39F,00F4B9,00F76F,040CCE,04137A,041552,041E64,042665,042EC1,0434CF,0441A5,04489A,044BED,0452F3,045453,046865,0469F8,047295,0472EF,0499B9,0499BB,049D05,04B5B2,04BC6D,04BFD5,04D3CF,04DB56,04E536,04F13E,04F7E4,080007,082573,082CB6,085D53,086202,086518,086698,086D41,087045,087402,0887C7,088EDC,089542,08C729,08C7B5,08E689,08F4AB,08F69C,08F8BC,08FF44,0C1539,0C1563,0C19F8,0C3021,0C3B50,0C3E9F,0C4DE9,0C5101,0C517E,0C53B7,0C6AC4,0C74C2,0C771A,0C85E1,0CA3B2,0CBC9F,0CC56C,0CCC5D,0CD746,0CDBEA,0CE441,0CE5A1,100020,101C0C,102959,102FCA,103025,1040F3,10417F,104210,107DC8,1093E9,1094BB,109ADD,109F41,10A1DA,10A2D3,10B588,10B9C4,10BD3A,10CEE9,10CF0F,10DA63,10DDB1,10E2C9,14109F,14147D,141A97,141BA0,14205E,142876,142D4D,1435B7,145A05,1460CB,147AE4,147DDA,147FCE,148509,14876A,1488E6,148F79,148FC6,14946C,1495CE,149877,1499E2,149D99,14BD61,14C213,14C88B,14D00D,14D19E,14F287,182032,183451,183EEF,183F70,184A53,1855E3,1856C3,186590,187EB9,18810E,189EFC,18AF61,18AF8F,18E671,18E7B0,18E7F4,18EE69,18F1D8,18F643,18FAB7,1C0D7D,1C0EC2,1C1AC0,1C1DD3,1C36BB,1C3C78,1C57DC,1C5CF2,1C61BF,1C6A76,1C7125,1C7754,1C8682,1C8E2A,1C9148,1C9180,1C9E46,1CABA7,1CB3C9,1CE209,1CE62B,1CF64C,1CF9D5,200484,200E2B,201582,201A94,202DF6,2032C6,2037A5,203CAE,20463A,206980,20768F,2078CD,2078F0,207D74,2091DF,209BCD,20A2E4,20A5CB,20AB37,20C9D0,20E2A8,20E874,20EE28,20F4D4,20FA85,241B7A,241EEB,24240E,242AEA,24559A,245BA7,245E48,246D10,24A074,24A2E1,24AB81,24B339,24D0DF,24E314,24F094,24F677,28022E,280244,280B5C,282D7F,2834FF,283737,2849E9,284B54,28575D,285AEB,286AB8,286ABA,2877F1,2883C9,288EEC,288FF6,28A02B,28C1A0,28C538,28C709,28CFDA,28CFE9,28D5B1,28E02C,28E14C,28E7CF,28EA2D,28EC95,28ED6A,28F033,28F076,28FF3C,2C1809,2C1F23,2C200B,2C326A,2C3361,2C57CE,2C61F6,2C7600,2C7CF2,2C81BF,2C8217,2C9520,2CB43A,2CBC87,2CBE08,2CC253,2CCA16,2CDF68,2CF0A2,2CF0EE,300E43,3010E4,3035AD,303B7C,305714,30636B,307AD2,308216,309048,3090AB,30A033,30C0AE,30D53E,30D7A1,30D875,30D9D9,30E04F,30F7C5,30FE6C,3408BC,340E22,3410BE,341298,34159E,342840,342B6E,34318F,34363B,344262,3451C9,346691,347C25,348C5E,34A395,34A8EB,34AB37,34B1EB,34C059,34DAA1,34E2FD,34EE16,34F68D,34FD6A,34FE77,3809FB,380F4A,38484C,38539C,386233,3865B2,3866F0,3871DE,387F8B,3888A4,38892C,389CB2,38B54D,38C43A,38C986,38CADA,38E13D,38EC0D,38F9D3,3C0630,3C0754,3C07D7,3C15C2,3C1EB5,3C22FB,3C2EF9,3C2EFF,3C3464,3C39C8,3C3B77,3C4DBE,3C5002,3C6D89,3C7D0A,3CA6F6,3CAB8E,3CBF60,3CCD36,3CCD40,3CD0F8,3CDD57,3CE072,3CFB02,402619,403004,40331A,403CFC,404D7F,406C8F,4070F5,407911,40831D,40921A,4098AD,409C28,40A6D9,40B395,40B3FA,40BC60,40C711,40CBC0,40D160,40D32D,40DA5C,40E64B,40EDCF,40F946,440010,4409DA,4418FD,441B88,442A60,443583,444ADB,444C0C,4490BB,449E8B,44A10E,44A7F4,44A8FC,44C65D,44D884,44DA30,44E66E,44F09E,44F21B,44FB42,48262C,48352B,483B38,48437C,484BAA,4860BC,48746E,48A195,48A91C,48B8A3,48BF6B,48CA68,48D705,48E15C,48E1CA,48E9F1,4C20B8,4C2EB4,4C3275,4C569D,4C57CA,4C5D6A,4C6BE8,4C74BF,4C7975,4C7C5F,4C7CD9,4C820C,4C8D79,4C97CC,4C9FF1,4CAB4F,4CAD35,4CB199,4CB910,4CCDB6,4CE650,4CE6C0,501FC6,5023A2,503237,50578A,507A55,507AC5,5082D5,50A67F,50A6D8,50B127,50BC96,50DE06,50EAD6,50ED3C,50F265,50F351,50F4EB,540910,542696,542906,542B8D,5432C7,5433CB,544E90,5462E2,54724F,549963,549F13,54AE27,54B8DB,54E43A,54E61B,54EAA8,54EBE9,580AD4,581FAA,583653,58404E,585595,5855CA,5864C4,58666D,586B14,5873D8,587F57,5893E8,58AD12,58B035,58B965,58D349,58E28F,58E6BA,5C0947,5C13AC,5C13CC,5C1BF4,5C1DD9,5C3E1B,5C50D9,5C5230,5C5284,5C5948,5C7017,5C8730,5C8D4E,5C9175,5C95AE,5C969D,5C97F3,5C9977,5C9BA6,5CADBA,5CADCF,5CE91E,5CF5DA,5CF7E6,5CF938,600308,6006E3,600F6B,6030D4,60334B,603E5F,6057C8,606525,606944,6070C0,607EC9,608110,608246,608373,608B0E,608C4A,609217,609316,6095BD,609AC1,60A37D,60BEC4,60C547,60D039,60D9C7,60DD70,60DE18,60F445,60F549,60F81D,60FACD,60FB42,60FDA6,60FEC5,640BD7,640C91,64200C,643135,6441E6,644842,645A36,645AED,646D2F,647033,6476BA,649ABE,64A3CB,64A5C3,64B0A6,64B9E8,64BD6D,64C753,64D2C4,64E682,680927,681A47,682F67,683036,683EC0,684465,6845CC,684A5F,685B35,685EDD,68644B,6883CB,68967B,689C70,68A593,68A729,68A86D,68AB1E,68AE20,68CAC4,68D93C,68DBCA,68E580,68EF43,68EFDC,68FB7E,68FEF7,6C1270,6C19C0,6C1F8A,6C3AFF,6C3E6D,6C4008,6C4A85,6C4D73,6C709F,6C72E7,6C7E67,6C8DC1,6C94F8,6C96CF,6CAB31,6CB133,6CC26B,6CE5C9,6CE85C,701124,701384,7014A6,7022FE,70317F,703C69,703EAC,70480F,704CA2,705681,70700D,7072FE,7073CB,7081EB,708CF2,70A2B3,70AED5,70B306,70BB5B,70CD60,70DEE2,70E72C,70EA5A,70ECE4,70EF00,70F087,70F94A,740EA4,7414D0,7415F5,741BB2,742917,742959,743174,743F8E,744218,74428B,74650C,74718B,7473B4,747786,748114,748D08,748F3C,749EAF,74A6CD,74B587,74CC40,74E1B6,74E2F5,74E987,78028B,7831C1,783A84,783F4D,784F43,785ECC,7864C0,7867D7,786C1C,78753E,787984,787B8A,787E61,78886D,78960D,789F70,78A3E4,78A7C7,78CA39,78D162,78D75F,78E3DE,78FBD8,78FD94,7C0191,7C04D0,7C11BE,7C2499,7C296F,7C2ACA,7C3B2D,7C4B26,7C5049,7C6130,7C6D62,7C6DF8,7C9A1D,7CA1AE,7CAB60,7CC06F,7CC180,7CC3A1,7CC537,7CC8DF,7CD1AD,7CD1C3,7CD2DA,7CECB1,7CF05F,7CF34D,7CFADF,7CFC16,80006E,80045F,800C67,801242,801D39,804715,804971,804A14,8054E3,805FC5,80657C,808223,8083F6,80929F,80953A,809698,80A997,80AF19,80B03D,80B989,80BE05,80D1CE,80D605,80E650,80EA96,80ED2C,840511,840F4C,842999,842F57,843835,844167,846878,84788B,848506,8488E1,8489AD,848C8D,848E0C,849437,84A134,84AB1A,84AC16,84AD8D,84B153,84B1E4,84D328,84FCAC,84FCFE,881908,881E5A,881FA1,88200D,884D7C,8851F2,885395,8863DF,886440,88665A,8866A5,886B6E,886BDB,88A479,88A9B7,88AE07,88B291,88B7EB,88B945,88C08B,88C663,88CB87,88D546,88E87F,88E9FE,8C006D,8C08AA,8C26AA,8C2937,8C2DAA,8C3396,8C5877,8C7AAA,8C7B9D,8C7C92,8C8590,8C861E,8C8EF2,8C8FE9,8C91A4,8C986B,8CEC7B,8CFABA,8CFE57,9027E4,902C09,9035A2,903C92,904CC5,905F7A,9060F1,90623F,907240,90812A,908158,90840D,908C43,908D6C,909B6F,909C4A,90A25B,90AC6D,90B0ED,90B21F,90B790,90B931,90C1C6,90CDE8,90DD5D,90E17B,90ECEA,90FD61,940BCD,940C98,941625,942157,942B68,943FD6,945C9A,948978,949426,94AD23,94B01F,94BF2D,94E96A,94EA32,94F6A3,94F6D6,9800C6,9801A7,9803D8,980DAF,9810E8,981CA2,983C8C,98460A,98502E,985AEB,9860CA,98698A,989E63,98A5F9,98B379,98B8E3,98CA33,98CF7D,98D6BB,98DD60,98E0D9,98E859,98F0AB,98FE94,98FEE1,9C04EB,9C1A25,9C207B,9C28B3,9C293F,9C35EB,9C3E53,9C4FDA,9C583C,9C5884,9C6076,9C648B,9C760E,9C79E3,9C84BF,9C8BA0,9C924F,9CA9C5,9CC394,9CDAA8,9CE33F,9CE65E,9CF387,9CF3AC,9CF48E,9CFA76,9CFC01,9CFC28,A01828,A03BE3,A04EA7,A04ECF,A05272,A056F3,A07817,A0782D,A0999B,A09A8E,A09D22,A0A309,A0B40F,A0C1C5,A0D1B3,A0D795,A0E390,A0EDCD,A0EE1A,A0FBC5,A40987,A416C0,A43135,A45E60,A46706,A477F3,A483E7,A4B197,A4B805,A4C337,A4C361,A4C6F0,A4CF99,A4D18C,A4D1D2,A4D23E,A4D931,A4E975,A4F1E8,A4F6E6,A4F6E8,A4F841,A4F921,A4FC14,A81AF1,A82066,A82C89,A84A28,A851AB,A85B78,A85BB7,A85C2C,A860B6,A8667F,A87CF8,A8817E,A886DD,A88808,A88E24,A88FD9,A8913D,A8968A,A89C78,A8ABB5,A8BB56,A8BBCF,A8BE27,A8FAD8,A8FE9D,AC007A,AC0775,AC15F4,AC1615,AC1D06,AC1F74,AC293A,AC3C0B,AC4500,AC49DB,AC5C2C,AC61EA,AC7F3E,AC82F0,AC86A3,AC87A3,AC88FD,AC9085,AC9738,ACBC32,ACBCB5,ACC906,ACCF5C,ACDFA1,ACE4B5,ACFDEC,B01831,B019C6,B03495,B035B5,B03F64,B0481A,B065BD,B067B5,B0702D,B07219,B08C75,B09200,B09FBA,B0BE83,B0CA68,B0D576,B0DE28,B0E5EF,B0E5F9,B0F1D8,B418D1,B41974,B41BB0,B440A4,B44BD2,B45575,B456E3,B45976,B485E1,B48B19,B496A5,B49CDF,B4AEC1,B4F0AB,B4F61C,B4FA48,B8011F,B80533,B8098A,B8144D,B817C2,B8211C,B8220C,B82AA9,B8374A,B83C28,B841A4,B844D9,B845EB,B8496D,B84FA7,B853AC,B85D0A,B8634D,B8782E,B87BC5,B881FA,B88D12,B89047,B8B2F8,B8C111,B8C75D,B8E60C,B8E856,B8F12A,B8F6B1,B8FF61,BC0963,BC37D3,BC3BAF,BC4CC4,BC52B7,BC5436,BC6778,BC6C21,BC804E,BC89A7,BC926B,BC9F58,BC9FEF,BCA5A9,BCA920,BCB863,BCBB58,BCD074,BCE143,BCEC5D,BCFED9,C01754,C01ADA,C02C5C,C04442,C06394,C06C0C,C0847A,C0956D,C09AD0,C09F42,C0A53E,C0A600,C0B22F,C0B658,C0C7DB,C0CCF8,C0CECD,C0D012,C0E862,C0F2FB,C40B31,C41234,C41411,C4168F,C42AD0,C42C03,C435D9,C4491B,C4524F,C45BAC,C4618B,C48466,C484FC,C4910C,C49880,C4ACAA,C4B301,C4B349,C4C17D,C4C36B,C4F7C1,C81EE7,C81FE8,C82A14,C8334B,C83C85,C869CD,C86F1D,C8806D,C88550,C889F3,C8B1CD,C8B5B7,C8BCC8,C8D083,C8E0EB,C8F650,CC088D,CC08E0,CC08FA,CC115A,CC20E8,CC22FE,CC25EF,CC2746,CC29F5,CC2DB7,CC3F36,CC4463,CC4B04,CC6023,CC660A,CC68E0,CC69FA,CC722A,CC785F,CC808F,CC817D,CCC760,CCC95D,CCD281,D0034B,D011E5,D023DB,D02598,D02B20,D03311,D03E07,D03FAA,D04D86,D04F7E,D058A5,D06544,D06B78,D0817A,D0880C,D0A637,D0B324,D0C050,D0C5F3,D0D23C,D0D2B0,D0D49F,D0DAD7,D0E140,D0E581,D40F9E,D42DCC,D42FCA,D446E1,D45763,D4619D,D461DA,D463C0,D468AA,D4909C,D49A20,D4A33D,D4DCCD,D4F46F,D4FB8E,D4FF1A,D8004D,D81C79,D81D72,D83062,D84C90,D87475,D88F76,D89695,D89E3F,D8A25E,D8BB2C,D8BE1F,D8CF9C,D8D1CB,D8DC40,D8DE3A,D8E593,DC080F,DC0C5C,DC1057,DC2B2A,DC2B61,DC3714,DC415F,DC45B8,DC5285,DC5392,DC56E7,DC6DBC,DC71D0,DC8084,DC86D8,DC9396,DC9566,DC9B9C,DC9E8F,DCA4CA,DCA904,DCB54F,DCD3A2,DCF4CA,E02611,E02B96,E0338E,E05F45,E06678,E06D17,E0897E,E0925C,E0ACCB,E0B52D,E0B55F,E0B9BA,E0BA78,E0BDA0,E0BFB2,E0C3EA,E0C767,E0C97A,E0EB40,E0F5C6,E0F847,E425E7,E42B34,E42F37,E44389,E450EB,E45341,E47684,E48B7F,E490FD,E498D6,E49A79,E49ADC,E49C67,E4B16C,E4B2FB,E4C63D,E4CE8F,E4E0A6,E4E4AB,E8040B,E80688,E81CD8,E83617,E84A78,E85F02,E87865,E87F95,E8802E,E88152,E8854B,E88D28,E898EE,E8A730,E8B2AC,E8C386,E8FBE9,E8FFF4,EC0D51,EC2651,EC28D3,EC2C73,EC2CE2,EC3586,EC42CC,EC4654,EC7379,EC8150,EC852F,EC97A2,ECA907,ECADB8,ECCED7,ECE9D2,ECFF3A,F004E1,F01898,F01FC7,F02475,F027A0,F02F4B,F02FBA,F05CD5,F0766F,F07807,F07960,F0989D,F099B6,F099BF,F0A35A,F0B0E7,F0B3EC,F0B479,F0C1F1,F0C371,F0C725,F0CBA1,F0D1A9,F0D31F,F0D635,F0D793,F0DBE2,F0DBF8,F0DCE2,F0EE7A,F0F61C,F40616,F40E01,F40F24,F41BA1,F421CA,F431C3,F433B7,F434F0,F437B7,F439A6,F45293,F45C89,F465A6,F478AC,F481C4,F4A310,F4AFE7,F4B599,F4BEEC,F4CBE7,F4D488,F4DBE3,F4E8C7,F4F15A,F4F951,F4FE3E,F80377,F81093,F81EDF,F82793,F82AE2,F82D7C,F83880,F84288,F84D89,F84E73,F86214,F8665A,F86FC1,F871A6,F873DF,F87D76,F887F1,F895EA,F8B1DD,F8C3CC,F8D3F0,F8E252,F8E5CE,F8E94E,F8F58C,F8FFC2,FC183C,FC1D43,FC253F,FC2A9C,FC315D,FC47D8,FC4EA4,FC5557,FC66CF,FC8827,FC9CA7,FCA5C8,FCAA81,FCB214,FCB6D8,FCD848,FCE26C,FCE998,FCFC48 o="Apple, Inc." 000394 o="Connect One" 000395 o="California Amplifier" 000396 o="EZ Cast Co., Ltd." @@ -873,7 +872,7 @@ 00039A o="SiConnect" 00039B o="NetChip Technology, Inc." 00039C o="OptiMight Communications, Inc." -00039D,0017CA,001E21,1CE192 o="Qisda Corporation" +00039D,0017CA,001E21,1CE192,64E220,C0C4F9,D0760C o="Qisda Corporation" 00039E o="Tera System Co., Ltd." 0003A1 o="HIPER Information & Communication, Inc." 0003A2 o="Catapult Communications" @@ -891,7 +890,7 @@ 0003AE o="Allied Advanced Manufacturing Pte, Ltd." 0003AF o="Paragea Communications" 0003B0 o="Xsense Technology Corp." -0003B1 o="Hospira Inc." +0003B1,001A01 o="ICU Medical, Inc." 0003B2,2CB693 o="Radware" 0003B3 o="IA Link Systems Co., Ltd." 0003B4 o="Macrotek International Corp." @@ -963,8 +962,8 @@ 0003FA o="TiMetra Networks" 0003FB o="ENEGATE Co.,Ltd." 0003FC o="Intertex Data AB" -0003FF,00125A,00155D,0017FA,001DD8,002248,0025AE,0C413E,0CE725,102F6B,149A10,1C1ADF,206274,20A99B,2816A8,281878,2C2997,2C5491,3C8375,441622,485073,4886E8,5CBA37,6C5D3A,70BC10,74E28C,80C5E6,845733,8463D6,949AA9,985FD3,987A14,9C6C15,9CAA1B,A085FC,B831B5,B84FD5,BC8385,C49DED,C83F26,D0929E,D48F33,DC9840,EC59E7,EC8350,F01DBC,F06E0B o="Microsoft Corporation" -000400,002000,0021B7,788C77 o="LEXMARK INTERNATIONAL, INC." +0003FF,00125A,00155D,0017FA,001DD8,002248,0025AE,042728,0C3526,0C413E,0CE725,102F6B,10C735,149A10,14CB65,1C1ADF,201642,206274,20A99B,2816A8,281878,28EA0B,2C2997,2C5491,3833C5,38563D,3C8375,3CFA06,408E2C,441622,485073,487B2F,4886E8,4C3BDF,544C8A,587961,5CBA37,686CE6,68F7D8,6C1544,6C5D3A,70A8A5,70BC10,70F8AE,74761F,74C412,74E28C,78862E,7C6D12,7CC0AA,80C5E6,845733,8463D6,84B1E2,9020D7,906AEB,949AA9,985FD3,987A14,9C6C15,9CAA1B,A04A5E,A085FC,A88C3E,AC8EBD,B831B5,B84FD5,B85C5C,B8BA66,BC8385,C0D6D5,C461C7,C49DED,C4CB76,C83F26,C89665,CC0DCB,CC60C8,CC7645,CCB0B3,D0929E,D48F33,D8E2DF,DC9840,E42AAC,E8A72F,E8F673,EC4684,EC59E7,EC8350,F01DBC,F06E0B,F46AD7,FC8C11 o="Microsoft Corporation" +000400,002000,0021B7,0084ED,788C77 o="LEXMARK INTERNATIONAL, INC." 000401 o="Osaki Electric Co., Ltd." 000402 o="Nexsan Technologies, Ltd." 000403 o="Nexsi Corporation" @@ -983,11 +982,10 @@ 000410 o="Spinnaker Networks, Inc." 000411 o="Inkra Networks, Inc." 000412 o="WaveSmith Networks, Inc." -000413 o="snom technology GmbH" +000413,1C7126 o="snom technology GmbH" 000414 o="Umezawa Musen Denki Co., Ltd." 000415 o="Rasteme Systems Co., Ltd." 000416 o="Parks S/A Comunicacoes Digitais" -000417 o="ELAU AG" 000418 o="Teltronic S.A.U." 000419 o="Fibercycle Networks, Inc." 00041A o="Ines Test and Measurement GmbH & CoKG" @@ -995,7 +993,7 @@ 00041C o="ipDialog, Inc." 00041D o="Corega of America" 00041E o="Shikoku Instrumentation Co., Ltd." -00041F,001315,0015C1,0019C5,001D0D,001FA7,00248D,00D9D1,0CFE45,280DFC,2CCC44,709E29,78C881,A8E3EE,BC60A7,C863F1,F8461C,F8D0AC,FC0FE6 o="Sony Interactive Entertainment Inc." +00041F,001315,0015C1,0019C5,001D0D,001FA7,00248D,00D9D1,00E421,04F778,0C7043,0CFE45,280DFC,2840DD,2C9E00,2CCC44,50B03B,5C843C,5C9666,68286C,70662A,709E29,78C881,84E657,904748,98FA2E,9C37CB,A8E3EE,B40AD8,B41F4D,BC3329,BC60A7,C0151B,C84AA0,C863F1,D4F7D5,E86E3A,EC748C,F46412,F8461C,F8D0AC,FC0FE6 o="Sony Interactive Entertainment Inc." 000420 o="Slim Devices, Inc." 000421 o="Ocular Networks" 000422 o="Studio Technologies, Inc" @@ -1011,10 +1009,10 @@ 00042F o="International Communications Products, Inc." 000430 o="Netgem" 000431 o="GlobalStreams, Inc." -000432 o="Voyetra Turtle Beach, Inc." +000432,6073C8 o="Voyetra Turtle Beach, Inc." 000433 o="Cyberboard A/S" 000434 o="Accelent Systems, Inc." -000435 o="InfiNet LLC" +000435,A0B4BF o="InfiNet LLC" 000436 o="ELANsat Technologies, Inc." 000437 o="Powin Information Technology, Inc." 000439 o="Rosco Entertainment Technology, Inc." @@ -1044,7 +1042,7 @@ 000453 o="YottaYotta, Inc." 000454 o="Quadriga UK" 000455 o="ANTARA.net" -000456,58C17A,BCA993,BCE67C o="Cambium Networks Limited" +000456,30CBC7,58C17A,9014AF,906D62,B4A25C,BCA993,BCE67C,FC1165 o="Cambium Networks Limited" 000457 o="Universal Access Technology, Inc." 000458 o="Fusion X Co., Ltd." 000459 o="Veristar Corporation" @@ -1079,8 +1077,8 @@ 00047A o="AXXESSIT ASA" 00047B o="Schlumberger" 00047C o="Skidata AG" -00047D o="Pelco" -00047E o="Siqura B.V." +00047D,001885,001F92,4CCC34 o="Motorola Solutions Inc." +00047E,001ED1 o="TKH Security B.V." 00047F o="Chr. Mayr GmbH & Co. KG" 000481 o="Econolite Control Products, Inc." 000482 o="Medialogic Corp." @@ -1113,9 +1111,9 @@ 0004A0 o="Verity Instruments, Inc." 0004A1 o="Pathway Connectivity" 0004A2 o="L.S.I. Japan Co., Ltd." -0004A3,001EC0,049162,5410EC,682719,801F12,D88039,E8EB1B o="Microchip Technology Inc." +0004A3,001EC0,049162,408432,44B7D0,5410EC,608A10,682719,801F12,803428,9C956E,D8478F,D88039,E8EB1B,FC0FE7 o="Microchip Technology Inc." 0004A4 o="NetEnabled, Inc." -0004A5,000D0A o="Barco Projection Systems NV" +0004A5 o="Barco NV" 0004A6 o="SAF Tehnika Ltd." 0004A7 o="FabiaTech Corporation" 0004A8 o="Broadmax Technologies, Inc." @@ -1166,7 +1164,7 @@ 0004D9 o="Titan Electronics, Inc." 0004DA o="Relax Technology, Inc." 0004DB o="Tellus Group Corp." -0004DF,70CD91 o="TERACOM TELEMATICA S.A" +0004DF,1881ED,70CD91 o="TERACOM TELEMATICA S.A" 0004E0 o="Procket Networks" 0004E1 o="Infinior Microsystems" 0004E2,000BC5,0013F7 o="SMC Networks, Inc." @@ -1251,7 +1249,7 @@ 00053C,0010A4,0080C7 o="XIRCOM" 00053E o="KID Systeme GmbH" 00053F o="VisionTek, Inc." -000540 o="FAST Corporation" +000540,00504D o="Tokyo Electron Device Limited" 000541 o="Advanced Systems Co., Ltd." 000542 o="Otari, Inc." 000543 o="IQ Wireless GmbH" @@ -1266,7 +1264,7 @@ 00054C o="RF Innovations Pty Ltd" 00054D o="Brans Technologies, Inc." 00054E,E8C1D7 o="Philips" -00054F,104E89,10C6FC,148F21,B4C26A,F09919 o="Garmin International" +00054F,0C7E24,104E89,10C6FC,14130B,148F21,38F9F5,603C68,64A337,90F157,A02884,B4C26A,E04824,F09919 o="Garmin International" 000550 o="Vcomms Connect Limited" 000551 o="F & S Elektronik Systeme GmbH" 000552 o="Xycotec Computer GmbH" @@ -1307,14 +1305,14 @@ 00057B o="Chung Nam Electronic Co., Ltd." 00057C o="RCO Security AB" 00057D o="Sun Communications, Inc." -00057E o="Eckelmann Steuerungstechnik GmbH" +00057E o="Eckelmann AG" 00057F o="Acqis Technology" 000580 o="FibroLAN Ltd." 000581,002370 o="Snell" 000582 o="ClearCube Technology" 000583 o="ImageCom Limited" 000584 o="AbsoluteValue Systems, Inc." -000585,0010DB,00121E,0014F6,0017CB,0019E2,001BC0,001DB5,001F12,002159,002283,00239C,0024DC,002688,003146,009069,045C6C,0881F4,08B258,0C599C,0C8126,0C8610,100E7E,1039E9,182AD3,1C9C8C,201BC9,204E71,20D80B,288A1C,28A24B,28C0DA,2C2131,2C2172,2C6BF5,307C5E,30B64F,384F49,3C6104,3C8AB0,3C8C93,3C94D5,407183,40A677,40B4F0,40DEAD,44AA50,44ECCE,44F477,4C16FC,4C9614,50C58D,50C709,541E56,544B8C,54E032,5800BB,5C4527,5C5EAB,64649B,648788,64C3D6,7819F7,784F9B,78507C,78FE3D,7C2586,7CE2CA,80711F,807FF8,80ACAC,840328,841888,84B59C,84C1C1,88A25E,88D98F,88E0F3,88E64B,94BF94,94F7AD,9C8ACB,9CCC83,A8D0E5,AC4BC8,B033A6,B0A86E,B0C69A,B8C253,C00380,C042D0,C0BFA7,C8E7F0,C8FE6A,CCE17F,CCE194,D007CA,D0DD49,D404FF,D818D3,D8B122,DC38E1,E45D37,E4FC82,E8A245,E8B6C2,EC13DB,EC3873,EC3EF7,F01C2D,F04B3A,F07CC7,F4A739,F4B52F,F4BFA8,F4CC55,F8C001,FC3342 o="Juniper Networks" +000585,0010DB,00121E,0014F6,0017CB,0019E2,001BC0,001DB5,001F12,002159,002283,00239C,0024DC,002688,003146,009069,00C52C,00CC34,045C6C,04698F,0805E2,087671,0881F4,08B258,0C599C,0C8126,0C8610,100E7E,1039E9,14B3A1,182AD3,1C9C8C,201BC9,204E71,209339,20D80B,20ED47,245D92,24DB94,24FC4E,288A1C,28A24B,28B829,28C0DA,2C2131,2C2172,2C4C15,2C6BF5,3063EA,307C5E,30B64F,342865,34936F,384F49,38F20D,3C08CD,3C6104,3C8AB0,3C8C93,3C94D5,4036B7,407183,407F5F,408F9D,409EA4,40A677,40B4F0,40DEAD,44AA50,44ECCE,44F477,485A0D,487310,4C16FC,4C6D58,4C734F,4C9614,50C58D,50C709,541E56,544B8C,54E032,5800BB,588670,58E434,5C3977,5C4527,5C5EAB,60C78D,64649B,648788,64AC2B,64C3D6,68228E,68ED57,68F38E,6C62FE,6C78C1,742972,74E798,7819F7,784F9B,78507C,78FE3D,7C2586,7CE2CA,8013BE,80433F,80711F,807FF8,80ACAC,80DB17,840328,841888,845234,84B59C,84C1C1,880AA3,8828FB,883037,889009,88A25E,88D98F,88E0F3,88E64B,94BF94,94F7AD,984925,98868B,9C5A80,9C8ACB,9CC893,9CCC83,A4515E,A47F1B,A4E11A,A8D0E5,AC4BC8,AC78D1,ACA09D,B033A6,B0A86E,B0C69A,B0EB7F,B41678,B48A5F,B4F95D,B8C253,B8F015,BC0FFE,C00380,C01944,C042D0,C0BFA7,C0DFED,C409B7,C81337,C8D995,C8E7F0,C8FE6A,CCE17F,CCE194,D007CA,D048A1,D081C5,D0DD49,D404FF,D45A3F,D4996C,D818D3,D8539A,D8B122,DC38E1,E030F9,E0F62D,E4233C,E45D37,E45ECC,E4F27C,E4FC82,E824A6,E8A245,E8A55A,E8B6C2,EC13DB,EC3873,EC3EF7,EC7C5C,EC94D5,F01C2D,F04B3A,F07CC7,F0D32B,F4A739,F4B52F,F4BFA8,F4CC55,F8C001,F8C116,FC3342,FC9643 o="Juniper Networks" 000586 o="Lucent Technologies" 000587 o="Locus, Incorporated" 000588 o="Sensoria Corp." @@ -1329,7 +1327,6 @@ 000591 o="Active Silicon Ltd" 000592 o="Pultek Corp." 000593 o="Grammar Engine Inc." -000594,003011,003056 o="HMS Industrial Networks" 000595 o="Alesis Corporation" 000596 o="Genotech Co., Ltd." 000597 o="Eagle Traffic Control Systems" @@ -1380,7 +1377,7 @@ 0005C6 o="Triz Communications" 0005C7 o="I/F-COM A/S" 0005C8 o="VERYTECH" -0005C9,001EB2,0051ED,044EAF,1C08C1,203DBD,2C2BF9,30A9DE,402F86,44CB8B,60AB14,7440BE,7C1C4E,944444,A06FAA,ACF108,B4E62A,C4366C,C80210,CC8826,E8F2E2 o="LG Innotek" +0005C9,001EB2,0051ED,008667,0092A5,044EAF,147F67,1C08C1,1CD3AF,203DBD,24E853,280FEB,288761,2C2BF9,3034DB,30A9DE,34E6E6,402F86,40D521,442745,44CB8B,4C9B63,4CBAD7,4CBCE9,60AB14,64CBE9,7440BE,7C1C4E,805B65,944444,A06FAA,A436C7,ACF108,B4E62A,B8165F,C0DCAB,C4366C,C80210,CC8826,D48D26,D8E35E,DC0398,E0854D,E8F2E2,F414BF,F896FE,F8B95A o="LG Innotek" 0005CA o="Hitron Technology, Inc." 0005CB o="ROIS Technologies, Inc." 0005CC o="Sumtel Communications, Inc." @@ -1398,7 +1395,7 @@ 0005D8 o="Arescom, Inc." 0005D9 o="Techno Valley, Inc." 0005DA o="Apex Automationstechnik" -0005DB o="PSI Nentec GmbH" +0005DB o="PSI Software SE," 0005DE o="Gi Fone Korea, Inc." 0005DF o="Electronic Innovation, Inc." 0005E0 o="Empirix Corp." @@ -1424,7 +1421,7 @@ 0005F4 o="System Base Co., Ltd." 0005F5 o="Geospace Technologies" 0005F6 o="Young Chang Co. Ltd." -0005F7,006088,00E022 o="Analog Devices, Inc." +0005F7,006088,00E022,78C6BB o="Analog Devices, Inc." 0005F8 o="Real Time Access, Inc." 0005F9 o="TOA Corporation" 0005FA o="IPOptical, Inc." @@ -1477,9 +1474,9 @@ 00062E o="Aristos Logic Corp." 00062F o="Pivotech Systems Inc." 000630 o="Adtranz Sweden" -000631,44657F,487746,CCBE59,D0768F,EC4F82 o="Calix Inc." +000631,04BC9F,1003CD,1074C5,142103,1C8B76,40E762,44657F,487746,4C4341,5CDB36,60DB98,84D343,88DA36,B89470,CCBE59,D0768F,E04934,E46CD1,EC4F82,F885F9 o="Calix Inc." 000632 o="Mesco Engineering GmbH" -000633 o="Cross Match Technologies GmbH" +000633,00308E o="Crossmatch Technologies/HID Global" 000634 o="GTE Airfone Inc." 000635 o="PacketAir Networks, Inc." 000636 o="Jedai Broadband Networks" @@ -1517,7 +1514,7 @@ 000658 o="Helmut Fischer GmbH Institut für Elektronik und Messtechnik" 000659 o="EAL (Apeldoorn) B.V." 00065A o="Strix Systems" -00065B,000874,000BDB,000D56,000F1F,001143,00123F,001372,001422,0015C5,00188B,0019B9,001AA0,001C23,001D09,001E4F,001EC9,002170,00219B,002219,0023AE,0024E8,002564,0026B9,004E01,00B0D0,00C04F,0C29EF,106530,107D1A,109836,141877,149ECF,14B31F,14FEB5,180373,185A58,1866DA,18A99B,18DBF2,18FB7B,1C4024,1C721D,20040F,204747,246E96,247152,24B6FD,28F10E,2CEA7F,3417EB,3448ED,34E6D7,3C2C30,405CFD,44A842,484D7E,4C7625,4CD98F,509A4C,544810,549F35,54BF64,588A5A,5C260A,5CF9DD,64006A,684F64,6C2B59,70B5E8,74867A,74E6E2,782BCB,7845C4,78AC44,801844,842B2B,847BEB,848F69,886FD4,8C04BA,8C47BE,8CEC4B,90B11C,9840BB,989096,98E743,A41F72,A44CC8,A4BADB,A4BB6D,A89969,B083FE,B4E10F,B82A72,B88584,B8AC6F,B8CA3A,B8CB29,BC305B,C03EBA,C81F66,C8F750,CC483A,CCC5E5,D0431E,D067E5,D09466,D481D7,D4AE52,D4BED9,D89EF3,D8D090,DCF401,E0D848,E0DB55,E4434B,E454E8,E4B97A,E4F004,ECF4BB,F01FAF,F04DA2,F0D4E2,F40270,F48E38,F8B156,F8BC12,F8CAB8,F8DB88 o="Dell Inc." +00065B,000874,000BDB,000D56,000F1F,001143,00123F,001372,001422,0015C5,00188B,0019B9,001AA0,001C23,001D09,001E4F,001EC9,002170,00219B,002219,0023AE,0024E8,002564,0026B9,004E01,00B0D0,00BE43,00C04F,04BF1B,089204,0C29EF,106530,107D1A,109819,109836,141877,149ECF,14B31F,14FEB5,180373,185A58,1866DA,18A99B,18DBF2,18FB7B,1C4024,1C721D,20040F,204747,208810,2453ED,246E96,247152,24B6FD,2800AF,28F10E,2CEA7F,30D042,3417EB,3448ED,34735A,34E6D7,381428,3C25F8,3C2C30,405CFD,44A842,484D7E,4C7625,4CC5D9,4CD717,4CD98F,509A4C,544810,549F35,54BF64,588A5A,5C260A,5CF9DD,601895,605B30,64006A,684F64,6C2B59,6C3C8C,70B5E8,747827,74867A,7486E2,74E6E2,782BCB,7845C4,78AC44,801844,842B2B,845C31,847BEB,848F69,886FD4,8C04BA,8C47BE,8CE9FF,8CEC4B,908D6E,90B11C,9840BB,989096,98E743,A02919,A41F72,A44CC8,A4BADB,A4BB6D,A83CA5,A89969,AC1A3D,AC91A1,ACB480,B04F13,B07B25,B083FE,B44506,B4E10F,B4E9B8,B82A72,B88584,B8AC6F,B8CA3A,B8CB29,BC305B,C025A5,C03EBA,C0470E,C45AB1,C4CBE1,C4D6D3,C81F66,C84BD6,C8F750,CC483A,CC96E5,CCC5E5,D0431E,D0460C,D067E5,D08E79,D09466,D0C1B5,D481D7,D4A2CD,D4AE52,D4BED7,D4BED9,D89EF3,D8D090,DCF401,E0D848,E0DB55,E4434B,E454E8,E4B97A,E4F004,E8655F,E8B265,E8B5D0,E8CF83,EC2A72,ECF4BB,F01FAF,F04DA2,F0D4E2,F40270,F48E38,F4EE08,F8B156,F8BC12,F8CAB8,F8DB88,FC4CEA o="Dell Inc." 00065C o="Malachite Technologies, Inc." 00065D o="Heidelberg Web Systems" 00065E o="Photuris, Inc." @@ -1535,7 +1532,7 @@ 00066B o="Sysmex Corporation" 00066C o="Robinson Corporation" 00066D o="Compuprint S.P.A." -00066E,001823 o="Delta Electronics, Inc." +00066E,001823,5C8DE5 o="Delta Electronics, Inc." 00066F o="Korea Data Systems" 000670 o="Upponetti Oy" 000671 o="Softing AG" @@ -1731,7 +1728,7 @@ 00073D o="Nanjing Postel Telecommunications Co., Ltd." 00073E o="China Great-Wall Computer Shenzhen Co., Ltd." 00073F o="Woojyun Systec Co., Ltd." -000740,000D0B,001601,001D73,0024A5,004026,106F3F,18C2BF,18ECE7,343DC4,4CE676,50C4DD,58278C,6084BD,7403BD,84AFEC,8857EE,B0C745,CCE1D5,DCFB02 o="BUFFALO.INC" +000740,000D0B,001601,001D73,0024A5,002BF5,004026,00E5F1,106F3F,18C2BF,18ECE7,343DC4,4C858A,4CE676,50C4DD,58278C,6084BD,68E1DC,7403BD,84AFEC,84E8CB,8857EE,9096F3,B0C745,C436C0,C43CEA,CCE1D5,D056F2,D42C46,DCFB02,EC5A31,F0F84A,F89497 o="BUFFALO.INC" 000741 o="Sierra Automated Systems" 000742 o="Ormazabal" 000743 o="Chelsio Communications" @@ -1777,7 +1774,7 @@ 00076D o="Flexlight Networks" 00076E o="Sinetica Corporation Limited" 00076F o="Synoptics Limited" -000770,70305D o="Ubiquoss Inc" +000770,70305D,BC76F9 o="Ubiquoss Inc" 000771 o="Embedded System Corporation" 000772,184A6F,1880F5,3C8BCD,54A619,A09D86,A8AD3D,AC9CE4,C8F86D,E03005,E4A1E6,F4C613 o="Alcatel-Lucent Shanghai Bell Co., Ltd" 000773 o="Ascom Powerline Communications Ltd." @@ -1798,7 +1795,7 @@ 000786 o="Wireless Networks Inc." 000787 o="Idea System Co., Ltd." 000788 o="Clipcomm, Inc." -000789 o="Allradio Co., Ltd" +000789,1CEC72 o="Allradio Co., Ltd" 00078A o="Mentor Data System Inc." 00078B o="Wegener Communications, Inc." 00078C o="Elektronikspecialisten i Borlange AB" @@ -1861,7 +1858,7 @@ 0007C8 o="Brain21, Inc." 0007C9 o="Technol Seven Co., Ltd." 0007CA o="Creatix Polymedia Ges Fur Kommunikaitonssysteme" -0007CB,0024D4,140C76,342792,68A378,70FC8F,8C97EA,DC00B0,E49E12,F4CAE5 o="FREEBOX SAS" +0007CB,0024D4,140C76,2066CF,342792,380716,68A378,70FC8F,8C97EA,DC00B0,E49E12,F4CAE5 o="FREEBOX SAS" 0007CC o="Kaba Benzing GmbH" 0007CD o="Kumoh Electronic Co, Ltd" 0007CE o="Cabletime Limited" @@ -1874,7 +1871,7 @@ 0007D5 o="3e Technologies Int;., Inc." 0007D6 o="Commil Ltd." 0007D7 o="Caporis Networks AG" -0007D8,00265B,00FC8D,0C473D,1CABC0,30B7D4,64777D,688F2E,68B6FC,749BE8,788DF7,840B7C,84948C,9050CA,90AAC3,A84E3F,AC202E,B0F530,BC1401,BC3E07,BC4DFB,F0F249,F81D0F,FC5A1D o="Hitron Technologies. Inc" +0007D8,00265B,00FC8D,0C473D,1CABC0,206A94,30B7D4,38AD2B,606C63,64777D,688F2E,68B6FC,749BE8,788DF7,840B7C,84948C,9050CA,90AAC3,A84E3F,AC202E,B0F530,BC1401,BC3E07,BC4DFB,D0EE47,DC360C,F0F249,F81D0F,F8345A,FC5A1D,FC777B o="Hitron Technologies. Inc" 0007D9 o="Splicecom" 0007DA o="Neuro Telecom Co., Ltd." 0007DB o="Kirana Networks, Inc." @@ -1922,7 +1919,7 @@ 000809 o="Systemonic AG" 00080A o="Espera-Werke GmbH" 00080B o="Birka BPA Informationssystem AB" -00080C o="VDA Elettronica spa" +00080C o="VDA Group S.p.a." 00080D,000E7B,0015B7,001C7E,002318,78D6B2,887384,B86B23,E89D87,E8E0B7,EC21E5,F4645D o="Toshiba" 00080F o="Proximion Fiber Optics AB" 000810 o="Key Technology, Inc." @@ -2009,7 +2006,7 @@ 000886 o="Hansung Teliann, Inc." 000887 o="Maschinenfabrik Reinhausen GmbH" 000888 o="OULLIM Information Technology Inc,." -000889,0024AF,04C9D9,285767,4C82CF,88B6EE o="Dish Technologies Corp" +000889,0024AF,0064AF,04C9D9,285767,4C82CF,88B6EE o="Dish Technologies Corp" 00088A o="Minds@Work" 00088B o="Tropic Networks Inc." 00088C o="Quanta Network Systems Inc." @@ -2031,7 +2028,7 @@ 00089C o="Elecs Industry Co., Ltd." 00089D o="UHD-Elektronik" 00089E o="Beijing Enter-Net co.LTD" -00089F,002666,64E599,705DCC,88366C,909F33 o="EFM Networks" +00089F,002666,588694,64E599,705DCC,88366C,909F33,B0386C o="EFM Networks" 0008A0 o="Stotz Feinmesstechnik GmbH" 0008A1 o="CNet Technology Inc." 0008A2 o="ADI Engineering, Inc." @@ -2042,11 +2039,11 @@ 0008A9 o="SangSang Technology, Inc." 0008AA o="KARAM" 0008AB o="EnerLinx.com, Inc." -0008AC o="Eltromat GmbH" +0008AC o="BST GmbH" 0008AD o="Toyo-Linx Co., Ltd." 0008AE o="PacketFront Network Products AB" 0008AF o="Novatec Corporation" -0008B0 o="BKtel communications GmbH" +0008B0 o="HUBER+SUHNER BKtel GmbH" 0008B1 o="ProQuent Systems" 0008B2 o="SHENZHEN COMPASS TECHNOLOGY DEVELOPMENT CO.,LTD" 0008B3 o="Fastwel" @@ -2055,7 +2052,7 @@ 0008B6 o="RouteFree, Inc." 0008B7 o="HIT Incorporated" 0008B8 o="E.F. Johnson" -0008B9,44F034,743AEF,808C97,90F891,943BB1 o="Kaonmedia CO., LTD." +0008B9,04D190,1834AF,24E4CE,44F034,547E1A,743AEF,808C97,840112,90F891,943BB1,983910,9877E7 o="Kaon Group Co., Ltd." 0008BA o="Erskine Systems Ltd" 0008BB o="NetExcell" 0008BC o="Ilevo AB" @@ -2135,7 +2132,7 @@ 00090C o="Mayekawa Mfg. Co. Ltd." 00090D o="LEADER ELECTRONICS CORP." 00090E o="Helix Technology Inc." -00090F,000CE6 o="Fortinet Inc." +00090F,000CE6,0401A1,04D590,085B0E,1CD11A,38C0EA,483A02,68CCAE,704CA5,7478A6,7818EC,80802C,84398F,906CAC,94F392,94FF3C,AC712E,B4B2E9,D476A0,D4B4C0,E023FF,E81CBA,E8EDD6 o="Fortinet, Inc." 000910 o="Simple Access Inc." 000913 o="SystemK Corporation" 000914 o="COMPUTROLS INC." @@ -2183,7 +2180,7 @@ 00093E o="C&I Technologies" 00093F o="Double-Win Enterpirse CO., LTD" 000940 o="AGFEO GmbH & Co. KG" -000941,001AEB o="Allied Telesis R&D Center K.K." +000941,001AEB,00C28F o="Allied Telesis K.K." 000942 o="Wireless Technologies, Inc" 000945 o="Palmmicro Communications Inc" 000946 o="Cluster Labs GmbH" @@ -2207,7 +2204,7 @@ 000958 o="INTELNET S.A." 000959 o="Sitecsoft" 00095A o="RACEWOOD TECHNOLOGY" -00095B,000FB5,00146C,00184D,001B2F,001E2A,001F33,00223F,0024B2,0026F2,008EF2,04A151,08028E,0836C9,08BD43,100C6B,100D7F,10DA43,1459C0,200CC8,204E7F,20E52A,288088,28C68E,2C3033,2CB05D,30469A,3894ED,3C3786,405D82,4494FC,44A56E,4C60DE,504A6E,506A03,6CB0CE,744401,78D294,803773,841B5E,8C3BAD,9C3DCF,9CC9EB,9CD36D,A00460,A021B7,A040A0,A06391,A42B8C,B03956,B07FB9,B0B98A,BCA511,C03F0E,C0FFD4,C40415,C43DC7,CC40D0,DCEF09,E0469A,E091F5,E4F4C6,E8FCAF,F87394 o="NETGEAR" +00095B,000FB5,00146C,00184D,001B2F,001E2A,001F33,00223F,0024B2,0026F2,008EF2,04A151,08028E,0836C9,08BD43,100C6B,100D7F,10DA43,1459C0,200CC8,204E7F,20E52A,288088,289401,28C68E,2C3033,2CB05D,30469A,3498B5,3894ED,3C3786,405D82,4494FC,44A56E,4C60DE,504A6E,506A03,54077D,6CB0CE,6CCDD6,744401,78D294,803773,80CC9C,841B5E,8C3BAD,941865,943B22,94A67E,9C3DCF,9CC9EB,9CD36D,A00460,A021B7,A040A0,A06391,A42B8C,B03956,B07FB9,B0B98A,BCA511,C03F0E,C0FFD4,C40415,C43DC7,C8102F,C89E43,CC40D0,DCEF09,E0469A,E046EE,E091F5,E0C250,E4F4C6,E8FCAF,F87394 o="NETGEAR" 00095C o="Philips Medical Systems - Cardiac and Monitoring Systems (CM" 00095D o="Dialogue Technology Corp." 00095E o="Masstech Group Inc." @@ -2260,7 +2257,7 @@ 000990 o="ACKSYS Communications & systems" 000991 o="Intelligent Platforms, LLC." 000992 o="InterEpoch Technology,INC." -000993,000A30,0CD9C1,7CFC3C,F855CD o="Visteon Corporation" +000993,000A30,0CD9C1,7CFC3C,A8400B,F855CD,FC35E6 o="Visteon Corporation" 000994 o="Cronyx Engineering" 000995 o="Castle Technology Ltd" 000996 o="RDI" @@ -2288,7 +2285,7 @@ 0009AD o="HYUNDAI SYSCOMM, INC." 0009AE o="OKANO ELECTRIC CO.,LTD" 0009AF o="e-generis" -0009B0 o="Onkyo Corporation" +0009B0,6C724A o="Onkyo Technology K.K." 0009B1 o="Kanematsu Electronics, Ltd." 0009B2 o="L&F Inc." 0009B3 o="MCM Systems Ltd" @@ -2333,13 +2330,13 @@ 0009DC o="Galaxis Technology AG" 0009DD o="Mavin Technology Inc." 0009DE o="Samjin Information & Communications Co., Ltd." -0009DF,486DBB,7054B4,CCD3C1 o="Vestel Elektronik San ve Tic. A.Ş." +0009DF,486DBB,54DF1B,64D81B,7054B4,909877,A808CF,CCD3C1,ECBE5F o="Vestel Elektronik San ve Tic. A.S." 0009E0 o="XEMICS S.A." -0009E1,0014A5,001A73,002100,002682,00904B,1C497B,20107A,80029C,AC8112,E8E1E1,F835DD o="Gemtek Technology Co., Ltd." +0009E1,0014A5,001A73,002100,002682,00904B,1C497B,20107A,4CBA7D,5813D3,80029C,A8C246,AC8112,E8E1E1,F835DD o="Gemtek Technology Co., Ltd." 0009E2 o="Sinbon Electronics Co., Ltd." 0009E3 o="Angel Iglesias S.A." 0009E4 o="K Tech Infosystem Inc." -0009E5 o="Hottinger Baldwin Messtechnik GmbH" +0009E5 o="Hottinger Brüel & Kjaer GmbH" 0009E6 o="Cyber Switching Inc." 0009E7 o="ADC Techonology" 0009EA o="YEM Inc." @@ -2355,7 +2352,7 @@ 0009F4 o="Alcon Laboratories, Inc." 0009F5 o="Emerson Network Power Co.,Ltd" 0009F6 o="Shenzhen Eastern Digital Tech Ltd." -0009F7 o="SED, a division of Calian" +0009F7 o="Calian Advanced Technologies" 0009F8 o="UNIMO TECHNOLOGY CO., LTD." 0009F9 o="ART JAPAN CO., LTD." 0009FB o="Philips Patient Monitoring" @@ -2363,7 +2360,7 @@ 0009FD o="Ubinetics Limited" 0009FE o="Daisy Technologies, Inc." 0009FF o="X.net 2000 GmbH" -000A00 o="Mediatek Corp." +000A00,000C43,000CE7,0017A5 o="MediaTek Inc" 000A01 o="SOHOware, Inc." 000A02 o="ANNSO CO., LTD." 000A03 o="ENDESA SERVICIOS, S.L." @@ -2371,7 +2368,7 @@ 000A05 o="Widax Corp." 000A06 o="Teledex LLC" 000A07 o="WebWayOne Ltd" -000A08,146102 o="Alpine Electronics, Inc." +000A08,146102,B89C13,C44F96 o="Alps Alpine" 000A09 o="TaraCom Integrated Products, Inc." 000A0A o="SUNIX Co., Ltd." 000A0B o="Sealevel Systems, Inc." @@ -2565,9 +2562,8 @@ 000AD4 o="CoreBell Systems Inc." 000AD5 o="Brainchild Electronic Co., Ltd." 000AD6 o="BeamReach Networks" -000AD7 o="Origin ELECTRIC CO.,LTD." +000AD7 o="Origin Co., Ltd." 000AD8 o="IPCserv Technology Corp." -000AD9,000E07,000FDE,0012EE,001620,0016B8,001813,001963,001A75,001B59,001CA4,001D28,001E45,001EDC,001FE4,00219E,002298,002345,0023F1,0024EF,0025E7,00EB2D,18002D,1C7B21,205476,2421AB,283F69,3017C8,303926,307512,30A8DB,387862,3C01EF,402BA1,4040A7,40B837,44746C,44D4E0,4C21D0,58170C,584822,5CB524,68764F,6C0E0D,6C23B9,8400D2,848EDF,84C7EA,8C6422,90C115,94CE2C,9C5CF9,A0E453,B4527D-B4527E,B8F934,BC6E64,C43ABE,D05162,D4389C,E063E5 o="Sony Mobile Communications Inc" 000ADA o="Vindicator Technologies" 000ADB,001477 o="Trilliant" 000ADC,94B8C5 o="RuggedCom Inc." @@ -2578,13 +2574,13 @@ 000AE1 o="EG Technology" 000AE2 o="Binatone Electronics International, Ltd" 000AE3 o="YANG MEI TECHNOLOGY CO., LTD" -000AE4,0016D3,001D72,001F16,00262D,5CFF35,80EB77 o="Wistron Corporation" +000AE4,0016D3,001D72,001F16,00262D,5CFF35,80EB77,F8CE72 o="Wistron Corporation" 000AE5 o="ScottCare Corporation" 000AE7 o="ELIOP S.A." 000AE8 o="Cathay Roxus Information Technology Co. LTD" 000AE9 o="AirVast Technology Inc." 000AEA o="ADAM ELEKTRONIK LTD. ŞTI" -000AEB,001478,0019E0,001D0F,002127,0023CD,002586,002719,081F71,085700,0C4B54,0C722C,0C8063,0C8268,10FEED,147590,148692,14CC20,14CF92,14E6E4,18A6F7,18D6C7,1C3BF3,1C4419,1CFA68,206BE7,20DCE6,246968,282CB2,28EE52,30B49E,30B5C2,30FC68,349672,34E894,388345,3C46D8,3C846A,40169F,403F8C,44B32D,480EEC,487D2E,503EAA,50BD5F,50C7BF,50D4F7,50FA84,547595,54A703,54C80F,54E6FC,5C63BF,5C899A,6032B1,603A7C,60E327,645601,6466B3,646E97,647002,68FF7B,6CE873,704F57,7405A5,74DA88,74EA3A,7844FD,78A106,7C8BCA,7CB59B,808917,808F1D,80EA07,8416F9,84D81B,882593,8C210A,8CA6DF,90AE1B,90F652,940C6D,94D9B3,984827,98DAC4,98DED0,9C216A,9CA615,A0F3C1,A42BB0,A8154D,A8574E,AC84C6,B0487A,B04E26,B09575,B0958E,B0BE76,B8F883,BC4699,BCD177,C025E9,C04A00,C06118,C0E42D,C46E1F,C47154,C4E984,CC08FB,CC32E5,CC3429,D03745,D076E7,D0C7C0,D4016D,D46E0E,D807B6,D80D17,D8150D,D84732,D85D4C,DC0077,DCFE18,E005C5,E4D332,E894F6,E8DE27,EC086B,EC172F,EC26CA,EC888F,F0F336,F483CD,F4EC38,F4F26D,F81A67,F8D111,FCD733 o="TP-LINK TECHNOLOGIES CO.,LTD." +000AEB,001478,0019E0,001D0F,002127,0023CD,002586,002719,04F9F8,081F71,085700,0C4B54,0C722C,0C8063,0C8268,10FEED,147590,148692,14CC20,14CF92,14D864,14E6E4,18A6F7,18D6C7,18F22C,1C3BF3,1C4419,1CFA68,206BE7,20DCE6,245A5F,246968,282CB2,28EE52,30B49E,30B5C2,30FC68,349672,34E894,34F716,388345,3C06A7,3C46D8,3C6A48,3C846A,40169F,403F8C,44B32D,480EEC,485F08,487D2E,4C10D5,503EAA,50BD5F,50C7BF,50D4F7,50FA84,547595,54A703,54C80F,54E6FC,584120,5C63BF,5C899A,60292B,6032B1,603A7C,60A3E3,60E327,645601,6466B3,646E97,647002,687724,68DDB7,68FF7B,6CB158,6CE873,704F57,7405A5,743989,74DA88,74EA3A,7844FD,78605B,78A106,7C8BCA,7CB59B,808917,808F1D,80AE54,80EA07,8416F9,84D81B,882593,8C210A,8CA6DF,909A4A,90AE1B,90F652,940C6D,94D9B3,984827,9897CC,98DAC4,98DED0,9C216A,9C4782,9CA615,A0F3C1,A41A3A,A42BB0,A8154D,A8574E,AC84C6,B0487A,B04E26,B09575,B0958E,B0BE76,B8F883,BC4699,BCD177,C025E9,C04A00,C06118,C0C9E3,C0E42D,C46E1F,C47154,C4E984,CC08FB,CC32E5,CC3429,D03745,D076E7,D0C7C0,D4016D,D46E0E,D807B6,D80D17,D8150D,D84732,D85D4C,DC0077,DCFE18,E005C5,E4C32A,E4D332,E894F6,E8DE27,EC086B,EC172F,EC26CA,EC6073,EC888F,F0F336,F42A7D,F46D2F,F483CD,F4848D,F4EC38,F4F26D,F81A67,F86FB0,F88C21,F8C903,F8CE21,F8D111,FCD733 o="TP-LINK TECHNOLOGIES CO.,LTD." 000AEC o="Koatsu Gas Kogyo Co., Ltd." 000AED,0011FC,D47B75 o="HARTING Electronics GmbH" 000AEE o="GCD Hard- & Software GmbH" @@ -2593,8 +2589,8 @@ 000AF1 o="Clarity Design, Inc." 000AF2 o="NeoAxiom Corp." 000AF5 o="Airgo Networks, Inc." -000AF6 o="Emerson Climate Technologies Retail Solutions, Inc." -000AF7,000DB6,001018,001BE9,18C086,38BAB0,D40129,E03E44 o="Broadcom" +000AF6 o="Copeland LP" +000AF7,000DB6,001018,001BE9,18C086,38BAB0,B8CEED,D40129,E03E44 o="Broadcom" 000AF8 o="American Telecare Inc." 000AF9 o="HiConnect, Inc." 000AFA o="Traverse Technologies Australia" @@ -2617,7 +2613,7 @@ 000B0C o="Agile Systems Inc." 000B0D o="Air2U, Inc." 000B0E,00263E o="Trapeze Networks" -000B0F o="Bosch Rexroth" +000B0F o="Bosch Rexroth AG" 000B10 o="11wave Technonlogy Co.,Ltd" 000B11 o="HIMEJI ABC TRADING CO.,LTD." 000B12 o="NURI Telecom Co., Ltd." @@ -2659,8 +2655,8 @@ 000B37 o="MANUFACTURE DES MONTRES ROLEX SA" 000B38 o="Knürr GmbH" 000B39 o="Keisoku Giken Co.,Ltd." -000B3A o="QuStream Corporation" -000B3B,30D32D,B8BEF4,BCF2AF,F4068D o="devolo AG" +000B3A o="PESA Inc." +000B3B,30D32D,88FCA6,B8BEF4,BCF2AF,F4068D o="devolo AG" 000B3C o="Cygnal Integrated Products, Inc." 000B3D o="CONTAL OK Ltd." 000B3E o="BittWare, Inc" @@ -2669,7 +2665,7 @@ 000B41 o="Ing. Büro Dr. Beutlhauser" 000B42 o="commax Co., Ltd." 000B43 o="Microscan Systems, Inc." -000B44 o="Concord IDea Corp." +000B44 o="Concord Idea Corp." 000B47 o="Advanced Energy" 000B48 o="sofrel" 000B49 o="RF-Link System Inc." @@ -2677,8 +2673,8 @@ 000B4B o="VISIOWAVE SA" 000B4C o="Clarion (M) Sdn Bhd" 000B4D o="Emuzed" -000B4E o="VertexRSI, General Dynamics SatCOM Technologies, Inc." -000B4F,60C798,A46011 o="Verifone" +000B4E,00163B o="Communications & Power Industries" +000B4F,60C798,88BF35,A46011,E805DC o="Verifone, Inc." 000B50 o="Oxygnet" 000B51 o="Micetek International Inc." 000B52 o="JOYMAX ELECTRONICS CO. LTD." @@ -2686,7 +2682,7 @@ 000B54 o="BiTMICRO Networks, Inc." 000B55 o="ADInstruments" 000B56 o="Cybernetics" -000B57,086BD7,14B457,588E81,5C0272,60A423,680AE2,842E14,90FD9F,BC33AC,CCCCCC,EC1BBD o="Silicon Laboratories" +000B57,003C84,00BE44,040D84,048727,04CD15,04E3E5,086BD7,08B95F,08DDEB,08FD52,0C2A6F,0C4314,0CAE5F,0CEFF6,142D41,14B457,180DF9,18690A,187A3E,1C34F1,1CC089,20A716,286847,287681,28DBA7,2C1165,30FB10,3410F4,3425B4,348D13,38398F,385B44,385CFB,3C2EF5,403059,403802,449FDA,44E2F8,4C5BB3,4C97A1,50325F,540F57,54DCE9,58263A,583BC2,588E81,5C0272,5C3AA2,5CC7C1,6083DA,60A423,60B647,60B763,60EFAB,64028F,680AE2,6C5CB1,6CA042,6CE4A4,6CFD22,705464,70AC08,70C59C,70D07E,781C9D,7C31FA,7CC6B6,804B50,842712,842E14,847127,84B4DB,84BA20,84FD27,880F62,881A14,8C65A3,8C6FB9,8C73DA,8C8B48,8CF681,901F09,9035EA,90395E,90AB96,90FD9F,943469,94A081,94B216,94DEB8,94EC32,980C33,983268,A46DD4,A49E69,B0C7DE,B0E8E8,B43522,B43A31,B48931,B4E3F9,BC026E,BC33AC,BC8D7E,C02CED,C09B9E,C4D8C8,CC36BB,CC86EC,CCCCCC,D44867,D4FE28,D878F0,D87A3B,DC8E95,E07291,E0798D,E406BF,E456AC,E8E07E,EC1BBD,ECF64C,F044D3,F074BF,F082C0,F0FD45,F4B3B1,F84477,FC4D6A o="Silicon Laboratories" 000B58 o="Astronautics C.A LTD" 000B59 o="ScriptPro, LLC" 000B5A o="HyperEdge" @@ -2703,7 +2699,7 @@ 000B68 o="Addvalue Communications Pte Ltd" 000B69 o="Franke Finland Oy" 000B6A,00138F,001966 o="Asiarock Technology Limited" -000B6B,001BB1,1CD6BE,2824FF,2C9FFB,2CDCAD,30144A,44E4EE,48A9D2,6002B4,64FF0A,746FF7,80EA23,8C579B,90A4DE,984914,A854B2,B00073,B89F09,B8B7F1,BC307D-BC307E,D86162,E037BF o="Wistron Neweb Corporation" +000B6B,001BB1,10E8A7,1CD6BE,205843,2441FE,2824FF,282E89,2C9FFB,2CDCAD,30144A,388D3D,38B800,401A58,442538,44E4EE,48A9D2,589671,58E403,6002B4,60E6F0,64FF0A,7061BE,746FF7,78670E,80EA23,885A85,8C53E6,8C579B,8C8B5B,90A4DE,984914,A854B2,AC919B,B00073,B882F2,B89F09,B8B7F1,BC307D-BC307E,D86162,DC4BA1,E037BF,E8C7CF,F46C68,F86DCC o="WNC Corporation" 000B6C o="Sychip Inc." 000B6D o="SOLECTRON JAPAN NAKANIIDA" 000B6E o="Neff Instrument Corp." @@ -2725,10 +2721,10 @@ 000B7F o="Align Engineering LLC" 000B80 o="Lycium Networks" 000B81 o="Kaparel Corporation" -000B82,C074AD o="Grandstream Networks, Inc." +000B82,144CFF,C074AD o="Grandstream Networks, Inc." 000B83 o="DATAWATT B.V." 000B84 o="BODET" -000B86,001A1E,00246C,04BD88,104F58,186472,1C28AF,204C03,2462CE,24DEC6,3821C7,40E3D6,64E881,6CF37F,703A0E,7C573C,84D47E,883A30,8C85C1,9020C2,94B40F,9C1C12,ACA31E,B45D50,B83A5A,B8D4E7,BC9FE4,CCD083,D015A6,D0D3E0,D8C7C8,E82689,F05C19,F42E7F,F860F0 o="Aruba, a Hewlett Packard Enterprise Company" +000B86,001438,001A1E,00246C,004E35,00C84E,00FD45,040973,04BD88,081814,089734,08F1EA,0C975F,101D6E,104F58,1402EC,147E19,14ABEC,186472,187A3B,1C28AF,1C3003,1C98EC,204C03,20677C,209CB4,20A6CD,2462CE,24DEC6,24F27F,28DE65,303FBB,30F65D,343A20,348A12,34C515,34FCB9,3810F0,3817C3,3821C7,389E4C,38BD7A,3CE86E,40B93C,40E3D6,441244,4448C1,445BED,480020,482F6B,484AE9,489ECB,48B4C3,48DF37,4CAEA3,4CD546,4CD587,50E4E0,54778A,548028,54D7E3,54F0B1,5CA47D,5CBA2C,5CED8C,6026EF,64E881,6828CF,685134,6CC49F,6CF37F,70106F,703A0E,749E75,7C573C,7CA62A,7CA8EC,8030E0,808DB7,84D47E,88225B,882510,883A30,88E9A4,8C7909,8C85C1,9020C2,904C81,9051F8,941882,943FC2,9440C9,9460D5,946424,94B40F,94F128,94FF06,988F00,98F2B3,9C1C12,9C3708,9C8CD8,9CDAB7,9CDC71,A025D7,A0A001,A40E75,A43FA7,A852D4,A85BF7,A8BA25,A8BD27,ACA31E,B01F8C,B0B867,B45D50,B47AF1,B8374B,B837B2,B83A5A,B86CE0,B88303,B8D4E7,BC9FE4,BCD7A5,C8B5AD,CC88C7,CCD083,D015A6,D04DC6,D06726,D0D3E0,D41972,D4E053,D4F5EF,D89403,D8C7C8,DC680C,DCB7AC,E0071B,E4DE40,E81098,E81CA5,E82689,E8F724,EC0273,EC1B5F,EC50AA,EC6794,EC7CBA,EC9B8B,ECEBB8,ECFCC6,F01AA0,F05C19,F061C0,F40343,F42E7F,F49AB1,F4E1FC,F860F0,FC7FF1 o="Hewlett Packard Enterprise" 000B87 o="American Reliance Inc." 000B88 o="Vidisco ltd." 000B89 o="Top Global Technology, Ltd." @@ -2738,8 +2734,8 @@ 000B8D o="Avvio Networks" 000B8E o="Ascent Corporation" 000B8F o="AKITA ELECTRONICS SYSTEMS CO.,LTD." -000B90,0080EA,00D08B,289AF7,84C807 o="ADVA Optical Networking Ltd." -000B91 o="Aglaia Gesellschaft für Bildverarbeitung und Kommunikation mbH" +000B90,0080EA,00D08B,18BC57,289AF7,84C807,B838EF o="ADVA Optical Networking Ltd." +000B91 o="Xovis Germany GmbH" 000B92 o="Ascom Danmark A/S" 000B93 o="Ritter Elektronik" 000B94 o="Digital Monitoring Products, Inc." @@ -2763,7 +2759,7 @@ 000BA8 o="HANBACK ELECTRONICS CO., LTD." 000BA9 o="CloudShield Technologies, Inc." 000BAA o="Aiphone co.,Ltd" -000BAB,C400AD o="Advantech Technology (CHINA) Co., Ltd." +000BAB,C400AD,CC827F o="Advantech Technology (CHINA) Co., Ltd." 000BAD o="PC-PoS Inc." 000BAE o="Vitals System Inc." 000BAF o="WOOJU COMMUNICATIONS Co,.Ltd" @@ -2813,7 +2809,7 @@ 000BE1 o="Nokia NET Product Operations" 000BE2 o="Lumenera Corporation" 000BE3 o="Key Stream Co., Ltd." -000BE4,30317D o="Hosiden Corporation" +000BE4,30317D,D009F5 o="Hosiden Corporation" 000BE5 o="HIMS International Corporation" 000BE6 o="Datel Electronics" 000BE7 o="COMFLUX TECHNOLOGY INC." @@ -2832,7 +2828,7 @@ 000BF5 o="Shanghai Sibo Telecom Technology Co.,Ltd" 000BF6 o="Nitgen Co., Ltd" 000BF7 o="NIDEK CO.,LTD" -000BF8 o="Infinera" +000BF8,3C0268 o="Infinera, Inc." 000BF9 o="Gemstone Communications, Inc." 000BFA o="EXEMYS SRL" 000BFB o="D-NET International Corporation" @@ -2889,7 +2885,7 @@ 000C33 o="Compucase Enterprise Co. Ltd." 000C34 o="Vixen Co., Ltd." 000C35 o="KaVo Dental GmbH & Co. KG" -000C36 o="SHARP TAKAYA ELECTRONICS INDUSTRY CO.,LTD." +000C36 o="S-Takaya Electronics Industry Co.,Ltd." 000C37 o="Geomation, Inc." 000C38 o="TelcoBridges Inc." 000C39 o="Sentinel Wireless Inc." @@ -2901,8 +2897,7 @@ 000C3F o="Cogent Defence & Security Networks," 000C40 o="Altech Controls" 000C41,000E08,000F66,001217,001310,0014BF,0016B6,001839,0018F8,001A70,001C10,001D7E,001EE5,002129,00226B,002369,00259C,20AA4B,48F8B3,586D8F,687F74,98FC11,C0C1C0,C8B373,C8D719 o="Cisco-Linksys, LLC" -000C42,488F5A,4C5E0C,64D154,6C3B6B,744D28,B869F4,C4AD34,CC2DE0,D4CA6D,E48D8C o="Routerboard.com" -000C43 o="Ralink Technology, Corp." +000C42,04F41C,085531,18FD74,2CC81B,488F5A,48A98A,4C5E0C,64D154,6C3B6B,744D28,789A18,B869F4,C4AD34,CC2DE0,D0EA11,D401C3,D4CA6D,DC2C6E,E48D8C,F41E57 o="Routerboard.com" 000C44 o="Automated Interfaces, Inc." 000C45 o="Animation Technologies Inc." 000C46 o="Allied Telesyn Inc." @@ -2943,7 +2938,7 @@ 000C6B o="Kurz Industrie-Elektronik GmbH" 000C6C o="Eve Systems GmbH" 000C6D o="Edwards Ltd." -000C6E,000EA6,00112F,0011D8,0013D4,0015F2,001731,0018F3,001A92,001BFC,001D60,001E8C,001FC6,002215,002354,00248C,002618,00E018,049226,04D4C4,04D9F5,08606E,086266,0C9D92,107B44,10BF48,10C37B,14DAE9,14DDA9,1831BF,1C872C,1CB72C,20CF30,244BFE,2C4D54,2C56DC,2CFDA1,305A3A,3085A9,3497F6,382C4A,38D547,3C7C3F,40167E,40B076,485B39,4CEDFB,50465D,5404A6,54A050,6045CB,60A44C,704D7B,708BCD,74D02B,7824AF,88D7F6,90E6BA,9C5C8E,A85E45,AC220B,AC9E17,B06EBF,BCAEC5,BCEE7B,C86000,D017C2,D45D64,D850E6,E03F49,E0CB4E,F07959,F46D04,F832E4,FCC233 o="ASUSTek COMPUTER INC." +000C6E,000EA6,00112F,0011D8,0013D4,0015F2,001731,0018F3,001A92,001BFC,001D60,001E8C,001FC6,002215,002354,00248C,002618,00E018,04421A,049226,04D4C4,04D9F5,08606E,086266,08BFB8,0C9D92,107B44,107C61,10BF48,10C37B,14DAE9,14DDA9,1831BF,1C872C,1CB72C,20CF30,244BFE,2C4D54,2C56DC,2CFDA1,305A3A,3085A9,30C599,3497F6,382C4A,38D547,3C7C3F,40167E,40B076,485B39,4CEDFB,50465D,50EBF6,5404A6,54A050,581122,6045CB,60A44C,60CF84,704D7B,708BCD,74D02B,7824AF,7C10C9,88D7F6,90E6BA,9C5C8E,A036BC,A0AD9F,A85E45,AC220B,AC9E17,B06EBF,B082E2,BCAEC5,BCEE7B,BCFCE7,C86000,C87F54,CC28AA,D017C2,D45D64,D850E6,E03F49,E0CB4E,E89C25,F02F74,F07959,F46D04,F832E4,FC3497,FCC233 o="ASUSTek COMPUTER INC." 000C6F o="Amtek system co.,LTD." 000C70 o="ACC GmbH" 000C71 o="Wybron, Inc" @@ -2969,10 +2964,10 @@ 000C87 o="AMD" 000C88 o="Apache Micro Peripherals, Inc." 000C89 o="AC Electric Vehicles, Ltd." -000C8A,0452C7,08DF1F,2811A5,2C41A1,4C875D,60ABD2,782B64 o="Bose Corporation" +000C8A,0452C7,08DF1F,2811A5,2C41A1,4C875D,60ABD2,68F21F,782B64,ACBF71,BC87FA,C87B23,E458BC o="Bose Corporation" 000C8B o="Connect Tech Inc" 000C8C o="KODICOM CO.,LTD." -000C8D o="MATRIX VISION GmbH" +000C8D o="Balluff MV GmbH" 000C8E o="Mentor Engineering Inc" 000C8F o="Nergal s.r.l." 000C90 o="Octasic Inc." @@ -3002,7 +2997,7 @@ 000CA8 o="Garuda Networks Corporation" 000CA9 o="Ebtron Inc." 000CAA o="Cubic Transportation Systems Inc" -000CAB,BC6A44 o="Commend International GmbH" +000CAB,2C2D48,BC6A44 o="Commend International GmbH" 000CAC o="Citizen Watch Co., Ltd." 000CAD o="BTU International" 000CAE o="Ailocom Oy" @@ -3024,7 +3019,7 @@ 000CBE o="Innominate Security Technologies AG" 000CBF o="Holy Stone Ent. Co., Ltd." 000CC0 o="Genera Oy" -000CC1,001345,001864,002085 o="Eaton Corporation" +000CC1,001345,001645,001864,002085 o="Eaton Corporation" 000CC2 o="ControlNet (India) Private Limited" 000CC3 o="BeWAN systems" 000CC4 o="Tiptel AG" @@ -3057,15 +3052,14 @@ 000CE2 o="Rolls-Royce" 000CE3 o="Option International N.V." 000CE4 o="NeuroCom International, Inc." -000CE7 o="MediaTek Inc." 000CE8 o="GuangZhou AnJuBao Co., Ltd" 000CE9 o="BLOOMBERG L.P." 000CEA o="aphona Kommunikationssysteme" 000CEB o="CNMP Networks, Inc." -000CEC o="Spectracom Corp." +000CEC o="Safran Trusted 4D Inc." 000CED o="Real Digital Media" 000CEE o="jp-embedded" -000CEF o="Open Networks Engineering Ltd" +000CEF o="ONE Investment Group Limited" 000CF0 o="M & N GmbH" 000CF2 o="GAMESA Eólica" 000CF3 o="CALL IMAGE SA" @@ -3081,7 +3075,7 @@ 000CFF o="MRO-TEK Realty Limited" 000D00 o="Seaway Networks Inc." 000D01 o="P&E Microcomputer Systems, Inc." -000D02,001B8B,003A9D,106682,1CB17F,6CE4DA,8022A7,98F199,A41242,C025A2,F8B797 o="NEC Platforms, Ltd." +000D02,001B8B,003A9D,081086,106682,1C7C98,1CB17F,343839,549B49,6CE4DA,8022A7,98F199,A41242,C025A2,F8B797 o="NEC Platforms, Ltd." 000D03 o="Matrics, Inc." 000D04 o="Foxboro Eckardt Development GmbH" 000D05 o="cybernet manufacturing inc." @@ -3089,6 +3083,7 @@ 000D07 o="Calrec Audio Ltd" 000D08 o="AboveCable, Inc." 000D09 o="Yuehua(Zhuhai) Electronic CO. LTD" +000D0A o="Barco Projection Systems NV" 000D0C o="MDI Security Systems" 000D0D o="ITSupported, LLC" 000D0E o="Inqnet Systems, Inc." @@ -3119,7 +3114,7 @@ 000D27 o="MICROPLEX Printware AG" 000D2A o="Scanmatic AS" 000D2B o="Racal Instruments" -000D2C o="Net2Edge Limited" +000D2C,000F2C,0080A3,00C0F2 o="Lantronix" 000D2D o="NCT Deutschland GmbH" 000D2E o="Matsushita Avionics Systems Corporation" 000D2F o="AIN Comm.Tech.Co., LTD" @@ -3132,7 +3127,7 @@ 000D36 o="Wu Han Routon Electronic Co., Ltd" 000D37 o="WIPLUG" 000D38 o="NISSIN INC." -000D39 o="Network Electronics" +000D39,001457,0016F6 o="Nevion" 000D3A o="Microsoft Corp." 000D3B o="Microelectronics Technology Inc." 000D3C o="i.Tech Dynamic Ltd" @@ -3203,7 +3198,7 @@ 000D84 o="Makus Inc." 000D85 o="Tapwave, Inc." 000D86 o="Huber + Suhner AG" -000D88,000F3D,001195,001346,0015E9,00179A,00195B,001B11,001CF0,001E58,002191,0022B0,002401,00265A,0050BA,340804,5CD998,F07D68 o="D-Link Corporation" +000D88,000F3D,001195,001346,0015E9,00179A,00195B,001B11,001CF0,001E58,002191,0022B0,002401,00265A,0050BA,04BAD6,34029C,340804,3C3332,4086CB,5CD998,642943,8876B9,C8787D,D032C3,DCEAE7,F07D68 o="D-Link Corporation" 000D89 o="Bils Technology Inc" 000D8A o="Winners Electronics Co., Ltd." 000D8B o="T&D Corporation" @@ -3217,12 +3212,12 @@ 000D94 o="AFAR Communications,Inc" 000D95 o="Opti-cell, Inc." 000D96 o="Vtera Technology Inc." -000D97 o="ABB Inc./Tropos" +000D97 o="Hitachi Energy USA Inc." 000D98 o="S.W.A.C. Schmitt-Walter Automation Consult GmbH" 000D99 o="Orbital Sciences Corp.; Launch Systems Group" 000D9A o="INFOTEC LTD" 000D9B o="Heraeus Electro-Nite International N.V." -000D9C o="Elan GmbH & Co KG" +000D9C,14C3C2 o="K.A. Schmersal GmbH & Co. KG" 000D9E o="TOKUDEN OHIZUMI SEISAKUSYO Co.,Ltd." 000D9F o="RF Micro Devices" 000DA0 o="NEDAP N.V." @@ -3233,7 +3228,7 @@ 000DA5 o="Fabric7 Systems, Inc" 000DA6 o="Universal Switching Corporation" 000DA8 o="Teletronics Technology Corporation" -000DA9 o="T.E.A.M. S.L." +000DA9,0016A3 o="INGETEAM" 000DAA o="S.A.Tehnology co.,Ltd." 000DAB o="Parker Hannifin GmbH Electromechanical Division Europe" 000DAC o="Japan CBM Corporation" @@ -3349,6 +3344,7 @@ 000E27 o="Crere Networks, Inc." 000E28 o="Dynamic Ratings P/L" 000E29 o="Shester Communications Inc" +000E2A o="dormakaba USA Inc." 000E2B o="Safari Technologies" 000E2C o="Netcodec co." 000E2D o="Hyundai Digital Technology Co.,Ltd." @@ -3381,19 +3377,19 @@ 000E4E o="Waveplus Technology Co., Ltd." 000E4F o="Trajet GmbH" 000E50,00147F,0018F6,001D68,001F9F,002417,002644,0090D0,0876FF o="Thomson Telecom Belgium" -000E51 o="tecna elettronica srl" +000E51 o="TECNA SpA" 000E52 o="Optium Corporation" 000E53 o="AV TECH CORPORATION" 000E54 o="AlphaCell Wireless Ltd." 000E55 o="AUVITRAN" 000E56 o="4G Systems GmbH & Co. KG" 000E57 o="Iworld Networking, Inc." -000E58,347E5C,48A6B8,542A1B,5CAAFD,7828CA,949F3E,B8E937,F0F6C1 o="Sonos, Inc." -000E59,001556,00194B,001BBF,001E74,001F95,002348,002569,002691,0037B7,00604C,00789E,00CB51,083E5D,08D59D,100645,10D7B0,181E78,18622C,1890D8,209A7D,2420C7,247F20,289EFC,2C3996,2C79D7,2CE412,302478,3093BC,34495B,346B46,348AAE,34DB9C,3835FB,3C1710,3C81D8,4065A3,40C729,40F201,44ADB1,44E9DD,4883C7,48D24F,4C17EB,5464D9,589043,5CB13E,646624,681590,6C2E85,6C9961,6CBAB8,700B01,786559,7C034C,7C03D8,7C2664,8020DA,84A06E,84A1D1,84A423,88A6C6,8C10D4,8CC5B4,90013B,904D4A,907282,94FEF4,981E19,988B5D,A01B29,A039EE,A08E78,A408F5,A86ABB,A89A93,AC3B77,AC84C9,B0982B,B0B28F,B86685,B8D94D,B8EE0E,C0AC54,C0D044,C891F9,C8CD72,CC33BB,D05794,D06EDE,D084B0,D4F829,D86CE9,D87D7F,D8A756,D8D775,E8ADA6,E8BE81,E8F1B0,ECBEDD,F08175,F08261,F46BEF,F4EB38,F8084F,F8AB05 o="Sagemcom Broadband SAS" +000E58,347E5C,38420B,48A6B8,542A1B,5CAAFD,74CA60,7828CA,804AF2,949F3E,B8E937,C43875,F0F6C1 o="Sonos, Inc." +000E59,001556,00194B,001BBF,001E74,001F95,002348,002569,002691,0037B7,00604C,00789E,00CB51,00F8CC,04E31A,083E5D,087B12,08D59D,0CAC8A,100645,102BAA,10D7B0,180C7A,181E78,18622C,186A81,1890D8,203543,2047B5,209A7D,20B82B,2420C7,247F20,289EFC,2C3996,2C79D7,2CE412,2CF2A5,2CFB0F,302478,3067A1,3093BC,30F600,34495B,3453D2,345D9E,346B46,348AAE,34DB9C,3817B1,3835FB,38A659,38E1F4,3C1710,3C5836,3C585D,3C81D8,4065A3,40C729,40F201,44053F,441524,44ADB1,44D453-44D454,44E9DD,482952,4883C7,48D24F,4C17EB,4C195D,506F0C,5447CC,5464D9,54B27E,581DD8,582FF7,58687A,589043,5CB13E,5CFA25,6045CD,6418DF,646624,647B1E,64FA2B,64FD96,681590,6867C7,68ABA9,6C2E85,6C9961,6CBAB8,6CFFCE,700B01,707DA1,786559,788DAF,78C213,7C034C,7C03D8,7C1689,7C2664,7CD4A8,7CE87F,8020DA,841EA3,843E03,84A06E,84A1D1,84A423,880FA2,88A6C6,8C10D4,8C9A8F,8CC5B4,8CFDDE,90013B,904D4A,907282,943C96,94988F,94FEF4,981E19,984265,988B5D,9C2472,A01B29,A02DDB,A039EE,A039F9,A03C20,A0551F,A07F8A,A08E78,A408F5,A42249,A86ABB,A89A93,AC3B77,AC84C9,ACD75B,B01FF4,B05B99,B0924A,B0982B,B0B28F,B0BBE5,B0FC88,B86685,B86AF1,B88C2B,B8D94D,B8EE0E,BCD5ED,C03C04,C0AC54,C0D044,C4EB39,C4EB41-C4EB43,C891F9,C8CD72,CC00F1,CC33BB,CC5830,CCFAF1,D01BF4,D05794,D06DC9,D06EDE,D084B0,D0CF0E,D427FF,D4B5CD,D4F829,D833B7,D86CE9,D87D7F,D8A756,D8CF61,D8D775,DC9272,DC97E6,E4C0E2,E8ADA6,E8BE81,E8D2FF,E8F1B0,ECBEDD,ECFC2F,F04DD4,F07B65,F08175,F08261,F40595,F46BEF,F4EB38,F8084F,F8AB05 o="Sagemcom Broadband SAS" 000E5A o="TELEFIELD inc." 000E5B o="ParkerVision - Direct2Data" 000E5D o="Triple Play Technologies A/S" -000E5E o="Raisecom Technology" +000E5E,201F54,2CB6C8,2CDFE6,4CB911,5476B2,7891E9,980074,A86D5F,B8A14A,C850E9,CCC2E0,E4C770 o="Raisecom Technology CO., LTD" 000E5F o="activ-net GmbH & Co. KG" 000E60 o="360SUN Digital Broadband Corporation" 000E61 o="MICROTROL LIMITED" @@ -3406,12 +3402,12 @@ 000E69 o="China Electric Power Research Institute" 000E6B o="Janitza electronics GmbH" 000E6C o="Device Drivers Limited" -000E6D,0013E0,0021E8,0026E8,00376D,006057,009D6B,00AEFA,044665,1098C3,10A5D0,147DC5,1848CA,1C7022,1C994C,2002AF,2C4CC6,40F308,449160,44A7CF,48EB62,58D50A,5CDAD4,5CF8A1,6021C0,60F189,707414,747A90,784B87,88308A,8C4500,90B686,98F170,A0C9A0,A0CC2B,A408EA,B072BF,B8D7AF,C4AC59,CCC079,D0E44A,D44DA4,D45383,D8C46A,DCEFCA,E8E8B7,F02765,FCC2DE,FCDBB3 o="Murata Manufacturing Co., Ltd." +000E6D,0013E0,0021E8,0026E8,00376D,006057,009D6B,00AEFA,044665,04C461,0C802F,10322C,1098C3,10A5D0,147DC5,1848CA,1C7022,1C994C,2002AF,24CD8D,2C4CC6,2CD1C6,3490EA,40F308,449160,44A7CF,48EB62,5026EF,58D50A,5CDAD4,5CF8A1,6021C0,60F189,707414,7087A7,747A90,784B87,78F505,7CB8DA,80999B,849690,88308A,8C4500,90B686,98F170,9C50D1,A0C9A0,A0CC2B,A0CDF3,A408EA,B0653A,B072BF,B8D7AF,C4AC59,CCC079,D00B27,D01769,D040EF,D0E44A,D44DA4,D45383,D81068,D8C46A,DCEFCA,DCFE23,E84F25,E8E8B7,EC5C84,F02765,F03E05,FC84A7,FCC2DE,FCDBB3 o="Murata Manufacturing Co., Ltd." 000E6E o="MAT S.A. (Mircrelec Advanced Technology)" 000E6F o="IRIS Corporation Berhad" 000E70 o="in2 Networks" 000E71 o="Gemstar Technology Development Ltd." -000E72 o="CTS electronics" +000E72 o="Sesami Technologies Srl" 000E73 o="Tpack A/S" 000E74 o="Solar Telecom. Tech" 000E75 o="New York Air Brake Corp." @@ -3425,7 +3421,7 @@ 000E7E o="ionSign Oy" 000E80 o="Thomson Technology Inc" 000E81 o="Devicescape Software, Inc." -000E82 o="Commtech Wireless" +000E82 o="Infinity Tech" 000E85 o="Catalyst Enterprises, Inc." 000E86 o="Alcatel North America" 000E87 o="adp Gauselmann GmbH" @@ -3435,7 +3431,7 @@ 000E8B o="Astarte Technology Co, Ltd." 000E8D o="Systems in Progress Holding GmbH" 000E8E o="SparkLAN Communications, Inc." -000E8F,00C002,105072,142E5E,3C9872,60CE86,749D79,788102,7894B4,944A0C,B4A5EF,D42122,D460E3,E06066,E81B69 o="Sercomm Corporation." +000E8F,00C002,0C7329,105072,142E5E,3802DE,3C62F0,3C9872,60CE86,749D79,788102,7894B4,944A0C,B4A5EF,D42122,D460E3,E06066,E81B69,F464B6 o="Sercomm Corporation." 000E90 o="PONICO CORP." 000E91 o="Navico Auckland Ltd" 000E92 o="Open Telecom" @@ -3507,7 +3503,7 @@ 000EDA o="C-TECH UNITED CORP." 000EDB o="XiNCOM Corp." 000EDC o="Tellion INC." -000EDD o="SHURE INCORPORATED" +000EDD,D834EE o="SHURE INCORPORATED" 000EDE o="REMEC, Inc." 000EDF o="PLX Technology" 000EE0 o="Mcharge" @@ -3517,7 +3513,7 @@ 000EE5 o="bitWallet, Inc." 000EE6 o="Adimos Systems LTD" 000EE7 o="AAC ELECTRONICS CORP." -000EE8,144D67,5C925E,784476,B85510,F42853 o="Zioncom Electronics (Shenzhen) Ltd." +000EE8,144D67,1C568E,40EE15,5C925E,784476,B85510,F42853 o="Zioncom Electronics (Shenzhen) Ltd." 000EE9 o="WayTech Development, Inc." 000EEA o="Shadong Luneng Jicheng Electronics,Co.,Ltd" 000EEB o="Sandmartin(zhong shan)Electronics Co.,Ltd" @@ -3557,8 +3553,8 @@ 000F11 o="Prodrive B.V." 000F12,00D060 o="Panasonic Europe Ltd." 000F13 o="Nisca corporation" -000F14 o="Mindray Co., Ltd." -000F15,001E80 o="Icotera A/S" +000F14,380B26 o="Mindray Co., Ltd." +000F15,001E80,4CC449 o="Icotera A/S" 000F16 o="JAY HOW TECHNOLOGY CO.," 000F17,002365 o="Insta Elektro GmbH" 000F18 o="Industrial Control Systems" @@ -3577,13 +3573,12 @@ 000F29 o="Augmentix Corporation" 000F2A o="Cableware Electronics" 000F2B o="GREENBELL SYSTEMS" -000F2C o="Uplogix, Inc." 000F2D o="CHUNG-HSIN ELECTRIC & MACHINERY MFG.CORP." 000F2E o="Megapower International Corp." 000F2F o="W-LINX TECHNOLOGY CO., LTD." 000F30 o="Raza Microelectronics Inc" 000F31 o="Allied Vision Technologies Canada Inc" -000F32 o="Lootom Telcovideo Network Wuxi Co Ltd" +000F32,E05689 o="Lootom Telcovideo Network (Wuxi) Co Ltd" 000F33 o="DUALi Inc." 000F36 o="Accurate Techhnologies, Inc." 000F37 o="Xambala Incorporated" @@ -3679,11 +3674,11 @@ 000F9B o="Ross Video Limited" 000F9C o="Panduit Corp" 000F9D,6CA936 o="DisplayLink (UK) Ltd" -000F9E o="Murrelektronik GmbH" -000FA0 o="CANON KOREA BUSINESS SOLUTIONS INC." +000F9E,4CEB76 o="Murrelektronik GmbH" +000FA0 o="Canon Korea Inc." 000FA1 o="Gigabit Systems Inc." 000FA2 o="2xWireless" -000FA3,001802,001D6A,542AA2,5C338E,886AE3,D0AEEC o="Alpha Networks Inc." +000FA3,001802,001D6A,0C83CC,488C78,542AA2,5C338E,886AE3,D0AEEC o="Alpha Networks Inc." 000FA4 o="Sprecher Automation GmbH" 000FA5 o="BWA Technology GmbH" 000FA6 o="S2 Security Corporation" @@ -3748,9 +3743,9 @@ 000FE7 o="Lutron Electronics Co., Inc." 000FE8 o="Lobos, Inc." 000FE9 o="GW TECHNOLOGIES CO.,LTD." -000FEA o="Giga-Byte Technology Co.,LTD." +000FEA,0016E6,001A4D,001D7D,001FD0,00241D,10FFE0,18C04D,1C1B0D,1C6F65,408D5C,50E549,6CF049,74563C,74D435,902B34,94DE80,B42E99,D85ED3,E0D55E,FCAA14 o="GIGA-BYTE TECHNOLOGY CO.,LTD." 000FEB o="Cylon Controls" -000FEC o="ARKUS Inc." +000FEC,84AF1F o="GopherTec Inc." 000FED o="Anam Electronics Co., Ltd" 000FEE o="XTec, Incorporated" 000FEF o="Thales e-Transactions GmbH" @@ -3904,7 +3899,7 @@ 001098 o="STARNET TECHNOLOGIES, INC." 001099 o="InnoMedia, Inc." 00109A o="NETLINE" -00109C o="M-SYSTEM CO., LTD." +00109C o="MG Co., Ltd." 00109D o="CLARINET SYSTEMS, INC." 00109E o="AWARE, INC." 00109F o="PAVO, INC." @@ -3937,12 +3932,12 @@ 0010BE o="MARCH NETWORKS CORPORATION" 0010BF o="InterAir Wireless" 0010C0 o="ARMA, Inc." -0010C1,509F3B,8835C1,D84A87 o="OI ELECTRIC CO.,LTD" +0010C1,509F3B,8835C1,D84A87,D8F1D8 o="OI ELECTRIC CO.,LTD" 0010C2 o="WILLNET, INC." 0010C3 o="CSI-CONTROL SYSTEMS" 0010C4,046169 o="MEDIA GLOBAL LINKS CO., LTD." 0010C5 o="PROTOCOL TECHNOLOGIES, INC." -0010C6,001641,001A6B,001E37,002186,00247E,002713,083A88,0C3CCD,3CE1A1,402CF4,4439C4,6C0B84,70F395,CC52AF,E02A82,E04F43,FC4DD4 o="Universal Global Scientific Industrial Co., Ltd." +0010C6,001641,001A6B,001E37,002186,00247E,002713,047BCB,083A88,0C3CCD,10E18E,387C76,3CE1A1,402CF4,4439C4,6C0B84,702661,70F395,8C3B4A,CC52AF,E02A82,E04F43,FC4DD4 o="Universal Global Scientific Industrial., Ltd" 0010C7 o="DATA TRANSMISSION NETWORK" 0010C8 o="COMMUNICATIONS ELECTRONICS SECURITY GROUP" 0010C9 o="MITSUBISHI ELECTRONICS LOGISTIC SUPPORT CO." @@ -3974,7 +3969,7 @@ 0010E9 o="RAIDTEC LTD." 0010EA o="ADEPT TECHNOLOGY" 0010EB o="SELSIUS SYSTEMS, INC." -0010EC o="RPCG, LLC" +0010EC o="Embedded Planet" 0010ED o="SUNDANCE TECHNOLOGY, INC." 0010EE o="CTI PRODUCTS, INC." 0010EF o="DBTEL INCORPORATED" @@ -3993,7 +3988,7 @@ 001102 o="Aurora Multimedia Corp." 001103 o="kawamura electric inc." 001104 o="TELEXY" -001105,1C501E,FC4BBC o="Sunplus Technology Co., Ltd." +001105,04D168,1C501E,ECEF17,FC4BBC o="Sunplus Technology Co., Ltd." 001106 o="Siemens NV (Belgium)" 001107 o="RGB Networks Inc." 001108 o="Orbital Data Corporation" @@ -4030,7 +4025,7 @@ 00112E o="CEICOM" 001130 o="Allied Telesis (Hong Kong) Ltd." 001131 o="UNATECH. CO.,LTD" -001132 o="Synology Incorporated" +001132,9009D0 o="Synology Incorporated" 001133 o="Siemens AG Austria" 001134 o="MediaCell, Inc." 001135 o="Grandeye Ltd" @@ -4085,7 +4080,7 @@ 00116B o="Digital Data Communications Asia Co.,Ltd" 00116C o="Nanwang Multimedia Inc.,Ltd" 00116D o="American Time and Signal" -00116E,1056CA o="Peplink International Ltd." +00116E,1056CA,D413F8 o="Peplink International Ltd." 00116F o="Netforyou Co., LTD." 001170 o="GSC SRL" 001171 o="DEXTER Communications, Inc." @@ -4110,7 +4105,7 @@ 001187 o="Category Solutions, Inc" 001189 o="Aerotech Inc" 00118A o="Viewtran Technology Limited" -00118B,0020DA,00D095,00E0B1,00E0DA,2CFAA2,9424E1,DC0856,E8E732 o="Alcatel-Lucent Enterprise" +00118B,0020DA,00D095,00E0B1,00E0DA,2CFAA2,782459,883C93,901C9E,9424E1,DC0856,E8E732 o="Alcatel-Lucent Enterprise" 00118C o="Missouri Department of Transportation" 00118D o="Hanchang System Corp." 00118E o="Halytech Mace" @@ -4136,7 +4131,7 @@ 0011A6 o="Sypixx Networks" 0011A7 o="Infilco Degremont Inc." 0011A8 o="Quest Technologies" -0011A9 o="MOIMSTONE Co., LTD" +0011A9,A8E539,D87766 o="Nurivoice Co., Ltd" 0011AA o="Uniclass Technology, Co., LTD" 0011AB o="TRUSTABLE TECHNOLOGY CO.,LTD." 0011AC o="Simtec Electronics" @@ -4186,7 +4181,7 @@ 0011DE o="EURILOGIC" 0011DF o="Current Energy" 0011E0 o="U-MEDIA Communications, Inc." -0011E1 o="Arcelik A.S" +0011E1,64E815 o="Arcelik A.S" 0011E2 o="Hua Jung Components Co., Ltd." 0011E3 o="Thomson, Inc." 0011E4 o="Danelec Electronics A/S" @@ -4205,7 +4200,7 @@ 0011F2 o="Institute of Network Technologies" 0011F3 o="NeoMedia Europe AG" 0011F4 o="woori-net" -0011F5,0016E3,001B9E,002163,0024D2,0026B6,009096,086A0A,08B055,1CB044,24EC99,4CEDDE,7829ED,7CB733,7CDB98,807871,94917F,A0648F,B0EABC,B4749F,B482FE,B4EEB4,C0D962,C8B422,D47BB0,D8FB5E,E0CA94,E0CEC3,E839DF,E8D11B,F46942,F85B3B,FCB4E6 o="ASKEY COMPUTER CORP" +0011F5,0016E3,001B9E,002163,0024D2,0026B6,009096,0833ED,086A0A,08B055,1C24CD,1CB044,24EC99,2CEADC,388871,4CABF8,4CEDDE,505FB5,7493DA,7829ED,7CB733,7CDB98,807871,883374,88DE7C,90D3CF,943251,94917F,94C2EF,A0648F,A08A06,A49733,B0EABC,B4749F,B482FE,B4EEB4,C0D962,C8B422,D47BB0,D8FB5E,DC08DA,E0CA94,E0CEC3,E839DF,E8D11B,F45246,F46942,F85B3B,FC1263,FCB4E6 o="ASKEY COMPUTER CORP" 0011F6 o="Asia Pacific Microsystems , Inc." 0011F7 o="Shenzhen Forward Industry Co., Ltd" 0011F8 o="AIRAYA Corp" @@ -4264,7 +4259,7 @@ 001234 o="Camille Bauer" 001235 o="Andrew Corporation" 001236 o="ConSentry Networks" -001237,00124B,0012D1-0012D2,001783,0017E3-0017EC,00182F-001834,001AB6,0021BA,0022A5,0023D4,0024BA,0035FF,0081F9,0479B7,04A316,04E451,04EE03,080028,0C1C57,0C61CF,0CAE7D,0CB2B7,0CEC80,10082C,102EAF,10CEA9,1442FC,1804ED,1862E4,1893D7,1C4593,1CBA8C,1CDF52,1CE2CC,209148,20C38F,20CD39,247189,247D4D,28EC9A,2C6B7D,2CAB33,304511,3403DE,3414B5,341513,342AF1,34B1F7,380B3C,3881D7,38D269,3C2DB7,3C7DB1,3CA308,4006A0,402E71,405FC2,40984E,40BD32,44C15C,44EAD8,4C2498,4C3FD3,50338B,5051A9,505663,506583,507224,508CB1,50F14A,544A16,546C0E,547DCD,587A62,5893D8,5C313E,5C6B32,5CF821,606405,607771,609866,6433DB,64694E,647BD4,649C8E,64CFD9,684749,689E19,68C90B,6CC374,6CECEB,7086C1,70E56E,70FF76,74D6EA,74DAEA,74E182,780473,78A504,78C5E5,78DB2F,78DEE4,7C010A,7C3866,7C669D,7C8EE4,7CEC79,8030DC,806FB0,847E40,84DD20,84EB18,883314,883F4A,884AEA,88C255,8C8B83,9059AF,907065,909A77,90D7EB,90E202,948854,94E36D,98072D,985945,985DAD,987BF3,9884E3,9C1D58,A0E6F8,A0F6FD,A406E9,A434F1,A4D578,A4DA32,A81087,A81B6A,A863F2,A8E2C1,A8E77D,B07E11,B09122,B0B113,B0B448,B0D5CC,B452A9,B4994C,B4BC7C,B4EED4,B8804F,B8FFFE,BC0DA5,BC6A29,C0E422,C464E3,C4BE84,C4EDBA,C4F312,C83E99,C8A030,C8DF84,C8FD19,CC78AB,CC8CE3,D003EB,D00790,D03761,D03972,D05FB8,D08CB5,D0B5C2,D0FF50,D43639,D494A1,D4F513,D8543A,D8714D,D8952F,D8A98B,D8DDFD,E06234,E07DEA,E0C79D,E0D7BA,E0E5CF,E415F6,E4E112,E8EB11,EC1127,EC24B8,F045DA,F0B5D1,F0C77F,F0F8F2,F45EAB,F4844C,F4B85E,F4E11E,F4FC32,F83002,F83331,F8369B,F88A5E,FC0F4B,FC6947 o="Texas Instruments" +001237,00124B,0012D1-0012D2,001783,0017E3-0017EC,00182F-001834,001AB6,0021BA,0022A5,0023D4,0024BA,0035FF,0081F9,00AAFD,042322,0425E8,044707,0479B7,04A316,04E451,04EE03,080028,0804B4,08D593,0C0ADF,0C1C57,0C4BEE,0C61CF,0CAE7D,0CB2B7,0CEC80,10082C,102EAF,10CABF,10CEA9,1442FC,147F0F,149CEF,1804ED,182C65,184516,1862E4,1893D7,1C4593,1C6349,1CBA8C,1CDF52,1CE2CC,200B16,209148,20C38F,20CD39,20D778,247189,247625,247D4D,249F89,283C90,28B5E8,28EC9A,2C6B7D,2CA774,2CAB33,2CD3AD,3030D0,304511,30AF7E,30E283,3403DE,3408E1,34105D,3414B5,341513,342AF1,3468B5,3484E4,34B1F7,34C459,380B3C,3881D7,38AB41,38D269,38E2C4,3C2DB7,3C7DB1,3CA308,3CE002,3CE064,3CE4B0,4006A0,402E71,405FC2,407912,40984E,40BD32,40F3B0,443E8A,446B1F,4488BE,44C15C,44EAD8,44EE14,48701E,48849D,48A3BD,4C2498,4C3FD3,4CDA38,50338B,5051A9,505663,506583,507224,508CB1,509893,50F14A,544538,544A16,546C0E,547DCD,54FEEB,582B0A,587A62,5893D8,58A15F,58D15A,5C313E,5C6B32,5CF821,602602,606405,607771,609866,60B6E1,60E85B,641C10,6433DB,64694E,647060,647BD4,648CBB,649C8E,64CFD9,6823B0,684406,684749,685E1C,689E19,68C90B,68E74A,6C1AEA,6C302A,6C79B8,6CB2FD,6CC374,6CECEB,7086C1,70B950,70E56E,70FF76,7402E1,742981,7446B3,74A58C,74B839,74D285,74D6EA,74DAEA,74E182,780473,78A504,78C5E5,78CD55,78DB2F,78DEE4,7C010A,7C3866,7C669D,7C72E7,7C8EE4,7CE269,7CEC79,8030DC,806FB0,80C41B,80F5B5,847293,847E40,84BB26,84C692,84DD20,84EB18,8801F9,880CE0,883314,883F4A,884AEA,88546B,88C255,88CFCD,8C0879,8C8B83,9006F2,904846,9059AF,907065,907BC6,909A77,90CEB8,90D7EB,90E202,945044,948854,94A9A8,94E36D,98038A,98072D,985945,985DAD,987BF3,9884E3,988924,98F07B,98F487,9C1D58,A06C65,A0D91A,A0E6F8,A0F6FD,A406E9,A434F1,A45C25,A4B0F5,A4C34E,A4D578,A4DA32,A81087,A81B6A,A863F2,A8E2C1,A8E77D,AC1F0F,AC4D16,B010A0,B07E11,B09122,B0B113,B0B448,B0D278,B0D5CC,B4107B,B452A9,B4994C,B4AC9D,B4BC7C,B4EED4,B83DF6,B8804F,B894D9,B8FFFE,BC0DA5,BC6A29,C04A0E,C06380,C0D60A,C0E422,C45746,C464E3,C4BE84,C4D36A,C4EDBA,C4F312,C83E99,C8A030,C8C83F,C8DF84,C8FD19,CC037B,CC3331,CC45A5,CC78AB,CC8CE3,CCB54C,CCDAB5,D003EB,D00790,D02EAB,D03761,D03972,D05FB8,D08CB5,D0B5C2,D0FF50,D4060F,D43639,D494A1,D4E95E,D4F513,D81D13,D852FA,D8543A,D8714D,D8952F,D8A98B,D8B673,D8DDFD,DCBE04,DCF31C,E06234,E07DEA,E0928F,E0C79D,E0D7BA,E0DEF2,E0E5CF,E0FFF1,E415F6,E4521E,E45D39,E4E112,E4FA5B,E8EB11,EC09C9,EC1127,EC24B8,EC9A34,ECBFD0,F010A5,F045DA,F05ECD,F0B5D1,F0C77F,F0F8F2,F4063C,F45EAB,F46077,F4844C,F4B85E,F4B898,F4E11E,F4FC32,F82E0C,F83002,F83331,F8369B,F85548,F88A5E,F8916F,F8FB90,FC0F4B,FC45C3,FC6947,FCA89B,FCDEC5 o="Texas Instruments" 001238 o="SetaBox Technology Co., Ltd." 001239 o="S Net Systems Inc." 00123A o="Posystech Inc., Co." @@ -4282,7 +4277,7 @@ 00124C o="BBWM Corporation" 00124D o="Inducon BV" 00124E o="XAC AUTOMATION CORP." -00124F o="nVent" +00124F o="Chemelex LLC" 001250 o="Tokyo Aircaft Instrument Co., Ltd." 001251 o="SILINK" 001252 o="Citronix, LLC" @@ -4320,7 +4315,7 @@ 001274 o="NIT lab" 001275 o="Sentilla Corporation" 001276 o="CG Power Systems Ireland Limited" -001277 o="Korenix Technologies Co., Ltd." +001277 o="Beijer Electronics Corp." 001278 o="International Bar Code" 00127A o="Sanyu Industry Co.,Ltd." 00127B o="VIA Networking Technologies, Inc." @@ -4342,7 +4337,7 @@ 001290 o="KYOWA Electric & Machinery Corp." 001291 o="KWS Computersysteme GmbH" 001292 o="Griffin Technology" -001293,00D632 o="GE Energy" +001293 o="ABB Switzerland Ltd." 001294 o="SUMITOMO ELECTRIC DEVICE INNOVATIONS, INC" 001295 o="Aiware Inc." 001296 o="Addlogix" @@ -4367,7 +4362,7 @@ 0012AA o="IEE, Inc." 0012AB o="WiLife, Inc." 0012AC o="ONTIMETEK INC." -0012AD o="IDS GmbH" +0012AD,A4D094 o="VIVAVIS AG" 0012AE o="HLS HARD-LINE Solutions Inc." 0012AF o="ELPRO Technologies" 0012B0 o="Efore Oyj (Plc)" @@ -4387,7 +4382,7 @@ 0012BE o="Astek Corporation" 0012BF,001A2A,001D19,002308,00264D,1883BF,1CC63C,4C09D4,507E5D,5CDC96,743170,7C4FB5,849CA6,880355,88252C,9C80DF,A8D3F7 o="Arcadyan Technology Corporation" 0012C0 o="HotLava Systems, Inc." -0012C1,001C7F,00A08E o="Check Point Software Technologies" +0012C1 o="Check Point Software Technologies Ltd." 0012C2 o="Apex Electronics Factory" 0012C3 o="WIT S.A." 0012C4 o="Viseon, Inc." @@ -4414,7 +4409,7 @@ 0012DF o="Novomatic AG" 0012E0 o="Codan Limited" 0012E1 o="Alliant Networks, Inc" -0012E2 o="ALAXALA Networks Corporation" +0012E2,D4354A o="ALAXALA Networks Corporation" 0012E3 o="Agat Soft LLC" 0012E4 o="ZIEHL industrie-electronik GmbH + Co KG" 0012E5 o="Time America, Inc." @@ -4427,9 +4422,9 @@ 0012EC o="Movacolor b.v." 0012ED o="AVG Advanced Technologies" 0012EF,70FC8C o="OneAccess SA" -0012F0,001302,001320,0013CE,0013E8,001500,001517,00166F,001676,0016EA-0016EB,0018DE,0019D1-0019D2,001B21,001B77,001CBF-001CC0,001DE0-001DE1,001E64-001E65,001E67,001F3B-001F3C,00215C-00215D,00216A-00216B,0022FA-0022FB,002314-002315,0024D6-0024D7,0026C6-0026C7,00270E,002710,0028F8,004238,00BB60,00C2C6,00DBDF,00E18C,0433C2,046C59,04D3B0,04EA56,04ED33,081196,085BD6,087190,08D23E,08D40C,0C5415,0C7A15,0C8BFD,0CD292,0CDD24,1002B5,100BA9,104A7D,10F005,144F8A,14ABC5,14F6D8,181DEA,182649,183DA2,185680,185E0F,18FF0F,1C1BB5,1C4D70,2016B9,207918,24418C,247703,24EE9A,2816AD,287FCF,28B2BD,28C63F,2C6E85,2CDB07,302432,303A64,30E37A,340286,3413E8,342EB7,34415D,347DF6,34CFF6,34DE1A,34E12D,34E6AD,34F39A,34F64B,380025,386893,38BAF8,38DEAD,3C58C2,3C6AA7,3C9C0F,3CA9F4,3CF011,3CF862,3CFDFE,4025C2,4074E0,40A3CC,40A6B7,40EC99,44032C,448500,44AF28,484520,4851B7,4889E7,48A472,48F17F,4C1D96,4C3488,4C79BA,4C8093,4CEB42,502DA2,5076AF,50E085,50EB71,548D5A,5891CF,58946B,58961D,58A023,58A839,58FB84,5C514F,5C5F67,5C80B6,5C879C,5CC5D4,5CCD5B,5CD2E4,5CE0C5,6036DD,605718,606720,606C66,60F262,60F677,6432A8,644C36,645D86,648099,64BC58,64D4DA,6805CA,680715,681729,68545A,685D43,68ECC5,6C2995,6C6A77,6C8814,6CA100,701CE7,709CD1,7470FD,74D83E,74E50B,74E5F9,780CB8,782B46,78929C,78FF57,7C2A31,7C5CF8,7C67A2,7C7635,7C7A91,7CB0C2,7CB27D,7CCCB8,80000B,801934,803253,8086F2,809B20,843A4B,84683E,84A6C8,84C5A6,84EF18,84FDD1,88532E,887873,88B111,8C705A,8C8D28,8CA982,8CC681,902E1C,9049FA,9061AE,907841,90CCDF,90E2BA,94659C,94B86D,94E6F7,94E70B,982CBC,983B8F,984FEE,98541B,988D46,98AF65,9C2976,9C4E36,9CDA3E,9CFCE8,A0369F,A0510B,A08869,A088B4,A0A4C5,A0A8CD,A0AFBD,A0C589,A0D37A,A402B9,A434D9,A44E31,A4B1C1,A4BF01,A4C3F0,A4C494,A86DAA,A87EEA,AC1203,AC2B6E,AC675D,AC7289,AC7BA1,ACED5C,ACFDCE,B0359F,B07D64,B0A460,B46921,B46BFC,B46D83,B49691,B4B676,B4D5BD,B80305,B808CF,B88198,B88A60,B89A2A,B8B81E,B8BF83,BC0F64,BC17B8,BC542F,BC7737,BCA8A6,C0B6F9,C0B883,C48508,C4D987,C809A8,C82158,C8348E,C858C0,C8B29B,C8F733,CC2F71,CC3D82,CCD9AC,CCF9E4,D0577B,D07E35,D0ABD5,D0C637,D4258B,D43B04,D46D6D,D4D252,D83BBF,D8F2CA,D8F883,D8FC93,DC1BA1,DC41A9,DC5360,DC7196,DC8B28,DCA971,DCFB48,E09467,E09D31,E0D464,E0D4E8,E4029B,E442A6,E45E37,E470B8,E4A471,E4A7A0,E4B318,E4F89C,E4FAFD,E82AEA,E8B1FC,F0421C,F0D5BF,F40669,F48C50,F49634,F4D108,F81654,F83441,F85971,F8633F,F894C2,F8AC65,F8E4E3,F8F21E,FC4482,FC7774,FCB3BC,FCF8AE o="Intel Corporate" +0012F0,001302,001320,0013CE,0013E8,001500,001517,00166F,001676,0016EA-0016EB,0018DE,0019D1-0019D2,001B21,001B77,001CBF-001CC0,001DE0-001DE1,001E64-001E65,001E67,001F3B-001F3C,00215C-00215D,00216A-00216B,0022FA-0022FB,002314-002315,0024D6-0024D7,0026C6-0026C7,00270E,002710,0028F8,004238,0072EE,00919E,009337,00A554,00BB60,00C2C6,00D49E,00D76D,00DBDF,00E18C,0433C2,0456E5,046C59,04CF4B,04D3B0,04E8B9,04EA56,04ECD8,04ED33,04F0EE,081196,085BD6,086AC5,087190,088E90,089DF4,08B4D2,08D23E,08D40C,08EB21,0C5415,0C7A15,0C8BFD,0C9192,0C9A3C,0CD292,0CDD24,1002B5,100BA9,102E00,103D1C,104A7D,105107,105FAD,1091D1,10A51D,10F005,10F60A,1418C3,144F8A,14755B,14857F,14ABC5,14F6D8,181DEA,182649,183DA2,185680,185E0F,189341,18CC18,18FF0F,1C1BB5,1C4D70,1C9957,1CC10C,2016B9,201E88,203A43,207918,20BD1D,20C19B,24418C,247703,24EB16,24EE9A,280C50,2811A8,2816AD,286B35,287FCF,289200,289529,28A06B,28A44A,28B2BD,28C5D2,28C63F,28D0EA,28DFEB,2C0DA7,2C3358,2C6DC1,2C6E85,2C7BA0,2C8DB1,2CDB07,2CEAFC,300505,302432,303A64,303EA7,30894A,30E37A,30E3A4,30F6EF,340286,3413E8,342EB7,34415D,347DF6,34C93D,34CFF6,34DE1A,34E12D,34E6AD,34F39A,34F64B,34FD70,380025,381868,386893,387A0E,3887D5,38BAF8,38DEAD,38FC98,3C219C,3C58C2,3C6AA7,3C9C0F,3CA9F4,3CE9F7,3CF011,3CF862,3CFDFE,401C83,4025C2,4074E0,40A3CC,40A6B7,40C73C,40D133,40EC99,44032C,4438E8,444988,448500,44A3BB,44AF28,44E517,484520,4851B7,4851C5,48684A,4889E7,48A472,48AD9A,48E150,48F17F,4C034F,4C0F3E,4C1D96,4C3488,4C445B,4C496C,4C5F70,4C77CB,4C796E,4C79BA,4C8093,4CA954,4CB04A,4CEB42,50284A,502DA2,502F9B,5076AF,507C6F,508492,50E085,50EB71,5414F3,543631,546CEB,548D5A,54E4ED,581CF8,586C25,586D67,5891CF,58946B,58961D,58A023,58A839,58CE2A,58FB84,5C514F,5C5F67,5C6783,5C80B6,5C879C,5CB26D,5CB47E,5CC5D4,5CCD5B,5CD2E4,5CE0C5,5CE42A,6036DD,60452E,605718,606720,606C66,60A5E2,60DD8E,60E32B,60F262,60F677,6432A8,64497D,644A7D,644C36,645D86,646EE0,6479F0,648099,64BC58,64D4DA,64D69A,64DE6D,6805CA,680715,681729,683421,683E26,68545A,685D43,687A64,68C6AC,68ECC5,6C2995,6C2F80,6C4CE2,6C6A77,6C8814,6C9466,6CA100,6CF6DA,6CFE54,700810,7015FB,701AB8,701CE7,703217,709CD1,70A6CC,70A8D3,70CD0D,70CF49,70D823,70D8C2,7404F1,7413EA,743AF4,7470FD,74D83E,74E50B,74E5F9,780CB8,782B46,78929C,78AF08,78FF57,7C214A,7C2A31,7C5079,7C5CF8,7C67A2,7C70DB,7C7635,7C7A91,7CB0C2,7CB27D,7CB566,7CCCB8,80000B,801316,801934,803253,8038FB,8045DD,808489,8086F2,809B20,80B655,80C01E,80E4BA,84083A,84144D,841B77,843A4B,845CF3,84683E,847B57,849265,84A6C8,84C5A6,84D1C1,84EF18,84FDD1,88532E,887873,88B111,88D82E,88F4DA,8C1759,8C1D96,8C554A,8C705A,8C8D28,8CA982,8CB87E,8CC681,8CE9EE,8CF8C5,9009DF,901057,902E1C,9049FA,9061AE,906584,907841,90B021,90CCDF,90E2BA,94270E,94390E,9453FF,94659C,94B609,94B86D,94E23C,94E6F7,94E70B,982CBC,983B8F,9843FA,984FEE,98541B,98597A,985F41,988D46,98AF65,98BD80,98FE3E,9C2976,9C4E36,9C65EB,9C67D6,9C971B,9CB150,9CDA3E,9CFCE8,A002A5,A02942,A0369F,A04F52,A0510B,A05950,A08069,A08527,A08869,A088B4,A0A4C5,A0A8CD,A0AFBD,A0B339,A0C589,A0D365,A0D37A,A0E70B,A402B9,A434D9,A4423B,A44E31,A46BB6,A4B1C1,A4BF01,A4C3F0,A4C494,A4F933,A8595F,A864F1,A86DAA,A87EEA,AC1203,AC16DE,AC198E,AC2B6E,AC3DCB,AC45EF,AC5AFC,AC675D,AC7289,AC74B1,AC7BA1,AC8247,ACED5C,ACFDCE,B0359F,B03CDC,B047E9,B06088,B07D64,B0A460,B0DCEF,B40EDE,B46921,B46BFC,B46D83,B48351,B49691,B4B676,B4D5BD,B80305,B808CF,B88198,B88A60,B89A2A,B8B81E,B8BF83,B8F775,BC0358,BC091B,BC0F64,BC17B8,BC3898,BC542F,BC6EE2,BC7737,BCA8A6,BCCD99,BCD22C,BCF105,BCF171,C03C59,C0A5E8,C0A810,C0B6F9,C0B883,C403A8,C40F08,C42360,C43D1A,C4474E,C475AB,C48508,C4BDE5,C4D0E3,C4D987,C4FF99,C809A8,C8154E,C82158,C8348E,C858B3,C858C0,C85EA9,C86E08,C88A9A,C895CE,C8B29B,C8CB9E,C8E265,C8F733,CC1531,CC2F71,CC3D82,CCD9AC,CCF9E4,D03C1F,D0577B,D0577E,D06578,D07E35,D0ABD5,D0C637,D4258B,D43B04,D4548B,D46D6D,D494A9,D4AB61,D4D252,D4D853,D4E98A,D4F32D,D83BBF,D8F2CA,D8F883,D8FC93,DC1BA1,DC2148,DC215C,DC41A9,DC4546,DC4628,DC5360,DC7196,DC8B28,DC9009,DC97BA,DCA971,DCFB48,E02BE9,E02E0B,E03AAA,E07256,E08F4C,E09467,E09D31,E0C264,E0C932,E0D045,E0D464,E0D4E8,E0D55D,E0E258,E4029B,E40D36,E41FD5,E442A6,E44AE0,E45E37,E46017,E470B8,E4A471,E4A7A0,E4B318,E4C767,E4F89C,E4FAFD,E4FD45,E82AEA,E862BE,E884A5,E8B0C5,E8B1FC,E8BFB8,E8BFE1,E8C829,E8F408,EC4C8C,EC63D7,EC8E77,ECE7A7,ECED04,F020FF,F0421C,F057A6,F077C3,F09E4A,F0B2B9,F0B61E,F0D415,F0D5BF,F40669,F42679,F43BD8,F44637,F44EE3,F46D3F,F47B09,F48C50,F49634,F4A475,F4B301,F4C88A,F4CE23,F4D108,F81654,F83441,F85971,F85EA0,F8633F,F894C2,F89E94,F8AC65,F8B54D,F8CF52,F8E4E3,F8F21E,F8FE5E,FC4482,FC6D77,FC7774,FC9E53,FCB3AA,FCB3BC,FCF8AE o="Intel Corporate" 0012F1 o="IFOTEC" -0012F3 o="connectBlue AB" +0012F3,20BA36,5464DE,54F82A,6009C3,6C1DEB,80A197,90F861,B8F44F,CCF957,D4CA6E o="u-blox AG" 0012F4 o="Belco International Co.,Ltd." 0012F5 o="Imarda New Zealand Limited" 0012F6 o="MDK CO.,LTD." @@ -4502,7 +4497,7 @@ 001343 o="Matsushita Electronic Components (Europe) GmbH" 001344 o="Fargo Electronics Inc." 001348 o="Artila Electronics Co., Ltd." -001349,0019CB,0023F8,00A0C5,04BF6D,082697,107BEF,1C740D,28285D,404A03,4C9EFF,4CC53E,5067F0,50E039,54833A,588BF3,5C6A80,5CE28C,5CF4AB,603197,88ACC0,8C5973,90EF68,980D67,A0E4CB,B0B2DC,B8D526,B8ECA3,BC9911,BCCF4F,C8544B,C86C87,CC5D4E,D8912A,E4186B,E8377A,EC3EB3,EC43F6,FCF528 o="Zyxel Communications Corporation" +001349,0019CB,0023F8,00A0C5,04BF6D,082697,1071B3,107BEF,143375,14360E,1C740D,28285D,30BD13,404A03,48EDE6,4C9EFF,4CC53E,5067F0,50E039,54833A,588BF3,5C648E,5C6A80,5CE28C,5CF4AB,603197,64DD68,6C4F89,7049A2,78C57D,7C7716,80EA0B,88ACC0,8C5973,909F22,90EF68,980D67,A0E4CB,B0B2DC,B8D526,B8ECA3,BC7EC3,BC9911,BCCF4F,C02E5F,C49A31,C83374,C8544B,C86C87,CC5D4E,D41AD1,D43DF3,D8912A,D8ECE5,E4186B,E8377A,EC3EB3,EC43F6,F08756,F44D5C,F80DA9,FC22F4,FC9F2A,FCF528 o="Zyxel Communications Corporation" 00134A o="Engim, Inc." 00134B o="ToGoldenNet Technology Inc." 00134C o="YDT Technology International" @@ -4534,7 +4529,7 @@ 001369 o="Honda Electron Co., LED." 00136A o="Hach Lange Sarl" 00136B o="E-TEC" -00136C,00213E o="TomTom" +00136C o="TomTom" 00136D o="Tentaculus AB" 00136E o="Techmetro Corp." 00136F o="PacketMotion, Inc." @@ -4564,10 +4559,10 @@ 00138E o="FOAB Elektronik AB" 001390 o="Termtek Computer Co., Ltd" 001391 o="OUEN CO.,LTD." -001392,001D2E,001F41,00227F,002482,0025C4,044FAA,0CF4D5,184B0D,187C0B,1C3A60,1CB9C4,205869,24792A,24C9A1,28B371,2C5D93,2CC5D3,2CE6CC,3087D9,3420E3,348F27,34FA9F,38FF36,441E98,4CB1CD,50A733,543D37,54EC2F,589396,58B633,60D02C,689234,6CAAB3,70CA97,743E2B,74911A,800384,84183A,8C0C90,8CFE74,903A72,94BFC4,94F665,AC6706,B479C8,C08ADE,C0C520,C4017C,C4108A,C803F5,C80873,D4684D,D4C19E,D838FC,DCAEEB,E0107F,E81DA8,EC58EA,EC8CA2,F03E90,F0B052,F8E71E o="Ruckus Wireless" +001392,001D2E,001F41,00227F,002482,0025C4,003358,00E63A,044FAA,0CF4D5,10F068,184B0D,187C0B,1C3A60,1CB9C4,205869,24792A,24C9A1,28B371,2C5D93,2CAB46,2CC5D3,2CE6CC,3087D9,341593,3420E3,348F27,34FA9F,38453B,38FF36,3C46A1,40B82D,441E98,4CB1CD,50A733,543D37,54EC2F,589396,58B633,58FB96,5C836C,5CDF89,60D02C,689234,6CAAB3,704777,70B258,70CA97,74317E,743E2B,74911A,789F6A,800384,80BC37,80F0CF,84183A,842388,8C0C90,8C7A15,8CFE74,903A72,94B34F,94BFC4,94F665,A80BFB,AC6706,ACDE01,B07C51,B479C8,B4E53E,C08ADE,C0C520,C0C70A,C4017C,C4108A,C803F5,C80873,C8848C,C8A608,CC1B5A,CC2DD2,D04F58,D4684D,D4BD4F,D4C19E,D838FC,DCAEEB,E0107F,E81DA8,EC58EA,EC8CA2,F03E90,F06FCE,F0B052,F8E71E,FC5C45 o="Ruckus Wireless" 001393 o="Panta Systems, Inc." 001394 o="Infohand Co.,Ltd" -001395 o="congatec AG" +001395 o="congatec GmbH" 001396 o="Acbel Polytech Inc." 001398 o="TrafficSim Co.,Ltd" 001399 o="STAC Corporation." @@ -4595,7 +4590,7 @@ 0013B1 o="Intelligent Control Systems (Asia) Pte Ltd" 0013B2 o="Carallon Limited" 0013B3 o="Ecom Communications Technology Co., Ltd." -0013B4 o="Appear TV" +0013B4 o="Appear AS" 0013B5 o="Wavesat" 0013B6 o="Sling Media, Inc." 0013B7 o="Scantech ID" @@ -4614,7 +4609,7 @@ 0013C6 o="OpenGear, Inc" 0013C7 o="IONOS Co.,Ltd." 0013C9 o="Beyond Achieve Enterprises Ltd." -0013CA o="Pico Digital" +0013CA o="ATX" 0013CB o="Zenitel Norway AS" 0013CC o="Tall Maple Systems" 0013CD o="MTI co. LTD" @@ -4669,7 +4664,7 @@ 001406 o="Go Networks" 001407 o="Sperian Protection Instrumentation" 001408 o="Eka Systems Inc." -001409 o="MAGNETI MARELLI S.E. S.p.A." +001409,605699 o="MAGNETI MARELLI S.E. S.p.A." 00140A o="WEPIO Co., Ltd." 00140B o="FIRST INTERNATIONAL COMPUTER, INC." 00140C o="GKB CCTV CO., LTD." @@ -4685,7 +4680,7 @@ 001418 o="C4Line" 001419 o="SIDSA" 00141A o="DEICY CORPORATION" -00141D o="LTI-Motion GmbH" +00141D o="KEBA Industrial Automation Germany GmbH" 00141E o="P.A. Semi, Inc." 00141F o="SunKwang Electronics Co., Ltd" 001420 o="G-Links networking company" @@ -4699,7 +4694,7 @@ 001429 o="V Center Technologies Co., Ltd." 00142B o="Edata Communication Inc." 00142C o="Koncept International, Inc." -00142D o="Toradex AG" +00142D,8C06CB o="Toradex AG" 00142E o="77 Elektronika Kft." 00142F o="Savvius" 001430 o="ViPowER, Inc" @@ -4710,7 +4705,6 @@ 001435 o="CityCom Corp." 001436 o="Qwerty Elektronik AB" 001437 o="GSTeletech Co.,Ltd." -001438,004E35,00FD45,040973,089734,08F1EA,1402EC,1C98EC,20677C,20A6CD,24F27F,34FCB9,3817C3,40B93C,4448C1,484AE9,48DF37,4CAEA3,54778A,548028,5CBA2C,70106F,8030E0,808DB7,88E9A4,904C81,941882,943FC2,9440C9,94F128,98F2B3,9C8CD8,9CDC71,A8BD27,B0B867,B47AF1,B88303,C8B5AD,D06726,D4F5EF,D89403,DC680C,E0071B,E8F724,EC9B8B,ECEBB8,F40343 o="Hewlett Packard Enterprise" 001439 o="Blonder Tongue Laboratories, Inc" 00143A o="RAYTALK INTERNATIONAL SRL" 00143B o="Sensovation AG" @@ -4739,10 +4733,9 @@ 001454 o="Symwave" 001455 o="Coder Electronics Corporation" 001456 o="Edge Products" -001457 o="T-VIPS AS" 001458 o="HS Automatic ApS" 001459 o="Moram Co., Ltd." -00145A o="Neratec Solutions AG" +00145A o="Westermo Neratec AG" 00145B o="SeekerNet Inc." 00145C o="Intronics B.V." 00145D o="WJ Communications, Inc." @@ -4788,7 +4781,7 @@ 00148E o="Tele Power Inc." 00148F o="Protronic (Far East) Ltd." 001490 o="ASP Corporation" -001491 o="Daniels Electronics Ltd. dbo Codan Rado Communications" +001491 o="Daniels Electronics Ltd. dba Codan Radio Communications" 001492 o="Liteon, Mobile Media Solution SBU" 001493 o="Systimax Solutions" 001494 o="ESU AG" @@ -4933,7 +4926,7 @@ 001538 o="RFID, Inc." 001539 o="Technodrive srl" 00153A o="Shenzhen Syscan Technology Co.,Ltd." -00153B o="EMH metering GmbH & Co. KG" +00153B,581F19 o="EMH Metering GmbH & Co. KG" 00153C o="Kprotech Co., Ltd." 00153D o="ELIM PRODUCT CO." 00153E o="Q-Matic Sweden AB" @@ -4976,7 +4969,7 @@ 00156A o="DG2L Technologies Pvt. Ltd." 00156B o="Perfisans Networks Corp." 00156C o="SANE SYSTEM CO., LTD" -00156D,002722,0418D6,18E829,245A4C,24A43C,44D9E7,687251,68D79A,7483C2,74ACB9,784558,788A20,802AA8,B4FBE4,D021F9,DC9FDB,E063DA,F09FC2,F492BF,FCECDA o="Ubiquiti Networks Inc." +00156D,002722,0418D6,0CEA14,18E829,1C0B8B,1C6A1B,245A4C,24A43C,28704E,44D9E7,58D61F,602232,687251,68D79A,6C63F8,70A741,7483C2,74ACB9,74F92C,74FA29,784558,788A20,802AA8,847848,8C3066,8CEDE1,9041B2,942A6F,9C05D6,A89C6C,AC8BA9,B4FBE4,D021F9,D8B370,DC9FDB,E063DA,E43883,F09FC2,F492BF,F4E2C6,FCECDA o="Ubiquiti Inc" 00156E o="A. W. Communication Systems Ltd" 00156F o="Xiranet Communications GmbH" 001571 o="Nolan Systems" @@ -5030,7 +5023,7 @@ 0015AC o="Capelon AB" 0015AD o="Accedian Networks" 0015AE o="kyung il" -0015AF,002243,0025D3,08A95A,1C4BD6,204EF6,240A64,2866E3,28C2DD,2CDCD7,384FF0,409922,409F38,40E230,44D832,485D60,54271E,5C9656,605BB4,6C71D9,6CADF8,706655,742F68,74C63B,74F06D,781881,809133,80A589,80C5F2,80D21D,94DBC9,A81D16,AC8995,B0EE45,C0E434,D0C5D3,D0E782,D8C0A6,DC85DE,DCF505,E0B9A5,E8D819,F0038C o="AzureWave Technology Inc." +0015AF,002243,0025D3,00E93A,08A95A,106838,141333,14D424,1C4BD6,1CCE51,200B74,204EF6,240A64,2866E3,28C2DD,28D043,2C3B70,2CDCD7,346F24,384FF0,409922,409F38,40E230,44D832,485D60,48E7DA,502E91,505A65,50BBB5,50FE0C,54271E,580205,5C9656,605BB4,60FF9E,6C71D9,6CADF8,706655,742F68,74C63B,74F06D,781881,809133,80A589,80C5F2,80D21D,9074AE,90E868,94BB43,94DBC9,9CC7D3,A81D16,A841F4,A8E291,AC8995,B0EE45,B48C9D,C0BFBE,C0E434,CC4740,D0C5D3,D0E782,D49AF6,D8C0A6,DC85DE,DCF505,E0B9A5,E8D819,E8FB1C,EC2E98,EC3A56,F0038C,F068E3,F83DC6,F854F6 o="AzureWave Technology Inc." 0015B0 o="AUTOTELENET CO.,LTD" 0015B1 o="Ambient Corporation" 0015B2 o="Advanced Industrial Computer, Inc." @@ -5075,8 +5068,8 @@ 0015E5 o="Cheertek Inc." 0015E6 o="MOBILE TECHNIKA Inc." 0015E7 o="Quantec Tontechnik" -0015EA o="Tellumat (Pty) Ltd" -0015EB,0019C6,001E73,002293,002512,0026ED,004A77,041DC7,049573,08181A,083FBC,086083,0C1262,0C3747,0C72D9,10D0AB,14007D,143EBF,146080,18132D,1844E6,18686A,1C2704,208986,20E882,24586E,247E51,24C44A,24D3F2,287B09,288CB8,28FF3E,2C26C5,2C957F,300C23,304240,309935,30CC21,30D386,30F31D,343654,343759,344B50,344DEA,346987,347839,34DAB7,34DE34,34E0CF,384608,38549B,386E88,38D82F,38E1AA,38E2DD,3CDA2A,3CF652,4413D0,445943,44F436,44FB5A,44FFBA,48282F,4859A4,48A74E,4C09B4,4C16F1,4C494F,4CABFC,4CAC0A,4CCBF5,5078B3,50AF4D,540955,5422F8,5484DC,54BE53,585FF6,5C3A3D,601466,601888,6073BC,64136C,681AB2,688AF0,689FF0,6C8B2F,6CA75F,6CD2BA,702E22,709F2D,744AA4,749781,74A78E,74B57E,781D4A,78312B,789682,78C1A7,78E8B6,7C3953,80B07B,84139F,841C70,84742A,847460,885DFB,88D274,8C14B4,8C68C8,8C7967,8CDC02,8CE081,8CE117,901D27,90869B,90C7D8,90D8F3,90FD73,94A7B7,94BF80,94E3EE,98006A,981333,986CF5,98F428,98F537,9C2F4E,9C63ED,9C6F52,9CA9E4,9CD24B,9CE91C,A091C8,A0CFF5,A0EC80,A44027,A47E39,A802DB,A8A668,AC00D0,AC6462,B00AD5,B075D5,B0ACD2,B0B194,B0C19E,B41C30,B49842,B4B362,B4DEDF,B805AB,B8DD71,BC1695,C09FE1,C0B101,C0FD84,C4741E,C4A366,C85A9F,C864C7,C87B5B,C8EAF8,CC1AFA,CC7B35,D0154A,D058A8,D05BA8,D0608C,D071C4,D437D7,D47226,D476EA,D49E05,D4B709,D4C1C8,D4F756,D855A3,D87495,D8A8C8,DC028E,DC7137,DCDFD6,DCF8B9,E01954,E0383F,E07C13,E0C3F3,E447B3,E47723,E47E9A,E4BD4B,E4CA12,E8A1F8,E8ACAD,E8B541,EC1D7F,EC237B,EC6CB5,EC8263,EC8A4C,ECF0FE,F084C9,F41F88,F46DE2,F4B5AA,F4B8A7,F4E4AD,F80DF0,F864B8,F8A34F,F8DFA8,FC2D5E,FC449F,FC94CE,FCC897 o="zte corporation" +0015EA o="Hensoldt South Africa (Pty) Ltd" +0015EB,0019C6,001E73,002293,002512,0026ED,004A77,0056F1,00E7E3,041DC7,042084,046ECB,049573,08181A,083FBC,084473,086083,089AC7,08AA89,08E63B,08F606,0C014B,0C01A5,0C1262,0C3747,0C44C0,0C72D9,101081,1012D0,103C59,10D0AB,14007D,1409B4,142004,143EBF,146080,146B9A,14CA56,18132D,1844E6,185E0B,18686A,1879FD,18B0A4,18CAA7,1C2704,1C674A,200889,20108A,202051,203AEB,205A1D,208986,20E882,20F307,24586E,2475FC,247E51,24A65E,24C44A,24D3F2,28011C,284D7D,287777,287B09,288CB8,28AF21,28C87C,28DB02,28DEA8,28FF3E,2C26C5,2C704F,2C957F,2CB6C2,2CF1BB,300C23,301F48,304074,304240,3058EB,309935,30B930,30C6AB,30CC21,30D386,30DCE7,30F31D,34243E,343654,343759,344A1B,344B50,344DEA,346987,347839,349677,34DAB7,34DE34,34E0CF,38165A,382835,384608,38549B,386E88,3890AF,389148,389E80,38AA20,38D82F,38E1AA,38E2DD,38F6CF,3C6F9B,3C7625,3CA7AE,3CBCD0,3CDA2A,3CF652,3CF9F0,400EF3,405493,4413D0,443262,4441F0,445943,44A3C7,44F436,44FB5A,44FFBA,48282F,4859A4,485FDF,4896D9,48A74E,48D682,4C09B4,4C16F1,4C22C9,4C494F,4C4CD8,4CABFC,4CAC0A,4CCBF5,504289,505D7A,505E24,5078B3,508CC9,50AF4D,50E24E,540955,541F8D,5422F8,542B76,544617,5478F0,5484DC,54BE53,54CE82,54DED3,584BBC,585FF6,5872C9,58D312,58ED99,58FE7E,58FFA1,5C101E,5C3A3D,5C4DBF,5C7DAE,5CA4F4,5CBBEE,5CEB52,5CFFA9,601466,601888,606BB3,6073BC,60E5D8,64136C,646E60,647520,648505,64BAA4,64DB38,64EB94,681AB2,68275F,682ADD,6877DA,6887BD,688AF0,68944A,689E29,689FF0,6C11BA,6C7742,6C8B2F,6CA75F,6CB881,6CD008,6CD2BA,70110E,702E22,706AC9,709F2D,74238D,7426FF,7433E9,744AA4,746F88,74866F,749781,74A78E,74B57E,781D4A,7826A6,78305D,78312B,785237,787E42,7890A2,789682,78C1A7,78E8B6,7C3953,7C60DB,7C7D21,7CB30A,8006D9,802D1A,807C0A,808800,80B07B,84139F,841623,841C70,843C99,84742A,847460,8493B2,84F2C1,84F5EB,885DFB,887B2C,887FD5,889E96,88C174,88C78F,88D274,8C14B4,8C68C8,8C7967,8C8E0D,8CDC02,8CE081,8CE117,8CEEFD,901D27,9079CF,907E43,90869B,90B942,90C710,90C7D8,90D432,90D8F3,90FD73,940B83,94286F,949869,949F8B,94A7B7,94BF80,94CBCD,94E3EE,98006A,981333,9817F1,983FA4,986610,986CF5,989AB9,98EE8C,98F428,98F537,9C2F4E,9C4FAC,9C635B,9C63ED,9C6F52,9CA9E4,9CB400,9CD24B,9CE91C,A0092E,A01077,A0552E,A091C8,A0CFF5,A0EC80,A41A6E,A44027,A47E39,A4F33B,A802DB,A87484,A89A8C,A8A668,AC00D0,AC6462,ACAD4B,B00AD5,B075D5,B08B92,B0ACD2,B0B194,B0C19E,B40421,B41C30,B45F84,B472D4,B47CA6,B49842,B4B362,B4DEDF,B805AB,B85213,B8D4BC,B8DD71,B8F0B9,BC1695,BC41A0,BC4529,BC629C,BCBD84,BCF45F,BCF88B,BCFF54,C04943,C0515C,C09296,C094AD,C09FE1,C0B101,C0FD84,C421B9,C42728,C4741E,C4A366,C4CCF9,C4EBFF,C84C78,C85A9F,C864C7,C87B5B,C89828,C8EAF8,CC1AFA,CC29BD,CC763A,CC7B35,CCA08F,CCB777,D0154A,D058A8,D05919,D05BA8,D0608C,D071C4,D0BB61,D0C730,D0DD7C,D0F928,D0F99B,D437D7,D45F2C,D46195,D47226,D476EA,D4955D,D49E05,D4B709,D4C1C8,D4E3C5,D4F756,D8097F,D80AE6,D8312C,D83139,D84A2B,D855A3,D86BFC,D87495,D88C73,D89A0D,D8A0E8,D8A8C8,D8B2AA,D8E844,DC028E,DC3642,DC5193,DC6880,DC7137,DCDFD6,DCE5D8,DCF8B9,E01954,E0383F,E04102,E07C13,E0A1CE,E0B668,E0C29E,E0C3F3,E0DAD7,E447B3,E44E12,E45BB3,E4604D,E466AB,E47723,E47E9A,E47F3C,E4BD4B,E4CA12,E4CDA7,E808AF,E84368,E86E44,E88175,E8A1F8,E8ACAD,E8B541,E8E7C3,EC1D7F,EC237B,EC6CB5,EC725B,EC79C0,EC8263,EC8A4C,ECC342,ECC3B0,ECF0FE,F01B24,F07A55,F084C9,F0AB1F,F0ED19,F412DA,F41F88,F42D06,F42E48,F43A7B,F46DE2,F4B5AA,F4B8A7,F4E4AD,F4E84F,F4F647,F4FC49,F80DF0,F856C3,F864B8,F8731A,F87928,F8A34F,F8DFA8,FC2D5E,FC4009,FC449F,FC8A3D,FC8AF7,FC94CE,FCABF5,FCC897,FCFA21 o="zte corporation" 0015EC o="Boca Devices LLC" 0015ED o="Fulcrum Microsystems, Inc." 0015EE o="Omnex Control Systems" @@ -5093,7 +5086,7 @@ 0015FC o="Littelfuse Startco" 0015FD o="Complete Media Systems" 0015FE o="SCHILLING ROBOTICS LLC" -0015FF,2880A2 o="Novatel Wireless Solutions, Inc." +0015FF,18EE86,2880A2,780C71,E08614 o="Inseego Wireless, Inc" 001600 o="CelleBrite Mobile Synchronization" 001602 o="CEYON TECHNOLOGY CO.,LTD." 001603 o="COOLKSKY Co., LTD" @@ -5115,7 +5108,7 @@ 001613 o="LibreStream Technologies Inc." 001614 o="Picosecond Pulse Labs" 001615 o="Nittan Company, Limited" -001616 o="BROWAN COMMUNICATION INC." +001616 o="BROWAN COMMUNICATIONS INCORPORATION" 001617 o="MSI" 001618 o="HIVION Co., Ltd." 001619 o="Lancelan Technologies S.L." @@ -5143,11 +5136,10 @@ 001631 o="Xteam" 001633 o="Oxford Diagnostics Ltd." 001634 o="Mathtech, Inc." -001636,001B24,001E68,00238B,00269E,00C09F,047D7B,089E01,2C600C,54AB3A,60EB69,A81E84,B4A9FC,C01850,C45444,C80AA9,D8C497,E89A8F o="Quanta Computer Inc." +001636,001B24,001E68,00238B,00269E,00C09F,047D7B,089E01,2C600C,54AB3A,60EB69,74D4DD,9082C3,A81E84,B4A9FC,C01850,C45444,C80AA9,D8C497,E89A8F o="Quanta Computer Inc." 001637 o="CITEL SpA" 001639 o="Ubiquam Co., Ltd." 00163A o="YVES TECHNOLOGY CO., LTD." -00163B o="VertexRSI/General Dynamics" 00163C o="Rebox B.V." 00163D o="Tsinghua Tongfang Legend Silicon Tech. Co., Ltd." 00163E o="Xensource, Inc." @@ -5156,7 +5148,6 @@ 001642 o="Pangolin" 001643 o="Sunhillo Corporation" 001644 o="LITE-ON Technology Corp." -001645 o="Power Distribution, Inc." 001648 o="SSD Company Limited" 001649 o="SetOne GmbH" 00164A o="Vibration Technology Limited" @@ -5207,7 +5198,7 @@ 00167F o="Bluebird Soft Inc." 001680 o="Bally Gaming + Systems" 001681 o="Vector Informatik GmbH" -001682 o="Pro Dex, Inc" +001682 o="OMS Motion" 001683 o="WEBIO International Co.,.Ltd." 001684 o="Donjin Co.,Ltd." 001685 o="Elisa Oyj" @@ -5236,7 +5227,6 @@ 0016A0 o="Auto-Maskin" 0016A1 o="3Leaf Networks" 0016A2 o="CentraLite Systems, Inc." -0016A3 o="Ingeteam Transmission&Distribution, S.A." 0016A4 o="Ezurio Ltd" 0016A5 o="Tandberg Storage ASA" 0016A6 o="Dovado FZ-LLC" @@ -5287,9 +5277,8 @@ 0016E2 o="American Fibertek, Inc." 0016E4 o="VANGUARD SECURITY ENGINEERING CORP." 0016E5 o="FORDLEY DEVELOPMENT LIMITED" -0016E6,001A4D,001D7D,001FD0,00241D,18C04D,1C1B0D,1C6F65,408D5C,50E549,6CF049,74D435,902B34,94DE80,B42E99,E0D55E,FCAA14 o="GIGA-BYTE TECHNOLOGY CO.,LTD." 0016E7 o="Dynamix Promotions Limited" -0016E8 o="Sigma Designs, Inc." +0016E8 o="Lumissil Microsystems" 0016E9 o="Tiba Medical Inc" 0016EE o="Royaldigital Inc." 0016EF o="Koko Fitness, Inc." @@ -5299,11 +5288,10 @@ 0016F3 o="CAST Information Co., Ltd" 0016F4 o="Eidicom Co., Ltd." 0016F5 o="Dalian Golden Hualu Digital Technology Co.,Ltd" -0016F6 o="Video Products Group" 0016F7 o="L-3 Communications, Aviation Recorders" 0016F8 o="AVIQTECH TECHNOLOGY CO., LTD." 0016F9 o="CETRTA POT, d.o.o., Kranj" -0016FB,8C6D50,D43A2E o="SHENZHEN MTC CO LTD" +0016FB,5467E6,8C6D50,D43A2E-D43A2F o="SHENZHEN MTC CO LTD" 0016FC o="TOHKEN CO.,LTD." 0016FD o="Jaty Electronics" 0016FF o="Wamin Optocomm Mfg Corp" @@ -5319,7 +5307,7 @@ 00170B o="Contela, Inc." 00170C o="Twig Com Ltd." 00170D o="Dust Networks Inc." -001710 o="Casa Systems Inc." +001710 o="AxyomCore Inc." 001711 o="Cytiva Sweden AB" 001712 o="ISCO International" 001713 o="Tiger NetCom" @@ -5353,7 +5341,7 @@ 00172F o="NeuLion Incorporated" 001730 o="Automation Electronics" 001732 o="Science-Technical Center %RISSA%" -001733,001D16,002515,249504,307ECB,44CE7D,6035C0,6C61F4,CC2D1B,E0A1D7,E45D51 o="SFR" +001733,001D16,002515,249504,307ECB,44CE7D,6035C0,6C61F4,8C94CC,CC2D1B,E0A1D7,E45D51 o="SFR" 001734 o="ADC Telecommunications" 001735 o="Intel Wireless Network Group" 001736 o="iiTron Inc." @@ -5364,7 +5352,7 @@ 00173C o="Extreme Engineering Solutions" 00173D o="Neology" 00173E o="LeucotronEquipamentos Ltda." -00173F,001CDF,002275,08863B,149182,24F5A2,302303,58EF68,6038E0,94103E,944452,B4750E,C05627,C4411E,E89F80,EC1A59 o="Belkin International Inc." +00173F,001CDF,002275,08863B,149182,24F5A2,302303,58EF68,6038E0,80691A,94103E,944452,B4750E,C05627,C4411E,D8EC5E,E89F80,EC1A59 o="Belkin International Inc." 001740 o="Bluberi Gaming Technologies Inc" 001741 o="DEFIDEV" 001743 o="Deck Srl" @@ -5406,7 +5394,7 @@ 00176C o="Pivot3, Inc." 00176D o="CORE CORPORATION" 00176E o="DUCATI SISTEMI" -00176F,54812D o="PAX Computer Technology(Shenzhen) Ltd." +00176F,54812D,A044B7,A04FE4,C84052,F40223 o="PAX Computer Technology(Shenzhen) Ltd." 001770 o="Arti Industrial Electronics Ltd." 001771 o="APD Communications Ltd" 001772 o="ASTRO Strobel Kommunikationssysteme GmbH" @@ -5454,7 +5442,6 @@ 0017A1 o="3soft inc." 0017A2 o="Camrivox Ltd." 0017A3 o="MIX s.r.l." -0017A5 o="Ralink Technology Corp" 0017A6 o="YOSIN ELECTRONICS CO., LTD." 0017A7 o="Mobile Computing Promotion Consortium" 0017A8 o="EDM Corporation" @@ -5526,10 +5513,9 @@ 001806 o="Hokkei Industries Co., Ltd." 001807 o="Fanstel Corp." 001808 o="SightLogix, Inc." -001809,7445CE o="CRESYN" -00180A,0C8DDB,2C3F0B,3456FE,388479,4CC8A1,683A1E,6CDEA9,881544,981888,A8469D,AC17C8,B80756,CC03D9,E0553D,E0CBBC,F89E28 o="Cisco Meraki" +001809,1406A7,3053C1,7445CE,E89E13 o="CRESYN" +00180A,00841E,086A0B,08711C,08F1B3,0C7BC8,0C8DDB,149F43,2C3F0B,303B49,3456FE,388479,4027A8,4CC8A1,5C0610,683A1E,684992,6C7DB7,6C7F0C,6CC3B2,6CDEA9,6CEFBD,780F81,881544,8C8881,981888,9CE330,A05911,A8469D,AC17C8,AC69CF,ACBDF7,ACC3E5,ACD31D,B4DF91,B80756,B8AB61,B8B4C9,BC3340,BCB1D3,BCDB09,C414A2,C48BA3,C4D666,C86340,CC03D9,CC6E2A,CC9C3E,D853AD,E0553D,E0CBBC,E0D3B4,E455A8,F89E28,FC942E o="Cisco Meraki" 00180B o="Brilliant Telecommunications" -00180C o="Optelian Access Networks" 00180D o="Terabytes Server Storage Tech Corp" 00180E o="Avega Systems" 001810 o="IPTrade S.A." @@ -5541,7 +5527,7 @@ 001817 o="D. E. Shaw Research, LLC" 00181A o="AVerMedia Information Inc." 00181B o="TaiJin Metal Co., Ltd." -00181C o="Exterity Limited" +00181C,4CA003 o="VITEC" 00181D o="ASIA ELECTRONICS CO.,LTD" 00181E o="GDX Technologies Ltd." 00181F o="Palmmicro Communications" @@ -5573,7 +5559,7 @@ 001845 o="Pulsar-Telecom LLC." 001846 o="Crypto S.A." 001847 o="AceNet Technology Inc." -001848 o="Vecima Networks Inc." +001848,2C553C o="Vecima Networks Inc." 001849 o="nVent, Schroff GmbH" 00184A o="Catcher, Inc." 00184B o="Las Vegas Gaming, Inc." @@ -5624,10 +5610,9 @@ 00187F o="ZODIANET" 001880 o="Maxim Integrated Products" 001881 o="Buyang Electronics Industrial Co., Ltd" -001882,001E10,002568,00259E,002EC7,0034FE,00464B,005A13,006151,00664B,009ACD,00BE3B,00E0FC,00E406,00F81C,04021F,0425C5,042758,043389,044A6C,044F4C,047503,047970,04885F,048C16,049FCA,04B0E7,04BD70,04C06F,04E795,04F938,04FE8D,0819A6,08318B,084F0A,086361,087A4C,08C021,08E84F,0C2C54,0C31DC,0C37DC,0C41E9,0C45BA,0C704A,0C8FFF,0C96BF,0CB527,0CC6CC,0CD6BD,100177,101B54,104400,104780,105172,10B1F8,10C172,10C3AB,10C61F,1409DC,1413FB,143004,143CC3,14579F,145F94,149D09,14A0F8,14A51A,14B968,14D11F,14D169,18022D,183D5E,185644,18C58A,18CF24,18D276,18DED7,1C151F,1C1D67,1C20DB,1C3D2F,1C4363,1C599B,1C6758,1C7F2C,1C8E5C,1CAECB,1CB796,2008ED,200BC7,20283E,202BC1,203DB2,2054FA,20658E,20A680,20AB48,20DA22,20F17C,20F3A3,2400BA,240995,24166D,241FA0,242E02,243154,244427,244C07,2469A5,247F3C,2491BB,249EAB,24A52C,24BCF8,24DA33,24DBAC,24DF6A,24FB65,2811EC,283152,283CE4,2841C6,285FDB,2868D2,286ED4,289E97,28A6DB,28B448,28DEE5,28E34E,2C1A01,2C55D3,2C58E8,2C97B1,2C9D1E,2CAB00,2CCF58,304596,307496,308730,30A1FA,30C50F,30D17E,30E98E,30F335,30FBB8,30FD65,3400A3,340A98,3412F9,341E6B,342912,342EB6,345840,346AC2,346BD3,347916,34A2A2,34B354,34CDBE,38378B,3847BC,384C4F,38881E,38BC01,38EB47,38F889,38FB14,3C15FB,3C306F,3C4711,3C678C,3C7843,3C9D56,3CCD5D,3CDFBD,3CE824,3CF808,3CFA43,404D8E,407D0F,40CBA8,40EEDD,44004D,44227C,4455B1,4459E3,446747,446A2E,446EE5,447654,4482E5,44A191,44C346,44D791,480031,482CD0,483C0C,483FE9,48435A,4846FB,485702,486276,487B6B,488EEF,48AD08,48D539,48DB50,48DC2D,48F8DB,48FD8E,4C1FCC,4C5499,4C8BEF,4CAE13,4CB16C,4CD0CB,4CD1A1,4CF55B,4CF95D,4CFB45,50016B,5001D9,5004B8,501D93,50464A,505DAC,50680A,506F77,509F27,50A72B,541310,5425EA,5434EF,5439DF,54511B,548998,549209,54A51B,54B121,54BAD6,581F28,582575,582AF7,58605F,587F66,58BAD4,58D061,58D759,58F987,5C0339,5C0979,5C4CA9,5C546D,5C647A,5C7D5E,5C9157,5CA86A,5CB395,5CB43E,5CC307,5CE883,5CF96A,600810,60123C,602E20,607ECD,608334,60D755,60DE44,60DEF3,60E701,60F18A,60FA9D,6416F0,642CAC,643E8C,645E10,646D6C,64A651,684AAE,6889C1,688F84,68A03E,68A0F6,68A828,68CC6E,68E209,6C1632,6C442A,6CB749,6CEBB6,70192F,702F35,7054F5,70723C,707990,707BE8,708A09,708CB6,70A8E3,70C7F2,70D313,70FD45,745909,745AAA,7460FA,74882A,749D8F,74A063,74A528,74C14F,74D21D,7817BE,781DBA,785773,785860,786256,786A89,78B46A,78D752,78F557,78F5FD,7C11CB,7C1CF1,7C6097,7C7668,7C7D3D,7C942A,7CA177,7CA23E,7CB15D,7CC385,7CD9A0,801382,8038BC,804126,806933,80717A,807D14,80B575,80B686,80D09B,80D4A5,80E1BF,80FB06,8421F1,843E92,8446FE,844765,845B12,847637,849FB5,84A8E4,84A9C4,84AD58,84BE52,84DBAC,88108F,881196,8828B3,883FD3,884033,88403B,884477,8853D4,886639,888603,88A2D7,88BCC1,88BFE4,88CEFA,88CF98,88E3AB,88F56E,88F872,8C0D76,8C15C7,8C2505,8C34FD,8C426D,8C683A,8C6D77,8CE5EF,8CEBC6,8CFD18,900325,9016BA,90173F,9017AC,9017C8,902BD2,903FEA,904E2B,90671C,909497,90A5AF,9400B0,94049C,940B19,940E6B,942533,94772B,94D00D,94DBDA,94E7EA,94FE22,9835ED,9844CE,989C57,98E7F5,9C1D36,9C28EF,9C37F4,9C52F8,9C69D1,9C713A,9C741A,9C7DA3,9CB2B2,9CC172,9CE374,A0086F,A01C8D,A057E3,A08CF8,A08D16,A0A33B,A0DF15,A0F479,A400E2,A416E7,A47174,A47CC9,A4933F,A49947,A49B4F,A4BA76,A4BDC4,A4BE2B,A4C64F,A4CAA0,A4DCBE,A80C63,A82BCD,A8494D,A87D12,A8C83A,A8CA7B,A8E544,A8F5AC,AC075F,AC4E91,AC6089,AC6175,AC751D,AC853D,AC8D34,AC9232,ACB3B5,ACCF85,ACE215,ACE342,ACE87B,ACF970,B00875,B05508,B05B67,B0761B,B08900,B0E17E,B0E5ED,B0EB57,B40931,B41513,B43052,B44326,B46E08,B48655,B4B055,B4CD27,B4F58E,B4FBF9,B808D7,B89436,B8BC1B,B8C385,B8E3B1,BC25E0,BC3D85,BC3F8F,BC620E,BC7574,BC7670,BC76C5,BC9C31,BCB0E7,BCE265,C07009,C0BC9A,C0BFC0,C0F4E6,C0F6C2,C0FFA8,C40528,C40683,C4072F,C40D96,C4447D,C4473F,C467D1,C486E9,C49F4C,C4A402,C4B8B4,C4F081,C4FF1F,C80CC8,C81451,C81FBE,C850CE,C85195,C88D83,C894BB,C8A776,C8C2FA,C8C465,C8D15E,C8E600,CC0577,CC53B5,CC64A6,CC96A0,CCA223,CCB182,CCBBFE,CCCC81,CCD73C,D016B4,D02DB3,D03E5C,D065CA,D06F82,D07AB5,D0C65B,D0D04B,D0D783,D0EFC1,D0FF98,D440F0,D44649,D4612E,D462EA,D46AA8,D46BA6,D46E5C,D494E8,D4A148,D4B110,D4D51B,D4F9A1,D82918,D8490B,D89B3B,D8C771,DC094C,DC16B2,DC21E2,DC729B,DC9088,DC9914,DCC64B,DCD2FC,DCD916,DCEE06,DCEF80,E00084,E0191D,E0247F,E02481,E02861,E03676,E09796,E0A3AC,E0CC7A,E40EEE,E419C1,E43493,E435C8,E43EC6,E468A3,E472E2,E47E66,E48326,E4A7C5,E4A8B6,E4C2D1,E4D373,E4FB5D,E4FDA1,E8088B,E8136E,E84DD0,E86819,E884C6,E8ABF3,E8BDD1,E8CD2D,EC233D,EC388F,EC4D47,EC5623,EC753E,EC8914,EC8C9A,ECC01B,ECCB30,F00FEC,F02FA7,F033E5,F03F95,F04347,F063F9,F09838,F09BB8,F0C850,F0E4A2,F41D6B,F44C7F,F4559C,F4631F,F47960,F48E92,F49FF3,F4A4D6,F4B78D,F4BF80,F4C714,F4CB52,F4DCF9,F4DEAF,F4E3FB,F4E5F2,F80113,F823B2,F82E3F,F83DFF,F84ABF,F86EEE,F87588,F898B9,F898EF,F89A78,F8BF09,F8C39E,F8E811,FC1BD1,FC3F7C,FC48EF,FC73FB,FC8743,FC9435,FCAB90,FCBCD1,FCE33C o="HUAWEI TECHNOLOGIES CO.,LTD" +001882,001E10,002568,00259E,002EC7,0034FE,00464B,004F1A,005A13,006151,00664B,006B6F,00991D,009ACD,00A91D,00BE3B,00E0FC,00E12F,00E406,00F5FD,00F7AD,00F81C,00F952,04021F,041471,041892,0425C5,042758,043389,044A6C,044F4C,0455B8,04749E,047503,047970,04885F,048C16,049FCA,04A81C,04B0E7,04BD70,04BE58,04C06F,04CAED,04CCBC,04E795,04F352,04F938,04FE8D,080205,0816E3,0819A6,0823C6,082FE9,08318B,084F0A,085C1B,086361,087073,08798C,087A4C,089356,089E84,08C021,08D945,08E84F,08EBF6,08FA28,08FD58,0C07F3,0C184E,0C238D,0C2C54,0C2E57,0C31DC,0C37DC,0C41E9,0C45BA,0C4F9B,0C6743,0C704A,0C8408,0C8BA2,0C8FFF,0C96BF,0CB527,0CB787,0CC6CC,0CD6BD,0CE5B5,0CFC18,100177,101B54,102407,10321D,104400,104780,105172,1052BD,1067A3,1088D3,108FFE,1094EF,10A30F,10A4DA,10B1F8,10C172,10C3AB,10C61F,10CD54,1409DC,1413FB,14230A,143004,143CC3,144658,144920,14579F,145EBC,145F94,14656A,1489CB,148C4A,149AA3,149D09,14A0F8,14A51A,14AB02,14B903,14B968,14D11F,14D169,14EB08,18022D,180BD0,182A57,183386,183D5E,185644,18B657,18C58A,18CF24,18D276,18D6DD,18DED7,18E91D,1C151F,1C1D67,1C20DB,1C32AC,1C3CD4,1C3D2F,1C4363,1C599B,1C627E,1C6758,1C7055,1C73E2,1C7F2C,1C8E5C,1C99DB,1CA681,1CAECB,1CB46C,1CB796,1CE504,1CE639,1CFC2A,1CFFAD,2008ED,200BC7,2014C4,201E1D,20283E,202BC1,203DB2,205383,2054FA,20658E,2087EC,208C86,209BDD,20A200,20A680,20A766,20A8BF,20AB48,20C2B0,20DA22,20DF73,20F17C,20F3A3,2400BA,240995,24166D,241FA0,2426D6,2429B0,242E02,243154,244427,2446E4,244BF1,244C07,246078,2469A5,247F3C,2491BB,249745,249EAB,24A52C,24BCF8,24DA33,24DBAC,24DEEB,24DF6A,24EBED,24F603,24FB65,2811EC,281709,281DFB,28221E,282CC4,283152,2831F8,28353A,283CE4,2841C6,2841EC,284E44,28534E,285FDB,2868D2,286ED4,287AB4,28808A,2896B0,289E97,28A6DB,28B448,28D6EC,28DCC3,28DEE5,28E34E,28E5B0,28FBAE,2C0BAB,2C15D9,2C1A01,2C2768,2C36F2,2C52AF,2C55D3,2C58E8,2C693E,2C9452,2C97B1,2C9D1E,2CA797,2CA79E,2CAB00,2CB68F,2CCF58,2CECA6,2CED89,2CEDB0,301984,30294B,3037B3,304596,30499E,3061A2,307496,307A05,308730,3089A6,308DD4,308ECF,309E62,30A1FA,30A30F,30C50F,30D17E,30D4E2,30E98E,30F335,30FBB8,30FD65,30FFFD,3400A3,340A98,3412F9,341E6B,342912,342EB6,345840,346679,346AC2,346BD3,346E68,347916,3483D5,349671,34A137,34A2A2,34B354,34CDBE,34FFF3,380FAD,382028,38378B,383FE8,3847BC,384C4F,386EB2,3870F2,38881E,389052,38BC01,38D09C,38EB47,38F195,38F889,38FB14,3C058E,3C13BB,3C15FB,3C306F,3C366A,3C4711,3C5447,3C59C0,3C65D1,3C678C,3C7843,3C869A,3C90E0,3C93F4,3C9D56,3CA161,3CA37E,3CC03E,3CC5C7,3CCD5D,3CDFBD,3CE824,3CF808,3CFA43,3CFA80,3CFFD8,402641,40410D,4044CE,4045C4,404D8E,404F42,406F27,407D0F,40B15C,40CBA8,40EB21,40EEDD,44004D,4409C6,44227C,44303F,4455B1,4459E3,446747,446A2E,446EE5,447654,4482E5,449BC1,44A191,44BE0B,44C346,44C3B6,44C532,44D791,44E59B,44E968,480031,480234,481258,48128F,4827C5,482CD0,482FD7,483C0C,483FE9,48435A,4846FB,484C29,485702,486276,48706F,487B6B,488EEF,48AD08,48B25D,48BD4A,48CDD3,48CFA9,48D539,48DB50,48DC2D,48F7BC,48F8DB,48FD8E,4C1FCC,4C5499,4C8BEF,4C8D53,4CAE13,4CB087,4CB16C,4CD0CB,4CD0DD,4CD1A1,4CD629,4CE65E,4CF55B,4CF95D,4CFB45,50016B,5001D9,5004B8,500B23,500B26,5014C1,501D93,504172,50464A,505DAC,506391,50680A,506F77,508A7F,508D62,508D9E,5093CE,509A88,509F27,50A72B,50ACB9,540295,54102E,5412CB,541310,542259,5425EA,542618,542F2B,5434EF,5439DF,54443B,54511B,545925,54606D,546990,548998,549209,54A51B,54A637,54B121,54BAD6,54C480,54CF8D,54EF43,54F6E2,581F28,582575,582AF7,5856C2,58605F,5873D1,587F66,588336,58AEA8,58BAD4,58BE72,58D061,58D759,58F8D7,58F987,5C0339,5C07A6,5C0979,5C0B3B,5C167D,5C4879,5C4CA9,5C546D,5C5EBB,5C647A,5C7075,5C7D5E,5C9157,5CA86A,5CB00A,5CB395,5CB43E,5CC0A0,5CC1F2,5CC307,5CE747,5CE883,5CF96A,6001B1,600810,60109E,60123C,602E20,6030B3,603D29,604DE1,605375,6056B1,607ECD,608334,6096A4,609BB4,60A2C6,60A6C5,60BD83,60CE41,60D755,60DE44,60DE94,60DEF3,60E701,60F18A,60FA9D,64078C,6413AB,6416F0,6429FF,642CAC,642E41,642F1C,643E0A,643E8C,6453E0,645E10,6467CD,646D4E,646D6C,64A651,64BC43,64BF6B,64C394,681BEF,683045,684983,684AAE,6881E0,6889C1,688F84,68962E,68A03E,68A0F6,68A46A,68A828,68B5E3,68CC6E,68D927,68E209,68F543,6C047A,6C146E,6C1632,6C1D2C,6C2636,6C3491,6C41DE,6C442A,6C558D,6C67EF,6C6C0F,6C71D2,6CB749,6CB7E2,6CD1E5,6CD63F,6CD704,6CE874,6CEBB6,70192F,702F35,704698,704E6B,7054F5,706E10,707013,70723C,707362,707990,707BE8,707CE3,708A09,708CB6,709C45,70A8E3,70C7F2,70D313,70E997,70FD45,7400E8,74342B,743C24,744D6D,7450CD,745909,745AAA,7460FA,74872E,74882A,748DAA,749B89,749D8F,74A063,74A528,74B8A8,74C14F,74D21D,74E9BF,74F90F,74FC77,78078F,78084D,781699,7817BE,781DBA,782DAD,783409,785773,785860,785C5E,786256,786A89,788371,78B46A,78CF2F,78D752,78DAAF,78DC87,78DD33,78EB46,78F557,78F5FD,7C004D,7C0CFA,7C11CB,7C1AC0,7C1CF1,7C33F9,7C3626,7C3985,7C6097,7C669A,7C692B,7C7668,7C7D3D,7C942A,7CA177,7CA23E,7CB15D,7CB59F,7CC385,7CC882,7CD3E5,7CD9A0,7CDC73,7CE53F,800518,801382,802EC3,8038BC,803C20,804126,8054D9,806036,806933,80717A,807D14,80B575,80B686,80D09B,80D4A5,80E1BF,80F1A4,80FB06,8415D3,8421F1,843E92,8446FE,844765,845B12,8464DD,847637,8492E5,849FB5,84A8E4,84A9C4,84AD58,84BE52,84D7DE,84DBAC,84EE7F,84FE40,88108F,881196,8828B3,883FD3,884033,88403B,884477,8853D4,8863C5,886639,8867DC,88693D,886EEB,887477,888603,88892F,88A0BE,88A2D7,88B4BE,88BCC1,88BFE4,88C227,88C6E8,88CE3F,88CEFA,88CF98,88DA04,88E056,88E3AB,88F56E,88F872,8C0D76,8C15C7,8C2505,8C34FD,8C426D,8C683A,8C6D77,8C83E8,8C862A,8C8ACD,8CA5CF,8CA96D,8CE5EF,8CEBC6,8CFADD,8CFD18,900117,900325,9016BA,90173F,9017AC,9017C8,9025F2,902BD2,903FEA,904E2B,905E44,9064AD,90671C,909497,909507,90A5AF,90F970,90F9B7,9400B0,94049C,940B19,940E6B,940EE7,942453,942533,94261D,943589,9440F3,944788,945AEA,94772B,947AF4,947D77,949010,94A25D,94A4F9,94B271,94D00D,94D2BC,94D54D,94DBDA,94DF34,94E300,94E7EA,94E7F3,94FE22,981A35,98247B,982AFD,9835ED,983F60,9844CE,984874,984B06,985207,98535F,985A98,986110,989C57,989F1E,98C08A,98D3D7,98E7F5,98F083,98F3F6,9C0351,9C1D36,9C28EF,9C37F4,9C4929,9C52F8,9C5766,9C61D7,9C69D1,9C713A,9C7370,9C741A,9C746F,9C7DA3,9C9793,9CB2B2,9CB2E8,9CBFCD,9CC172,9CDBAF,9CDF8A,9CE374,A0086F,A00E98,A01C8D,A031DB,A03679,A0406F,A0445C,A04839,A057E3,A070B7,A08CF8,A08D16,A0A33B,A0AD62,A0AF12,A0DF15,A0F479,A0FAC8,A400E2,A409B3,A416E7,A4178B,A46C24,A46DA4,A47174,A47CC9,A4933F,A49947,A49B4F,A4A46B,A4BA76,A4BDC4,A4BE2B,A4C64F,A4CAA0,A4DCBE,A4DD58,A80C63,A80DE1,A82BCD,A83B5C,A83ED3,A84616,A8494D,A85081,A87971,A87C45,A87D12,A8B271,A8C407,A8C83A,A8CA7B,A8D4E0,A8E544,A8F059,A8F5AC,A8FFBA,AC075F,AC4E91,AC51AB,AC5E14,AC6089,AC6175,AC6490,AC751D,AC853D,AC8AC7,AC8D34,AC9073,AC9232,AC9929,ACB3B5,ACC5B4,ACCF85,ACDCCA,ACE011,ACE215,ACE342,ACE87B,ACEAEA,ACF970,ACFF6B,B00875,B01656,B0216F,B042B7,B05508,B05B67,B0761B,B07ADF,B08900,B0995A,B0A4F0,B0C61C,B0C787,B0D77E,B0E17E,B0E5ED,B0EB57,B0ECDD,B40931,B414E6,B41513,B41DC4,B42BB9,B43052,B43836,B4394C,B43AE2,B44326,B44389,B46142,B46E08,B47B1A,B48655,B48901,B4B055,B4C3D9,B4CD27,B4F58E,B4FBF9,B4FF98,B808D7,B81D1F,B81E9E,B85600,B85DC3,B85FB0,B8857B,B89436,B89FCC,B8BC1B,B8C385,B8D4C3,B8D6F6,B8E3B1,BC1896,BC1E85,BC25E0,BC3D85,BC3F8F,BC4C78,BC4CA0,BC620E,BC7574,BC7670,BC76C5,BC9930,BC9C31,BCA0B9,BCA231,BCB0E7,BCC427,BCD206,BCE265,C0060C,C03379,C03E50,C03FDD,C04E8A,C05234,C07009,C084E0,C08B05,C09B63,C0A938,C0BC9A,C0BFC0,C0E018,C0E1BE,C0E3FB,C0F4E6,C0F6C2,C0F6EC,C0F9B0,C0FFA8,C40528,C40683,C4072F,C40D96,C412EC,C416C8,C4345B,C4447D,C4473F,C457CD,C45E5C,C463C4,C467D1,C469F0,C46DD1,C475EA,C486E9,C49F4C,C4A402,C4AA99,C4B1D9,C4B8B4,C4BB03,C4D438,C4D8D4,C4DB04,C4E287,C4F081,C4FBAA,C4FF1F,C80CC8,C81451,C81FBE,C833E5,C850CE,C85195,C884CF,C88D83,C890F7,C894BB,C89F1A,C8A776,C8B6D3,C8B78A,C8C2FA,C8C465,C8D15E,C8D1A9,C8E31D,C8E5E0,C8E600,CC0577,CC087B,CC1E56,CC1E97,CC208C,CC3DD1,CC53B5,CC64A6,CC895E,CC96A0,CCA223,CCB182,CCB7C4,CCBA6F,CCBBFE,CCBCE3,CCCC81,CCD73C,D016B4,D02DB3,D03E5C,D04E99,D06158,D065CA,D069C1,D06DC8,D06F82,D07AB5,D094CF,D0C65B,D0C67F,D0D04B,D0D783,D0D7BE,D0EFC1,D0F815,D0FF98,D440F0,D44649,D44F67,D45F7A,D4612E,D462EA,D46AA8,D46BA6,D46E5C,D48866,D49400,D494E8,D4A148,D4A254,D4A923,D4B110,D4D51B,D4D892,D4F9A1,D801D0,D80A60,D8109F,D81BB5,D820A2,D82918,D829F8,D84008,D8490B,D85982,D86852,D86D17,D874DF,D876AE,D88863,D89B3B,D8C771,D8DAF1,DC094C,DC121D,DC16B2,DC21E2,DC6180,DC621F,DC729B,DC7E1D,DC868D,DC9088,DC9914,DC9C99,DCA782,DCC64B,DCD2FC-DCD2FD,DCD916,DCEE06,DCEF80,E00084,E00630,E00CE5,E0191D,E0247F,E02481,E02861,E03676,E04BA6,E04E5D,E09796,E0A3AC,E0AD9B,E0AEA2,E0CC7A,E0DA90,E0F330,E40A16,E40EEE,E419C1,E43493,E435C8,E43EC6,E468A3,E472E2,E47727,E47E66,E48210,E48326,E48EC5,E4902A,E4995F,E4A7C5,E4A7D0,E4A8B6,E4B224,E4BEFB,E4C2D1,E4D373,E4DCCC,E4FB5D,E4FDA1,E8088B,E8136E,E84D74,E84DD0,E86819,E86DE9,E87E1C,E884C6,E8A34E,E8A660,E8ABF3,E8AC23,E8BDD1,E8CD2D,E8D765,E8D775,E8EA4D,E8F085,E8F654,E8F72F,E8F9D4,EC1A02,EC1D53,EC233D,EC388F,EC4D47,EC536F,EC551C,EC5623,EC753E,EC7C2C,EC8152,EC819C,EC8914,EC8C9A,ECA1D1,ECA62F,ECAA8F,ECC01B,ECCB30,ECE9F5,ECF8D0,F00FEC,F0258E,F02FA7,F033E5,F03F95,F04347,F063F9,F09838,F09BB8,F0A0B1,F0A951,F0C478,F0C850,F0C8B5,F0E4A2,F0F7E7,F0F7FC,F41D6B,F4248B,F44588,F44C7F,F4559C,F45B29,F4631F,F46802,F47946,F47960,F48918,F48E92,F49FF3,F4A4D6,F4B78D,F4BF80,F4C714,F4CB52,F4DCF9,F4DEAF,F4E3FB,F4E451,F4E5F2,F4F28A,F4FBB8,F800A1,F80113,F823B2,F828C9,F82E3F,F83DFF,F83E95,F84ABF,F84CDA,F85329,F86EEE,F87588,F89522,F898B9,F898EF,F89A25,F89A78,F8B132,F8BF09,F8C39E,F8DE73,F8E811,F8F7B9,FC1193,FC122C,FC1803,FC1BD1,FC1D3A,FC3F7C,FC48EF,FC4DA6,FC4E6D,FC51B5,FC73FB,FC8743,FC931D,FC9435,FCA0F3,FCA27E,FCAB90,FCBCD1,FCE1A6,FCE33C,FCF738 o="HUAWEI TECHNOLOGIES CO.,LTD" 001883 o="FORMOSA21 INC." 001884,C47130 o="Fon Technology S.L." -001885,001F92 o="Avigilon Corporation" 001886 o="EL-TECH, INC." 001887 o="Metasystem SpA" 001888 o="GOTIVE a.s." @@ -5663,7 +5648,7 @@ 0018AA o="Protec Fire Detection plc" 0018AB o="BEIJING LHWT MICROELECTRONICS INC." 0018AC o="Shanghai Jiao Da HISYS Technology Co. Ltd." -0018AD o="NIDEC SANKYO CORPORATION" +0018AD o="NIDEC INSTRUMENTS CORPORATION" 0018AE o="TVT CO.,LTD" 0018B2 o="ADEUNIS RF" 0018B3 o="TEC WizHome Co., Ltd." @@ -5838,7 +5823,7 @@ 00197C o="Riedel Communications GmbH" 001980 o="Gridpoint Systems" 001981 o="Vivox Inc" -001982,B01886 o="SmarDTV" +001982,B01886 o="SmarDTV Corporation" 001983 o="CCT R&D Limited" 001984 o="ESTIC Corporation" 001985 o="IT Watchdogs, Inc" @@ -5850,7 +5835,7 @@ 00198B o="Novera Optics Korea, Inc." 00198C o="iXSea" 00198D o="Ocean Optics, Inc." -00198E o="Oticon A/S" +00198E,00F871 o="Demant A/S" 00198F o="Nokia Bell N.V." 001990 o="ELM DATA Co., Ltd." 001991 o="avinfo" @@ -5864,7 +5849,7 @@ 00199A o="EDO-EVI" 00199B o="Diversified Technical Systems, Inc." 00199C o="CTRING" -00199D,006B9E,0C8B7D,2C641F,3C9BD6,A06A44,A48D3B,C41CFF,CC95D7 o="Vizio, Inc" +00199D,006B9E,00BD3E,0C8B7D,14C67D,201BA5,24EE5D,2C641F,3C9BD6,80051F,A06A44,A48D3B,C41CFF,CC95D7,E838A0 o="Vizio, Inc" 00199E o="Nifty" 00199F o="DKT A/S" 0019A0 o="NIHON DATA SYSTENS, INC." @@ -5924,7 +5909,7 @@ 0019ED o="Axesstel Inc." 0019EE o="CARLO GAVAZZI CONTROLS SPA-Controls Division" 0019EF o="SHENZHEN LINNKING ELECTRONICS CO.,LTD" -0019F0,3C0CDB,8CBA25,A8BD3A,F4D9C6 o="UNIONMAN TECHNOLOGY CO.,LTD" +0019F0,3C0CDB,40F4FD,48CAC6,54725E,64E0AB,8CBA25,A01C87,A8BD3A,CC62FE,D43844,F4D9C6,F814FE o="UNION MAN TECHNOLOGY CO.,LTD" 0019F1 o="Star Communication Network Technology Co.,Ltd" 0019F2 o="Teradyne K.K." 0019F3 o="Cetis, Inc" @@ -5935,12 +5920,11 @@ 0019F8 o="Embedded Systems Design, Inc." 0019F9 o="TDK-Lambda" 0019FA o="Cable Vision Electronics CO., LTD." -0019FB,04819B,0CF9C0,2047ED,24A7DC,38A6CE,3C8994,507043,7050AF,783E53,7C4CA5,807215,80751F,900218,902106,9C31C3,A0BDCD,B03E51,C03E0F,C0A36E,D058FC,D452EE,D4DACD o="BSkyB Ltd" +0019FB,00A388,04819B,04B86A,0CF9C0,140805,1C46D1,2047ED,24A7DC,38A6CE,3C457A,3C8994,3C9EC7,507043,6CA0B4,7050AF,783E53,7C4CA5,807215,80751F,900218,902106,9C31C3,A0BDCD,B03E51,B04530,B4BA9D,BC85D0,C03E0F,C0A36E,C46026,C8965A,C8DE41,D058FC,D452EE,D4DACD,D4F04A,E87640,FCD290 o="SKY UK LIMITED" 0019FC o="PT. Ufoakses Sukses Luarbiasa" 0019FE o="SHENZHEN SEECOMM TECHNOLOGY CO.,LTD." 0019FF o="Finnzymes" 001A00 o="MATRIX INC." -001A01 o="Smiths Medical" 001A02 o="SECURE CARE PRODUCTS, INC" 001A03 o="Angel Electronics Co., Ltd." 001A04 o="Interay Solutions BV" @@ -5954,9 +5938,9 @@ 001A0C o="Swe-Dish Satellite Systems AB" 001A0D o="HandHeld entertainment, Inc." 001A0E o="Cheng Uei Precision Industry Co.,Ltd" -001A0F o="Sistemas Avanzados de Control, S.A." +001A0F o="ARTECHE GROUP" 001A10 o="LUCENT TRANS ELECTRONICS CO.,LTD" -001A11,00F620,089E08,14C14E,1CF29A,20DFB9,240588,28BD89,30FD38,388B59,3C286D,3C5AB4,3C8D20,44070B,44BB3B,48D6D5,546009,58CB52,60B76E,703ACB,7C2EBD,7CD95C,883D24,88541F,900CC8,9495A0,94EB2C,98D293,A47733,B02A43,B0E4D5,CCA7C1,CCF411,D4F547,D86C63,D88C79,E4F042,F05C77,F072EA,F0EF86,F40304,F4F5D8,F4F5E8,F80FF9,F88FCA o="Google, Inc." +001A11,00F620,04006E,04C8B0,088BC8,089E08,08B4B1,0CC413,10D9A2,14223B,14C14E,1C53F9,1CF29A,201F3B,20DFB9,20F094,240588,242934,24952F,24E50F,28BD89,30E044,30FD38,343916,34C7E9,3886F7,388B59,3C286D,3C3174,3C5AB4,3C8D20,40A44A,44070B,44BB3B,48D6D5,546009,546749,582429,58CB52,5C337B,60706C,60B76E,649D38,703ACB,747446,7C2EBD,7CD95C,84A824,883D24,88541F,900CC8,90CAFA,944560,9495A0,94EB2C,983A1F,9898FB,98D293,9C4F5F,A47733,AC3EB1,AC6784,ACE6BB,B02A43,B06A41,B0D5FB,B0E4D5,B41324,B423A2,B87BD4,B8DB38,B8F4A4,BCDF58,C01C6A,C82ADD,CCA7C1,CCF411,D43A2C,D4F547,D86C63,D88C79,D8EB46,DCE55B,E01ADF,E45E1B,E4F042,E8D52B,F05C77,F072EA,F0EF86,F40304,F4F5D8,F4F5E8,F80FF9,F81A2B,F88FCA,FC4116,FC915D o="Google, Inc." 001A12 o="Essilor" 001A13 o="Wanlida Group Co., LTD" 001A14 o="Xin Hua Control Engineering Co.,Ltd." @@ -5996,7 +5980,7 @@ 001A3C o="Technowave Ltd." 001A3D o="Ajin Vision Co.,Ltd" 001A3E o="Faster Technology LLC" -001A3F,180D2C,24FD0D,58108C,D8778B o="Intelbras" +001A3F,180D2C,24FD0D,30E1F1,443B32,4851CF,546CAC,54BAD9,58108C,808544,808FE8,982A0A,98E55B,AC1EA9,B87EE5,D8365F,D8778B o="Intelbras" 001A40 o="A-FOUR TECH CO., LTD." 001A41 o="INOCOVA Co.,Ltd" 001A42 o="Techcity Technology co., Ltd." @@ -6032,7 +6016,7 @@ 001A65 o="Seluxit" 001A67 o="Infinite QL Sdn Bhd" 001A68 o="Weltec Enterprise Co., Ltd." -001A69 o="Wuhan Yangtze Optical Technology CO.,Ltd." +001A69,9028F6 o="Wuhan Yangtze Optical Technology CO.,Ltd." 001A6A o="Tranzas, Inc." 001A6E o="Impro Technologies" 001A6F o="MI.TEL s.r.l." @@ -6053,11 +6037,11 @@ 001A83 o="Pegasus Technologies Inc." 001A84 o="V One Multimedia Pte Ltd" 001A85 o="NV Michel Van de Wiele" -001A86 o="AdvancedIO Systems Inc" +001A86 o="New Wave Design & Verification" 001A87 o="Canhold International Limited" 001A88 o="Venergy,Co,Ltd" 001A8B o="CHUNIL ELECTRIC IND., CO." -001A8C,7C5A1C,C84F86 o="Sophos Ltd" +001A8C,7C5A1C,A89162,C84F86 o="Sophos Ltd" 001A8D o="AVECS Bergen GmbH" 001A8E o="3Way Networks Ltd" 001A90 o="Trópico Sistemas e Telecomunicações da Amazônia LTDA." @@ -6078,10 +6062,10 @@ 001AA3 o="DELORME" 001AA4 o="Future University-Hakodate" 001AA5 o="BRN Phoenix" -001AA6 o="Telefunken Radio Communication Systems GmbH &CO.KG" +001AA6 o="Elbit Systems Deutschland GmbH & Co. KG" 001AA7 o="Torian Wireless" 001AA8 o="Mamiya Digital Imaging Co., Ltd." -001AA9,20934D,2875D8,345594,54F6C5,5CCBCA,C40938 o="FUJIAN STAR-NET COMMUNICATION CO.,LTD" +001AA9,04E3C8,0C8772,0C979B,187E20,20934D,2875D8,28BEF3,2CE099,3023CD,345594,3CECDE,54F6C5,5CCBCA,74E336,7813E0,78C62B,847ADF,8C02CD,C40938,E007C2,ECCF70,F4E4D7,FC8D13 o="FUJIAN STAR-NET COMMUNICATION CO.,LTD" 001AAA o="Analogic Corp." 001AAB o="eWings s.r.l." 001AAC o="Corelatus AB" @@ -6095,7 +6079,7 @@ 001AB5 o="Home Network System" 001AB7 o="Ethos Networks LTD." 001AB8 o="Anseri Corporation" -001AB9 o="PMC" +001AB9 o="Groupe Carrus" 001ABA o="Caton Overseas Limited" 001ABB o="Fontal Technology Incorporation" 001ABC o="U4EA Technologies Ltd" @@ -6105,7 +6089,7 @@ 001AC0 o="JOYBIEN TECHNOLOGIES CO., LTD." 001AC2 o="YEC Co.,Ltd." 001AC3,001CEA o="Scientific-Atlanta, Inc" -001AC5,001B6E,800902 o="Keysight Technologies, Inc." +001AC5,001B6E,2CD1DA,800902 o="Keysight Technologies, Inc." 001AC6 o="Micro Control Designs" 001AC7 o="UNIPOINT" 001AC8 o="ISL (Instrumentation Scientifique de Laboratoire)" @@ -6135,7 +6119,7 @@ 001AE5 o="Mvox Technologies Inc." 001AE6 o="Atlanta Advanced Communications Holdings Limited" 001AE7 o="Aztek Networks, Inc." -001AE8 o="Unify Software and Solutions GmbH & Co. KG" +001AE8,60DBEF o="Unify Software and Solutions GmbH & Co. KG" 001AEA o="Radio Terminal Systems Pty Ltd" 001AEC o="Keumbee Electronics Co.,Ltd." 001AED o="INCOTEC GmbH" @@ -6165,7 +6149,7 @@ 001B06 o="Ateliers R. LAUMONIER" 001B07 o="Mendocino Software" 001B08 o="Danfoss Drives A/S" -001B09 o="Matrix Telecom Pvt. Ltd." +001B09 o="MATRIX COMSEC PRIVATE LIMITED" 001B0A o="Intelligent Distributed Controls Ltd" 001B0B o="Phidgets Inc." 001B0E o="InoTec GmbH Organisationssysteme" @@ -6176,7 +6160,7 @@ 001B14 o="Carex Lighting Equipment Factory" 001B15 o="Voxtel, Inc." 001B16 o="Celtro Ltd." -001B17,00869C,080342,08306B,08661F,240B0A,34E5EC,58493B,786D94,7C89C1,84D412,B40C25,C42456,D41D71,D49CF4,D4F4BE,E4A749,E8986D,EC6881 o="Palo Alto Networks" +001B17,00869C,00DA27,04472A,080342,08306B,08661F,1CCF82,240B0A,34E5EC,3CFA30,58493B,58769C,5C58E6,60152B,647CE8,786D94,7C89C1,7CC025,7CC790,84D412,8C367A,945641,A427A5,B40C25,C42456,C829C8,CC38D0,CC5EA5,D41D71,D49CF4,D4F4BE,DC0E96,E4A749,E8986D,EC6881,F4D58A,FC101A o="Palo Alto Networks" 001B18 o="Tsuken Electric Ind. Co.,Ltd" 001B19 o="IEEE I&M Society TC9" 001B1A o="e-trees Japan, Inc." @@ -6184,7 +6168,7 @@ 001B1C o="Coherent" 001B1D o="Phoenix International Co., Ltd" 001B1E o="HART Communication Foundation" -001B1F o="DELTA - Danish Electronics, Light & Acoustics" +001B1F o="FORCE Technology" 001B20 o="TPine Technology" 001B22 o="Palit Microsystems ( H.K.) Ltd." 001B23 o="SimpleComTools" @@ -6201,7 +6185,7 @@ 001B35 o="ChongQing JINOU Science & Technology Development CO.,Ltd" 001B36 o="Tsubata Engineering Co.,Ltd. (Head Office)" 001B37 o="Computec Oy" -001B38,001EEC,00235A,002622,089798,1C3947,1C7508,201A06,208984,705AB6,7C8AE1,88AE1D,9828A6,9829A6,9C5A44,B870F4,B888E3,DC0EA1,E4A8DF,F0761C,F8A963,FC4596 o="COMPAL INFORMATION (KUNSHAN) CO., LTD." +001B38,001EEC,00235A,002622,088FC3,089798,1C3947,1C7508,201A06,208984,38A746,40C2BA,705AB6,7C8AE1,88AE1D,9828A6,9829A6,9C5A44,B870F4,B888E3,BCECA0,DC0EA1,E4A8DF,F0761C,F8A963,FC4596 o="COMPAL INFORMATION (KUNSHAN) CO., LTD." 001B39 o="Proxicast" 001B3A o="SIMS Corp." 001B3B o="Yi-Qing CO., LTD" @@ -6266,7 +6250,7 @@ 001B82 o="Taiwan Semiconductor Co., Ltd." 001B83 o="Finsoft Ltd" 001B84 o="Scan Engineering Telecom" -001B85 o="MAN Energy Solutions" +001B85 o="Everllence" 001B87 o="Deepsound Tech. Co., Ltd" 001B88 o="Divinet Access Technologies Ltd" 001B89 o="EMZA Visual Sense Ltd." @@ -6336,7 +6320,7 @@ 001BD8 o="FLIR Systems Inc" 001BD9 o="Edgewater Wireless Systems Inc" 001BDB o="Valeo VECS" -001BDC o="Vencer Co., Ltd." +001BDC,88D199 o="Vencer Co., Ltd." 001BDE o="Renkus-Heinz, Inc." 001BDF o="Iskra Sistemi d.d." 001BE0 o="TELENOT ELECTRONIC GmbH" @@ -6371,7 +6355,7 @@ 001C03 o="Betty TV Technology AG" 001C04 o="Airgain, Inc." 001C05 o="Nonin Medical Inc." -001C06 o="Siemens Numerical Control Ltd., Nanjing" +001C06,E8EF22 o="Siemens Numerical Control Ltd., Nanjing" 001C07 o="Cwlinux Limited" 001C08 o="Echo360, Inc." 001C09 o="SAE Electronic Co.,Ltd." @@ -6398,7 +6382,7 @@ 001C28 o="Sphairon Technologies GmbH" 001C29 o="CORE DIGITAL ELECTRONICS CO., LTD" 001C2A o="Envisacor Technologies Inc." -001C2B o="Alertme.com Limited" +001C2B o="Hive" 001C2C o="Synapse" 001C2D o="FlexRadio Systems" 001C2E,001DB3,001F28,001FFE,0021F7 o="HPN Supply Chain" @@ -6448,7 +6432,7 @@ 001C5F o="Winland Electronics, Inc." 001C60 o="CSP Frontier Technologies,Inc." 001C61 o="Galaxy Microsystems LImited" -001C62,001E75,001F6B,001FE3,0021FB,0022A9,002483,0025E5,0026E2,0034DA,003DE8,0057C1,00AA70,041B6D,08D46A,0C4885,10683F,10F1F2,10F96F,2021A5,2C54CF,2C598A,30766F,30FCEB,344DF7,34FCEF,3830F9,40B0FA,485929,48605F,48902F,505527,583F54,58A2B5,5C70A3,5CAF06,60E3AC,64899A,64BC0C,64C2DE,6CD68A,700514,74A722,78F882,7CF31B,805A04,88074B,88365F,88C9D0,8C3AE3,98B8BA,98D6F7,A039F7,A04F85,A09169,A816B2,A8922C,A8B86E,AC0D1B,ACF6F7,B4F1DA,B4F7A1,B81DAA,BCF5AC,C4438F,C49A02,C8F319,CCFA00,D013FD,DC0B34,E892A4,F01C13,F80CF3,F895C7,F8A9D0 o="LG Electronics (Mobile Communications)" +001C62,001E75,001F6B,001FE3,0021FB,0022A9,002483,0025E5,0026E2,0034DA,003DE8,0057C1,00AA70,041B6D,08D46A,0C4885,10683F,10F1F2,10F96F,2021A5,2C54CF,2C598A,30766F,30FCEB,344DF7,34FCEF,3830F9,40B0FA,485929,48605F,48902F,505527,583F54,58A2B5,5C70A3,5CAF06,603CEE,60E3AC,640D22,64899A,64BC0C,64C2DE,6CD68A,700514,74A722,78F882,7CF31B,805A04,88074B,88365F,88C9D0,8C3AE3,98B8BA,98D6F7,A039F7,A04F85,A09169,A816B2,A8922C,A8B86E,AC0D1B,ACF6F7,B4F1DA,B4F7A1,B81DAA,BCF5AC,C4438F,C49A02,C8F319,CCFA00,D013FD,DC0B34,E892A4,F01C13,F80CF3,F895C7,F8A9D0 o="LG Electronics (Mobile Communications)" 001C63 o="TRUEN" 001C64 o="Landis+Gyr" 001C65 o="JoeScan, Inc." @@ -6465,7 +6449,7 @@ 001C70 o="NOVACOMM LTDA" 001C71 o="Emergent Electronics" 001C72 o="Mayer & Cie GmbH & Co KG" -001C73,28993A,444CA8,7483EF,985D82,C0D682,D4AFF7,FCBD67 o="Arista Networks" +001C73,189CE1,28993A,28E71D,2CDDE9,3838A6,444CA8,540F2C,5C16C7,602972,68BF6C,6C7A63,7483EF,785F6C,88F715,8C019D,948ED3,985D82,9C69ED,A47A72,A88F99,AC3D94,B43A96,B858FF,B8A1B8,C06911,C0D682,C4CA2B,C8088B,CC1AA3,CCE4D1,D4AFF7,D806F3,E01CA7,E0FA5B,E47876,E8AEC5,EC8A48,FC59C0,FCBD67 o="Arista Networks" 001C74 o="Syswan Technologies Inc." 001C75 o="Segnet Ltd." 001C76 o="The Wandsworth Group Ltd" @@ -6473,9 +6457,10 @@ 001C78 o="WYPLAY SAS" 001C79 o="Cohesive Financial Technologies LLC" 001C7A o="Perfectone Netware Company Ltd" -001C7B,003054,FC4AE9 o="Castlenet Technology Inc." +001C7B,003054,184859,98F217,FC4AE9 o="Castlenet Technology Inc." 001C7C,021C7C o="PERQ SYSTEMS CORPORATION" 001C7D o="Excelpoint Manufacturing Pte Ltd" +001C7F,00A08E o="Check Point Software Technologies" 001C80 o="New Business Division/Rhea-Information CO., LTD." 001C81 o="NextGen Venturi LTD" 001C82 o="Genew Technologies" @@ -6506,7 +6491,7 @@ 001C9E o="Dualtech IT AB" 001C9F o="Razorstream, LLC" 001CA0 o="Production Resource Group, LLC" -001CA1 o="AKAMAI TECHNOLOGIES, INC." +001CA1,002218 o="Akamai Technologies Inc." 001CA3 o="Terra" 001CA5 o="Zygo Corporation" 001CA6 o="Win4NET" @@ -6545,7 +6530,7 @@ 001CD2 o="King Champion (Hong Kong) Limited" 001CD3 o="ZP Engineering SEL" 001CD5 o="ZeeVee, Inc." -001CD7,2856C1,9CDF03,A056B2,F8E877 o="Harman/Becker Automotive Systems GmbH" +001CD7,2856C1,384554,9CDF03,9CF55F,A056B2,B0BC7A,F8E877,FCF861 o="Harman/Becker Automotive Systems GmbH" 001CD8 o="BlueAnt Wireless" 001CD9 o="GlobalTop Technology Inc." 001CDA o="Exegin Technologies Limited" @@ -6565,16 +6550,15 @@ 001CE9 o="Galaxy Technology Limited" 001CEC o="Mobilesoft (Aust.) Pty Ltd" 001CED o="ENVIRONNEMENT SA" -001CEE,0022F3,243184,2884FA,345A06,34F62D,6879ED,781C5A,803896,9CC7D1,A0DDE5,ACA88E,F09FFC o="SHARP Corporation" +001CEE,0022F3,145051,243184,2884FA,345A06,34F62D,6879ED,781C5A,803896,8C5219,90E4B0,9CC7D1,A0DDE5,ACA88E,F09FFC o="SHARP Corporation" 001CF1 o="SUPoX Technology Co. , LTD." 001CF2 o="Tenlon Technology Co.,Ltd." -001CF3 o="EVS BROADCAST EQUIPMENT" 001CF4 o="Media Technology Systems Inc" 001CF5 o="Wiseblue Technology Limited" 001CF7 o="AudioScience" 001CF8 o="Parade Technologies, Ltd." -001CFA,B83A9D o="Alarm.com" -001CFD,00CC3F,1C549E,209E79,40B31E,48D0CF,5061F6,6888A1,7091F3,8C3A7E,9CAC6D,ACEB51,B8E3EE,E80FC8,F0B31E o="Universal Electronics, Inc." +001CFA,504074,B83A9D o="Alarm.com" +001CFD,00CC3F,185111,1C4190,1C549E,209E79,20E7B6,30F94B,40B31E,48D0CF,4CABF3,5061F6,6888A1,7091F3,8C3A7E,940D2D,9CAC6D,ACEB51,B4CBB8,B8C065,B8E3EE,B8F255,C8D884,D4958E,E4A634,E80FC8,EC470C,F0B31E,F4931C o="Universal Electronics, Inc." 001CFE o="Quartics Inc" 001CFF o="Napera Networks Inc" 001D00 o="Brivo Systems, LLC" @@ -6585,7 +6569,7 @@ 001D05 o="Cooper Lighting Solutions" 001D06 o="HM Electronics, Inc." 001D07 o="Shenzhen Sang Fei Consumer Communications Co.,Ltd" -001D08,CCD3E2 o="Jiangsu Yinhe Electronics Co.,Ltd." +001D08,C82496,CCD3E2 o="Jiangsu Yinhe Electronics Co.,Ltd." 001D0A o="Davis Instruments, Inc." 001D0B o="Power Standards Lab" 001D0C o="MobileCompia" @@ -6604,7 +6588,7 @@ 001D1D o="Inter-M Corporation" 001D1E o="KYUSHU TEN CO.,LTD" 001D1F o="Siauliu Tauro Televizoriai, JSC" -001D20,0030DA,1C6499,3872C0,64680C,C8D12A,D8B6B7,F88E85 o="Comtrend Corporation" +001D20,0030DA,1C6499,3872C0,64680C,A01842,C8D12A,D8B6B7,F88E85 o="Comtrend Corporation" 001D21 o="Alcad SL" 001D22 o="Foss Analytical A/S" 001D23 o="SENSUS" @@ -6652,14 +6636,14 @@ 001D57 o="CAETEC Messtechnik" 001D58 o="CQ Inc" 001D59 o="Mitra Energy & Infrastructure" -001D5B o="Tecvan Informática Ltda" +001D5B o="Tecvan Informatica Ltda" 001D5C o="Tom Communication Industrial Co.,Ltd." 001D5D o="Control Dynamics Pty. Ltd." 001D5E o="COMING MEDIA CORP." 001D5F o="OverSpeed SARL" 001D61 o="BIJ Corporation" 001D62 o="InPhase Technologies" -001D63 o="Miele & Cie. KG" +001D63,40B02F o="Miele & Cie. KG" 001D64 o="Adam Communications Systems Int Ltd" 001D65 o="Microwave Radio Communications" 001D66 o="Hyundai Telecom" @@ -6749,7 +6733,7 @@ 001DDC o="HangZhou DeChangLong Tech&Info Co.,Ltd" 001DDD o="DAT H.K. LIMITED" 001DDE o="Zhejiang Broadcast&Television Technology Co.,Ltd." -001DDF,004279,042144,0CA694,98523D,B8D50B,F8DF15,FCA89A o="Sunitec Enterprise Co.,Ltd" +001DDF,004279,042144,0CA694,2064DE,685932,6C4760,785EA2,98523D,B8D50B,F8DF15,FCA89A o="Sunitec Enterprise Co.,Ltd" 001DE2 o="Radionor Communications" 001DE3 o="Intuicom" 001DE4 o="Visioneered Image Systems" @@ -6819,7 +6803,7 @@ 001E30 o="Shireen Inc" 001E31,5865E6,884067 o="infomark" 001E32 o="Zensys" -001E33,00266C,008CFA,00A0D1,3868DD,7CD30A o="INVENTEC CORPORATION" +001E33,00266C,008CFA,00A0D1,3868DD,7CD30A,A85BD1 o="INVENTEC CORPORATION" 001E34 o="CryptoMetrics" 001E36 o="IPTE" 001E38 o="Bluecard Software Technology Co., Ltd." @@ -6830,7 +6814,7 @@ 001E40,741865,80A1D7,94D723,A89DD2,FCB0C4 o="Shanghai DareGlobal Technologies Co.,Ltd" 001E41 o="Microwave Communication & Component, Inc." 001E42 o="Teltonika" -001E43 o="AISIN AW CO.,LTD." +001E43 o="AISIN CORPORATION" 001E44 o="SANTEC" 001E47 o="PT. Hariff Daya Tunggal Engineering" 001E48 o="Wi-Links" @@ -6860,7 +6844,7 @@ 001E6D o="IT R&D Center" 001E6E o="Shenzhen First Mile Communications Ltd" 001E6F o="Magna-Power Electronics, Inc." -001E70 o="Cobham Antenna Systems" +001E70 o="Chelton Limited" 001E71 o="MIrcom Group of Companies" 001E72 o="PCS" 001E76 o="Thermo Fisher Scientific" @@ -6885,7 +6869,7 @@ 001E93 o="CiriTech Systems Inc" 001E94 o="SUPERCOM TECHNOLOGY CORPORATION" 001E95 o="SIGMALINK" -001E96 o="Sepura Plc" +001E96 o="Sepura Limited" 001E97 o="Medium Link System Technology CO., LTD," 001E98 o="GreenLine Communications" 001E99 o="Vantanol Industrial Corporation" @@ -6905,7 +6889,7 @@ 001EAB o="TeleWell Oy" 001EAC o="Armadeus Systems" 001EAD o="Wingtech Group Limited" -001EAE,0054AF,20AD56 o="Continental Automotive Systems Inc." +001EAE,0054AF,20AD56,8C5F48,D494FB o="AUMOVIO Systems, Inc." 001EAF o="Ophir Optronics Ltd" 001EB0 o="ImesD Electronica S.L." 001EB1 o="Cryptsoft Pty Ltd" @@ -6923,7 +6907,7 @@ 001EC3 o="Kozio, Inc." 001EC4 o="Celio Corp" 001EC5 o="Middle Atlantic Products Inc" -001EC6 o="Obvius Holdings LLC" +001EC6 o="Leviton Manufacturing Co., Inc" 001EC8 o="Rapid Mobile (Pty) Ltd" 001ECB o="%RPC %Energoautomatika% Ltd" 001ECC o="CDVI" @@ -6931,7 +6915,6 @@ 001ECE o="BISA Technologies (Hong Kong) Limited" 001ECF o="PHILIPS ELECTRONICS UK LTD" 001ED0 o="Ingespace" -001ED1 o="Keyprocessor B.V." 001ED2 o="Ray Shine Video Technology Inc" 001ED3 o="Dot Technology Int'l Co., Ltd." 001ED4 o="Doble Engineering" @@ -6999,7 +6982,7 @@ 001F1E o="Astec Technology Co., Ltd" 001F20 o="Logitech Europe SA" 001F21 o="Inner Mongolia Yin An Science & Technology Development Co.,L" -001F23 o="Interacoustics" +001F23 o="DGS Diagnostics A/S" 001F24 o="DIGITVIEW TECHNOLOGY CO., LTD." 001F25 o="MBS GmbH" 001F2A o="ACCM" @@ -7095,7 +7078,7 @@ 001F98 o="DAIICHI-DENTSU LTD." 001F99 o="SERONICS co.ltd" 001F9B o="POSBRO" -001F9C o="LEDCO" +001F9C o="Havis Inc." 001FA0 o="A10 Networks" 001FA1 o="Gtran Inc" 001FA2 o="Datron World Communications, Inc." @@ -7402,7 +7385,7 @@ 0020F9 o="PARALINK NETWORKS, INC." 0020FA o="GDE SYSTEMS, INC." 0020FB o="OCTEL COMMUNICATIONS CORP." -0020FC o="MATROX" +0020FC o="Matrox Central Services Inc" 0020FD o="ITV TECHNOLOGIES, INC." 0020FE o="TOPWARE INC. / GRAND COMPUTER" 0020FF o="SYMMETRICAL TECHNOLOGIES" @@ -7416,7 +7399,7 @@ 00210B o="GEMINI TRAZE RFID PVT. LTD." 00210C o="Cymtec Systems, Inc." 00210D o="SAMSIN INNOTEC" -00210E o="Orpak Systems L.T.D." +00210E o="Gilbarco Inc." 00210F o="Cernium Corp" 002110 o="Clearbox Systems" 002111 o="Uniphone Inc." @@ -7456,6 +7439,7 @@ 00213B o="Berkshire Products, Inc" 00213C o="AliphCom" 00213D o="Cermetek Microelectronics, Inc." +00213E,24E927 o="TomTom International BV" 00213F o="A-Team Technology Ltd." 002140 o="EN Technologies Inc." 002141 o="RADLIVE" @@ -7501,7 +7485,7 @@ 00217A o="Sejin Electron, Inc." 00217B o="Bastec AB" 00217D o="PYXIS S.R.L." -00217E o="Telit Communication s.p.a" +00217E,4802AF,9CBAC9 o="Telit Communication s.p.a" 00217F o="Intraco Technology Pte Ltd" 002181 o="Si2 Microsystems Limited" 002182 o="SandLinks Systems, Ltd." @@ -7623,7 +7607,6 @@ 002214 o="RINNAI KOREA" 002216 o="SHIBAURA VENDING MACHINE CORPORATION" 002217 o="Neat Electronics" -002218 o="AKAMAI TECHNOLOGIES INC" 00221A o="Audio Precision" 00221B o="Morega Systems" 00221D o="Freegene Technology LTD" @@ -7681,16 +7664,16 @@ 00225C o="Multimedia & Communication Technology" 00225D o="Digicable Network India Pvt. Ltd." 00225E o="Uwin Technologies Co.,LTD" -00225F,00F48D,1063C8,18CF5E,1C659D,2016D8,20689D,24FD52,28E347,2CD05A,3010B3,3052CB,30D16B,3C9180,3C9509,3CA067,40F02F,446D57,48D224,505BC2,548CA0,5800E3,5C93A2,646E69,68A3C4,701A04,70C94E,70F1A1,74DE2B,74DFBF,74E543,803049,940853,94E979,9822EF,9CB70D,A4DB30,ACB57D,ACE010,B00594,B88687,B8EE65,C8FF28,CCB0DA,D05349,D0DF9A,D8F3BC,E4AAEA,E82A44,E8617E,E8C74F,E8D0FC,F82819,F8A2D6 o="Liteon Technology Corporation" +00225F,00F48D,1063C8,145AFC,14B5CD,18CF5E,1C659D,2016D8,20689D,24B2B9,24FD52,28E347,2CD05A,3010B3,3052CB,30D16B,3C9180,3C9509,3CA067,40F02F,446D57,48D224,505BC2,548CA0,5800E3,5C93A2,646E69,68A3C4,700894,701A04,70C94E,70F1A1,744CA1,74DE2B,74DFBF,74E543,803049,940853,94974F,94E979,9822EF,9C2F9D,9CB70D,A4DB30,ACB57D,ACE010,B00594,B81EA4,B88687,B8EE65,C03532,C8FF28,CCB0DA,D03957,D05349,D0DF9A,D8F3BC,E00AF6,E4AAEA,E82A44,E8617E,E8C74F,E8D0FC,F46ADD,F82819,F8A2D6 o="Liteon Technology Corporation" 002260 o="AFREEY Inc." 002261,305890 o="Frontier Silicon Ltd" 002262 o="BEP Marine" 002263 o="Koos Technical Services, Inc." -00226A o="Honeywell" +00226A,004084,58FCC8,C4EFDA o="Honeywell" 00226C o="LinkSprite Technologies, Inc." 00226D o="Shenzhen GIEC Electronics Co., Ltd." 00226E o="Gowell Electronic Limited" -00226F o="3onedata Technology Co. Ltd." +00226F,DC3130 o="3onedata Technology Co. Ltd." 002270 o="ABK North America, LLC" 002271 o="Jäger Computergesteuerte Meßtechnik GmbH." 002272 o="American Micro-Fuel Device Corp." @@ -7712,7 +7695,7 @@ 002286 o="ASTRON" 002287 o="Titan Wireless LLC" 002288 o="Sagrad, Inc." -002289 o="Vandelrande APC inc." +002289 o="Vanderlande APC inc." 00228A o="Teratronik elektronische systeme gmbh" 00228B o="Kensington Computer Products Group" 00228C o="Photon Europe GmbH" @@ -7730,7 +7713,7 @@ 00229D o="PYUNG-HWA IND.CO.,LTD" 00229E o="Social Aid Research Co., Ltd." 00229F o="Sensys Traffic AB" -0022A0,2863BD o="APTIV SERVICES US, LLC" +0022A0,2863BD,441DB1,646911 o="APTIV SERVICES US, LLC" 0022A1 o="Huawei Symantec Technologies Co.,Ltd." 0022A2 o="Xtramus Technologies" 0022A3 o="California Eastern Laboratories" @@ -7762,14 +7745,14 @@ 0022C5 o="INFORSON Co,Ltd." 0022C6 o="Sutus Inc" 0022C7 o="SEGGER Microcontroller GmbH & Co. KG" -0022C8 o="Applied Instruments B.V." +0022C8 o="ModuVision Technologies" 0022C9 o="Lenord, Bauer & Co GmbH" 0022CA o="Anviz Biometric Tech. Co., Ltd." 0022CB o="IONODES Inc." 0022CC o="SciLog, Inc." 0022CD o="Ared Technology Co., Ltd." 0022CF,0090CC,1CC035,44DC91,8C4CDC,E09DB8 o="PLANEX COMMUNICATIONS INC." -0022D0,A09E1A o="Polar Electro Oy" +0022D0,24ACAC,A09E1A o="Polar Electro Oy" 0022D1 o="Albrecht Jung GmbH & Co. KG" 0022D2 o="All Earth Comércio de Eletrônicos LTDA." 0022D3 o="Hub-Tech" @@ -7853,7 +7836,7 @@ 002338 o="OJ-Electronics A/S" 00233B o="C-Matic Systems Ltd" 00233C o="Alflex" -00233D,C0EE40 o="Laird Technologies" +00233D o="Laird Technologies" 00233F o="Purechoice Inc" 002340,402E28 o="MiXTelematics" 002342 o="Coffee Equipment Company" @@ -7902,10 +7885,10 @@ 002383 o="InMage Systems Inc" 002384 o="GGH Engineering s.r.l." 002385 o="ANTIPODE" -002386 o="Tour & Andersson AB" +002386 o="IMI Hydronic Engineering international SA" 002387 o="ThinkFlood, Inc." 002388 o="V.T. Telematica S.p.a." -00238A,144E2A,1892A4,1C1161,208058,2C39C1,54C33E,7487BB,78D71A,94434D,9C7A03,C4836F,D0196A,ECB0E1 o="Ciena Corporation" +00238A,0479FD,144E2A,1892A4,1C1161,208058,2465E1,2C39C1,2C4A11,54C33E,5C07A4,7487BB,785FA4,78D71A,848DCE,94434D,9811CC,9C7A03,AC89D2,C4836F,C8CA79,D0196A,D439B8,D4B7D0,D4E4C3,E09B27,E46D7F,ECB0E1 o="Ciena Corporation" 00238D o="Techno Design Co., Ltd." 00238F o="NIDEC COPAL CORPORATION" 002390 o="Algolware Corporation" @@ -7940,7 +7923,7 @@ 0023B8 o="Sichuan Jiuzhou Electronic Technology Co.,Ltd" 0023B9 o="Airbus Defence and Space Deutschland GmbH" 0023BA o="Chroma" -0023BB o="Schmitt Industries" +0023BB o="Accretech SBS, Inc." 0023BC o="EQ-SYS GmbH" 0023BD o="Digital Ally, Inc." 0023BF o="Mainpine, Inc." @@ -7951,7 +7934,7 @@ 0023C4 o="Lux Lumen" 0023C5 o="Radiation Safety and Control Services Inc" 0023C6,849D64 o="SMC Corporation" -0023C7 o="AVSystem" +0023C7 o="AVSystem sp. z o. o." 0023C8 o="TEAM-R" 0023C9 o="Sichuan Tianyi Information Science & Technology Stock CO.,LTD" 0023CA o="Behind The Set, LLC" @@ -7962,7 +7945,7 @@ 0023D1 o="TRG" 0023D2 o="Inhand Electronics, Inc." 0023D3 o="AirLink WiFi Networking Corp." -0023D5 o="WAREMA electronic GmbH" +0023D5 o="WAREMA Renkhoff SE" 0023D8 o="Ball-It Oy" 0023D9 o="Banner Engineering" 0023DA o="Industrial Computer Source (Deutschland)GmbH" @@ -8074,7 +8057,7 @@ 002466 o="Unitron nv" 002467 o="AOC International (Europe) GmbH" 002468,9C62AB,FC9BC6 o="Sumavision Technologies Co.,Ltd" -002469 o="Smart Doorphones" +002469 o="Fasttel - Smart Doorphones" 00246A o="Solid Year Co., Ltd." 00246B o="Covia, Inc." 00246D o="Weinzierl Engineering GmbH" @@ -8120,7 +8103,7 @@ 0024AB o="A7 Engineering, Inc." 0024AC o="Hangzhou DPtech Technologies Co., Ltd." 0024AD o="Adolf Thies Gmbh & Co. KG" -0024AE o="IDEMIA" +0024AE o="IDEMIA FRANCE SAS" 0024B0 o="ESAB AB" 0024B1 o="Coulomb Technologies" 0024B3 o="Graf-Syteco GmbH & Co. KG" @@ -8131,7 +8114,7 @@ 0024BB o="CENTRAL Corporation" 0024BC o="HuRob Co.,Ltd" 0024BD o="Hainzl Industriesysteme GmbH" -0024BF o="CIAT" +0024BF o="Carrier Culoz SA" 0024C0 o="NTI COMODO INC" 0024C2 o="Asumo Co.,Ltd." 0024C5 o="Meridian Audio Limited" @@ -8158,7 +8141,7 @@ 0024E1 o="Convey Computer Corp." 0024E2 o="HASEGAWA ELECTRIC CO.,LTD." 0024E3 o="CAO Group" -0024E4 o="Withings" +0024E4,A47EFA o="Withings" 0024E5 o="Seer Technology, Inc" 0024E6 o="In Motion Technology Inc." 0024E7 o="Plaster Networks" @@ -8206,7 +8189,7 @@ 00251F o="ZYNUS VISION INC." 002520 o="SMA Railway Technology GmbH" 002521 o="Logitek Electronic Systems, Inc." -002522,7085C2,A8A159,BC5FF4,D05099 o="ASRock Incorporation" +002522,54FB66,7085C2,9C6B00,A8A159,BC5FF4,D05099 o="ASRock Incorporation" 002523 o="OCP Inc." 002524 o="Lightcomm Technology Co., Ltd" 002525 o="CTERA Networks Ltd." @@ -8225,7 +8208,7 @@ 002533 o="WITTENSTEIN AG" 002535 o="Minimax GmbH & Co KG" 002537 o="Runcom Technologies Ltd." -002538 o="Samsung Electronics Co., Ltd., Memory Division" +002538,18BFB3 o="Samsung Electronics Co., Ltd., Memory Division" 002539 o="IfTA GmbH" 00253A o="CEVA, Ltd." 00253B o="din Dietmar Nocker Facilitymanagement GmbH" @@ -8290,7 +8273,7 @@ 00258D o="Haier" 00258E o="The Weather Channel" 00258F o="Trident Microsystems, Inc." -002590,003048,0CC47A,3CECEF,AC1F6B o="Super Micro Computer, Inc." +002590,003048,0CC47A,3CECEF,7CC255,905A08,AC1F6B o="Super Micro Computer, Inc." 002591 o="NEXTEK, Inc." 002592 o="Guangzhou Shirui Electronic Co., Ltd" 002593 o="DatNet Informatikai Kft." @@ -8337,7 +8320,7 @@ 0025C7 o="altek Corporation" 0025C8 o="S-Access GmbH" 0025C9 o="SHENZHEN HUAPU DIGITAL CO., LTD" -0025CA o="LS Research, LLC" +0025CA,18C293,B0FB15,C0EE40,D8031A,E8CBF5,ECC07A o="Ezurio, LLC" 0025CB o="Reiner SCT" 0025CC o="Mobile Communications Korea Incorporated" 0025CD o="Skylane Optics" @@ -8352,6 +8335,7 @@ 0025DB o="ATI Electronics(Shenzhen) Co., LTD" 0025DD o="SUNNYTEK INFORMATION CO., LTD." 0025DE o="Probits Co., LTD." +0025DF o="Axon Enterprise, Inc." 0025E0 o="CeedTec Sdn Bhd" 0025E1 o="SHANGHAI SEEYOO ELECTRONIC & TECHNOLOGY CO., LTD" 0025E2 o="Everspring Industry Co., Ltd." @@ -8375,7 +8359,7 @@ 0025F9 o="GMK electronic design GmbH" 0025FA o="J&M Analytik AG" 0025FB o="Tunstall Healthcare A/S" -0025FC o="ENDA ENDUSTRIYEL ELEKTRONIK LTD. STI." +0025FC o="ENDA" 0025FD o="OBR Centrum Techniki Morskiej S.A." 0025FE o="Pilot Electronics Corporation" 0025FF o="CreNova Multimedia Co., Ltd" @@ -8383,7 +8367,7 @@ 002601 o="Cutera Inc" 002602 o="SMART Temps LLC" 002603 o="Shenzhen Wistar Technology Co., Ltd" -002604 o="Audio Processing Technology Ltd" +002604,00903F o="WorldCast Systems" 002605 o="CC Systems AB" 002606 o="RAUMFELD GmbH" 002607 o="Enabling Technology Pty Ltd" @@ -8421,7 +8405,7 @@ 00262E o="Chengdu Jiuzhou Electronic Technology Inc" 00262F o="HAMAMATSU TOA ELECTRONICS" 002630 o="ACOREL S.A.S" -002631 o="COMMTACT LTD" +002631,D8032A o="COMMTACT LTD" 002632 o="Instrumentation Technologies d.d." 002633 o="MIR - Medical International Research" 002634 o="Infineta Systems, Inc" @@ -8438,7 +8422,7 @@ 002646 o="SHENYANG TONGFANG MULTIMEDIA TECHNOLOGY COMPANY LIMITED" 002647 o="WFE TECHNOLOGY CORP." 002648 o="Emitech Corp." -00264E o="Rail & Road Protec GmbH" +00264E o="r2p GmbH" 00264F o="Krüger &Gothe GmbH" 002653 o="DaySequerra Corporation" 002656 o="Sansonic Electronics USA" @@ -8459,7 +8443,7 @@ 002671 o="AUTOVISION Co., Ltd" 002672 o="AAMP of America" 002673 o="RICOH COMPANY,LTD." -002674 o="Hunter Douglas" +002674,C8CCB5 o="Hunter Douglas" 002675,00300A,E08E3C o="Aztech Electronics Pte Ltd" 002676 o="COMMidt AS" 002677 o="DEIF A/S" @@ -8469,14 +8453,14 @@ 00267B o="GSI Helmholtzzentrum für Schwerionenforschung GmbH" 00267C o="Metz-Werke GmbH & Co KG" 00267D o="A-Max Technology Macao Commercial Offshore Company Limited" -00267F o="Zenterio AB" +00267F o="Oregan Networks Ltd." 002680 o="SIL3 Pty.Ltd" 002681 o="Interspiro AB" 002683 o="Ajoho Enterprise Co., Ltd." 002684 o="KISAN SYSTEM" 002685 o="Digital Innovation" 002686 o="Quantenna Communcations, Inc." -002689 o="General Dynamics Robotic Systems" +002689 o="General Dynamics Land Systems Inc." 00268A o="Terrier SC Ltd" 00268B o="Guangzhou Escene Computer Technology Limited" 00268C o="StarLeaf Ltd." @@ -8484,7 +8468,7 @@ 00268E o="Alta Solutions, Inc." 00268F o="MTA SpA" 002690 o="I DO IT" -002692,104B46,28E98E,38E08E,58528A o="Mitsubishi Electric Corporation" +002692,104B46,28E98E,30BE3B,38E08E,58528A,94A4B5 o="Mitsubishi Electric Corporation" 002693 o="QVidium Technologies, Inc." 002694 o="Senscient Ltd" 002695 o="ZT Group Int'l Inc" @@ -8591,7 +8575,7 @@ 002718 o="Suzhou NEW SEAUNION Video Technology Co.,Ltd" 00271A o="Geenovo Technology Ltd." 00271B o="Alec Sicherheitssysteme GmbH" -00271C,085DDD,883C1C,B4A94F o="MERCURY CORPORATION" +00271C,085DDD,0C96CD,5046AE,883C1C,B4A94F o="MERCURY CORPORATION" 00271D o="Comba Telecom Systems (China) Ltd." 00271E o="Xagyl Communications" 00271F o="MIPRO Electronics Co., Ltd" @@ -8600,9 +8584,11 @@ 00289F o="Semptian Co., Ltd." 002926 o="Applied Optoelectronics, Inc Taiwan Branch" 002AAF o="LARsys-Automation GmbH" -002B67,507B9D,5405DB,54E1AD,68F728,8C1645,98FA9B,C85B76,E86A64,F875A4 o="LCFC(HeFei) Electronics Technology co., ltd" +002B67,183D2D,28D244,38F3AB,446370,507B9D,5405DB,54E1AD,68F728,6C2408,745D22,84A938,88A4C2,8C1645,8C8CAA,902E16,98FA9B,9C2DCD,A82BDD,C4C6E6,C4EFBB,C85309,C85B76,E86A64,E88088,E89744,F875A4,FC5CEE o="LCFC(Hefei) Electronics Technology co., ltd" +002B90 o="Zelus(Shenzhen) Technology Ltd." 002D76 o="TITECH GmbH" -002FD9,006762,00BE9E,04A2F3,04C1B9,04ECBB,0C2A86,0C35FE,0C6ABC,0C8447,105887,1077B0,1088CE,10DC4A,142233,14E9B2,185282,18A3E8,18D225,1C398A,1C60D2,1CDE57,20896F,24CACB,28BF89,341A35,344B3D,34BF90,38144E,387A3C,3CFB5C,444B7E,48555F,48A0F8,48F97C,50C6AD,543E64,54DF24,583BD9,5CE3B6,60B617,68FEDA,6C09BF,6C3845,6C9E7C,6CA4D1,6CA858,70B921,7412BB,741E93,74C9A3,74CC39,74E19A,74EC42,7CC77E,7CF9A0,803AF4,809FAB,80C7C5,88947E,8C5FAD,9055DE,94D505,9C88AD,9CFEA1,A013CB,A0D83D,A41908,A8E705,ACC25D,B0E2E5,B8C716,BC9889,BCC00F,C03656,C464B7,C4F0EC,C84029,C8F6C8,CC0677,CC500A,D00492,D041C9,D05995,D092FA,D45800,D467E7,D4AD2D,D4F786,D4FC13,D89ED4,E02AE6,E42F26,E8018D,E85AD1,E8910F,E8C417,E8D099,EC8AC7,F0407B,F08CFB,F4573E,F46FED,F84D33,F8AFDB,F8C96C,FC61E9,FCA6CD,FCF647 o="Fiberhome Telecommunication Technologies Co.,LTD" +002DB3,08E9F6,08FBEA,20406A,2050E7,282D06,40D95A,40FDF3,50411C,5478C9,704A0E,70F754,8CCDFE,9CB8B4,B81332,B82D28,C0F535,D49CDD,F023AE o="AMPAK Technology,Inc." +002FD9,006762,00BE9E,04A2F3,04C1B9,04ECBB,0830CE,0846C7,087458,0C2A86,0C35FE,0C6ABC,0C7474,0C8447,10071D,104C43,105887,1077B0,1088CE,10DC4A,14172A,142233,142D79,14E9B2,185282,18A3E8,18D225,1C398A,1C60D2,1CD1BA,1CDE57,2025D2,205D0D,20896F,24B7DA,24CACB,24E3A4,24E4C8,28172E,28563A,286DDA,28BF89,28F7D6,3085EB,3086F1,30A176,341A35,342DA3,344B3D,34BF90,38144E,383D5B,38637F,387A3C,38A89B,3C1060,3CFB5C,444B7E,48555F,485AEA,48A0F8,48F97C,50C6AD,540A77,543E64,54DF24,54E005,58239B,583BD9,58AEF1,58C57E,5C7DF3,5CA4A4,5CE3B6,60B617,649CF3,64B2B4,68403C,685811,689A21,68B76B,68DECE,68E905,68FEDA,6C09BF,6C3845,6C48A6,6C9E7C,6CA4D1,6CA858,6CD719,70B921,70D51E,7412BB,741E93,7430AF,745D68,74C9A3,74CC39,74E19A,74EC42,78465F,7CC74A,7CC77E,7CF9A0,7CFCFD,803AF4,809FAB,80C7C5,8406FA,844DBE,848102,882067,88238C,88659F,88947E,88B2AB,8C5FAD,8C73A0,903CDA,903E7F,9055DE,9070D3,90837E,94AA0A,94D505,98EDCA,9C6865,9C88AD,9CA6D8,9CFEA1,A013CB,A0D83D,A0E06D,A41908,A844AA,A8CEE7,A8E705,A8EA71,A8FECE,AC4E65,AC80AE,ACC25D,ACC4A9,ACCB36,B0104B,B05C16,B0A7D2,B0E2E5,B4608C,B49F4D,B8C716,B8DFD4,B8F774,BC0004,BC4632,BC9889,BCAA82,BCC00F,C03656,C096A4,C464B7,C4F0EC,C84029,C8741B,C8E07A,C8F6C8,CC0677,CC500A,CC77C9,CCB071,D00492,D041C9,D05995,D069FF,D07880,D092FA,D40068,D45800,D467E7,D49F29,D4AD2D,D4F786,D4FC13,D89ED4,D8F507,E00ECE,E02AE6,E0604A,E096E8,E0F678,E42F26,E8018D,E85AD1,E8910F,E8B3EF,E8C417,E8D099,EC8AC7,ECE6A2,F0407B,F08CFB,F0ABF3,F4573E,F46FED,F84D33,F8AFDB,F8C96C,F8E4A4,FC61E9,FCA6CD,FCF647 o="Fiberhome Telecommunication Technologies Co.,LTD" 003000 o="ALLWELL TECHNOLOGY CORP." 003001 o="SMP" 003002 o="Expand Networks" @@ -8640,7 +8626,7 @@ 003028 o="FASE Saldatura srl" 003029 o="OPICOM" 00302A o="SOUTHERN INFORMATION" -00302B o="INALP NETWORKS, INC." +00302B o="Inalp Solutions AG" 00302C o="SYLANTRO SYSTEMS CORPORATION" 00302D o="QUANTUM BRIDGE COMMUNICATIONS" 00302E o="Hoft & Wessel AG" @@ -8664,7 +8650,7 @@ 003041 o="SAEJIN T & M CO., LTD." 003042 o="DeTeWe-Deutsche Telephonwerke" 003043 o="IDREAM TECHNOLOGIES, PTE. LTD." -003044 o="CradlePoint, Inc" +003044,00E01C o="CradlePoint, Inc" 003045 o="Village Networks, Inc. (VNI)" 003046 o="Controlled Electronic Manageme" 003047 o="NISSEI ELECTRIC CO., LTD." @@ -8677,12 +8663,10 @@ 00304F,A8F7E0 o="PLANET Technology Corporation" 003050 o="Versa Technology" 003051 o="ORBIT AVIONIC & COMMUNICATION" -003052 o="ELASTIC NETWORKS" 003053 o="Basler AG" 003055 o="Renesas Technology America, Inc." 003057 o="QTelNet, Inc." 003058 o="API MOTION" -003059 o="KONTRON COMPACT COMPUTERS AG" 00305A o="TELGEN CORPORATION" 00305B o="Toko Inc." 00305C o="SMAR Laboratories Corp." @@ -8727,7 +8711,6 @@ 00308B o="Brix Networks" 00308C,00E09E o="Quantum Corporation" 00308D o="Pinnacle Systems, Inc." -00308E o="CROSS MATCH TECHNOLOGIES, INC." 00308F o="MICRILOR, Inc." 003090 o="CYRA TECHNOLOGIES, INC." 003091 o="TAIWAN FIRST LINE ELEC. CORP." @@ -8831,16 +8814,26 @@ 0030FC o="Terawave Communications, Inc." 0030FD o="INTEGRATED SYSTEMS DESIGN" 0030FE o="DSA GmbH" +003126,007839,00D0F6,0425F0,043D6E,04A526,04C241,08474C,0C354F,0C4B48,0C54B9,1005E1,107BCE,108A7B,109826,10E878,140F42,141826,143E60,147BAC,1814AE,185345,185B00,1886C3,18C300,18E215,1C2A8B,1CEA1B,205E97,20DE1E,20E09C,20F44F,242124,2478EF,24F68D,2C6F37,3000FC,30FE31,34AA99,38521A,3C1A65,405582,407C7D,409B21,40A53B,48F7F1,48F8E1,4C62CD,4CC94F,504061,50523B,50A0A4,50E0EF,58306E,5C76D5,5C8382,5CE7A0,60C9AA,68A34F,68AB09,6C0D34,6C6286,6CAEE3,702526,78034F,781F7C,783486,7C41A2,7C8530,7CAF77,80B946,84262B,8439FC,846991,84DBFC,8818F1,8C0C87,8C7A00,8C83DF,8C90D3,8CF773,903AA0,90C119,90ECE3,941787,944FDB,94AA07,94ABFE,94B819,94E98C,98B039,9C47F4,9C5467,9CA389,9CE041,9CF155,A067D6,A47B2C,A492CB,A4E31B,A4FF95,A81378,A82316,A824B8,A89AD7,A8E5EC,AC8FF8,B0700D,B0754D,B851A9,BC1541,BC52B4,BC6B4D,BC8D0E,C014B8,C4084A,C8727E,CC66B2,CC874A,CCDEDE,D44D77,D4E33F,D89AC1,DCA120,DCB082,E0CB19,E42B79,E44164,E48184,E886CF,E89363,E89F39,E8F375,EC0C96,EC8E12,F06C73,F0B11D,F81308,F85C4D,F8BAE6,FC1CA1,FC2FAA o="Nokia" +003192,005F67,1027F5,14EBB6,1C61B4,202351,203626,242FD0,2887BA,30DE4B,3460F9,3C52A1,3C64CF,40AE30,40ED00,482254,5091E3,54AF97,5C628B,5CA6E6,5CE931,6083E7,60A4B7,687FF0,6C5AB0,74FECE,788CB5,7CC2C6,7CF17E,98254A,9C5322,9CA2F4,A842A1,A86E84,AC15A2,B01921,B0A7B9,B4B024,C006C3,CC68B6,D84489,DC6279,E4FAC4,E848B8,F0090D,F0A731 o="TP-Link Systems Inc" 00323A o="so-logic" 00336C o="SynapSense Corporation" +00337A,105A17,10D561,1869D8,18DE50,1C90FF,20F1B2,30487D,381F8D,382CE5,38A5C9,3C0B59,4CA919,508A06,508BB9,68572D,708976,7CF666,80647C,84E342,A09208,A88055,B8060D,BC351E,C0F853,C482E1,CC8CBF,D4A651,D81F12,D8C80C,D8D668,D8FC92,E4AEE4,F8172D,FC3CD7,FC671F o="Tuya Smart Inc." +0034A1 o="RF-LAMBDA USA INC." 0034F1 o="Radicom Research, Inc." 003532 o="Electro-Metrics Corporation" 003560 o="Rosen Aviation" +0036BE o="Northwest Towers" +0036D7 o="Keltron IOT Corp." 0036F8 o="Conti Temic microelectronic GmbH" 0036FE o="SuperVision" +003969 o="Air-Weigh Incorporated" 003AAF o="BlueBit Ltd." 003CC5 o="WONWOO Engineering Co., Ltd" 003D41 o="Hatteland Computer AS" +003DE1,004B0D,00566D,006619,00682B,008320,008A55,0094EC,00A45F,00ADD5,00BB1C,00D8A2,04331F,04495D,044BB1,0463D0,047AAE,048C9A,04BA1C,04C1D8,04D3B5,04F03E,04F169,04FF08,081AFD,08276B,082E36,0831A4,085104,086E9C,087C43,08A842,08B3D6,08C06C,08E7E5,08F458,0C0ECB,0C1773,0C8306,0C839A,0CB5B3,0CB78E,0CBEF1,0CE4A0,100D8C,10327E,105DDC,107100,1086F4,109D7A,10BC36,10DA49,10E953,10FC33,143B51,145120,145594,14563A,147740,14A32F,14A3B4,14DAB9,14DE39,14FB70,183CB7,18703B,189E2C,18AA0F,18BB1C,18BB41,18C007,18D98F,1C0EAF,1C1386,1C13FA,1C1FF1,1C472F,1CE6AD,1CF42B,205E64,206BF4,20DCFD,24016F,241551,241AE6,2427E5,2430F8,243FAA,24456B,244885,245CC5,245F9F,2462C6,24649F,246C60,246F8C,247645,2481C7,24A487,24A799,24E29D,24E9CA,282B96,283334,2836F0,2845AC,2848E7,285471,2864B0,28D3EA,2C0786,2C08B4,2C0D27,2C2080,2C3A91,2C3AB1,2C780E,2CA042,2CB7A1,2CC546,2CC8F5,2CE2D9,2CF295,3035C5,304E1B,3066D0,307C4A,308AF7,309610,30963B,30A2C2,30A998,30AAE4,30E396,30E4D8,30EB15,3446EC,345184,347146,347E00,34B20A,34D693,34F5D7,3822F4,38396C,384DD2,385247,3898E9,38A44B,38B3F7,38F7F1,38FC34,3C240A,3C4AC9,3C7787,3C9BC6,3CA916,3CB233,3CF692,400634,4014AD,401CD4,4024D2,403B7B,4076A9,408EDF,40B6E7,40B70E,40C3BC,40DCA5,4405B8,44272E,4455C4,449F46,44A038,44AE44,44B3C5,44C7FC,4805E2,4825F3,4831DB,483584,483871,48474B,484982,484996,484C86,486345,488C63,48A516,48EF61,48FC07,4C2B3B,4C2FD7,4C5077,4C617E,4C63AD,4C889E,4CCA95,4CDE48,4CF475,5021EC,502873,503F50,504B9E,50586F,5066E5,5068AC,5078B0,5089D1,50A1F3,50F7ED,50F958,540764,540DF9,54211D,545284,5455D5,545618,5471DD,54A6DB,54D9C6,54DD21,54E15B,54F294,54F607,58355D,58879F,589351,5894AE,58957E,58AE2B,58B18F,58F2FC,58FB3E,5C1720,5C78F8,5C9AA1,5CBD9A,5CC787,5CD89E,60183A,604F5B,605E4F,605FAA,608306,60A751,60AAEF,60B0E8,642315,642753,6451F4,646140,647924,64A198,64A28A,64B0E8,64D7C0,64F705,681324,6822E5,684571,684C25,686372,68951B,689B43,689E6A,6C06D6,6C1A75,6C51BF,6C51E4,6C60D0,6C7637,6C77F0,6C7F49,6C8243,6CB4FD,7040FF,7066B9,7090B7,709AC4,70B51A,70DDEF,70EBA5,740AE1,740CEE,7422BB,742435,742869,74452D,7463C2,747069,74B725,74D6E5,7804E3,7806C9,7818A8,782599,782B60,7845B3,785B64,7885F4,789FAA,78B554,78C5F8,78C884,78CFF9,78E22C,78F09B,7C1B93,7C3D2B,7C3E74,7C68B9,7C73EB,7C8931,7C97E1,802EDE,806F1C,807264,80CC12,80CFA2,845075,8454DF,84716A,8493A0,84CC63,84D3D5,84DBA4,84E986,881566,8815C5,8836CF,883F27,886D2D,8881B9,888E68,888FA4,88DDB8,88F6DC,8C0572,8C0FC9,8C17B6,8C3446,8C5AC1,8C5EBD,8C6BDB,8CC9E9,903FC3,90808F,909838,90A57D,90CC7A,90F644,9408C7,9415B2,9437F7,946010,94A07D,94CE0F,94CFB0,94E4BA,94E9EE,980709,980D51,982FF8,98751A,987EB5,98818A,98876C,98886C,98AD1D,98B3EF,9C5636,9C823F,9C8E9C,9C9567,9C9E71,9CEC61,A00A9A,A04147,A042D1,A0889D,A0A0DC,A0C20D,A0D7A0,A0D807,A0DE0F,A4373E,A43B0E,A44343,A44380,A446B4,A47952,A47B1A,A493AD,A4AAFE,A4AC0F,A4B61E,A4C54E,A4C74B,A809B1,A83512,A83759,A85AE0,A86E4E,A88940,A8AA7C,A8C092,A8C252,A8D081,A8E978,A8F266,AC3184,AC3328,AC471B,AC7E01,AC936A,ACBD70,B00B22,B02491,B02EE0,B03ACE,B04502,B05A7B,B0735D,B098BC,B0C38E,B0CAE7,B0CCFE,B0FA8B,B0FEE5,B476A4,B4A10A,B4A898,B4C2F7,B4E5C5,B4F18C,B4F49B,B8145C,B827C5,B82B68,B83C20,B87CD0,B87E40,B88E82,B8DAE8,BC1AE4,BC2EF6,BC7B72,BC7F7B,BC9789,BC9A53,BCBCCA,BCCD7F,C07831,C083C9,C0AB2B,C0B47D,C0B5CD,C0BFAC,C0D026,C0D193,C0D46B,C0DA5E,C0DCD7,C41688,C4170E,C4278C,C42B44,C43EAB,C44F5F,C45A86,C478A2,C48025,C49D08,C4A1AE,C4D738,C4DE7B,C4FF22,C839AC,C83E9E,C868DE,C89D18,C8BB81,C8BC9C,C8BFFE,C8CA63,CC3296,CC4460,CC5C61,CC8A84,CC9096,CCB0A8,CCBC2B,CCFA66,CCFF90,D005E4,D00DF7,D07380,D07D33,D07E01,D0B45D,D0F3F5,D0F4F7,D47415,D47954,D48FA2,D49FDD,D4BBE6,D4F242,D847BB,D854F2,D867D3,D880DC,D88ADC,D89E61,D8A491,D8B249,D8CC98,D8EF42,DC2727,DC2D3C,DC333D,DC42C8,DC6B1B,DC7385,DC7794,DC9166,DCD444,DCD7A0,DCDB27,E00DEE,E01F6A,E02E3F,E04007,E04027,E06CC5,E07726,E0CDB8,E0D462,E0E0FC,E0E37C,E0F442,E4072B,E4268B,E454E5,E47319,E48F1D,E4B107,E4B555,E4DC43,E81E92,E8288D,E82BC5,E83F67,E84FA7,E880E7,E8A6CA,E8DA3E,E8FA23,E8FD35,E8FF98,EC3A52,EC3CBB,EC5AA3,ECB878,ECC5D2,ECE61D,F037CF,F042F5,F05501,F05C0E,F0B13F,F0BDEE,F0C42F,F0D7EE,F0FAC7,F0FEE7,F438C1,F4419E,F45C42,F462DC,F487C5,F4A59D,F8075D,F820A9,F82B7F,F82F65,F83B7E,F87907,F87D3F,F89753,F8AF05,FC0736,FC4CEF,FC50D6,FC65B3,FC79DD,FC862A,FCF77B o="Huawei Device Co., Ltd." +003E73,00D626,04A924,04CDC0,14A454,3C94FD,5433C6,5C5B35,709041,7CB68D,A83A79,A8537D,A8F7D9,AC2316,C87867,D420B0,D4DC09 o="Mist Systems, Inc." +003F10 o="Shenzhen GainStrong Technology Co., Ltd." 004000 o="PCI COMPONENTES DA AMZONIA LTD" 004001 o="Zero One Technology Co. Ltd." 004002 o="PERLE SYSTEMS LIMITED" @@ -8887,12 +8880,11 @@ 00402E o="PRECISION SOFTWARE, INC." 00402F o="XLNT DESIGNS INC." 004030 o="GK COMPUTER" -004031 o="KOKUSAI ELECTRIC CO., LTD" 004032 o="DIGITAL COMMUNICATIONS" 004033 o="ADDTRON TECHNOLOGY CO., LTD." 004034 o="BUSTEK CORPORATION" 004035 o="OPCOM" -004036 o="Zoom Telephonics, Inc" +004036 o="Minim Inc." 004037 o="SEA-ILAN, INC." 004038 o="TALENT ELECTRIC INCORPORATED" 004039 o="OPTEC DAIICHI DENKO CO., LTD." @@ -8925,7 +8917,7 @@ 004055 o="METRONIX GMBH" 004056 o="MCM JAPAN LTD." 004057 o="LOCKHEED - SANDERS" -004058 o="KRONOS, INC." +004058 o="UKG" 004059 o="YOSHIDA KOGYO K. K." 00405A o="GOLDSTAR INFORMATION & COMM." 00405B o="FUNASSET LIMITED" @@ -8968,7 +8960,6 @@ 004081 o="MANNESMANN SCANGRAPHIC GMBH" 004082 o="LABORATORY EQUIPMENT CORP." 004083 o="TDA INDUSTRIA DE PRODUTOS" -004084 o="Honeywell International HPS" 004085 o="SAAB INSTRUMENTS AB" 004086 o="MICHELS & KLEBERHOFF COMPUTER" 004087 o="UBITREX CORPORATION" @@ -8976,7 +8967,7 @@ 004089 o="MEIDENSHA CORPORATION" 00408A o="TPS TELEPROCESSING SYS. GMBH" 00408B o="RAYLAN CORPORATION" -00408C o="AXIS COMMUNICATIONS AB" +00408C,ACCC8E,B8A44F,E82725 o="Axis Communications AB" 00408D o="THE GOODYEAR TIRE & RUBBER CO." 00408F o="WM-DATA MINFO AB" 004090 o="ANSEL COMMUNICATIONS" @@ -8992,7 +8983,7 @@ 00409B o="HAL COMPUTER SYSTEMS INC." 00409C o="TRANSWARE" 00409D o="DigiBoard" -00409E o="CONCURRENT TECHNOLOGIES LTD." +00409E o="Concurrent Technologies Ltd." 0040A0 o="GOLDSTAR CO., LTD." 0040A1 o="ERGO COMPUTING" 0040A2 o="KINGSTAR TECHNOLOGY INC." @@ -9087,11 +9078,14 @@ 0040FD o="LXE" 0040FE o="SYMPLEX COMMUNICATIONS" 0040FF o="TELEBIT CORPORATION" +00410E,046874,08A136,08F97E,106FD9,10B1DF,145A41,14AC60,1C98C1,202B20,2C9811,2C9C58,2CAE46,3003C8,30C9AB,38D57A,3C0AF3,3C5576,3CEFA5,44F79F,44FA66,4845E6,4C2338,4C82A9,502E66,50C2E8,58509F,58CDC9,5C6199,60E9AA,749779,78465C,8060B7,849E56,900F0C,A83B76,AC50DE,ACF23C,BCF4D4,C41375,C8A3E8,CC5EF8,CC6B1E,D88083,D8B32F,DC567B,DCE994,E86538,EC9161,F0A654,F4289D,F44EB4,F889D2,FCB0DE o="CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD." 0041B4 o="Wuxi Zhongxing Optoelectronics Technology Co.,Ltd." 004252 o="RLX Technologies" 0043FF o="KETRON S.R.L." -004501 o="Midmark RTLS" -004BF3,386B1C,44F971,503AA0,508965,640DCE,90769F,BC54FC,C0A5DD,E4F3F5 o="SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD." +004501,78C95E o="Midmark RTLS" +004B12,007007,048308,04B247,083A8D,083AF2,089272,08A6F7,08B61F,08D1F9,08F9E0,0C4EA0,0C8B95,0CB815,0CDC7E,10003B,10061C,1020BA,1051DB,10521C,1091A8,1097BD,10B41D,140808,142B2F,14335C,14C19F,188B0E,18FE34,1C6920,1C9DC2,1CC3AB,1CDBD4,2043A8,206EF1,20E7C8,240AC4,244CAB,24587C,2462AB,246F28,24A160,24B2DE,24D7EB,24DCC3,24EC4A,2805A5,28372F,28562F,2C3AE8,2CBCBB,2CF432,3030F9,3076F5,308398,30AEA4,30C6F7,30C922,30EDA0,345F45,348518,34865D,349454,34987A,34AB95,34B472,34B7DA,34CDB0,38182B,3844BE,3C0F02,3C6105,3C71BF,3C8427,3C8A1F,3CDC75,3CE90E,4022D8,404CCA,409151,40F520,441793,441BF6,441D64,4827E2,4831B7,483FDA,485519,489D31,48CA43,48E729,48F6EE,4C11AE,4C7525,4CC382,4CEBD6,500291,50787D,543204,5443B2,545AA6,588C81,58BF25,58CF79,58E6C5,5C013B,5CCF7F,600194,6055F9,64B708,64E833,6825DD,686725,68B6B3,68C63A,68FE71,6CB456,6CC840,70039F,70041D,704BCA,70B8F6,744DBD,781C3C,782184,78421C,78E36D,78EE4C,7C2C67,7C7398,7C87CE,7C9EBD,7CDFA1,80646F,806599,807D3A,80B54E,80F1B2,80F3DA,840D8E,841FE8,84CCA8,84F3EB,84F703,84FCE6,8813BF,8856A6,885721,8C4B14,8C4F00,8CAAB5,8CBFEA,8CCE4E,8CFD49,901506,90380C,907069,9097D5,90E5B1,943CC6,9451DC,9454C5,94A990,94B555,94B97E,94E686,983DAE,9888E0,98A316,98CDAC,98F4AB,9C139E,9C9C1F,9C9E6E,A020A6,A0764E,A085E3,A0A3B3,A0B765,A0DD6C,A0F262,A47B9D,A4CF12,A4E57C,A4F00F,A8032A,A842E3,A84674,A848FA,AC0BFB,AC1518,AC67B2,ACA704,ACD074,ACEBE6,B08184,B0A604,B0A732,B0B21C,B0CBD8,B43A45,B48A0A,B4BFE9,B4E62D,B8D61A,B8F009,B8F862,BCDDC2,BCFF4D,C049EF,C04E30,C05D89,C0CDD6,C44F33,C45BBE,C4D8D5,C4DD57,C4DEE2,C82B96,C82E18,C8C9A3,C8F09E,CC50E3,CC7B5C,CC8DA2,CCBA97,CCDBA7,D0CF13,D0EF76,D48AFC,D48C49,D4D4DA,D4E9F4,D4F98D,D8132A,D83BDA,D885AC,D8A01D,D8BC38,D8BFC0,D8F15B,DC0675,DC1ED5,DC4F22,DC5475,DCB4D9,DCDA0C,E05A1B,E072A1,E08CFE,E09806,E0E2E6,E465B8,E4B063,E4B323,E80690,E831CD,E83DC1,E868E7,E86BEA,E89F6D,E8DB84,E8F60A,EC6260,EC64C9,EC94CB,ECC9FF,ECDA3B,ECE334,ECFABC,F008D1,F0161D,F024F9,F09E9E,F0F5BD,F412FA,F42DC9,F4650B,F4CFA2,F85B1B,F8B3B7,FC012C,FCB467,FCE8C0,FCF5C4 o="Espressif Inc." +004BF3,005CC2,044BA5,10634B,24698E,386B1C,44F971,4C7766,4CB7E0,503AA0,508965,5CDE34,640DCE,90769F,BC54FC,C0252F,C0A5DD,D48409,E4F3F5 o="SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD." +004CE5,00E5E4,0443FD,046B25,08010F,1012B4,1469A2,185207,187532,1C0ED3,1CFF59,2406F2,241D48,248BE0,28937D,2C6373,305A99,30BDFE,348D52,3868BE,4070A5,40F420,4456E2,44BA46,44D506,485DED,54E061,58D237,5C4A1F,5CA176,5CFC6E,643AB1,645234,645D92,64C01A,681A7C,68262A,74694A,7847E3,787104,78B84B,7CCC1F,7CDAC3,8048A5,84B630,88010C,8C8172,9052BF,908674,988CB3,9C32A9,9C6121,9C9C40,A42A71,A4A528,AC017A,ACE77B,B8224F,B8A792,B8DDE8,BC5DA3,C01B23,C09120,C0CC42,C4A151,C814B4,C86C20,CC2614,CC6D55,CCA260,D44165,D4EEDE,D8EE42,E04FBD,E0C63C,E0F318,E86E3E,ECF8EB,F092B4,F86691,F8CDC8,F8E35F,FC372B,FC9189 o="Sichuan Tianyi Comheart Telecom Co.,LTD" 004D32 o="Andon Health Co.,Ltd." 005000 o="NEXO COMMUNICATIONS, INC." 005001 o="YAMASHITA SYSTEMS CORP." @@ -9156,7 +9150,6 @@ 00504A o="ELTECO A.S." 00504B o="BARCONET N.V." 00504C o="Galil Motion Control" -00504D o="Tokyo Electron Device Limited" 00504E o="SIERRA MONITOR CORP." 00504F o="OLENCOM ELECTRONICS" 005051 o="IWATSU ELECTRIC CO., LTD." @@ -9255,8 +9248,7 @@ 0050C6 o="LOOP TELECOMMUNICATION INTERNATIONAL, INC." 0050C8 o="Addonics Technologies, Inc." 0050C9 o="MASPRO DENKOH CORP." -0050CA o="NET TO NET TECHNOLOGIES" -0050CB o="JETTER" +0050CB o="Bucher Automation AG" 0050CD o="DIGIANSWER A/S" 0050CE o="LG INTERNATIONAL CORP." 0050CF o="VANLINK COMMUNICATION TECHNOLOGY RESEARCH INSTITUTE" @@ -9277,7 +9269,7 @@ 0050E1 o="NS TECH ELECTRONICS SDN BHD" 0050E6 o="HAKUSAN CORPORATION" 0050E7 o="PARADISE INNOVATIONS (ASIA)" -0050E8 o="NOMADIX INC." +0050E8 o="Nomadix, Inc" 0050EA o="XEL COMMUNICATIONS, INC." 0050EB o="ALPHA-TOP CORPORATION" 0050EC o="OLICOM A/S" @@ -9298,22 +9290,27 @@ 0050FE o="PCTVnet ASA" 0050FF o="HAKKO ELECTRONICS CO., LTD." 005218 o="Wuxi Keboda Electron Co.Ltd" +005245 o="GANATECHWIN" +0052C8 o="Made Studio Design Ltd." 0054BD o="Swelaser AB" +0055B1,00E00F,409249,847973,984562,AC128E,BC606B,F4B0FF,FCFAF7 o="Shanghai Baud Data Communication Co.,Ltd." +005828,847003 o="Axon Networks Inc." 00583F o="PC Aquarius" 005907 o="LenovoEMC Products USA, LLC" 005979 o="Networked Energy Services" 0059AC o="KPN. B.V." -005A39,005C86,0CD86C,38019F,44975A,60EE5C,704E66,745427,74C330,78EB14,8C78D7,D455BE,D48304,F46A92 o="SHENZHEN FAST TECHNOLOGIES CO.,LTD" +005A39,005C86,0CD86C,180EAC,38019F,44975A,60EE5C,704E66,745427,74C330,78EB14,8C78D7,9C7F81,D455BE,D48304,DCB347,F46A92 o="SHENZHEN FAST TECHNOLOGIES CO.,LTD" 005BA1 o="shanghai huayuan chuangxin software CO., LTD." 005CB1 o="Gospell DIGITAL TECHNOLOGY CO., LTD" 005D03 o="Xilinx, Inc" -005E0C,04F128,203956,44917C,4C6AF6,60D89C,6CA928,6CC4D5,748A28,88517A,90A365,94EE9F,A028ED,A83E0E,AC5775,BC024A,C010B1,CC9ECA,F8ADCB o="HMD Global Oy" +005E0C,04F128,184E03,1C3B62,203956,44917C,4C6AF6,4CD3AF,60D89C,64D315,68DDD9,6CA928,6CC4D5,748A28,88517A,90A365,94EE9F,A028ED,A0FFFD,A4BD7E,A83E0E,A8CC6F,AC5775,BC024A,C010B1,CC9ECA,E01F34,E02967,EC4269,F82111,F8ADCB o="HMD Global Oy" +005FBF,28FFB2,EC2125 o="Toshiba Corp." 006000 o="XYCOM INC." 006001 o="InnoSys, Inc." 006002 o="SCREEN SUBTITLING SYSTEMS, LTD" 006003 o="TERAOKA WEIGH SYSTEM PTE, LTD." 006004 o="COMPUTADORES MODULARES SA" -006005 o="FEEDBACK DATA LTD." +006005 o="Touchstar ATC Limited" 006006 o="SOTEC CO., LTD" 006007 o="ACRES GAMING, INC." 00600A o="SORD COMPUTER CORPORATION" @@ -9399,7 +9396,7 @@ 006067 o="ACER NETXUS INC." 006068 o="Dialogic Corporation" 00606A o="MITSUBISHI WIRELESS COMMUNICATIONS. INC." -00606B o="Synclayer Inc." +00606B,9C40CD o="Synclayer Inc." 00606C o="ARESCOM" 00606D o="DIGITAL EQUIPMENT CORP." 00606E o="DAVICOM SEMICONDUCTOR, INC." @@ -9494,7 +9491,7 @@ 0060D0 o="SNMP RESEARCH INCORPORATED" 0060D2 o="LUCENT TECHNOLOGIES TAIWAN TELECOMMUNICATIONS CO., LTD." 0060D4 o="ELDAT COMMUNICATION LTD." -0060D5 o="AMADA MIYACHI Co., Ltd" +0060D5 o="AMADA CO., LTD" 0060D7 o="ECOLE POLYTECHNIQUE FEDERALE DE LAUSANNE (EPFL)" 0060D8 o="ELMIC SYSTEMS, INC." 0060D9 o="TRANSYS NETWORKS INC." @@ -9532,33 +9529,37 @@ 0060FD o="NetICs, Inc." 0060FE o="LYNX SYSTEM DEVELOPERS, INC." 0060FF o="QuVis, Inc." +006201,00B8B6,00FADE,04D395,083F21,08AA55,08CC27,0C7165,0C7DB0,0CCB85,0CEC8D,102B1C,140589,141AA3,1430C6,1C56FE,1C64F0,2036D0,20B868,2446C8,24B5B9,24D53B,24DA9B,2812D0,3009C0,304B07,3083D2,34BB26,3880DF,38E39F,38EC07,40786A,408805,40FAFE,441C7F,4480EB,50131D,5016F4,502FBB,58D9C3,5C5188,601D91,60BEB5,6411A4,68871C,68C44D,6C976D,74B059,74BEF3,7C7B1C,7CA53E,8058F8,806C1B,84100D,88797E,88B4A6,8C4E46,8CF112,9068C3,90735A,90B9F9,9CD917,A0465A,A422B6,A470D6,A89675,B04AB4,B07994,B0C2C7,B87E39,B898AD,B8A25D,BC1D89,BC98DF,BCFFEB,C06B55,C08C71,C4493E,C4A052,C85895,C89F0C,C8A1DC,C8C750,C8D959,CC0DF2,CC61E5,CCC3EA,D00401,D07714,D45B51,D45E89,D463C6,D4C94B,D8CFBF,DCBFE9,E0757D,E09861,E0A366,E426D5,E4907E,E89120,EC08E5,EC8892,ECED73,F0D7AA,F4F1E1,F4F524,F81F32,F8CFC5,F8E079,F8EF5D,F8F1B6,FCB9DF,FCD436 o="Motorola Mobility LLC, a Lenovo Company" +00620B,043201,1423F2-1423F3,34D868,405B7F,4857D2,5C6F69,6C8375,6C92CF,70B7E4,7410E0,84160C,8C8474,9C2183,B02628,BC97E1,C0B550,D404E6,E43D1A,FC5708 o="Broadcom Limited" 0063DE o="CLOUDWALK TECHNOLOGY CO.,LTD" 0064A6 o="Maquet CardioVascular" -006619,0094EC,00ADD5,00BB1C,048C9A,04C1D8,04D3B5,04F169,0831A4,08F458,0C839A,0CE4A0,10327E,105DDC,10E953,145120,147740,14A32F,14DE39,183CB7,18703B,189E2C,18AA0F,18D98F,1C1386,1C1FF1,241AE6,245F9F,246F8C,2481C7,24E9CA,283334,2848E7,285471,2864B0,2C780E,2CA042,2CC546,3066D0,308AF7,309610,30A2C2,30A998,30AAE4,3446EC,347146,347E00,34B20A,3CB233,400634,40B6E7,40DCA5,4455C4,44C7FC,4805E2,484C86,4C5077,5021EC,502873,50F7ED,50F958,540DF9,5455D5,5471DD,54D9C6,54F294,58F2FC,5C78F8,5CD89E,60AAEF,642315,64B0E8,681324,6C06D6,740AE1,7422BB,74452D,7804E3,7885F4,78C5F8,80CC12,80CFA2,8836CF,8C5AC1,8C5EBD,909838,90F644,9408C7,9437F7,94E4BA,94E9EE,980D51,982FF8,98B3EF,A04147,A0D807,A0DE0F,A43B0E,A446B4,A4AC0F,A4B61E,A4C54E,A4C74B,A83512,A83759,A85AE0,A8C092,A8C252,A8E978,ACBD70,B04502,B0735D,B0CCFE,B0FEE5,B4A898,B4F18C,B827C5,B88E82,BC1AE4,BC2EF6,BC7F7B,C083C9,C0B47D,C0B5CD,C0D193,C41688,C42B44,C4D738,C868DE,C8BC9C,C8CA63,CCB0A8,CCFF90,D005E4,D00DF7,D0B45D,D0F3F5,D4BBE6,D88ADC,D89E61,D8A491,D8EF42,DC333D,DC7385,DCD444,E04007,E0D462,E0E0FC,E0F442,E4268B,E83F67,EC3CBB,F05501,F0C42F,F0FAC7,F487C5,F4A59D,F82F65,F8AF05,FC862A o="Huawei Device Co., Ltd." -0068EB,040E3C,3822E2,842AFD,B05CDA,BCE92F,E8D8D1,F80DAC o="HP Inc." -00692D,08A5C8,54C57A,60313B,60D21C,886B44 o="Sunnovo International Limited" +00651E,9C8ECD,A06032 o="Amcrest Technologies" +0068EB,040E3C,10B676,14CB19,246A0E,24FBE3,28C5C8,2C58B9,30138B,3024A9,3822E2,38CA84,489EBD,48EA62,4CCF7C,508140,5C60BA,644ED7,6C02E0,6C0B5E,7C4D8F,7C5758,842AFD,846993,A8B13B,ACF466,B0227A,B05CDA,B4E25B,BC0FF3,BCE92F,C01803,C85ACF,D0AD08,E070EA,E073E7,E8D8D1,F04EA4,F80DAC,F8EDFC o="HP Inc." +00692D,08A5C8,14801F,204B22,2C43BE,48E533,54C57A,60313B,60D21C,886B44,AC567B o="Sunnovo International Limited" 006B8E,8CAB8E,D842AC,F0EBD0 o="Shanghai Feixun Communication Co.,Ltd." 006BA0 o="SHENZHEN UNIVERSAL INTELLISYS PTE LTD" -006D61,8014A8 o="Guangzhou V-SOLUTION Electronic Technology Co., Ltd." +006D61,1CEF03,70B64F,8014A8 o="Guangzhou V-SOLUTION Electronic Technology Co., Ltd." 006DFB o="Vutrix Technologies Ltd" -006FF2,00A096,78617C,BC825D,C449BB,F0AB54 o="MITSUMI ELECTRIC CO.,LTD." +006E02 o="Xovis AG" +006FF2,00A096,78617C,BC825D,C449BB,F0AB54,F83C80 o="MITSUMI ELECTRIC CO.,LTD." 0070B0,0270B0 o="M/A-COM INC. COMPANIES" 0070B3,0270B3 o="DATA RECALL LTD." -007147,00BB3A,00FC8B,0812A5,08849D,08A6BC,0C47C9,0CEE99,140AC5,149138,18742E,1C12B0,1C4D66,1CFE2B,20A171,244CE3,34D270,38F73D,3C5CC4,40A2DB,40B4CD,440049,44650D,4843DD,4C1744,4CEFC0,50DCE7,50F5DA,6837E9,6854FD,689A87,68DBF5,6C5697,7458F3,747548,74A7EA,74C246,74D637,78E103,7C6166,7CD566,84D6D0,8871E5,A002DC,A0D0DC,A40801,AC63BE,B0FC0D,B47C9C,B85F98,C49500,CC9EA2,CCF735,DC54D7,DC91BF,F0272D,F08173,F0D2F1,F0F0A4,F4032A,F854B8,FC492D,FC65DE,FCA183,FCA667 o="Amazon Technologies Inc." +007147,008621,00BB3A,00F361,00FC8B,0812A5,0857FB,086AE5,087C39,08849D,089115,0891A3,08A6BC,08C224,0C43F9,0C47C9,0CDC91,0CEE99,1009F9,109693,10AE60,10BF67,10CE02,140AC5,149138,180B1B,1848BE,18742E,1C12B0,1C4D66,1C93C4,1CFE2B,2010B1,20A171,20BEB8,20FE00,244CE3,24CE33,2824C9,2873F6,28EF01,2C71FF,304D1F,3425BE,34AFB3,34D270,38F73D,3C5CC4,3CE441,4089C6,40A2DB,40A9CF,40B4CD,40F6BC,440049,443D54,444201,44650D,446D7F,44B4B2,44D5CC,4843DD,485F2D,48785E,48B423,4C1744,4C53FD,4C60AD,4CEFC0,5007C3,50995A,50D45C,50DCE7,50F5DA,542B1C,580987,589A3E,58A8E8,58E488,5C8B6B,64CDC2,6813F3,6837E9,6854FD,689A87,689FD4,68B691,68DBF5,68F63B,6C0C9A,6C55B1,6C5697,6C999D,7070AA,7458F3,747548,74A7EA,74C246,74D423,74D637,74E20C,74ECB2,786C84,78A03F,78E103,7C6166,7C6305,7CD566,7CEDC6,800CF9,806D71,842859,844880,84D6D0,8829BF,8871E5,8C1952,8C2A85,901195,90235B,90395F,90A822,90F82E,943A91,945AFC,98226E,98CCF3,9CC8E9,A002DC,A0D0DC,A0D2B1,A402B7,A40801,A8CA77,A8E621,AC416A,AC63BE,ACCCFC,B0739C,B08BA8,B0CFCB,B0F7C4,B0FC0D,B4107A,B47C9C,B4B742,B4E454,B85F98,C08D51,C091B9,C095CF,C49500,C86C3D,CC2293,CC9EA2,CCAFE3,CCF735,D4910F,D8BE65,D8FBD6,DC54D7,DC91BF,DCA0D0,E0CB1D,E0F728,E84C4A,E8D87E,EC0DE4,EC2BEB,EC8AC4,ECA138,F0272D,F02F9E,F04F7C,F08173,F0A225,F0D2F1,F0F0A4,F4032A,F854B8,F8FCE1,FC492D,FC65DE,FCA183,FCA667,FCD749,FCE9D8 o="Amazon Technologies Inc." 0071C2,0C54A5,100501,202564,386077,48210B,4C72B9,54B203,54BEF7,600292,7054D2,7071BC,74852A,78F29E,7C0507,84002D,88AD43,8C0F6F,C07CD1,D45DDF,D897BA,DCFE07,E06995,E840F2,ECAAA0 o="PEGATRON CORPORATION" 007204,08152F,448F17 o="Samsung Electronics Co., Ltd. ARTIK" -007263,048D38,E4BEED o="Netcore Technology Inc." -00738D,0CEC84,18D61C,44D3AD,806AB0,A04C5B,A0F895,B0A2E7,B43939,B4C0F5,BC4101,BC4434,BCD1D3,C0C976,D0B33F,D83C69 o="Shenzhen TINNO Mobile Technology Corp." -00749C,14144B,300D9E,58696C,800588,C0B8E6 o="Ruijie Networks Co.,LTD" -007532 o="INID BV" +007263,045EA4,048D38,64EEB7,88BD09,BC62CE,BCE001,DC8E8D,E4BEED o="Netis Technology Co., Ltd." +00738D,0CEC84,18D61C,2C002A,44D3AD,68EE88,7C6CF0,806AB0,A04C5B,A0F895,B0A2E7,B43939,B4C0F5,BC4101,BC4434,BCD1D3,C0C976,D0B33F,D83C69,E06C4E o="Shenzhen TINNO Mobile Technology Corp." +00749C,105F02,10823D,14144B,28D0F5,300D9E,4881D4,4C4968,541651,58696C,58B4BB,7042D3,70856C,7085C4,7408AA,800588,8CDD30,984A6B,9C2BA6,9CCE88,C0A476,C0B8E6,C470AB,C4B25B,C8CD55,D43127,D8332A,E05D54,ECB970,F0748D,FC599F o="Ruijie Networks Co.,LTD" +007532 o="Integrated Engineering BV" 0075E1 o="Ampt, LLC" 00763D o="Veea" 0076B1 o="Somfy-Protect By Myfox SAS" -0077E4,00D0F6,04C241,089BB9,0C54B9,0C7C28,1005E1,10E878,140F42,143E60,147BAC,1CEA1B,207852,20E09C,20F44F,242124,30FE31,34AA99,38521A,405582,407C7D,48EC5B,48F7F1,48F8E1,4CC94F,504061,50A0A4,50E0EF,54FA96,5CE7A0,60A8FE,68AB09,6C0D34,6CF712,702526,78F9B4,7C41A2,84262B,846991,84DBFC,8C0C87,8C83DF,8C90D3,8CF773,903AA0,94B819,94E98C,98B039,A47B2C,A492CB,A4E31B,A824B8,AC8FF8,B0700D,B0754D,BC52B4,BC6B4D,BC8D0E,C014B8,C04121,C4084A,CC66B2,CC874A,D4E33F,D8EFCD,DCB082,E48184,E89363,F81308,F85C4D,FC1CA1,FC2FAA o="Nokia" +0077E4,089BB9,0C7C28,1455B9,207852,24DE8A,2874F5,34CE69,38A067,40486E,40E1E4,48417B,48EC5B,54FA96,5807F8,608FA4,60A8FE,6CF712,78F9B4,80AB4D,980A4B,A091CA,A0C98B,A4FCA1,A8FB40,AC8FA9,B4636F,B8977A,C02E1D,C04121,D0484F,D8EFCD,DC8D8A,E01F2B,F89B6E o="Nokia Solutions and Networks GmbH & Co. KG" 0078CD o="Ignition Design Labs" +007AA4,0CC574 o="FRITZ! Technology GmbH" 007B18 o="SENTRY Co., LTD." 007DFA o="Volkswagen Group of America" -007E56,40AA56,44EFBF,94E0D6,A09DC1 o="China Dragon Technology Limited" +007E56,043926,24B72A,3C7AAA,40AA56,44EFBF,788A86,94E0D6,A06720,A09DC1,A843A4,D0A46F,E051D8,E07526 o="China Dragon Technology Limited" 008001 o="PERIPHONICS CORPORATION" 008002 o="SATELCOM (UK) LTD" 008003 o="HYTEC ELECTRONICS LTD." @@ -9652,10 +9653,10 @@ 008060 o="NETWORK INTERFACE CORPORATION" 008061 o="LITTON SYSTEMS, INC." 008062 o="INTERFACE CO." -008063,646038,EC74BA o="Hirschmann Automation and Control GmbH" +008063,646038,740BB0,A0B086,EC74BA o="Hirschmann Automation and Control GmbH" 008064 o="WYSE TECHNOLOGY LLC" 008065 o="CYBERGRAPHIC SYSTEMS PTY LTD." -008066 o="ARCOM CONTROL SYSTEMS, LTD." +008066 o="Eurotech S.p.A." 008067 o="SQUARE D COMPANY" 008068 o="YAMATECH SCIENTIFIC LTD." 008069 o="COMPUTONE SYSTEMS" @@ -9692,7 +9693,7 @@ 008089 o="TECNETICS (PTY) LTD." 00808A o="SUMMIT MICROSYSTEMS CORP." 00808B o="DACOLL LIMITED" -00808C,00A00E,00C017,049F81,D8E72B o="NetAlly" +00808C,00A00E,049F81,D8E72B o="NETSCOUT SYSTEMS INC" 00808D o="WESTCOAST TECHNOLOGY B.V." 00808E o="RADSTONE TECHNOLOGY" 00808F o="C. ITOH ELECTRONICS, INC." @@ -9711,10 +9712,9 @@ 00809C o="LUXCOM, INC." 00809D o="Commscraft Ltd." 00809E o="DATUS GMBH" -00809F,487A55 o="ALE International" +00809F,3C28A6,487A55 o="ALE International" 0080A1 o="MICROTEST, INC." 0080A2 o="CREATIVE ELECTRONIC SYSTEMS" -0080A3 o="Lantronix" 0080A4 o="LIBERTY ELECTRONICS" 0080A5 o="SPEED INTERNATIONAL" 0080A6 o="REPUBLIC TECHNOLOGY, INC." @@ -9735,17 +9735,17 @@ 0080B5 o="UNITED NETWORKS INC." 0080B6,C8778B o="Mercury Systems – Trusted Mission Solutions, Inc." 0080B7 o="STELLAR COMPUTER" -0080B8 o="DMG MORI B.U.G. CO., LTD." +0080B8 o="DMG MORI Digital Co., LTD" 0080B9 o="ARCHE TECHNOLIGIES INC." 0080BA o="SPECIALIX (ASIA) PTE, LTD" 0080BB o="HUGHES LAN SYSTEMS" 0080BC o="HITACHI ENGINEERING CO., LTD" -0080BD,4064A4 o="THE FURUKAWA ELECTRIC CO., LTD" +0080BD,4064A4,FCA8E0 o="THE FURUKAWA ELECTRIC CO., LTD" 0080BE o="ARIES RESEARCH" 0080BF o="TAKAOKA ELECTRIC MFG. CO. LTD." 0080C0 o="PENRIL DATACOMM" 0080C1 o="LANEX CORPORATION" -0080C2 o="IEEE 802.1 Working Group" +0080C2 o="IEEE 802.1 Chair" 0080C3 o="BICC INFORMATION SYSTEMS & SVC" 0080C4 o="DOCUMENT TECHNOLOGIES, INC." 0080C5 o="NOVELLCO DE MEXICO" @@ -9767,7 +9767,7 @@ 0080D7 o="Fantum Engineering" 0080D8 o="NETWORK PERIPHERALS INC." 0080D9 o="EMK Elektronik GmbH & Co. KG" -0080DA o="Bruel & Kjaer Sound & Vibration Measurement A/S" +0080DA o="Hottinger Brüel & Kjær A/S" 0080DB o="GRAPHON CORPORATION" 0080DC o="PICKER INTERNATIONAL" 0080DD o="GMX INC/GIMIX" @@ -9779,7 +9779,7 @@ 0080E4 o="NORTHWEST DIGITAL SYSTEMS, INC" 0080E5,00A098,00A0B8,D039EA o="NetApp" 0080E6 o="PEER NETWORKS, INC." -0080E7 o="Leonardo Tactical Systems." +0080E7 o="Leonardo UK Ltd" 0080E8 o="CUMULUS CORPORATIION" 0080EB o="COMPCONTROL B.V." 0080EC o="SUPERCOMPUTING SOLUTIONS, INC." @@ -9801,6 +9801,7 @@ 0080FD o="EXSCEED CORPRATION" 0080FE o="AZURE TECHNOLOGIES, INC." 0080FF o="SOC. DE TELEINFORMATIQUE RTC" +008497,387B01,50617E,7483A0,8CE4DB,E89505 o="Shenzhen MiaoMing Intelligent Technology Co.,Ltd" 0088BA o="NC&C" 008B43 o="RFTECH" 008BFC o="mixi,Inc." @@ -9812,12 +9813,12 @@ 009002 o="ALLGON AB" 009003 o="APLIO" 009005 o="PROTECH SYSTEMS CO., LTD." -009006 o="Hamamatsu Photonics K.K." +009006,24BF74 o="Hamamatsu Photonics K.K." 009007 o="DOMEX TECHNOLOGY CORP." 009008 o="HanA Systems Inc." 009009 o="I Controls, Inc." 00900A o="PROTON ELECTRONIC INDUSTRIAL CO., LTD." -00900B o="LANNER ELECTRONICS, INC." +00900B,F0DB2A o="LANNER ELECTRONICS, INC." 00900D o="Overland Storage Inc." 00900E o="HANDLINK TECHNOLOGIES, INC." 00900F o="KAWASAKI HEAVY INDUSTRIES, LTD" @@ -9865,7 +9866,6 @@ 00903C o="ATLANTIC NETWORK SYSTEMS" 00903D o="BIOPAC SYSTEMS, INC." 00903E o="N.V. PHILIPS INDUSTRIAL ACTIVITIES" -00903F o="AZTEC RADIOMEDIA" 009040 o="Siemens Network Convergence LLC" 009041 o="APPLIED DIGITAL ACCESS" 009042 o="ECCS, Inc." @@ -9943,7 +9943,7 @@ 009099 o="ALLIED TELESIS, K.K." 00909A o="ONE WORLD SYSTEMS, INC." 00909B o="MARKEM-IMAJE" -00909D o="NovaTech Process Solutions, LLC" +00909D o="NovaTech, LLC" 00909E o="Critical IO, LLC" 00909F o="DIGI-DATA CORPORATION" 0090A0 o="8X8 INC." @@ -10020,7 +10020,7 @@ 0090F0 o="Harmonic Video Systems Ltd." 0090F3 o="ASPECT COMMUNICATIONS" 0090F4 o="LIGHTNING INSTRUMENTATION" -0090F5,80FA5B o="CLEVO CO." +0090F5,80FA5B,D49390 o="CLEVO CO." 0090F6 o="ESCALATE NETWORKS, INC." 0090F7 o="NBASE COMMUNICATIONS LTD." 0090F8 o="MEDIATRIX TELECOM" @@ -10030,15 +10030,19 @@ 0090FD o="CopperCom, Inc." 0090FE o="ELECOM CO., LTD. (LANEED DIV.)" 0090FF o="TELLUS TECHNOLOGY INC." +0091EB,0CB8E8,140FA6,245B83,280AEE,3462B4,389461,38FDF5,4C7713,50E7A0,54E1B6,5CC9C0,74803F,7C152D,7CBFAE,882949,945F34,9C1EA4,9C6B37,ACB566,B436D1,B88A72,C0E3A0,E07E5F,FC9257,FCA9DC o="Renesas Electronics (Penang) Sdn. Bhd." 0091FA o="Synapse Product Development" 00927D o="Ficosa Internationa(Taicang) C0.,Ltd." 0092FA o="SHENZHEN WISKY TECHNOLOGY CO.,LTD" 009363 o="Uni-Link Technology Co., Ltd." 009569 o="LSD Science and Technology Co.,Ltd." 0097FF o="Heimann Sensor GmbH" +009B08,009C17,00D6CB,048680,0C587B,1480CC,18CEDF,241972,24215E,2CC682,34873D,3C1ACC,405548,441A84,502065,50804A,50CF14,50E9DF,546503,58D391,58DB09,60323B,64C403,682499,684A6E,74077E,74765B,7CCCFC,7CE712,80FBF0,900371,90A6BF,90BDE6,90CD1F,94706C,9826AD,98A14A,9C04B6,A0EDFB,A486AE,A8C050,A8DD9F,ACD929,B00C9D,B42F03,B4EDD5,BC2A33,C44137,C4A64E,DC2E97,DCBDCC,E408E7,E485FB,E82404,E84727,E88DA6,E8979A,EC1D9E,ECB50A,F4AB5C o="Quectel Wireless Solutions Co.,Ltd." +009CC0,041FB8,0823B2,087F98,08B3AF,08FA79,0C20D3,0C6046,10BC97,10F681,14DD9C,1802AE,180403,18E29F,18E777,1C112F,1C7A43,1C7ACF,1CDA27,20311C,203B69,205D47,206BD5,207454,20E46F,20F77C,242361,2482CA,283166,28A53F,28BE43,28FAA0,2C4881,2C9D65,2CFFEE,3041DB,309435,30AFCE,340557,34E911,38384B,3839CD,386EA2,3C86D1,3CA2C3,3CA348,3CA581,3CA616,3CA80A,3CB6B7,4045A0,405846,449EF9,44FB76,488764,488AE8,4C9992,4CC00A,50E7B7,540E2D,541149,5419C8,5C1CB9,6091F3,642C0F,64447B,64EC65,68628A,6C1ED7,6C24A6,6C40E8,6CC36A,6CD199,6CD94C,70357B,7047E9,70788B,708F47,70B7AA,70D923,743357,74C530,7834FD,7CC518,808A8B,80BF21,88548E,886AB1,88F7BF,8C49B6,8C6794,8CDF2C,8CE042,904C02,90ADF7,90C54A,90D473,94147A,9431CB,946372,982F86,987EE3,98C8B8,9C8281,9CA5C0,9CE82B,9CFBD5,A022DE,A490CE,A80556,A81306,A86F36,AC401E,B03366,B40FB3,B46E10,B49D6B,B80716,B8D43E,BC2F3D,BC3ECB,BC9829,C04754,C46699,C4ABB2,CC812A,D09CAE,D463DE,D498B9,D4BBC8,D4CBCC,D4ECAB,D80E29,D84A83,D8A315,DC1AC5,DC2D04,DC31D1,DC8C1B,E013B5,E0DDC0,E441D4,E45768,E45AA2,E49652,E4F1D4,EC2150,EC7D11,ECDF3A,F01B6C,F42981,F463FC,F470AB,F4B7B3,F4BBC7,F8E7A0,FC1A11,FC1D2A,FCABD0,FCBE7B o="vivo Mobile Communication Co., Ltd." +009D85,14C9CF,507B91,D07CB2 o="Sigmastar Technology Ltd." 009D8E,029D8E o="CARDIAC RECORDERS, INC." -009EC8,00EC0A,04B167,04C807,04D13A,04E598,082525,0C1DAF,0C9838,0CF346,102AB3,14F65A,1801F1,185936,188740,18F0E4,1CCCD6,2034FB,2047DA,2082C0,20A60C,20F478,28167F,28E31F,2CD066,341CF0,3480B3,38A4ED,38E60A,482CA0,48FDA3,4C49E3,4C6371,508F4C,50A009,582059,584498,60AB67,640980,64B473,64CC2E,64DDE9,68DFDD,703A51,70BBE9,742344,7451BA,7802F8,7C035E,7C03AB,7C1DD9,7C2ADB,7CD661,7CFD6B,8035C1,80AD16,8CBEBE,9078B2,941700,9487E0,98F621,98FAE3,9C28F7,9C2EA1,9C99A0,A086C6,A44519,A44BD5,A45046,A89CED,ACC1EE,ACF7F3,B0E235,B4C4FC,BC7FA4,C40BCB,C46AB7,C83DDC,D09C7A,D4970B,D832E3,D86375,D8CE3A,E01F88,E06267,E0CCF8,E0DCFF,E446DA,E85A8B,ECD09F,F0B429,F4308B,F460E2,F48B32,F4F5DB,F8A45F,FC1999,FC64BA o="Xiaomi Communications Co Ltd" -009EEE,DC35F1 o="Positivo Tecnologia S.A." +009EC8,00C30A,00EC0A,04106B,04B167,04C807,04D13A,04E598,081C6E,082525,08B339,0C07DF,0C1DAF,0C9838,0CC6FD,0CEDC8,0CF346,102AB3,103F44,1449D4,14993E,14F65A,1801F1,185936,188740,18F0E4,1CCCD6,2025CC,203462,2034FB,203B34,2047DA,2082C0,209952,20A60C,20F478,241145,24D337,28167F,285923,28E31F,2C0B97,2C0DCF,2CD066,2CFE4F,3050CE,341CF0,3480B3,34B98D,38A4ED,38C6BD,38E60A,3C135A,3C3824,3CAFB7,400877,444A37,44BDC8,44CBAD,482CA0,488759,48FDA3,4C0220,4C49E3,4C55B2,4C6371,4C8E19,4CE0DB,4CE20F,4CF202,503DC6,508E49,508F4C,509839,50A009,50DAD6,582059,584498,5C4071,5CD06E,606EE8,60AB67,640980,646306,64A200,64B473,64CC2E,64DDE9,684DB6,68C44C,68DFDD,6C483F,6CF784,70217F,703A51,705FA3,70BBE9,741575,742344,743822,7451BA,74F2FA,7802F8,789987,78D840,7C035E,7C03AB,7C1DD9,7C2ADB,7CA449,7CD661,7CFD6B,8035C1,808F97,80AD16,80E63C,882F92,884604,8852EB,886C60,88B951,8C7A3D,8CAACE,8CBEBE,8CD9D6,902AEE,9078B2,941700,947BAE,9487E0,948B93,94D331,9812E0,98EE94,98F621,98FAE3,9C28F7,9C2EA1,9C5A81,9C99A0,9C9ED5,9CBCF0,A086C6,A44519,A44BD5,A45046,A45590,A4C3BE,A4C788,A4CCB3,A4E287,A4FF9F,A82BD5,A86A86,A89CED,AC1E9E,ACC1EE,ACF7F3,B09C63,B0E235,B405A1,B4C4FC,B83BCC,B85384,B894E7,B8EA98,BC6193,BC6AD1,BC7FA4,C01693,C40BCB,C46AB7,C4710F,C83DDC,CC4210,CCEB5E,D09C7A,D0AE05,D0C1BF,D0CEC0,D41761,D4970B,D4A365,D832E3,D86375,D893D4,D8B053,D8CE3A,D8E374,DC6AE7,DCB72E,E01F88,E06267,E0806B,E0CCF8,E0DCFF,E446DA,E484D3,E4AAE4,E4BCAA,E85A8B,E85FB4,E87EEF,E88843,E89847,E8F791,EC30B3,ECD09F,F06C5D,F0B429,F41A9C,F4308B,F460E2,F48B32,F4F5DB,F843EF,F8710C,F8A45F,F8AB82,FC0296,FC1999,FC4345,FC5B8C,FC64BA,FCA9F5,FCD908 o="Xiaomi Communications Co Ltd" +009EEE,440BAB,DC35F1 o="Positivo Tecnologia S.A." 00A000 o="CENTILLION NETWORKS, INC." 00A001 o="DRS Signal Solutions" 00A002 o="LEEDS & NORTHRUP AUSTRALIA PTY LTD" @@ -10064,7 +10068,6 @@ 00A018 o="CREATIVE CONTROLLERS, INC." 00A019 o="NEBULA CONSULTANTS, INC." 00A01A o="BINAR ELEKTRONIK AB" -00A01B o="PREMISYS COMMUNICATIONS, INC." 00A01C o="NASCENT NETWORKS CORPORATION" 00A01E o="EST CORPORATION" 00A01F o="TRICORD SYSTEMS, INC." @@ -10101,7 +10104,7 @@ 00A042 o="SPUR PRODUCTS CORP." 00A043 o="AMERICAN TECHNOLOGY LABS, INC." 00A044 o="NTT IT CO., LTD." -00A045,A8741D o="PHOENIX CONTACT Electronics GmbH" +00A045,A8741D,CCCCEA o="Phoenix Contact GmbH & Co. KG" 00A046 o="SCITEX CORP. LTD." 00A047 o="INTEGRATED FITNESS CORP." 00A048 o="QUESTECH, LTD." @@ -10118,7 +10121,7 @@ 00A053 o="COMPACT DEVICES, INC." 00A055 o="Data Device Corporation" 00A056 o="MICROPROSS" -00A057 o="LANCOM Systems GmbH" +00A057,2CD7FF o="LANCOM Systems GmbH" 00A058 o="GLORY, LTD." 00A059 o="HAMILTON HALLMARK" 00A05A o="KOFAX IMAGE PRODUCTS" @@ -10184,7 +10187,7 @@ 00A09F o="COMMVISION CORP." 00A0A0 o="COMPACT DATA, LTD." 00A0A1 o="EPIC DATA INC." -00A0A2 o="DIGICOM S.P.A." +00A0A2 o="B810 S.R.L." 00A0A3 o="RELIABLE POWER METERS" 00A0A5 o="TEKNOR MICROSYSTEME, INC." 00A0A6 o="M.I. SYSTEMS, K.K." @@ -10207,7 +10210,7 @@ 00A0B7 o="CORDANT, INC." 00A0BA o="PATTON ELECTRONICS CO." 00A0BB o="HILAN GMBH" -00A0BC o="VIASAT, INCORPORATED" +00A0BC,586861 o="VIASAT, INCORPORATED" 00A0BD o="I-TECH CORP." 00A0BE o="INTEGRATED CIRCUIT SYSTEMS, INC. COMMUNICATIONS GROUP" 00A0BF o="WIRELESS DATA GROUP MOTOROLA" @@ -10228,7 +10231,7 @@ 00A0D2 o="ALLIED TELESIS INTERNATIONAL CORPORATION" 00A0D3 o="INSTEM COMPUTER SYSTEMS, LTD." 00A0D4 o="RADIOLAN, INC." -00A0D5,64CE6E,84DB2F,CC934A o="Sierra Wireless" +00A0D5,28A331,50139D,64CE6E,84DB2F,CC934A o="Sierra Wireless, ULC" 00A0D7 o="KASTEN CHASE APPLIED RESEARCH" 00A0D8 o="SPECTRA - TEK" 00A0D9 o="CONVEX COMPUTER CORPORATION" @@ -10236,7 +10239,7 @@ 00A0DB o="FISHER & PAYKEL PRODUCTION" 00A0DC o="O.N. ELECTRONIC CO., LTD." 00A0DD o="AZONIX CORPORATION" -00A0DE,AC44F2 o="YAMAHA CORPORATION" +00A0DE,AC44F2,F4D580 o="YAMAHA CORPORATION" 00A0DF o="STS TECHNOLOGIES, INC." 00A0E0 o="TENNYSON TECHNOLOGIES PTY LTD" 00A0E1 o="WESTPORT RESEARCH ASSOCIATES, INC." @@ -10264,22 +10267,27 @@ 00A0F7 o="V.I COMPUTER CORP." 00A0F9 o="BINTEC COMMUNICATIONS GMBH" 00A0FA o="Marconi Communication GmbH" -00A0FB o="TORAY ENGINEERING CO., LTD." +00A0FB o="Toray Engineering D Solutions Co., Ltd." 00A0FC o="IMAGE SCIENCES, INC." 00A0FD o="SCITEX DIGITAL PRINTING, INC." 00A0FE o="BOSTON TECHNOLOGY, INC." 00A0FF o="TELLABS OPERATIONS, INC." +00A159,00E091,046F00,14C913,201742,300EB8,30B4B8,388C50,58960A,58FDB1,60756C,64956C,64E4A5,6CD032,74C17E,74E6B8,785DC8,7C646C,8C5646,A823FE,AC5AF0,B03795,B4B291,B4E3D0,C808E9,D0CDBF,F801B4,F83869 o="LG Electronics" 00A1DE o="ShenZhen ShiHua Technology CO.,LTD" +00A265,FC06ED o="M2Motive Technology Inc." 00A2DA o="INAT GmbH" 00A2F5 o="Guangzhou Yuanyun Network Technology Co.,Ltd" 00A2FF o="abatec group AG" +00A41C,286F40,2CFDB3,407218,84D352,8892CC,88D039,A8E6E8,D8AA59 o="Tonly Technology Co. Ltd" 00A509 o="WigWag Inc." +00A62B,74E9D8 o="Shanghai High-Flying Electronics Technology Co.,Ltd" 00A784 o="ITX security" 00AA3C o="OLIVETTI TELECOM SPA (OLTECO)" -00AB48,1422DB,189088,30578E,3C5CF1,48DD0C,4C0143,5CA5BC,605F8D,684A76,6CAEF6,74B6B6,80DA13,F8BBBF,F8BC0E o="eero inc." -00AD24,0CB6D2,1062EB,10BEF5,14D64D,180F76,1C5F2B,1C7EE5,1CAFF7,1CBDB9,28107B,283B82,340A33,3C1E04,409BCD,48EE0C,54B80A,58D56E,60634C,6C198F,6C7220,7062B8,74DADA,78321B,78542E,802689,84C9B2,908D78,9094E4,9CD643,A0AB1B,ACF1DF,B0C554,B8A386,BC0F9A,BCF685,C0A0BB,C412F5,C4A81D,C4E90A,C8BE19,C8D3A3,CCB255,D8FEE3,E46F13,E8CC18,EC2280,ECADE0,F0B4D2,F48CEB,F8E903,FC7516 o="D-Link International" +00AB48,089BF1,08F01E,0C1C1A,0C93A5,0CC763,1422DB,189088,18A9ED,203A0C,20BECD,20E6DF,242D6C,24F3E3,28EC22,2C2FF4,30292B,303422,303A4A,30578E,34BC5E,3C5CF1,40475E,40497C,44AC85,48B424,48DD0C,4C0143,5027A9,50613F,5CA5BC,60577D,605F8D,60F419,649714,64C269,64D9C2,64DAED,684A76,6CAEF6,7093C1,74B6B6,786829,787689,78D6D6,7C49CF,7C5E98,7C7EF9,80AF9F,80B97A,80DA13,8470D7,84D9E0,886746,8CDD0B,94CDFD,98ED7E,9C0B05,9C57BC,9CA570,A08E24,A46B1F,A499A8,A8130B,A8B088,AC393D,ACEC85,B0F1AE,B42046,B4B9E6,C03653,C06F98,C4A816,C4F174,C8B82F,C8C6FE,C8CC21,C8E306,D0167C,D06827,D0CBDD,D405DE,D43F32,D88ED4,DC69B5,E4197F,E8D3EB,EC7427,F021E0,F0B661,F8BBBF,F8BC0E,FC3D73,FC3FA6 o="eero inc." +00AD24,085A11,0C0E76,0CB6D2,1062EB,10BEF5,14D64D,180F76,1C5F2B,1C7EE5,1CAFF7,1CBDB9,28107B,283B82,340A33,3C1E04,409BCD,48EE0C,54B80A,58D56E,60634C,6C198F,6C7220,7062B8,74DADA,78321B,78542E,7898E8,802689,84C9B2,908D78,9094E4,9CD643,A0A3F0,A0AB1B,A42A95,A8637D,ACF1DF,B0C554,B8A386,BC0F9A,BC2228,BCF685,C0A0BB,C412F5,C4A81D,C4E90A,C8BE19,C8D3A3,CCB255,D8FEE3,E01CFC,E46F13,E8CC18,EC2280,ECADE0,F0B4D2,F48CEB,F8E903,FC7516 o="D-Link International" 00AD63 o="Dedicated Micros Malta LTD" 00AECD o="Pensando Systems" +00AEF7,70C932 o="Dreame Technology (Suzhou) Limited" 00B017 o="InfoGear Technology Corp." 00B01C o="Westport Technologies" 00B01E o="Rantic Labs, Inc." @@ -10310,25 +10318,30 @@ 00B0F5 o="NetWorth Technologies, Inc." 00B338 o="Kontron Asia Pacific Design Sdn. Bhd" 00B342 o="MacroSAN Technologies Co., Ltd." -00B4F5,28FE65 o="DongGuan Siyoto Electronics Co., Ltd" +00B463,187F88,242BD6,343EA4,54E019,5C475E,649A63,90486C,9C7613,AC9FC3,C4DBAD,CC3BFB o="Ring LLC" +00B4F5,28FE65,4CFE2E o="DongGuan Siyoto Electronics Co., Ltd" 00B56D o="David Electronics Co., LTD." 00B5D6 o="Omnibit Inc." 00B600 o="VOIM Co., Ltd." 00B69F o="Latch" 00B78D o="Nanjing Shining Electric Automation Co., Ltd" 00B7A8 o="Heinzinger electronic GmbH" -00B810,1CC1BC,9C8275 o="Yichip Microelectronics (Hangzhou) Co.,Ltd" -00B8B6,04D395,08AA55,08CC27,0CCB85,141AA3,1430C6,1C56FE,2446C8,24DA9B,304B07,34BB26,3880DF,40786A,408805,441C7F,4480EB,58D9C3,5C5188,601D91,60BEB5,68C44D,8058F8,806C1B,84100D,88797E,88B4A6,8CF112,9068C3,90735A,9CD917,A470D6,A89675,B07994,BC98DF,BCFFEB,C08C71,C8C750,CC0DF2,CC61E5,CCC3EA,D00401,D07714,D463C6,D4C94B,DCBFE9,E0757D,E09861,E4907E,E89120,EC8892,F0D7AA,F4F1E1,F4F524,F81F32,F8CFC5,F8E079,F8F1B6 o="Motorola Mobility LLC, a Lenovo Company" -00B8C2 o="Heights Telecom T ltd" +00B810,108321,1CC1BC,9C8275 o="Yichip Microelectronics (Hangzhou) Co.,Ltd" +00B881 o="New platforms LLC" +00B8C2,B01F47 o="Heights Telecom T ltd" 00B9F6 o="Shenzhen Super Rich Electronics Co.,Ltd" 00BAC0 o="Biometric Access Company" 00BB01,02BB01 o="OCTOTHORPE CORP." +00BB43,140A29,4873CB,548450,84AB26,A090B5,A4056E o="Tiinlab Corporation" 00BB8E o="HME Co., Ltd." 00BBF0,00DD00-00DD0F o="UNGERMANN-BASS INC." +00BC2F,40C02F,5C35FC,7058A4,F07084 o="Actiontec Electronics Inc." +00BC99,040312,04EECD,083BC1,085411,08A189,08CC81,0C75D2,1012FB,1868CB,188025,240F9B,2428FD,2432AE,244845,2857BE,2CA59C,340962,3C1BF8,40ACBF,4419B6,4447CC,44A642,4C1F86,4C62DF,4CBD8F,4CF5DC,50E538,548C81,54C415,5803FB,5850ED,5C345B,64DB8B,686DBC,743FC2,80489F,807C62,80BEAF,80F5AE,849459,849A40,88DE39,8C22D2,8CE748,94E1AC,988B0A,989DE5,98DF82,98F112,A0FF0C,A41437,A42902,A44BD9,A4A459,A4D5C2,ACB92F,ACCB51,B4A382,BC5E33,BC9B5E,BCAD28,BCBAC2,C0517E,C056E3,C06DED,C42F90,C8A702,D4E853,DC07F8,DCD26A,E0BAAD,E0CA3C,E0DF13,E4D58B,E8A0ED,ECA971,ECC89C,F84DFC,FC9FFD o="Hangzhou Hikvision Digital Technology Co.,Ltd." 00BD27 o="Exar Corp." -00BD82,04E0B0,14B837,1CD5E2,28D1B7,2C431A,2C557C,34E71C,447BBB,4CB8B5,54666C,68A682,68D1BA,70ACD7,7C03C9,7C7630,901234,A42940,A8E2C3,B41D2B,BC13A8,C4047B,C4518D,C821DA,CC90E8,D45F25,D8325A,DC9C9F,DCA333 o="Shenzhen YOUHUA Technology Co., Ltd" -00BED5,0440A9,04D7A5,08688D,101965,1CAB34,307BAC,30809B,346B5B,38AD8E,38ADBE,3CF5CC,4077A9,441AFA,48BD3D,4CE9E4,5098B8,542BDE,5CC999,689320,6CE5F7,703AA6,7057BF,743A20,7485C4,74EAC8,74EACB,782C29,78AA82,7C1E06,80E455,88DF9E,905D7C,90E710,94282E,94292F,943BB0,9CE895,A4FA76,B04414,DCDA80,F01090,F47488,FC609B o="New H3C Technologies Co., Ltd" +00BD82,04E0B0,1047E7,14B837,1CD5E2,28D1B7,2C431A,2C557C,303F7B,34E71C,447BBB,4CB8B5,54666C,54B29D,60030C,687D00,68A682,68D1BA,70ACD7,74B7B3,7886B6,7C03C9,7C7630,88AC9E,901234,A42940,A857BA,A8E2C3,B41D2B,BC13A8,C07C90,C4047B,C4518D,C821DA,C8EBEC,CC90E8,D0F76E,D45F25,D8028A,D8325A,DC9C9F,DCA333,E06A05,FC34E2 o="Shenzhen YOUHUA Technology Co., Ltd" +00BED5,00DDB6,0440A9,04A959,04D7A5,083A38,083BE9,08688D,0C2779,0C3AFA,101965,103F8C,105EAE,1090FA,10B65E,14517E,148477,14962D,18C009,1C9468,1CAB34,2419A5,28C97A,28E424,2C4C7D,305F77,307BAC,30809B,30B037,30C6D7,30F527,346B5B,34DC99,38A91C,38AD8E,38ADBE,3CD2E5,3CF5CC,40734D,4077A9,40FE95,441AFA,447609,487397,48BD3D,4CE9E4,5098B8,542BDE,54C6FF,58B38F,58C7AC,5CA721,5CC999,5CF796,60DB15,642FC7,689320,6C8720,6CE2D3,6CE5F7,703AA6,7057BF,708185,70C6DD,743A20,7449D2,74504E,7485C4,74ADCB,74D6CB,74EAC8,74EACB,782C29,78A13E,78AA82,78ED25,7C1E06,7C7A3C,7CDE78,80616C,80E455,846569,882A5E,88DF9E,8C946A,8C96A5,9023B4,903F86,905D7C,90742E,90E710,90F7B2,94282E,94292F,943BB0,94A6D8,94A748,982044,98A92D,98F181,9C0971,9C54C2,9CE895,A069D9,A4FA76,A8C98A,ACCE92,B04414,B4D7DB,B845F4,B8D4F7,BC2247,BC31E2,BC5A34,BCD0EB,C40778,C4C063,D425DE,D4A23D,D8D7F3,DCDA80,E48429,E878EE,ECCD4C,ECDA59,F01090,F47488,F4E975,F8388D,FC609B o="New H3C Technologies Co., Ltd" 00BF15,0CBF15 o="Genetec Inc." +00BFAF,04F4D8,0C62A6,0C7955,0C9160,103D0A,141416,14EA63,1C1EE3,1C3008,20F543,243F75,287B11,287E80,28AD18,2C1B3A,2CD974,34F150,38C804,38E7C0,3CC5DD,44D878,489E9D,4C50DD,4C6BB8,645725,64E003,78669D,7893C3,7C27BC,7CA909,7CB232,843E1D,84C8A0,948CD7,94B3F7,9C9561,A8169D,B06B11,B8AB62,BC09B9,C0D2F3,C48B66,C4985C,D01255,D07602,D4ABCD,D81399,DC7223,E001C7,E8CAC8,F03575,F0A3B2,F84FAD o="Hui Zhou Gaoshengda Technology Co.,LTD" 00C000 o="LANOPTICS, LTD." 00C001 o="DIATEK PATIENT MANAGMENT" 00C003 o="GLOBALNET COMMUNICATIONS" @@ -10351,6 +10364,7 @@ 00C014 o="TELEMATICS CALABASAS INT'L,INC" 00C015 o="NEW MEDIA CORPORATION" 00C016 o="ELECTRONIC THEATRE CONTROLS" +00C017 o="NetAlly" 00C018 o="LANART CORPORATION" 00C019 o="LEAP TECHNOLOGY, INC." 00C01A o="COROMETRICS MEDICAL SYSTEMS" @@ -10368,7 +10382,7 @@ 00C026 o="LANS TECHNOLOGY CO., LTD." 00C027 o="CIPHER SYSTEMS, INC." 00C028 o="JASCO CORPORATION" -00C029 o="Nexans Deutschland GmbH - ANS" +00C029 o="Aginode Germany GmbH" 00C02A o="OHKURA ELECTRIC CO., LTD." 00C02B o="GERLOFF GESELLSCHAFT FUR" 00C02C o="CENTRUM COMMUNICATIONS, INC." @@ -10385,7 +10399,7 @@ 00C037 o="DYNATEM" 00C038 o="RASTER IMAGE PROCESSING SYSTEM" 00C039 o="Teridian Semiconductor Corporation" -00C03A o="MEN-MIKRO ELEKTRONIK GMBH" +00C03A,748F4D o="duagon Germany GmbH" 00C03B o="MULTIACCESS COMPUTING CORP." 00C03C o="TOWER TECH S.R.L." 00C03D o="WIESEMANN & THEIS GMBH" @@ -10415,7 +10429,7 @@ 00C056 o="SOMELEC" 00C057 o="MYCO ELECTRONICS" 00C058 o="DATAEXPERT CORP." -00C059 o="DENSO CORPORATION" +00C059,189578 o="DENSO CORPORATION" 00C05A o="SEMAPHORE COMMUNICATIONS CORP." 00C05B o="NETWORKS NORTHWEST, INC." 00C05C o="ELONEX PLC" @@ -10429,12 +10443,12 @@ 00C065 o="SCOPE COMMUNICATIONS, INC." 00C066 o="DOCUPOINT, INC." 00C067 o="UNITED BARCODE INDUSTRIES" -00C06A o="ZAHNER-ELEKTRIK GMBH & CO. KG" +00C06A o="Zahner-Elektrik Ingeborg Zahner-Schiller GmbH & Co. KG." 00C06B o="OSI PLUS CORPORATION" 00C06C o="SVEC COMPUTER CORP." 00C06D o="BOCA RESEARCH, INC." 00C06E o="HAFT TECHNOLOGY, INC." -00C06F o="KOMATSU LTD." +00C06F,CC3F8A o="KOMATSU LTD." 00C070 o="SECTRA SECURE-TRANSMISSION AB" 00C071 o="AREANEX COMMUNICATIONS, INC." 00C072 o="KNX LTD." @@ -10476,7 +10490,7 @@ 00C098 o="CHUNTEX ELECTRONIC CO., LTD." 00C099 o="YOSHIKI INDUSTRIAL CO.,LTD." 00C09A o="PHOTONICS CORPORATION" -00C09B o="RELIANCE COMM/TEC, R-TEC" +00C09B o="Tellabs Enterprise, Inc." 00C09D o="DISTRIBUTED SYSTEMS INT'L, INC" 00C09E o="CACHE COMPUTERS, INC." 00C0A0 o="ADVANCE MICRO RESEARCH, INC." @@ -10556,7 +10570,6 @@ 00C0ED o="US ARMY ELECTRONIC" 00C0EF o="ABIT CORPORATION" 00C0F1 o="SHINKO ELECTRIC CO., LTD." -00C0F2 o="TRANSITION NETWORKS" 00C0F3 o="NETWORK COMMUNICATIONS CORP." 00C0F4 o="INTERLINK SYSTEM CO., LTD." 00C0F5 o="METACOMP, INC." @@ -10571,10 +10584,15 @@ 00C14F o="DDL Co,.ltd." 00C343 o="E-T-A Circuit Breakers Ltd" 00C5DB o="Datatech Sistemas Digitales Avanzados SL" -00CBB4 o="SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD" +00C711,04B5C1,04D320,0C8BD3,18AC9E,1C4C48,204569,20D276,24F306,282A87,3C3576,3C3B99,3C7AF0,40D25F,44DC4E,48DD9D,4C5CDF,4C6460,5413CA,5421A9,58C583,5CCDA8,68F62B,6CA31E,7052D8,741C27,787D48,7895EB,7CE97C,8022FA,802511,8050F6,881C95,88D5A8,8CD48E,94342F,947918,94C5A6,988ED4,9CAF6F,A4F465,A8D861,ACFE05,B8C8EB,BCBD9E,BCEA9C,C0FBC1,C81739,C81EC2,C89D6D,C8E193,CC8C17,CCA3BD,D019D3,D0F865,D87E76,DC543D,DC88A1,DCBE49,EC7E91,F0B968,F82F6A,FC3964 o="ITEL MOBILE LIMITED" +00C896,04B6BE,04D688,0C8247,30600A,3426E6,34B5A3,502F54,540463,5C18DD,605747,7C9F07,94F717,A08966,A0EEEE,A4817A,C051F3,CCCF83,E48E10,EC84B4,F40B9F,FCB2D6 o="CIG SHANGHAI CO LTD" +00CAE0,042405,084ACF,08DD03,0C938F,0CBD75,1016B1,1071FA,14472D,145E69,149BF3,14C697,18D0C5,18D717,1C0219,1C427D,1C48CE,1C77F6,1CC3EB,1CDDEA,2064CB,20826A,2406AA,24753A,2475B3,2479F3,2C5BB8,2C5D34,2CA9F0,2CFC8B,301ABA,304F00,306DF9,307F10,308454,30E7BC,34479A,38295A,386F6B,388ABE,38E563,3C32B9,3CF591,408C1F,40B607,440444,4466FC,44AEAB,44FEEF,4829D6,483543,4877BD,4883B4,489507,48C461,4C189A,4C1A3D,4C50F1,4C6F9C,4C92D2,4CEAAE,50056E,5029F5,503CEA,50874D,540E58,5464BC,546706,5843AB,587A6A,58C6F0,58D697,5C1648,5C666C,6007C4,602101,60D4E9,6885A4,68FCB6,6C5C14,6CD71F,70DDA8,748669,74D558,74E147,74EF4B,7836CC,786CAB,7C6B9C,846FCE,8803E9,885A06,88684B,88D50C,8C0EE3,8C3401,9454CE,9497AE,94D029,986F60,9C0CDF,9C5F5A,9C7403,9CAA5D,9CF531,9CFB77,A09347,A0941A,A40F98,A41232,A43D78,A4C939,A4F05E,A81B5A,A888CE,A89892,A8C56F,AC45CA,AC7352,AC764C,AC7A94,ACC4BD,B04692,B0AA36,B0B5C3,B0C952,B4205B,B457E6,B4A5AC,B4CB57,B83765,B8C74A,B8C9B5,BC3AEA,BC64D9,BCE8FA,C02E25,C09F05,C0EDE5,C440F6,C4E1A1,C4E39F,C4FE5B,C8F230,CC2D83,D020DD,D41A3F,D4503F,D467D3,D4BAFA,D81EDD,DC5583,DC6DCD,DCA956,DCB4CA,E0426D,E40CFD,E433AE,E44097,E44790,E4936A,E4C483,E4E26C,E8BBA8,EC01EE,EC2F90,EC51BC,ECF342,F06728,F06D78,F079E8,F4D620,F8C4AE,F8C4FA,FC041C,FCA5D0 o="GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD" +00CB7A,087E64,08952A,08A7C0,0C0227,0CFE7B,1033BF,1062D0,10A793,10C25A,14987D,14B7F8,1C9D72,1C9ECC,28BE9B,3817E1,383FB3,3C82C0,3C9A77,3CB74B,400FC1,4075C3,441C12,4432C8,480033,481B40,484BD4,48BDCE,48F7C0,4CD74A,500959,50BB9F,54A65C,58238C,589630,5C22DA,5C7695,5C7D7D,603D26,641236,6C55E8,70037E,705A9E,7C9A54,802994,80B234,80C6AB,80D04A,80DAC2,8417EF,889E68,88F7C7,8C04FF,8C5C20,8C6A8D,905851,9404E3,946A77,98524A,989D5D,A0FF70,A456CC,AC4CA5,B0C287,B42A0E,B85E71,B8A535,BC9B68,C42795,CC03FA,CC3540,CCF3C8,D05A00,D08A91,D0B2C4,D4B92F,D4E2CB,DCEB69,E03717,E0885D,E0DBD1,E4BFFA,E8CD15,EC937D,ECA81F,F04B8A,F4C114,F820D2,F83B1D,F85E42,F8D00E,F8D2AC,FC528D,FC9114,FC94E3 o="Vantiva USA LLC" +00CBB4,606682 o="SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD" 00CBBD o="Cambridge Broadband Networks Group" 00CD90 o="MAS Elektronik AG" -00CFC0,00E22C,0C14D2,103D3E,1479F3,1869DA,1C4176,24615A,3C574F,3CE3E7,4062EA,44C874,508CF5,7089CC,74ADB7,78C313,8C53D2,90473C,94FF61,AC5AEE,AC710C,B4D0A9,C01692,C43306,CC5CDE,E0456D,E4C0CC,F848FD o="China Mobile Group Device Co.,Ltd." +00CE30 o="Express LUCK Industrial Ltd." +00CFC0,00E22C,044F7A,0815AE,0C14D2,103D3E,1479F3,14A1DF,1869DA,187CAA,1C4176,241281,24615A,247BA4,2C5683,34AC11,3C574F,3CE3E7,4062EA,448EEC,44C874,481F66,50297B,507097,508CF5,50CF56,544DD4,5C75C6,64C582,6C0F0B,7089CC,74ADB7,781053,782E56,78C313,7C6A60,8453CD,88DA18,8C1A50,8C53D2,90473C,90F3B8,94BE09,94FF61,987DDD,989D39,A021AA,A41B34,A861DF,AC5AEE,AC710C,ACF70D,B4D0A9,B86061,BC9E2C,BCD9FB,C01692,C02D2E,C43306,C80C53,C875F4,CC5CDE,CC96A2,DC152D,DC7CF7,E0456D,E0E0C2,E4C0CC,E83A4B,EC9B2D,ECE7C2,F4BFBB,F848FD,FC2E19,FCE6C6 o="China Mobile Group Device Co.,Ltd." 00D000 o="FERRAN SCIENTIFIC, INC." 00D001 o="VST TECHNOLOGIES, INC." 00D002 o="DITECH CORPORATION" @@ -10618,7 +10636,7 @@ 00D02A o="Voxent Systems Ltd." 00D02B o="JETCELL, INC." 00D02C o="CAMPBELL SCIENTIFIC, INC." -00D02D,48A2E6,B82CA0 o="Resideo" +00D02D,48A2E6,5CFCE1,B82CA0 o="Resideo" 00D02E o="COMMUNICATION AUTOMATION CORP." 00D02F o="VLSI TECHNOLOGY INC." 00D030 o="Safetran Systems Corp" @@ -10648,11 +10666,11 @@ 00D049 o="IMPRESSTEK CO., LTD." 00D04A o="PRESENCE TECHNOLOGY GMBH" 00D04B o="LA CIE GROUP S.A." -00D04C o="EUROTEL TELECOM LTD." +00D04C o="Eseye Design Ltd" 00D04D o="DIV OF RESEARCH & STATISTICS" 00D04E o="LOGIBAG" 00D04F o="BITRONICS, INC." -00D050,10A3B8,646EEA o="Iskratel d.o.o." +00D050,10A3B8,485541,54C250,646EEA o="Iskratel d.o.o." 00D051 o="O2 MICRO, INC." 00D053 o="CONNECTED SYSTEMS" 00D054 o="SAS INSTITUTE INC." @@ -10690,7 +10708,7 @@ 00D078 o="Eltex of Sweden AB" 00D07A o="AMAQUEST COMPUTER CORP." 00D07B o="COMCAM INTERNATIONAL INC" -00D07C o="KOYO ELECTRONICS INC. CO.,LTD." +00D07C o="JTEKT ELECTRONICS CORPORATION" 00D07D o="COSINE COMMUNICATIONS" 00D07E o="KEYCORP LTD." 00D07F o="STRATEGY & TECHNOLOGY, LIMITED" @@ -10756,7 +10774,7 @@ 00D0CB,18D071 o="DASAN CO., LTD." 00D0CC o="TECHNOLOGIES LYRE INC." 00D0CD o="ATAN TECHNOLOGY INC." -00D0CE o="iSystem Labs" +00D0CE o="TASKING Labs" 00D0CF o="MORETON BAY" 00D0D0 o="ZHONGXING TELECOM LTD." 00D0D2 o="EPILOG CORPORATION" @@ -10782,7 +10800,7 @@ 00D0E9 o="Advantage Century Telecommunication Corp." 00D0EA o="NEXTONE COMMUNICATIONS, INC." 00D0EB o="LIGHTERA NETWORKS, INC." -00D0EC,480C49,8C3C4A,C80739,F49651 o="NAKAYO Inc" +00D0EC,480C49,8C3C4A,B04B68,C80739,F49651 o="NAKAYO Inc" 00D0ED o="XIOX" 00D0EE o="DICTAPHONE CORPORATION" 00D0EF o="IGT" @@ -10802,10 +10820,12 @@ 00D0FE o="ASTRAL POINT" 00D11C o="ACETEL" 00D279 o="VINGROUP JOINT STOCK COMPANY" -00D2B1 o="TPV Display Technology (Xiamen) Co.,Ltd." +00D2B1,60C418,94BDBE o="TPV Display Technology (Xiamen) Co.,Ltd." 00D318 o="SPG Controls" 00D38D o="Hotel Technology Next Generation" -00D861,2CF05D,309C23,4CCC6A,D8CB8A o="Micro-Star INTL CO., LTD." +00D598 o="BOPEL MOBILE TECHNOLOGY CO.,LIMITED" +00D632 o="GE Energy" +00D861,047C16,2CF05D,309C23,345A60,4CCC6A,D843AE,D8BBC1,D8CB8A,FC9D05 o="Micro-Star INTL CO., LTD." 00DB1E o="Albedo Telecom SL" 00DB45 o="THAMWAY CO.,LTD." 00DD25 o="Shenzhen hechengdong Technology Co., Ltd" @@ -10822,7 +10842,6 @@ 00E00C o="MOTOROLA" 00E00D o="RADIANT SYSTEMS" 00E00E o="AVALON IMAGING SYSTEMS, INC." -00E00F,847973,984562,FCFAF7 o="Shanghai Baud Data Communication Co.,Ltd." 00E010 o="HESS SB-AUTOMATENBAU GmbH" 00E011 o="UNIDEN CORPORATION" 00E012 o="PLUTO TECHNOLOGIES INTERNATIONAL INC." @@ -10833,7 +10852,6 @@ 00E019 o="ING. GIORDANO ELETTRONICA" 00E01A o="COMTEC SYSTEMS. CO., LTD." 00E01B o="SPHERE COMMUNICATIONS, INC." -00E01C o="Cradlepoint, Inc" 00E01D o="WebTV NETWORKS, INC." 00E01F o="AVIDIA Systems, Inc." 00E020 o="TECNOMEN OY" @@ -10935,7 +10953,6 @@ 00E08D o="PRESSURE SYSTEMS, INC." 00E08E o="UTSTARCOM" 00E090 o="BECKMAN LAB. AUTOMATION DIV." -00E091,14C913,201742,30B4B8,388C50,58FDB1,64956C,6CD032,785DC8,A823FE,C808E9 o="LG Electronics" 00E092 o="ADMTEK INCORPORATED" 00E093 o="ACKFIN NETWORKS" 00E094 o="OSAI SRL" @@ -10956,7 +10973,7 @@ 00E0A6 o="TELOGY NETWORKS, INC." 00E0A7 o="IPC INFORMATION SYSTEMS, INC." 00E0A8 o="SAT GmbH & Co." -00E0A9,788038 o="FUNAI ELECTRIC CO., LTD." +00E0A9,04D60E,788038 o="FUNAI ELECTRIC CO., LTD." 00E0AA o="ELECTROSONIC LTD." 00E0AB o="DIMAT S.A." 00E0AC o="MIDSCO, INC." @@ -11004,7 +11021,6 @@ 00E0DB o="ViaVideo Communications, Inc." 00E0DC o="NEXWARE CORP." 00E0DE o="DATAX NV" -00E0DF o="KEYMILE GmbH" 00E0E0 o="SI ELECTRONICS, LTD." 00E0E1 o="G2 NETWORKS, INC." 00E0E2 o="INNOVA CORP." @@ -11017,7 +11033,7 @@ 00E0E9 o="DATA LABS, INC." 00E0EA o="INNOVAT COMMUNICATIONS, INC." 00E0EB o="DIGICOM SYSTEMS, INCORPORATED" -00E0EC,0C48C6 o="CELESTICA INC." +00E0EC,0C48C6,34AD61,64F64D,885A23,B4DB91,D849BF,DCDA4D o="CELESTICA INC." 00E0ED o="SILICOM, LTD." 00E0EE o="MAREL HF" 00E0EF o="DIONEX" @@ -11034,87 +11050,122 @@ 00E0FD o="A-TREND TECHNOLOGY CO., LTD." 00E0FF o="SECURITY DYNAMICS TECHNOLOGIES, Inc." 00E175 o="AK-Systems Ltd" -00E5E4,1CFF59,4456E2,C0CC42,C4A151 o="Sichuan Tianyi Comheart Telecom Co., Ltd." +00E607 o="AURCORE TECHNOLOGY INC." 00E6D3,02E6D3 o="NIXDORF COMPUTER CORP." 00E6E8 o="Netzin Technology Corporation,.Ltd." 00E8AB o="Meggitt Training Systems, Inc." -00EDB8,2429FE o="KYOCERA Corporation" +00EBD8,088AF1,0C1C31,30169D,94742E o="MERCUSYS TECHNOLOGIES CO., LTD." +00EDB8,2429FE,74A5C2,D0F520 o="KYOCERA Corporation" +00EE01 o="Enablers Solucoes e Consultoria em Dispositivos" 00F051 o="KWB Gmbh" 00F22C o="Shanghai B-star Technology Co.,Ltd." 00F3DB o="WOO Sports" 00F403 o="Orbis Systems Oy" 00F860 o="PT. Panggung Electric Citrabuana" -00F871 o="DGS Denmark A/S" 00FA3B o="CLOOS ELECTRONIC GMBH" +00FAB6 o="Kontakt Micro-Location Sp z o.o." +00FBF9 o="Axiado Corporation" 00FC58 o="WebSilicon Ltd." 00FC70 o="Intrepid Control Systems, Inc." 00FD4C o="NEVATEC" 02AA3C o="OLIVETTI TELECOMM SPA (OLTECO)" +040067 o="Stanley Black & Decker" +0401BB,04946B,088620,08B49D,08ED9D,141114,148F34,1889CF,1C87E3,1CAB48,202681,2C4DDE,30F23C,389231,3C19CB,3CCA61,409A30,40A786,4476E7,4CA3A7,4CE19E,503CCA,58356B,58DB15,5C8F40,64CB9F,6C433C,704DE7,709FA9,74E60F,78123E,783A6C,78FFCA,8077A4,9056FC,90CBA3,9CDA36,A85EF2,AC2DA9,B4BA6A,BC09EB,C0AD97,C4A451,C4BF60,C4C563,CC3B27,D01C3C,D47DFC,D84567,D89999,E4F8BE,ECF22B,F03D03,F0C745 o="TECNO MOBILE LIMITED" 0402CA o="Shenzhen Vtsonic Co.,ltd" -0403D6,342FBD,48A5E7,582F40,5C521E,606BFF,64B5C6,702C09,7048F7,74F9CA,9458CB,98415C,98B6E9,98E8FA,A438CC,B87826,B88AEC,D4F057,DC68EB,E0F6B5,E8DA20,ECC40D o="Nintendo Co.,Ltd" +0403D6,1C4586,200BCF,201C3A,28CF51,342FBD,38C6CE,3CA9AB,4044F7,483177,48A5E7,48F1EB,50236D,582F40,58B03E,5C0CE6,5C521E,601AC7,606BFF,64B5C6,702C09,7048F7,70F088,748469,74F9CA,7820A5,78818C,80D2E5,904528,9458CB,948E6D,98415C,98B6E9,98E255,98E8FA,A438CC,A4C1E8,ACFAE4,B86870,B87826,B88AEC,BC744B,BC89A6,BC9EBB,BCCE25,C84805,C89143,CC5B31,D05509,D4F057,D86B83,DC68EB,DCCD18,E0EFBF,E0F6B5,E8A0CD,E8DA20,ECC40D o="Nintendo Co.,Ltd" +0404B8 o="China Hualu Panasonic AVC Networks Co., LTD." 0404EA o="Valens Semiconductor Ltd." -0405DD,B0D568 o="Shenzhen Cultraview Digital Technology Co., Ltd" +0405DD,24D1A1,A82C3E,B0D568 o="Shenzhen Cultraview Digital Technology Co., Ltd" 04072E o="VTech Electronics Ltd." +040986,047056,04A222,0827A8,0C8E29,185880,186041,18828C,18A5FF,1CF43F,2037F0,2C5917,30B1B5,34194D,3806E6,3CBDC5,3CF083,44FE3B,488D36,4C1B86,4C22F3,543D60,54B7BD,54C45B,6045E8,608D26,6475DA,64CC22,6C15DB,703E76,709741,7490BC,78DD12,8082FE,84900A,84A329,8C19B5,8C7779,8C8394,946AB0,A0B549,A4CEDA,A8A237,AC1007,ACB687,ACDF9F,B83BAB,B8F853,BC30D9,BCAF6E,BCF87E,C0D7AA,C4E532,C899B2,CCB148,CCD42E,D0052A,D463FE,D48660,DCF51B,E05163,E43ED7,E475DC,EC6C9A,ECF451,F08620,F4CAE7,F83EB0,FC3DA5 o="Arcadyan Corporation" 040AE0 o="XMIT AG COMPUTER NETWORKS" 040EC2 o="ViewSonic Mobile China Limited" +040F66,04C845,0CEF15,105A95,186945,20E15D,306893,3C6AD2,3C7895,409595,48C381,503DD1,58044F,58D812,5CA64F,6C4CBC,782051,803C04,8C86DD,8C902D,94EF50,98038E,98BA5F,A82948,ACA7F1,B45BD1,B8FBB3,BC071D,CCBABD,D8F12E,E0280A,E0D362,EC750C,F4F50B o="TP-Link Systems Inc." 0415D9 o="Viwone" +04174C o="Nanjing SCIYON Wisdom Technology Group Co.,Ltd." +0417B6,102CB1,2C8D48,8C8580,90BFD9 o="Smart Innovation LLC" 04197F o="Grasphere Japan" 041A04 o="WaveIP" 041B94 o="Host Mobility AB" +041CDB o="Siba Service" 041D10 o="Dream Ware Inc." 041E7A o="DSPWorks" 041EFA o="BISSELL Homecare, Inc." +04208A o="浙江路川科技有限公司" 04214C o="Insight Energy Ventures LLC" 042234 o="Wireless Standard Extensions" -042605 o="GFR Gesellschaft für Regelungstechnik und Energieeinsparung mbH" +0425E0,0475F9,145808,184593,240B88,2CDD95,38E3C5,403306,4C0617,4C8120,501B32,5088C7,5437BB,5C8C30,5CF9FD,60BD2C,64D954,6CC63B,743C18,784F24,8049BF,80AE3C,90032E,900A1A,A09B17,A41EE1,AC3728,B4265D,C448FA,C89CBB,D00ED9,D8B020,E03DA6,E4DADF,E8D0B9,ECA2A0,F06865,F49EEF,F80C58,F844E3,F86CE1,FC10C6 o="Taicang T&W Electronics" +042605 o="Bosch Building Automation GmbH" +042B58 o="Shenzhen Hanzsung Technology Co.,Ltd" 042BBB o="PicoCELA, Inc." +042DAD o="Areus GmbH" 042DB4 o="First Property (Beijing) Co., Ltd Modern MOMA Branch" 042F56 o="ATOCS (Shenzhen) LTD" 043110,C0A66D o="Inspur Group Co., Ltd." 0432F4 o="Partron" 043385 o="Nanchang BlackShark Co.,Ltd." +0434C3,74FB17 o="Qingdao Goertek Horizons Tecnology Co.,LTD" +0434F6,0838E6,2CFDAB,40A108,4888CA,542758,64DB43,78D6DC,7C4685,84B8B8,94BE46,980CA5,D0F88C,D8630D,DCEB4D,E01FFC o="Motorola (Wuhan) Mobility Technologies Communication Co., Ltd." +04359B o="WuLu Networks Pty Ltd" 043604 o="Gyeyoung I&T" +0436B8,847207 o="I&C Technology" +043855 o="Scopus International Pvt. Ltd." +0438DC o="China Unicom Online Information Technology Co.,Ltd" +0439CB,04C9DE o="Qingdao HaierTechnology Co.,Ltd" 043A0D o="SM Optics S.r.l." +043CE8,086BD1,24BBC9,30045C,34D72F,381672,402230,448502,488899,4CC096,649A08,68AE04,704CB6,7433A6,74CF00,8012DF,807EB4,900E9E,98CCD9,A8B483,ACEE64,B0FBDD,C0C170,CC242E,CC8DB5,DC4BDD,E0720A,E4F3E8,E8268D,F4442C,FC0C45,FCD586 o="Shenzhen SuperElectron Technology Co.,Ltd." 043D98 o="ChongQing QingJia Electronics CO.,LTD" -044169,2474F7,D43260,D4D919,D89685,F4DD9E o="GoPro" +044169,045747,2474F7,AC04AA,D43260,D4D919,D89685,F4DD9E o="GoPro" 0444A1 o="TELECON GALICIA,S.A." 044562 o="ANDRA Sp. z o. o." 0445A1 o="NIRIT- Xinwei Telecom Technology Co., Ltd." 0446CF o="Beijing Venustech Cybervision Co.,Ltd." +0447CA,502CC6,580D0D,7CB8E6,9424B8,C03937 o="GREE ELECTRIC APPLIANCES, INC. OF ZHUHAI" 044A50 o="Ramaxel Technology (Shenzhen) limited company" +044A69,0CC119,2C0547,34A6EF,8CBD37,BCFD0C,CCB85E o="Shenzhen Phaten Tech. LTD" +044A6A o="niliwi nanjing big data Co,.Ltd" 044AC6 o="Aipon Electronics Co., Ltd" 044BFF o="GuangZhou Hedy Digital Technology Co., Ltd" 044CEF o="Fujian Sanao Technology Co.,Ltd" -044E06,3407FB,346E9D,348446,3C197D,549B72,74C99A,74D0DC,78D347,903809,987A10,98A404,98C5DB,A4A1C2,AC60B6,F0B107 o="Ericsson AB" +044E06,18F7F6,1C90BE,24CBE1,3407FB,346E9D,348446,3C197D,549B72,58454C,58707F,74C99A,74D0DC,78D347,7C726E,7CC178,903809,987A10,98A404,98C5DB,A4A1C2,AC3351,AC60B6,E04735,E40D3B,F0B107,F43C96,F897A9 o="Ericsson AB" 044F8B o="Adapteva, Inc." 0450DA o="Qiku Internet Network Scientific (Shenzhen) Co., Ltd" +045170 o="Zhongshan K-mate General Electronics Co.,Ltd" 0453D5 o="Sysorex Global Holdings" +0455B2,58D533 o="Huaqin Technology Co.,Ltd" 0455CA o="BriView (Xiamen) Corp." 045604,3478D7,48A380 o="Gionee Communication Equipment Co.,Ltd." +045665,0847D0,089C86,0C3623,104738,286FB9,302364,3CBD69,4C2113,500238,503D7F,549F06,64DBF7,6C22F7,781735,783EA1,88B362,9075BC,90D20B,98865D,AC606F,B0D1D6,B41D62,B81904,C0544D,CCED21,DCD9AE,E01FED,E8F8D0,F82229 o="Nokia Shanghai Bell Co., Ltd." 04572F o="Sertel Electronics UK Ltd" +045791,306371,4C7274,9C0C35,A02442 o="Shenzhenshi Xinzhongxin Technology Co.Ltd" 04586F o="Sichuan Whayer information industry Co.,LTD" 045C06 o="Zmodo Technology Corporation" 045C8E o="gosund GROUP CO.,LTD" 045D56 o="camtron industrial inc." -045EA4 o="SHENZHEN NETIS TECHNOLOGY CO.,LTD" +045E0A,F83C44 o="SHENZHEN TRANSCHAN TECHNOLOGY LIMITED" +045FA6,E4FAE4 o="Shenzhen SDMC Technology CP,.LTD" 045FA7 o="Shenzhen Yichen Technology Development Co.,LTD" 0462D7 o="ALSTOM HYDRO FRANCE" 0463E0 o="Nome Oy" 046565 o="Testop" +046761,04AE47,14D881,1CEAAC,24CF24,28D127,2C195C,34F015,34FA1C,3CCD57,44237C,44DF65,44F770,4CC64C,504F3B,508811,50926A,50D2F5,50EC50,50FE39,5448E6,58B623,58EA1F,5C0214,5CE50C,64644A,6490C1,649E31,68ABBC,709751,7CC294,844693,88C397,8C53C3,8CD0B2,8CDEF9,90FB5D,98171A,98E081,9C9D7E,A439B3,A4A930,A4BA70,AC8C46,B460ED,B850D8,C05B44,C493BB,C85CCC,C8BF4C,CC033D,CC4D75,CCB5D1,CCD843,CCDA20,D43538,D4438A,D4532A,D4DA21,D4F0EA,DCED83,E41B43,E4FE43,E84A54,EC4D3E,F88306 o="Beijing Xiaomi Mobile Software Co., Ltd" 046785 o="scemtec Hard- und Software fuer Mess- und Steuerungstechnik GmbH" 046B1B o="SYSDINE Co., Ltd." -046B25,1012B4,1469A2,7847E3,C01B23 o="SICHUAN TIANYI COMHEART TELECOM CO.,LTD" 046D42 o="Bryston Ltd." 046E02 o="OpenRTLS Group" 046E49 o="TaiYear Electronic Technology (Suzhou) Co., Ltd" 0470BC o="Globalstar Inc." +047153,0C6714,483E5E,5876AC,740635,78B39F,7C131D,982CC6,A0957F,C09F51,C40FA6,D0B66F,D821DA,F4239C o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" 0474A1 o="Aligera Equipamentos Digitais Ltda" 0475F5 o="CSST" -047863,80A036,B0F893,D0BAE4 o="Shanghai MXCHIP Information Technology Co., Ltd." +047863,6879C4,80A036,849DC2,88A68D,B0F893,D0BAE4 o="Shanghai MXCHIP Information Technology Co., Ltd." +047975,0884FB,08E021,0CB789,0CB983,1461A4,1CC992,2004F3,24AECC,281293,2844F4,2CB301,3486DA,386504,40D4F6,449046,48BDA7,48C1EE,504877,54EAE1,60D4AF,60F04D,6858A0,68A7B4,68F0B5,70A6BD,70A703,78E61C,84A1B7,90FFD6,9432C1,94F6F2,98BEDC,9C0567,9CEA97,A06974,A09A0C,A0FB83,B08101,B4B853,B8B1EA,BC5E91,C0280B,C05724,C89BAD,CC6200,D8AD49,DCA281,E42761,EC5382,EC6488,FC8417 o="Honor Device Co., Ltd." +047A0B,3CBD3E,6C0DC4,8C5AF8,C82832,D45EEC,E0B655,E4DB6D,ECFA5C o="Beijing Xiaomi Electronics Co., Ltd." 047D50 o="Shenzhen Kang Ying Technology Co.Ltd." -047E23,1C25E1,44E6B0,48216C,6458AD,64F88A,688B0F,A0950C,A09B12,AC5474,B03055,B05365,C098DA,C0D0FF,E42D7B o="China Mobile IOT Company Limited" +047E23,1C25E1,2C3341,44E6B0,48216C,50558D,589153,6458AD,64F88A,688B0F,802278,8427B6,A0950C,A09B12,AC5474,AC8B6A,B03055,B05365,B4E46B,C098DA,C0D0FF,D47EE4,E0C58F,E42D7B o="China Mobile IOT Company Limited" 047E4A o="moobox CO., Ltd." -047F0E o="Barrot Technology Limited" +047F0E,102381,304AC4,606E41,F86B14 o="Barrot Technology Co.,LTD" +0480A7 o="ShenZhen TianGang Micro Technology CO.LTD" 0481AE o="Clack Corporation" 04848A o="7INOVA TECHNOLOGY LIMITED" 04888C o="Eifelwerk Butler Systeme GmbH" @@ -11122,26 +11173,35 @@ 048AE1,44CD0E,4CC7D6,C07878,C8C2F5,DCB4AC o="FLEXTRONICS MANUFACTURING(ZHUHAI)CO.,LTD." 048B42 o="Skspruce Technologies" 048C03 o="ThinPAD Technology (Shenzhen)CO.,LTD" +048F00 o="Rong-Paisa Electronics Co., Ltd." +049081 o="Pensando Systems, Inc." +0490C0 o="Forvia" 0492EE o="iway AG" -04946B,088620,08ED9D,141114,202681,4CE19E,58DB15,64CB9F,709FA9,74E60F,783A6C,78FFCA,9056FC,AC2DA9,C4C563,D01C3C,D47DFC,ECF22B,F03D03 o="TECNO MOBILE LIMITED" 0494A1 o="CATCH THE WIND INC" +0494E9 o="FAXedge Technologies, LLC" 0495E6,0840F3,500FF5,502B73,58D9D5,B0DFC1,B40F3B,B83A08,CC2D21,D83214,E865D4 o="Tenda Technology Co.,Ltd.Dongguan branch" 049645 o="WUXI SKY CHIP INTERCONNECTION TECHNOLOGY CO.,LTD." 049790 o="Lartech telecom LLC" +04981C o="Ningbo Zhixiang Technology Co., Ltd" 0499E6 o="Shenzhen Yoostar Technology Co., Ltd" 049B9C o="Eadingcore Intelligent Technology Co., Ltd." 049C62 o="BMT Medical Technology s.r.o." 049DFE o="Hivesystem" 049F06 o="Smobile Co., Ltd." -04A222,0C8E29,18828C,44FE3B,488D36,4C1B86,64CC22,78DD12,946AB0,A0B549,B8F853,BC30D9,CCD42E,D0052A,D463FE,E05163,E43ED7,E475DC,EC6C9A,ECF451,F08620,FC3DA5 o="Arcadyan Corporation" +049F15 o="Humane" 04A3F3 o="Emicon" +04A85A,0C9AE6,34D262,481CB9,4C43F6,58B858,60601F,882985,8C5823,E47A2C o="SZ DJI TECHNOLOGY CO.,LTD" 04AAE1 o="BEIJING MICROVISION TECHNOLOGY CO.,LTD" +04AB08,04CE09,084F66,08FF24,0C2C7C,0CA94A,0CF07B,1055E4,109F47,18AA1E,18EBD4,1C880C,20898A,249AC8,24E8E5,28C01B,303180,30F947,348511,34AA31,34D856,3C55DB,40679B,4485DA,48555E,60B705,681AA4,6CC242,703A8C,78530D,785F36,80EE25,8487FF,90B67A,947FD8,9CF8B8,A04C0C,AC8866,ACFBC2,B09738,B88EB0,BC9D4E,C068CC,C08F20,C8138B,D0458D,D0B1CA,D44D9F,E028B1,E822B8,F09008,F40A2E,F4D454,F847E3,F8B8B4,FC386A,FC7A58 o="Shenzhen Skyworth Digital Technology CO., Ltd" 04AB18,3897A4,BC5C4C o="ELECOM CO.,LTD." 04AB6A o="Chun-il Co.,Ltd." 04AC44,B8CA04 o="Holtek Semiconductor Inc." +04AEC7 o="Marquardt" 04B3B6 o="Seamap (UK) Ltd" 04B466 o="BSP Co., Ltd." +04B4FE,08B657,0C7274,1CED6F,2C3AFD,2C91AB,34E1A9,3810D5,3C3712,3CA62F,444E6D,485D35,50E636,5C4979,60B58D,74427F,7CFF4D,802395,989BCB,98A965,B0F208,B4FC7D,C80E14,CCCE1E,D012CB,D424DD,DC15C8,DC396F,E00855,E0286D,E8DF70,F0B014 o="AVM Audiovisuelles Marketing und Computersysteme GmbH" 04B648 o="ZENNER" +04B97D o="AiVIS Co., Itd." 04BA36 o="Li Seng Technology Ltd" 04BBF9 o="Pavilion Data Systems Inc" 04BC87 o="Shenzhen JustLink Technology Co., LTD" @@ -11149,18 +11209,24 @@ 04C05B o="Tigo Energy" 04C09C o="Tellabs Inc." 04C103,D49524 o="Clover Network, Inc." +04C29B o="Aura Home, Inc." 04C880 o="Samtec Inc" 04C991 o="Phistek INC." +04CA8D o="Enfabrica" 04CB1D o="Traka plc" -04CB88,30C01B,5CFB7C,8850F6,B8F653,D8373B,E8D03C,F4BCDA o="Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd" +04CB88,28FA19,2CFDB4,30C01B,5CFB7C,8850F6,B8F653,D8373B,E8D03C,F4BCDA o="Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd" 04CE14 o="Wilocity LTD." 04CE7E o="NXP France Semiconductors France" 04CF25 o="MANYCOLORS, INC." 04CF8C,286C07,34CE00,40313C,50642B,7811DC,7C49EB,EC4118 o="XIAOMI Electronics,CO.,LTD" 04D437 o="ZNV" -04D590,085B0E,704CA5,906CAC,E023FF,E81CBA o="Fortinet, Inc." -04D6AA,08C5E1,1449E0,24181D,28C21F,2C0E3D,30074D,30AB6A,3423BA,400E85,4C6641,54880E,6CC7EC,843838,88329B,8CB84A,8CF5A3,A8DB03,AC5F3E,B479A7,BC8CCD,C09727,C0BDD1,C8BA94,D022BE,D02544,E8508B,EC1F72,EC9BF3,F025B7,F409D8,F8042E o="SAMSUNG ELECTRO-MECHANICS(THAILAND)" +04D442,149FB6,14C050,345506,74D873,782E03,7CFD82,8845F0,B86392,ECA9FA o="GUANGDONG GENIUS TECHNOLOGY CO., LTD." +04D6AA,08C5E1,1449E0,24181D,28C21F,2C0E3D,30074D,30AB6A,3423BA,400E85,40E99B,4C6641,54880E,6CC7EC,843838,88329B,8CB84A,8CF5A3,A8DB03,AC5F3E,B479A7,BC8CCD,C09727,C0BDD1,C8BA94,D022BE,D02544,E8508B,EC1F72,EC9BF3,F025B7,F40228,F409D8,F8042E o="SAMSUNG ELECTRO-MECHANICS(THAILAND)" +04D6F4,102C8D,1841C3,242730,2459E5,305223,30B237,345BBB,382FB0,3C2093,4435D3,502DBB,54926A,54B874,7086CE,803E4F,8076C2,847C9B,88F2BD,8C3F44,9CC12D,A0681C,A09921,A42A26,A8407D,AC72DD,AC93C4,B07839,B096EA,B80BDA,B88C29,BC0435,BC89F8,C084FF,C08840,C43960,D450EE,D48457,D8341C,D8D261,E82281,F0C9D1,F82A53,F8D554,FCDF00 o="GD Midea Air-Conditioning Equipment Co.,Ltd." 04D783 o="Y&H E&C Co.,LTD." +04D921 o="Occuspace" +04D9C8,1CA0B8,20538D,28C13C,702084,A4AE11-A4AE12,D0F405,F46B8C,F4939F o="Hon Hai Precision Industry Co., Ltd." +04DA28 o="Chongqing Zhouhai Intelligent Technology Co., Ltd" 04DB8A o="Suntech International Ltd." 04DD4C o="Velocytech" 04DEDB o="Rockport Networks Inc" @@ -11168,20 +11234,28 @@ 04DF69 o="Car Connectivity Consortium" 04E0C4 o="TRIUMPH-ADLER AG" 04E1C8 o="IMS Soluções em Energia Ltda." -04E229,04FA83,18A7F1 o="Qingdao Haier Technology Co.,Ltd" +04E229,04FA83,145790,18A7F1,24E8CE,3429EF,3C1640,4448FF,540853,5C241F,60B02B,68E478,94224C,A08222,AC8226,ACB722,D8E23F,E8EAFA o="Qingdao Haier Technology Co.,Ltd" 04E2F8 o="AEP Ticketing solutions srl" 04E548 o="Cohda Wireless Pty Ltd" 04E56E o="THUB Co., ltd." 04E662 o="Acroname Inc." +04E69E o="ZHONGGUANCUN XINHAIZEYOU TECHNOLOGY CO.,LTD" +04E77E,18B6CC,9012A1,E00EE1 o="We Corporation Inc." +04E892,147057,C05064 o="SHENNAN CIRCUITS CO.,LTD" 04E9E5 o="PJRC.COM, LLC" +04ED62 o="Daikin Europe NV" 04EE91 o="x-fabric GmbH" +04EEEE o="Laplace System Co., Ltd." 04F021 o="Compex Systems Pte Ltd" +04F0E4 o="ShenZhen Hosecom Electronic Technology Co.,LTD" 04F17D o="Tarana Wireless" 04F4BC o="Xena Networks" -04F8C2 o="Flaircomm Microelectronics, Inc." -04F8F8,1CEA0B,34EFB6,3C2C99,68215F,80A235,8CEA1B,A82BB5,B86A97,CC37AB o="Edgecore Networks Corporation" +04F8C2,88B6BD o="Flaircomm Microelectronics, Inc." +04F8F8,14448F,1CEA0B,34EFB6,3C2C99,68215F,80A235,8CEA1B,903CB3,98192C,A82BB5,B86A97,CC37AB,D077CE,E001A6,E49D73,F88EA1 o="Edgecore Networks Corporation" +04F993,0C01DB,28BBB2,28D25A,305696,3C566E,408EF6,44E761,4CBB6F,54C078,5810B7,74309D,74C17D,7C8BC1,80795D,88B86F,909DAC,9874DA,98B71E,98DDEA,AC2334,AC2929,AC512C,BC91B5,C464F2,C854A4,D02AAA,D429A7,DC6AEA,DC8D91,E095FF,E8C2DD,EC462C,F86BFA,FC29E3,FC3882 o="Infinix mobility limited" 04F9D9 o="Speaker Electronic(Jiashan) Co.,Ltd" -04FA3F o="Opticore Inc." +04FA3F o="OptiCore Inc." +04FDE8 o="Technoalpin" 04FEA1,40EF4C,7C96D2 o="Fihonest communication co.,Ltd" 04FF51 o="NOVAMEDIA INNOVISION SP. Z O.O." 080001 o="COMPUTERVISION CORPORATION" @@ -11189,7 +11263,7 @@ 080003 o="ADVANCED COMPUTER COMM." 080004 o="CROMEMCO INCORPORATED" 080005 o="SYMBOLICS INC." -080006,208756,20A8B9,D4F527 o="SIEMENS AG" +080006,208756,20A8B9,302F1E,384B24,74FC45,D4F527 o="SIEMENS AG" 080008 o="BOLT BERANEK AND NEWMAN INC." 08000A o="NESTAR SYSTEMS INCORPORATED" 08000B o="UNISYS CORPORATION" @@ -11229,7 +11303,7 @@ 080034 o="FILENET CORPORATION" 080035 o="MICROFIVE CORPORATION" 080036 o="INTERGRAPH CORPORATION" -080037 o="FUJI-XEROX CO. LTD." +080037,1C7D22 o="FUJIFILM Business Innovation Corp." 080038 o="BULL S.A.S." 080039 o="SPIDER SYSTEMS LIMITED" 08003A o="ORCATECH INC." @@ -11240,7 +11314,7 @@ 08003F o="FRED KOSCHARA ENTERPRISES" 080040 o="FERRANTI COMPUTER SYS. LIMITED" 080041 o="RACAL-MILGO INFORMATION SYS.." -080042 o="JAPAN MACNICS CORP." +080042 o="MACNICA, Inc." 080043 o="PIXEL COMPUTER INC." 080044 o="DAVID SYSTEMS INC." 080045 o="CONCURRENT COMPUTER CORP." @@ -11307,9 +11381,10 @@ 08008E o="Tandem Computers" 08008F o="CHIPCOM CORPORATION" 080090 o="SONOMA SYSTEMS" -08010F,40F420,44BA46,643AB1,645D92,78B84B,7CCC1F,8048A5,9C6121,ACE77B,CCA260,D44165,E04FBD,FC372B o="SICHUAN TIANYI COMHEART TELECOMCO.,LTD" +080299 o="HC Corporation" 080371 o="KRG CORPORATE" 0805CD o="DongGuang EnMai Electronic Product Co.Ltd." +08085C o="Luna Products" 0808EA o="AMSC" 0809B6 o="Masimo Corp" 0809C7 o="Zhuhai Unitech Power Technology Co., Ltd." @@ -11319,20 +11394,27 @@ 080D84 o="GECO, Inc." 080EA8 o="Velex s.r.l." 080FFA o="KSP INC." +081031 o="Lithiunal Energy" 08115E o="Bitel Co., Ltd." +081287,185CA1,605556,74051D,840F2A,9CDEF0 o="Jiangxi Risound Electronics Co.,LTD" 081443 o="UNIBRAIN S.A." +081605,141459,601B52,74366D,801605,BC15AC,E48F34 o="Vodafone Italia S.p.A." 081651 o="SHENZHEN SEA STAR TECHNOLOGY CO.,LTD" +0816D5 o="GOERTEK INC." 08184C o="A. S. Thomas, Inc." +081A1E,086F48,106519,149569,14B2E5,2067E0,2CDD5F,308E7A,341736,44E64A,489A5B,509B94,60DEF4,781EB8,7C949F,84B4D2,84EA97,88B5FF,90B57F,98C97C,9C84B6,A0AC78,A47D9F,A4B039,B8CC5F,D0A0BB,D4A3EB,E0CB56,EC41F9,F4A3C2,F8160C o="Shenzhen iComm Semiconductor CO.,LTD" 081DC4 o="Thermo Fisher Scientific Messtechnik GmbH" 081DFB o="Shanghai Mexon Communication Technology Co.,Ltd" 081F3F o="WondaLink Inc." 081FEB o="BinCube" -0823B2,087F98,08B3AF,08FA79,0C20D3,10BC97,10F681,1802AE,18E29F,18E777,1CDA27,20311C,205D47,207454,20F77C,283166,28FAA0,2CFFEE,309435,34E911,386EA2,3C86D1,3CA348,3CA581,3CA616,3CB6B7,449EF9,488764,4CC00A,540E2D,5419C8,5C1CB9,6091F3,642C0F,6C24A6,6CD94C,7047E9,70788B,708F47,70B7AA,70D923,808A8B,886AB1,88F7BF,90ADF7,90C54A,94147A,946372,98C8B8,9CA5C0,9CE82B,9CFBD5,A022DE,B40FB3,B80716,BC2F3D,C46699,C4ABB2,D4BBC8,D8A315,DC1AC5,DC31D1,E013B5,E0DDC0,E45AA2,EC7D11,ECDF3A,F01B6C,F42981,F470AB,F4B7B3,F8E7A0,FC1A11,FCBE7B o="vivo Mobile Communication Co., Ltd." 082522 o="ADVANSEE" 082719 o="APS systems/electronic AG" 0827CE o="NAGANO KEIKI CO., LTD." +0827F0 o="Accton Technology Co., Ltd." +082802,0854BB,107717,1CA770,283545,28B446,3C4E56,60427F,949034,A4E615,A877E5,AC1794,B01C0C,B48107,BC83A7,BCEC23,C4A72B,C4BD8D,C8AAB2,D09168,FCA386 o="SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD" 082AD0 o="SRD Innovations Inc." 082CB0 o="Network Instruments" +082CED o="Technity Solutions Inc." 08351B o="Shenzhen Jialihua Electronic Technology Co., Ltd" 083571 o="CASwell INC." 0835B2 o="CoreEdge Networks Co., Ltd" @@ -11342,27 +11424,32 @@ 083A2F o="Guangzhou Juan Intelligent Tech Joint Stock Co.,Ltd" 083A5C o="Junilab, Inc." 083AB8 o="Shinoda Plasma Co., Ltd." -083AF2,0CDC7E,10521C,18FE34,240AC4,2462AB,246F28,24A160,24B2DE,2C3AE8,2CF432,30AEA4,3C71BF,40F520,483FDA,4C11AE,500291,545AA6,5CCF7F,600194,68C63A,70039F,7C9EBD,7CDFA1,807D3A,840D8E,84CCA8,84F3EB,8CAAB5,8CCE4E,9097D5,94B97E,98F4AB,A020A6,A0764E,A47B9D,A4CF12,A8032A,AC67B2,ACD074,B4E62D,B8F009,BCDDC2,C44F33,C4DD57,C82B96,CC50E3,D8A01D,D8BFC0,D8F15B,DC4F22,E09806,ECFABC,F008D1,F4CFA2,FCF5C4 o="Espressif Inc." 083F3E o="WSH GmbH" 083F76 o="Intellian Technologies, Inc." 084027 o="Gridstore Inc." +084218 o="Asyril SA" 084296 o="Mobile Technology Solutions LLC" 084656 o="VEO-LABS" -0847D0,089C86,4C2113,781735,88B362,98865D,B81904,DCD9AE o="Nokia Shanghai Bell Co., Ltd." +08468B o="Guangdong NanGuang Photo & Video Systems Co., Ltd" 08482C o="Raycore Taiwan Co., LTD." -084ACF,14472D,14C697,18D0C5,18D717,1C0219,1C427D,1C48CE,1C77F6,1CC3EB,1CDDEA,2064CB,20826A,2479F3,2C5BB8,2C5D34,2CA9F0,308454,38295A,388ABE,3CF591,440444,4466FC,44AEAB,4883B4,489507,4C189A,4C1A3D,4C6F9C,5029F5,503CEA,587A6A,58C6F0,5C666C,602101,60D4E9,6C5C14,6CD71F,70DDA8,7836CC,7C6B9C,846FCE,8803E9,885A06,88D50C,8C0EE3,9454CE,94D029,986F60,9C0CDF,9C5F5A,9CF531,A09347,A41232,A43D78,A4C939,A4F05E,A81B5A,B0AA36,B0B5C3,B4A5AC,B4CB57,B83765,B8C74A,B8C9B5,BC3AEA,C02E25,C09F05,C440F6,C4E1A1,C4E39F,C4FE5B,C8F230,CC2D83,D41A3F,D4503F,D467D3,D81EDD,DC5583,DC6DCD,E433AE,E44790,E4C483,E8BBA8,EC01EE,EC51BC,ECF342,F06728,F06D78,F079E8,F4D620,FCA5D0 o="GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD" +084857 o="Suteng Innovation Technology Co., Ltd." +084B44,483133 o="Robert Bosch Elektronika Kft." 084E1C o="H2A Systems, LLC" 085114 o="QINGDAO TOPSCOMM COMMUNICATION CO., LTD" 08512E o="Orion Diagnostica Oy" 085240 o="EbV Elektronikbau- und Vertriebs GmbH" -0854BB,107717,1CA770,283545,60427F,949034,A4E615,B48107,BC83A7,BCEC23,FCA386 o="SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD" +08524E o="Shenzhen Fangcheng Baiyi Technology Co., Ltd." +08569B,444F8E,9877D5,CC4085,D8A011 o="WiZ" +0858A5 o="Beijing Vrv Software Corpoaration Limited." 085AE0 o="Recovision Technology Co., Ltd." 085BDA o="CliniCare LTD" -08674E,B84DEE o="Hisense broadband multimedia technology Co.,Ltd" +0865F0 o="JM Zengge Co., Ltd" +08674E,10394E,20BEB4,B84DEE,FC5703 o="Hisense broadband multimedia technology Co.,Ltd" 0868D0 o="Japan System Design" 0868EA o="EITO ELECTRONICS CO., LTD." -086BD1,8012DF,DC4BDD,E4F3E8 o="Shenzhen SuperElectron Technology Co.,Ltd." 086DF2 o="Shenzhen MIMOWAVE Technology Co.,Ltd" +087158,1C7D51,94FF34 o="HANSHOW TECHNOLOGY CO.,LTD." +08736F,08CE94,0CF3EE,109D9C,183219,2CDCC1,345B98,406918,4438F3,44D5C1,48836F,50F222,58350F,58C356,5C33B1,5C53B4,5CB260,602B58,64F54E,684724,68539D,68D976,785F28,7C1779,806559,84CB85,84E585,888C1B,8C6120,8CCD55,8CD67F,901A4F,906560,90A7BF,940BFA,946C04,987596,A07E16,A47E36,ACFCE3,B0FA91,B848AA,BC6E6D,C049BD,C0D063,C8F225,CC22DF,D035E5,D0A9D3,D8F760,E0189F,E0315D,E46447,EC1BFA,EC3BAF,ECB0D2,F0866F,F46ED6,F4FBF5,F80584,FC963E,FCCF9F o="EM Microelectronic" 0874F6 o="Winterhalter Gastronom GmbH" 087572 o="Obelux Oy" 087618 o="ViE Technologies Sdn. Bhd." @@ -11371,17 +11458,19 @@ 087BAA o="SVYAZKOMPLEKTSERVICE, LLC" 087CBE o="Quintic Corp." 087D21 o="Altasec technology corporation" -087E64,08952A,0C0227,1033BF,1062D0,10C25A,14987D,14B7F8,28BE9B,3817E1,383FB3,3C9A77,3CB74B,441C12,4432C8,480033,484BD4,48F7C0,500959,54A65C,58238C,589630,5C7695,5C7D7D,603D26,641236,6C55E8,70037E,705A9E,7C9A54,802994,80B234,80C6AB,80D04A,8417EF,889E68,88F7C7,8C04FF,905851,946A77,98524A,989D5D,A0FF70,A456CC,B0C287,B42A0E,BC9B68,C42795,CC03FA,CC3540,D05A00,D08A91,D0B2C4,D4B92F,DCEB69,E03717,E0885D,F4C114,FC528D,FC9114,FC94E3 o="Technicolor CH USA Inc." +0881B2 o="Logitech (China) Technology Co., Ltd" 0881BC o="HongKong Ipro Technology Co., Limited" 088466 o="Novartis Pharma AG" -0887C6,44A61E o="INGRAM MICRO SERVICES" +0887C6,10E992,188637,18DF26,38B5C9,44A61E,50392F,683F7D,7CC177,ACCF7B,C87F2B o="INGRAM MICRO SERVICES" 088DC8 o="Ryowa Electronics Co.,Ltd" 088E4F o="SF Software Solutions" 088F2C o="Amber Technology Ltd." 0890BA,4CCE2D o="Danlaw Inc" 0894EF,206A8A,38B725,70E284,98EECB,F0DEF1,F80F41 o="Wistron Infocomm (Zhongshan) Corporation" 089758 o="Shenzhen Strong Rising Electronics Co.,Ltd DongGuan Subsidiary" +0899E8 o="KEMAS GmbH" 089B4B o="iKuai Networks" +089C74,184F43,20B83D,3C49FF,3C5765,4C7B35,4CD2FB,841A24,8C1ECF,A0FDD9,E8122D,F02178 o="UNIONMAN TECHNOLOGY CO.,LTD" 089F97 o="LEROY AUTOMATION" 08A12B o="ShenZhen EZL Technology Co., Ltd" 08A8A1 o="Cyclotronics Power Concepts, Inc" @@ -11393,28 +11482,38 @@ 08B4CF o="Abicom International" 08B738 o="Lite-On Technogy Corp." 08B7EC o="Wireless Seismic" +08B8D0,241651,282947,345CF3,50E452,80F416,8822B2,A0779E,A80B6B,B4565D,D8E72F,F88FC8 o="Chipsea Technologies (Shenzhen) Corp." 08BA22 o="Swaive Corporation" 08BA5F,64AEF1 o="Qingdao Hisense Electronics Co.,Ltd." +08BAB7 o="Ceragon Networks Ltd." +08BB3C,44B462,C8C64A,F8D478 o="Flextronics Tech.(Ind) Pvt Ltd" 08BBCC o="AK-NORD EDV VERTRIEBSGES. mbH" 08BC20 o="Hangzhou Royal Cloud Technology Co., Ltd" 08BE09 o="Astrol Electronic AG" 08BE77 o="Green Electronics" +08C3B3,18ACC2,2CE032,382656,4887B8,4C4929,C07982,D065B3 o="TCL King Electrical Appliances(Huizhou)Co.,Ltd" +08C7F5,60D8A4,9840D4,D8D8E5 o="Vantiva Connected Home - Technologies Telco" +08C8C2,305075,50C275,50C2ED,6CFBED,70BF92,745C4B o="GN Audio A/S" 08CA45 o="Toyou Feiji Electronics Co., Ltd." +08CBE5 o="R3 Solutions GmbH" 08CD9B o="samtec automotive electronics & software GmbH" -08D0B7,1C7B23,24E271,340AFF,40CD7A,587E61,8C9F3B,90CF7D,A8A648,BC6010,C816BD o="Qingdao Hisense Communications Co.,Ltd." +08D0B7,1C7B23,24E271,2CFEE2,340AFF,40CD7A,587E61,8C9F3B,90CF7D,A8A648,BC6010,C816BD,ECE660 o="Qingdao Hisense Communications Co.,Ltd." 08D29A o="Proformatique" 08D34B o="Techman Electronics (Changshu) Co., Ltd." 08D5C0 o="Seers Technology Co., Ltd" 08D833,8C18D9 o="Shenzhen RF Technology Co., Ltd" 08DFCB o="Systrome Networks" +08E342 o="Cear, Inc." +08E4DF,24DF17 o="Shenzhen Sande Dacom Electronics Co., Ltd" 08E5DA o="NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD." 08E672 o="JEBSEE ELECTRONICS CO.,LTD." -08E9F6,08FBEA,2050E7,704A0E,70F754,B82D28,D49CDD o="AMPAK Technology,Inc." -08EA40,0C8C24,10A4BE,146B9C,203233,380146,4401BB,74EE2A,7CA7B0,E0B94D,EC3DFD o="SHENZHEN BILIAN ELECTRONIC CO.,LTD" -08EB29,18BF1C o="Jiangsu Huitong Group Co.,Ltd." +08E6C9 o="Business-intelligence of Oriental Nations Corporation Ltd." +08EA40,0C8C24,0CCF89,10A4BE,145D34,146B9C,203233,2CC3E6,307BC9,347DE4,380146,387ACC,4401BB,54EF33,60FB00,6CD552,74EE2A,782288,7CA7B0,84FC14,88492D,94BA06,9803CF,A09F10,A8B58E,B46DC2,C43CB0,C8FE0F,CC641A,E0B94D,EC3DFD,F0C814,FC23CD o="SHENZHEN BILIAN ELECTRONIC CO.,LTD" +08EB29,18BF1C,40E171,94C7A8,A842A7,C05D39 o="Jiangsu Huitong Group Co.,Ltd." 08EBED o="World Elite Technology Co.,LTD" -08EDED,14A78B,24526A,38AF29,3CEF8C,4C11BF,6C1C71,74C929,9002A9,9C1463,A0BD1D,B44C3B,BC325F,C0395A,E0508B,E4246C o="Zhejiang Dahua Technology Co., Ltd." +08EDED,14A78B,24526A,38AF29,3CE36B,3CEF8C,4C11BF,5CF51A,64FD29,6C1C71,74C929,8CE9B4,9002A9,98F9CC,9C1463,A0BD1D,B44C3B,BC325F,C0395A,C4AAC4,D4430E,E02EFE,E0508B,E4246C,F4B1C2,FC5F49,FCB69D o="Zhejiang Dahua Technology Co., Ltd." 08EFAB o="SAYME WIRELESS SENSOR NETWORK" +08F0B6,0CAEBD,5CC6E9,60F43A,646876,6C1629,B4E7B3,C82478,CC14BC,FCE806 o="Edifier International" 08F1B7 o="Towerstream Corpration" 08F2F4 o="Net One Partners Co.,Ltd." 08F6F8 o="GET Engineering" @@ -11422,34 +11521,43 @@ 08F7E9 o="HRCP Research and Development Partnership" 08FAE0 o="Fohhn Audio AG" 08FC52 o="OpenXS BV" -0C01DB,74C17D,80795D,9874DA,98DDEA,AC2334,AC512C,BC91B5,DC6AEA o="Infinix mobility limited" +0C01C8 o="DENSO Co.,Ltd" 0C0400 o="Jantar d.o.o." 0C0535 o="Juniper Systems" +0C0FD8,389B73,440FB4,7C013E,907ABE o="GSD VIET NAM TECHNOLOGY COMPANY LIMITED" 0C1105 o="AKUVOX (XIAMEN) NETWORKS CO., LTD" 0C130B o="Uniqoteq Ltd." 0C15C5 o="SDTEC Co., Ltd." 0C17F1 o="TELECSYS" 0C191F o="Inform Electronik" 0C1A10 o="Acoustic Stream" +0C1A61 o="Neox FZCO" +0C1BCC,20FF36 o="IFLYTEK CO.,LTD." 0C1C19 o="LONGCONN ELECTRONICS(SHENZHEN) CO.,LTD" 0C1C20 o="Kakao Corp" 0C1DC2 o="SeAH Networks" +0C1EF7 o="Omni-ID" 0C2026 o="noax Technologies AG" 0C2138 o="Hengstler GmbH" 0C2369 o="Honeywell SPS" 0C2576,8C7716,B8DE5E,FC3D93 o="LONGCHEER TELECOMMUNICATION LIMITED" 0C2755 o="Valuable Techologies Limited" +0C2756 o="RONGCHEENG GOER TECHNOLOGY CO.,LTD." +0C298F,4CFCAA,90E643,98ED5C,D44F14 o="Tesla,Inc." 0C2A69 o="electric imp, incorporated" 0C2AE7 o="Beijing General Research Institute of Mining and Metallurgy" 0C2D89 o="QiiQ Communications Inc." +0C331B o="TydenBrooks" 0C3796 o="BIZLINK TECHNOLOGY, INC." 0C383E o="Fanvil Technology Co., Ltd." 0C3956 o="Observator instruments" 0C3C65 o="Dome Imaging Inc" +0C3D5E,3CAB72,50547B,5414A7,546C50,5C5310,701988,C817F5,DC045A,DC3262,E04E7A,E466E5 o="Nanjing Qinheng Microelectronics Co., Ltd." 0C4101 o="Ruichi Auto Technology (Guangzhou) Co., Ltd." 0C469D o="MS Sedco" -0C4933,7C5259 o="Sichuan Jiuzhou Electronic Technology Co., Ltd." -0C4C39,345760,84AA9C,9897D1,A433D7,ACC662,B046FC,B8FFB3,C03DD9,CCD4A1,CCEDDC,D8C678,E04136,E4AB89 o="MitraStar Technology Corp." +0C4933,285B0C,7C5259 o="Sichuan Jiuzhou Electronic Technology Co., Ltd." +0C4C39,2C9682,345760,443B14,4448B9,840BBB,84AA9C,9897D1,A433D7,ACC662,B014DF,B046FC,B8FFB3,C03DD9,CCD4A1,CCEDDC,D8C678,E04136,E4AB89,E8458B o="MitraStar Technology Corp." +0C4EC0 o="Maxlinear Inc" 0C4F5A o="ASA-RT s.r.l." 0C51F7 o="CHAUVIN ARNOUX" 0C5203 o="AGM GROUP LIMITED" @@ -11463,11 +11571,15 @@ 0C5CD8 o="DOLI Elektronik GmbH" 0C5F35 o="Niagara Video Corporation" 0C6111 o="Anda Technologies SAC" -0C62A6,0C9160,103D0A,1C1EE3,20F543,2CD974,34F150,44D878,7CB232,C0D2F3,C4985C,D4ABCD,D81399,DC7223,F84FAD o="Hui Zhou Gaoshengda Technology Co.,LTD" +0C61F9,98A942 o="Tozed Kangwei Tech Co., Ltd" 0C63FC o="Nanjing Signway Technology Co., Ltd" +0C6422 o="Beijing Wiseasy Technology Co.,Ltd." +0C659A,E0EE1B,EC65CC o="Panasonic Automotive Systems Company of America" +0C6825 o="Suzhou HYC technology Co., Ltd." 0C6AE6 o="Stanley Security Solutions" 0C6E4F o="PrimeVOLT Co., Ltd." 0C6F9C o="Shaw Communications Inc." +0C718C,0CBD51,18E3BC,1CCB99,20A90E,240A11,240DC2,289AFA,28BE03,2C532B,3CCB7C,3CEF42,405F7D,44A42D,4C0B3A,4C4E03,5C7776,60512C,6409AC,745C9F,841571,84D15A,889E33,8C99E6,905F2E,942790,9471AC,94D859,987800,9C4FCF,A06B4A,A8A198,B04519,B0E03C,B4695F,B844AE,BC9424,C82AF1,CCFD17,D09DAB,D428D5,D8E56D,DC9BD6,E0E62E,E42D02,E4E130,E88F6F,F03404,F05136,F0D08C o="TCT mobile ltd" 0C73BE o="Dongguan Haimai Electronie Technology Co.,Ltd" 0C7512 o="Shenzhen Kunlun TongTai Technology Co.,Ltd." 0C7523 o="BEIJING GEHUA CATV NETWORK CO.,LTD" @@ -11476,76 +11588,99 @@ 0C817D o="EEP Elektro-Elektronik Pranjic GmbH" 0C8230 o="SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD" 0C826A o="Wuhan Huagong Genuine Optics Technology Co., Ltd" +0C82D5 o="Maxio Technology Hangzhou Co., Ltd." 0C8411 o="A.O. Smith Water Products" 0C8484 o="Zenovia Electronics Inc." +0C86C7 o="Jabil Circuit (Guangzhou) Limited" +0C8832,2CC1F4,609849,846EBC,BC515F o="Nokia Solutions and Networks India Private Limited" 0C8A87 o="AgLogica Holdings, Inc" -0C8BD3,18AC9E,40D25F,44DC4E,48DD9D,58C583,741C27,787D48,7CE97C,8050F6,881C95,88D5A8,8CD48E,988ED4,9CAF6F,A4F465,ACFE05,B8C8EB,C81739,D87E76,DC543D,F0B968,F82F6A,FC3964 o="ITEL MOBILE LIMITED" +0C8C69 o="Shenzhen elink smart Co., ltd" 0C8C8F o="Kamo Technology Limited" 0C8CDC o="Suunto Oy" +0C8D7A o="RADiflow" 0C8D98 o="TOP EIGHT IND CORP" +0C9043,0CE67C,1082D7,10F605,1CD107,20CD6E,4044FD,448C00,480286,489BE0,549A8F,5CA06C,60C7BE,702804,7CB073,7CFAD6,80B82A,80E769,84E9C1,88AE35,8C938B,90DF7D,948AC6,98ACEF,A4CCB9,A4CF03,A8EF5F,AC3971,ACC9FF,B06E72,B0A187,B43161,B88F27,BC2DEF,C04327,C4DF39,C816DA,C89BD7,C8A4CD,D05AFD,D097FE,D47A97,D4D7CF,E04C12,E46A35,E48C73,E4B503,F0625A,F4D7E4,F85E0B,F8AD24,FC2A46,FCD202,FCD96B o="Realme Chongqing Mobile Telecommunications Corp.,Ltd." 0C924E o="Rice Lake Weighing Systems" 0C9301 o="PT. Prasimax Inovasi Teknologi" 0C93FB o="BNS Solutions" -0C9541,50FB19,5CCAD3,C8B21E o="CHIPSEA TECHNOLOGIES (SHENZHEN) CORP." +0C9505,441146,645299,CC6A10 o="The Chamberlain Group, Inc" +0C9515 o="Palltronics, Inc." +0C9541,10961A,50FB19,5CCAD3,C8B21E,D03E7D o="CHIPSEA TECHNOLOGIES (SHENZHEN) CORP." 0C96E6,283A4D,485F99 o="Cloud Network Technology (Samoa) Limited" -0C9A42,18BB26,34C3D2,381DD9,4846C1,54C9DF,54E4BD,586356,7C25DA,805E4F,88835D,A02C36,A0F459,AC35EE,AC5D5C,AC64CF,C43A35,D4D2D6,E0B2F1 o="FN-LINK TECHNOLOGY LIMITED" +0C9A42,18BB26,2CD26B,34C3D2,381DD9,4846C1,48D890,54C9DF,54E4BD,586356,7C25DA,805E4F,88835D,A02C36,A0F459,AC35EE,AC5D5C,AC64CF,C43A35,D4D2D6,E0B2F1 o="FN-LINK TECHNOLOGY LIMITED" 0C9B13 o="Shanghai Magic Mobile Telecommunication Co.Ltd." 0C9D56 o="Consort Controls Ltd" 0C9E91 o="Sankosha Corporation" +0C9F71 o="Dolphin Electronics (DongGuan) Co., Ltd." 0CA06C o="Industrial Cyber Sensing Inc." -0CA138 o="Blinq Wireless Inc." +0CA138 o="BLiNQ Networks Inc." 0CA2F4 o="Chameleon Technology (UK) Limited" 0CA42A o="OB Telecom Electronic Technology Co., Ltd" +0CA64C,20BBBC,34C6DD,54D60D,588FCF,64244D,64F2FB,78A6A0,78C1AE,94EC13,AC1C26,EC97E0,F47018 o="Hangzhou Ezviz Software Co.,Ltd." +0CAAEE o="Ansjer Electronics Co., Ltd." 0CAC05 o="Unitend Technologies Inc." 0CAF5A o="GENUS POWER INFRASTRUCTURES LIMITED" +0CB088 o="AITelecom" 0CB34F o="Shenzhen Xiaoqi Intelligent Technology Co., Ltd." 0CB459 o="Marketech International Corp." 0CB4A4 o="Xintai Automobile Intelligent Network Technology" 0CB4EF o="Digience Co.,Ltd." 0CB5DE,18422F,4CA74B,54055F,68597F,84A783,885C47,9067F3,94AE61,D4224E o="Alcatel Lucent" 0CB912 o="JM-DATA GmbH" -0CB937,647C34,6C38A1,A4CFD2,D8787F o="Ubee Interactive Co., Limited" -0CBD51,18E3BC,1CCB99,20A90E,240A11,240DC2,289AFA,28BE03,3CCB7C,44A42D,4C0B3A,4C4E03,5C7776,60512C,6409AC,745C9F,84D15A,889E33,8C99E6,905F2E,942790,9471AC,94D859,9C4FCF,A8A198,B04519,B0E03C,CCFD17,D09DAB,D428D5,D8E56D,E0E62E,E42D02,E4E130,F03404,F05136 o="TCT mobile ltd" +0CB937,2C8AC7,5449FC,5876B3,5C53C3,647C34,6C38A1,944E5B,A0ED6D,A4CFD2,D8787F,F0D506 o="Ubee Interactive Co., Limited" 0CBF3F o="Shenzhen Lencotion Technology Co.,Ltd" 0CBF74 o="Morse Micro" 0CC0C0 o="MAGNETI MARELLI SISTEMAS ELECTRONICOS MEXICO" 0CC3A7 o="Meritec" +0CC3B8 o="Shenzhen Jiahua Zhongli Technology Co., LTD" 0CC47E o="EUCAST Co., Ltd." 0CC655 o="Wuxi YSTen Technology Co.,Ltd." 0CC6AC o="DAGS" 0CC731 o="Currant, Inc." 0CC81F o="Summer Infant, Inc." -0CC844,4CB82C o="Cambridge Mobile Telematics, Inc." +0CC844,4CB82C,784946,BC86A5 o="Cambridge Mobile Telematics, Inc." 0CC9C6 o="Samwin Hong Kong Limited" +0CCAFB,68070A o="TPVision Europe B.V" +0CCB0C o="iSYS RTS GmbH" 0CCB8D o="ASCO Numatics GmbH" 0CCC26 o="Airenetworks" +0CCDB4,0CF2F5,102D41,10381F,1492F9,18EF3A,3CC683,4024B2,48BC0E,4C24CE,4C312D,50E478,54F15F,601D9D,647B40,70C912,78F235,80D10A,9C1221,A42985,B461E9,B4C9B9,C0A4B9,C0E7BF,DC9758,EC3111,FC702E o="Sichuan AI-Link Technology Co., Ltd." 0CCDD3 o="EASTRIVER TECHNOLOGY CO., LTD." 0CCDFB o="EDIC Systems Inc." 0CCEF6 o="Guizhou Fortuneship Technology Co., Ltd" 0CCFD1 o="SPRINGWAVE Co., Ltd" 0CD2B5 o="Binatone Telecommunication Pvt. Ltd" +0CD3A1 o="Monthly Kitchen" 0CD696 o="Amimon Ltd" 0CD7C2 o="Axium Technologies, Inc." +0CD923 o="GOCLOUD Networks(GAOKE Networks)" 0CDCCC o="Inala Technologies" 0CE041 o="iDruide" +0CE0FC,243408,4445BA,5C1783,7C8D9C,902D77,94EF97,A01AE3,A47D78,A827C8,B46AD4,C0C989,D4DC85 o="Edgecore Americas Networking Corporation" +0CE159 o="Shenzhen iStartek Technology Co., Ltd." +0CE5A3 o="SharkNinja" 0CE5D3 o="DH electronics GmbH" -0CE709 o="Fox Crypto B.V." +0CE709 o="Sentyron B.V" 0CE82F o="Bonfiglioli Vectron GmbH" 0CE936 o="ELIMOS srl" 0CE99A o="ATLS ALTEC" +0CEB25,3C0868 o="Power Plus Communications AG" +0CEE20 o="FBC" 0CEF7C o="AnaCom Inc" 0CF019 o="Malgn Technology Co., Ltd." 0CF0B4 o="Globalsat International Technology Ltd" 0CF361 o="Java Information" -0CF3EE,64F54E,8CD67F,901A4F,B848AA,E0189F o="EM Microelectronic" 0CF405 o="Beijing Signalway Technologies Co.,Ltd" 0CF475 o="Zliide Technologies ApS" +0CFA22 o="FLIPPER DEVICES INC" 0CFC83 o="Airoha Technology Corp.," 0CFD37 o="SUSE Linux GmbH" 1000FD o="LaonPeople" 1001CA o="Ashley Butterworth" -10090C o="Janome Sewing Machine Co., Ltd." +1004C1 o="JD Cloud Computing Co., Ltd." +10090C o="JANOME Corporation" 100C24 o="pomdevices, LLC" +100C29 o="Shenzhen NORCO lntelligent Technology Co.,Ltd" 100D2F o="Online Security Pty. Ltd." 100D32 o="Embedian, Inc." 100E2B,38BF33 o="NEC CASIO Mobile Communications" @@ -11555,24 +11690,37 @@ 101218 o="Korins Inc." 101248 o="ITG, Inc." 101250,14E7C8,18C19D,1C9D3E,20163D,2405F5,2CB115,40B30E,40F04E,509744,58ECED,649829,689361,701BFB,782A79,7C6AF3,803A0A,80D160,847F3D,8817A3,907910,9C497F,9CF029,A42618,A4B52E,A4F3E7,B8DB1C,C84F0E,CC51B4,CC9916,D055B2,D8452B,D8D6F3,DC3757,DCCC8D,E4CC9D,E80945,E8DE8E,F89910,FCEA50 o="Integrated Device Technology (Malaysia) Sdn. Bhd." -1012FB,1868CB,2857BE,4419B6,4447CC,4CBD8F,54C415,5803FB,5850ED,64DB8B,686DBC,849A40,94E1AC,988B0A,98DF82,A41437,ACCB51,B4A382,BCAD28,BCBAC2,C0517E,C056E3,C42F90,F84DFC o="Hangzhou Hikvision Digital Technology Co.,Ltd." -101331,20B001,30918F,589835,9C9726,A491B1,A4B1E9,C4EA1D,D4351D,E0B9E5 o="Technicolor" +101331,20B001,30918F,589835,9C9726,A0B53C,A491B1,A4B1E9,C4EA1D,D4351D,D4925E,E0B9E5 o="Vantiva Technologies Belgium" 1013EE o="Justec International Technology INC." +1015C1 o="Zhanzuo (Beijing) Technology Co., Ltd." +101849,1C965A,24A6FA,2C4D79,401B5F,48188D,4CB99B,841766,88034C,90895F,90B685,A0AB51,A0FA9C,A41566,A45385,A830AD,ACFD93,D0BCC1,DC0C2D,DCAF68 o="WEIFANG GOERTEK ELECTRONICS CO.,LTD" 10189E o="Elmo Motion Control" +101A92 o="AKEBONO BRAKE INDUSTRY CO.,LTD." 101D51 o="8Mesh Networks Limited" +101EDA,38EFE3,44D47F,B40016 o="INGENICO TERMINALS SAS" 102279 o="ZeroDesktop, Inc." +1025CE o="ELKA - Torantriebe GmbH u. Co. Betriebs KG" 102779 o="Sadel S.p.A." 1027BE o="TVIP" 102831 o="Morion Inc." +102834 o="SALZ Automation GmbH" +102874,189067,20185B,40C1F6,4C3C8F,E826CF o="Shenzhen Jingxun Technology Co., Ltd." 102C83 o="XIMEA" +102CEF o="EMU Electronic AG" +102D31 o="Shenzhen Americas Trading Company LLC" 102D96 o="Looxcie Inc." +102F6E,186F2D,202027,4CEF56,600A8C,703A73,941457,9C3A9A,A80CCA,ACFC82,C8A23B,D468BA o="Shenzhen Sundray Technologies company Limited" 102FA3 o="Shenzhen Uvision-tech Technology Co.Ltd" +102FF8 o="Vicoretek (Nanjing) Co.,Ltd." 103034 o="Cara Systems" 103378 o="FLECTRON Co., LTD" 10341B o="Spacelink" +103597,6CD8FB,A05866 o="Qorvo Utrecht B.V." 10364A o="Boston Dynamics" -103711 o="Simlink AS" +1036AA,30FC8C,3C2D9E,701301,C44FD5,C4509C,D0789A o="Vantiva - Connected Home" +103711 o="NORBIT ITS" 103DEA o="HFC Technology (Beijing) Ltd. Co." +104121,107223,44896D,542F8A,68D40C,78E9CF,94EAEA,B81E61,F45420 o="TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO" 104369 o="Soundmax Electronic Limited" 10445A o="Shaanxi Hitech Electronic Co., LTD" 1045BE o="Norphonic AS" @@ -11580,79 +11728,113 @@ 1046B4 o="FormericaOE" 1048B1 o="Beijing Duokan Technology Limited" 104963 o="HARTING K.K." +104D15 o="Viaanix Inc" 104D77 o="Innovative Computer Engineering" 104E07 o="Shanghai Genvision Industries Co.,Ltd" +104E20 o="HSE SMART" +105403 o="INTARSO GmbH" 105917 o="Tonal" -105932,84EAED,8C4962,ACAE19,B0EE7B,C83A6B,D83134 o="Roku, Inc" +105932,20EFBD,345E08,5006F5,544EF0,6092C8,7C67AB,84EAED,8C4962,9CF1D4,A8B57C,ACAE19,B0EE7B,BCD7D4,C83A6B,D4BEDC,D4E22F,D83134 o="Roku, Inc" 105AF7,8C59C3 o="ADB Italia" 105BAD,A4FC77 o="Mega Well Limited" 105C3B o="Perma-Pipe, Inc." 105CBF o="DuroByte Inc" -105FD4 o="Tendyron Corporation" +105F81 o="INTENTSECURE Inc.," +105FD4,10D680,389592,8813C2 o="Tendyron Corporation" 1062C9 o="Adatis GmbH & Co. KG" 1064E2 o="ADFweb.com s.r.l." 1065A3 o="Panamax LLC" 1065CF o="IQSIM" +106650,70F74F o="Robert Bosch JuP1" +10666A o="Zabbly" 106FEF o="Ad-Sol Nissin Corp" 1071F9 o="Cloud Telecomputers, LLC" -107223,542F8A,94EAEA,F45420 o="TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO" -10746F o="MOTOROLA SOLUTIONS MALAYSIA SDN. BHD." +1073C6 o="August Internet Limited" +1073EB o="Infiniti Electro-Optics" +10746F,B8E28C o="MOTOROLA SOLUTIONS MALAYSIA SDN. BHD." +107636,148554,2051F5,2C7360,44F53E,485C2C,487E48,4C0FC7,547787,603573,64BB1E,68B9C2,6CE8C6,8842D0,9CB1DC,A87116,ACF42C,B02EBA,B447F5,B859CE,B8C6AA,BCC7DA,F09602 o="Earda Technologies co Ltd" 10768A o="EoCell" 107873 o="Shenzhen Jinkeyi Communication Co., Ltd." 1078CE o="Hanvit SI, Inc." 107A86 o="U&U ENGINEERING INC." +107B93,6C2D24,788B2A o="Zhen Shi Information Technology (Shanghai) Co., Ltd." 107BA4 o="Olive & Dove Co.,Ltd." 1081B4 o="Hunan Greatwall Galaxy Science and Technology Co.,Ltd." 108286 o="Luxshare Precision Industry Co.,Ltd" +1083B4 o="Sidora Srl" 1083D2 o="Microseven Systems, LLC" 10880F o="Daruma Telecomunicações e Informática S.A." 108A1B o="RAONIX Inc." 108B6A,F0A968 o="Antailiye Technology Co.,Ltd" 108EBA o="Molekule" +10907D,1889A0,2876CD,40BC68,58FCE3,64CE0C,8431A8,906FA7,983F66,9CDBCB,B45B86,D47AEC o="Funshion Online Technologies Co.,Ltd" +1090FC o="Shenzhen DOOGEE Hengtong Technology CO.,LTD" +109166 o="Shenzhen Yinwang Intelligent Technologies Co.,Ltd." +109497 o="Logitech Hong Kong" 10954B o="Megabyte Ltd." +10961D,28B20B o="NXP USA, Inc" +10985F,540929,900A62,987ECA,A463A1 o="Inventus Power Eletronica do Brasil LTDA" 109AB9 o="Tosibox Oy" 109C70 o="Prusa Research s.r.o." -109E3A,18BC5A,28FA7A,38D2CA,486E70,78DA07,D44BB6,D82FE6,F8A763 o="Zhejiang Tmall Technology Co., Ltd." +109E3A,18146C,18BC5A,242CFE,28FA7A,38D2CA,3C5D29,486E70,503DEB,64F0AD,78DA07,7C35F8,8444AF,B4A678,B89165,D44BB6,D82FE6,F8A763,FC4265 o="Zhejiang Tmall Technology Co., Ltd." +109F4F,34CA81,702AD7,DC6555 o="New H3C Intelligence Terminal Co., Ltd." 10A13B o="FUJIKURA RUBBER LTD." +10A145 o="nexzo india pvt ltd" 10A24E o="GOLD3LINK ELECTRONICS CO., LTD" -10A4B9,CCE0DA,D46075 o="Baidu Online Network Technology (Beijing) Co., Ltd" +10A450 o="Kwikset" +10A4B9,48F3F3,B85CEE,CCE0DA,D46075 o="Baidu Online Network Technology (Beijing) Co., Ltd" +10A562,2C784C,703E97,E09F2A o="Iton Technology Corp." 10A659 o="Mobile Create Co.,Ltd." 10A743 o="SK Mtek Limited" 10A932 o="Beijing Cyber Cloud Technology Co. ,Ltd." +10AEA5 o="Duskrise inc." 10AF78 o="Shenzhen ATUE Technology Co., Ltd" +10B232,10C753,303235,381B9E,386407,50BA02,7CB37B,80CBBC,A8301C,B8D82D,BC5C17,C0E5DA,D40ADC,D4F921,E03ECB,E0D8C4,E4E33D,E85177,F0ED51 o="Qingdao Intelligent&Precise Electronics Co.,Ltd." 10B26B o="base Co.,Ltd." 10B36F o="Bowei Technology Company Limited" +10B7A8 o="CableFree Networks Limited" 10B7F6 o="Plastoform Industries Ltd." 10B9F7 o="Niko-Servodan" 10B9FE o="Lika srl" +10BA1A,9C00D3 o="SHENZHEN IK WORLD Technology Co., Ltd" 10BAA5 o="GANA I&C CO., LTD" +10BBF3,14F5F9,20579E,2418C6,309587,54F29F,5CC563,684E05,8812AC,B84D43,D48A3B,F0B040,F43C3B o="HUNAN FN-LINK TECHNOLOGY LIMITED" +10BD43,440CEE o="Robert Bosch Elektronikai Kft." 10BD55 o="Q-Lab Corporation" +10BE99 o="Netberg" 10C07C o="Blu-ray Disc Association" +10C0D5 o="HOLOEYE Photonics AG" 10C22F o="China Entropy Co., Ltd." 10C2BA o="UTT Co., Ltd." +10C34D o="SHENZHEN WATER WORLD CO.,LTD." 10C586 o="BIO SOUND LAB CO., LTD." 10C595,809621,A41194,A48CDB o="Lenovo" 10C60C o="Domino UK Ltd" 10C65E o="Adapt-IP" 10C67E o="SHENZHEN JUCHIN TECHNOLOGY CO., LTD" 10C73F o="Midas Klark Teknik Ltd" -10C753,7CB37B,A8301C o="Qingdao Intelligent&Precise Electronics Co.,Ltd." +10C9CA o="Ace Technology Corp." 10CA81 o="PRECIA" +10CB33,10EDC8,144FF0,1C0460,34E1D7,38B9AF,44D465,940E2A o="NXP Semiconductors Taiwan Ltd." 10CC1B o="Liverock technologies,INC" 10CCDB o="AXIMUM PRODUITS ELECTRONIQUES" 10CD6E o="FISYS" 10CDB6 o="Essential Products, Inc." 10CE45 o="Miromico AG" 10D1DC o="INSTAR Deutschland GmbH" +10D657,4CE705,8CF319,E0DCA0 o="Siemens Industrial Automation Products Ltd., Chengdu" 10DDF4 o="Maxway Electronics CO.,LTD" 10DEE4 o="automationNEXT GmbH" 10DF8B o="Shenzhen CareDear Communication Technology Co.,Ltd" 10E2D5 o="Qi Hardware Inc." 10E3C7 o="Seohwa Telecom" 10E4AF o="APR, LLC" +10E66B o="Kaon Broadband CO., LTD." 10E68F o="KWANGSUNG ELECTRONICS KOREA CO.,LTD." 10E6AE o="Source Technologies, LLC" -10E77A o="STMicrolectronics International NV" +10E77A,18E8EC,500F59,8082F5 o="STMicrolectronics International NV" +10E83A o="FIBERX DISTRIBUIDORA DE PRODUTOS DE TELECOMUNICACAO LTDA" +10E840 o="ZOWEE TECHNOLOGY(HEYUAN) CO., LTD." 10E8EE o="PhaseSpace" 10F163 o="TNK CO.,LTD" 10F3DB o="Gridco Systems, Inc." @@ -11662,17 +11844,24 @@ 10FBF0 o="KangSheng LTD." 10FC54 o="Shany Electronic Co., Ltd." 10FCB6 o="mirusystems CO.,LTD" +140020 o="LongSung Technology (Shanghai) Co.,Ltd." +1400E9 o="Mitel Networks Corporation" +14019C o="Ubyon Inc." 140467 o="SNK Technologies Co.,Ltd." +14064C o="Vogl Electronic GmbH" +140708 o="CP PLUS GMBH & CO. KG" 1407E0 o="Abrantix AG" 140C5B o="PLNetworks" 141330 o="Anakreon UK LLP" 141357 o="ATP Electronics, Inc." -141459,74366D,801605,BC15AC,E48F34 o="Vodafone Italia S.p.A." 1414E6 o="Ningbo Sanhe Digital Co.,Ltd" 14157C o="TOKYO COSMOS ELECTRIC CO.,LTD." 14169E,2C5731,541473,A444D1,B02A1F o="Wingtech Group (HongKong)Limited" +141844 o="Xenon Smart Teknoloji Ltd." +141973 o="Beijing Yunyi Times Technology Co.,Ltd" 141A51 o="Treetech Sistemas Digitais" -141B30 o="Shenzhen Yipingfang Network Technology Co., Ltd." +141AAA o="Metal Work SpA" +141B30,482218,50A015,9C6BF0,B0AFF7 o="Shenzhen Yipingfang Network Technology Co., Ltd." 141BBD o="Volex Inc." 141BF0 o="Intellimedia Systems Ltd" 1423D7 o="EUTRONIX CO., LTD." @@ -11682,19 +11871,25 @@ 142A14 o="ShenZhen Selenview Digital Technology Co.,Ltd" 142BD2 o="Armtel Ltd." 142BD6 o="Guangdong Appscomm Co.,Ltd" -142C78,68D6ED o="GooWi Wireless Technology Co., Limited" +142C78,38D518,68D6ED,B484D5 o="GooWi Wireless Technology Co., Limited" 142D8B o="Incipio Technologies, Inc" 142DF5 o="Amphitech" 142FFD o="LT SECURITY INC" 14307A o="Avermetrics" 143365 o="TEM Mobile Limited" +1434F6 o="LV SOLUTION SDN. BHD." 14358B o="Mediabridge Products, LLC." 1435B3 o="Future Designs, Inc." 143719 o="PT Prakarsa Visi Valutama" 14373B o="PROCOM Systems" +14375E o="Symbotic LLC" +14392F,344E2F,885046,A4978A o="LEAR" +143A9A,444648,50EE32,AC361B,D42F4B,E8473A o="Hon Hai Precision Industry Co.,LTD" 143AEA o="Dynapower Company LLC" +143B42 o="Realfit(Shenzhen) Intelligent Technology Co., Ltd" 143DF2 o="Beijing Shidai Hongyuan Network Communication Co.,Ltd" 143F27 o="Noccela Oy" +143FA6,38184C,94DB56 o="Sony Home Entertainment&Sound Products Inc" 143FC3,D46A91 o="SnapAV" 144146 o="Honeywell (China) Co., LTD" 1441E2 o="Monaco Enterprises, Inc." @@ -11705,22 +11900,31 @@ 14488B o="Shenzhen Doov Technology Co.,Ltd" 144978 o="Digital Control Incorporated" 144C1A o="Max Communication GmbH" -144E34,204441,8C088B o="Remote Solution" +144E34,204441,8C088B,94BE50 o="Remote Solution" 145290 o="KNS Group LLC (YADRO Company)" 145412 o="Entis Co., Ltd." 145645 o="Savitech Corp." 1459C3 o="Creative Chips GmbH" 145A83 o="Logi-D inc" +145BB9,34EE2A,5466F9,D0989C o="ConMet" 145BE1 o="nyantec GmbH" 145E45 o="Bamboo Systems Group" 146308,4C0DEE o="JABIL CIRCUIT (SHANGHAI) LTD." +1466B7 o="Advanced Design Technology Pty Ltd" 146A0B o="Cypress Electronics Limited" 146B72 o="Shenzhen Fortune Ship Technology Co., Ltd." +146C27,18B96E,1C919D,201B88,24B231,7CC95E,90EF4A,9C19C2,9C4952,9CCD42,B0BD1B,E00871,E06781 o="Dongguan Liesheng Electronic Co., Ltd." 147373 o="TUBITAK UEKAE" +1475E5 o="ELMAX Srl" 14780B o="Varex Imaging Deutschland AG" +147D05,646772,74375F,94F7BE,A401DE,BC96E5 o="SERCOMM PHILIPPINES INC" 147DB3 o="JOA TELECOM.CO.,LTD" -14825B,304487,C8AFE3,F4951B o="Hefei Radio Communication Technology Co., Ltd" +147EA1 o="Britania Eletrônicos S.A." +148121 o="TOP WING Corporation" +14825B,304487,589BF7,C8AFE3,F4951B o="Hefei Radio Communication Technology Co., Ltd" 148430,4C38D5 o="MITAC COMPUTING TECHNOLOGY CORPORATION" +148501 o="Rivos Inc." +148919 o="2bps" 14893E o="VIXTEL TECHNOLOGIES LIMTED" 148A70 o="ADS GmbH" 149090 o="KongTop industrial(shen zhen)CO.,LTD" @@ -11728,29 +11932,48 @@ 14942F o="USYS CO.,LTD." 149448 o="BLU CASTLE S.A." 149B2F o="JiangSu ZhongXie Intelligent Technology co., LTD" -149FB6,7CFD82,B86392,ECA9FA o="GUANGDONG GENIUS TECHNOLOGY CO., LTD." +149BD7 o="MULI MUWAI FURNITURE QIDONG CO., LTD" +149E5D o="JSC %IB Reform%" 14A1BF o="ASSA ABLOY Korea Co., Ltd Unilock" +14A417,843E79,A03C31,B4EE25,DC4BFE o="Shenzhen Belon Technology CO.,LTD" 14A62C o="S.M. Dezac S.A." 14A72B o="currentoptronics Pvt.Ltd" 14A86B o="ShenZhen Telacom Science&Technology Co., Ltd" 14A9E3 o="MST CORPORATION" -14AB56 o="WUXI FUNIDE DIGITAL CO.,LTD" +14AB56,E85540 o="WUXI FUNIDE DIGITAL CO.,LTD" 14ADCA,1C784E,442295,7881CE,FC8E5B,FCF29F o="China Mobile Iot Limited company" +14AE68 o="KLG Smartec" +14AEE0 o="ETHERNEXION NETWORKS PTE. LTD." 14B126,FCE66A o="Industrial Software Co" 14B1C8 o="InfiniWing, Inc." 14B370 o="Gigaset Digital Technology (Shenzhen) Co., Ltd." 14B73D o="ARCHEAN Technologies" +14BAAF o="BKS GmbH" +14BEFC,4C4D66,70FD88,8C1ECB,902759,90C35F,F02B18 o="Nanjing Jiahao Technology Co., Ltd." 14C089 o="DUNE HD LTD" +14C0A1 o="UCloud Technology Co., Ltd." 14C1FF o="ShenZhen QianHai Comlan communication Co.,LTD" 14C21D o="Sabtech Industries" -14C3C2 o="K.A. Schmersal GmbH & Co. KG" +14C24D,A8E81E,D40145,DC8DB7 o="ATW TECHNOLOGY, INC." +14C35E,249493 o="FibRSol Global Network Limited" 14CAA0 o="Hu&Co" +14CB49 o="Habolink Technology Co.,LTD" 14CCB3 o="AO %GK NATEKS%" -14CF8D,749EA5,98EF9B,98F5A9 o="OHSUNG" +14CF8D,1C3929,309E1D,343E25,68966A,749EA5,98EF9B,98F5A9,B814DB,C8DD6A,D01B1F,D4FF26,E8DF24,F4832C,F4AAD0 o="OHSUNG" +14D5C6 o="slash dev slash agents, inc" +14D67C o="Uncord Technologies Private Limited" +14D725,28D41E,E84074,ECA7AD o="Barrot Technology Co.,Ltd." 14D76E o="CONCH ELECTRONIC Co.,Ltd" 14DB85 o="S NET MEDIA" +14DC51 o="Xiamen Cheerzing IOT Technology Co.,Ltd." +14DCE2 o="THALES AVS France" +14DD02 o="Liangang Optoelectronic Technology CO., Ltd." +14DD48 o="Shield AI" 14DDE5 o="MPMKVVCL" +14E289 o="Abietec Inc." 14E4EC o="mLogic LLC" +14EAA1 o="Micronet union Technology (chengdu) co., Ltd" +14EB03,903196 o="SHENZHEN IP-COM NETWORKS CO.,LTD." 14EB33 o="BSMediasoft Co., Ltd." 14EDA5 o="Wächter GmbH Sicherheitssysteme" 14EDE4 o="Kaiam Corporation" @@ -11758,6 +11981,7 @@ 14EFCF o="SCHREDER" 14F0C5 o="Xtremio Ltd." 14F28E o="ShenYang ZhongKe-Allwin Technology Co.LTD" +14F592 o="Shenzhen SDG DONZHI Technology Co., Ltd" 14FEAF o="SAGITTAR LIMITED" 1800DB o="Fitbit Inc." 18017D o="Harbin Arteor technology co., LTD" @@ -11766,27 +11990,37 @@ 180675 o="Dilax Intelcom GmbH" 1806F5 o="RAD Data Communications, Ltd." 1806FF o="Acer Computer(Shanghai) Limited." +180712 o="Shenzhen Dazoo Technologies CO.,Ltd" 180B52 o="Nanotron Technologies GmbH" 180C14 o="iSonea Limited" 180C77 o="Westinghouse Electric Company, LLC" 18104E o="CEDINT-UPM" +181171 o="Guangzhou Doctorpai Education & Technology Co.,Ltd" 181212 o="Cepton Technologies" 181420 o="TEB SAS" +181628,6CB34D o="SharkNinja Operating LLC" +1816E8,B03829 o="Siliconware Precision Industries Co., Ltd." 181714 o="DAEWOOIS" 181725 o="Cameo Communications, Inc." +18188B,B8D0F0,E4D3AA o="FCNT LLC" 18193F o="Tamtron Oy" 181E95 o="AuVerte" 182012 o="Aztech Associates Inc." 18204C o="Kummler+Matter AG" 1820A6 o="Sage Co., Ltd." +182439 o="YIPPEE ELECTRONICS CP.,LIMITED" 182A44 o="HIROSE ELECTRONIC SYSTEM" 182B05 o="8D Technologies" 182C91 o="Concept Development, Inc." +182CA9,54AED0 o="DASAN Networks, Inc." 182CB4 o="Nectarsoft Co., Ltd." 182D98 o="Jinwoo Industrial system" +182DF7 o="JY COMPANY" 183009 o="Woojin Industrial Systems Co., Ltd." -18300C,A88200 o="Hisense Electric Co.,Ltd" +18300C,5C3400,A88200 o="Hisense Electric Co.,Ltd" +18314F o="AIDIN ROBOTICS" 1832A2 o="LAON TECHNOLOGY CO., LTD." +183672 o="Shaoxing ShunChuang Technology CO.,LTD" 1836FC o="Elecsys International Corporation" 183825 o="Wuhan Lingjiu High-tech Co.,Ltd." 183864 o="CAP-TECH INTERNATIONAL CO., LTD." @@ -11796,74 +12030,97 @@ 18399C o="Skorpios Technologies" 183A48 o="VostroNet" 183BD2,98BB1E,BC2392 o="BYD Precision Manufacture Company Ltd." +183C98 o="Shenzhen Hengyi Technology Co., LTD" 1840A4 o="Shenzhen Trylong Smart Science and Technology Co., Ltd." -1841FE o="Digital 14" +1841FE o="KATIM L.L.C" +1842D4 o="Wuhan Hosan Telecommunication Technology Co.,Ltd" 184462 o="Riava Networks, Inc." -184593,2CDD95,38E3C5,4C8120,501B32,64D954,6CC63B,743C18,900A1A,A09B17,B4265D,D00ED9,E8D0B9,F06865,F49EEF,F844E3,F86CE1,FC10C6 o="Taicang T&W Electronics" -184644,D4B8FF o="Home Control Singapore Pte Ltd" -18473D,1CBFC0,28CDC4,402343,405BD8,4CEBBD,5C3A45,5CBAEF,646C80,6CADAD,7412B3,8CC84B,A497B1,ACD564,B068E6,C0B5D7,D81265,E86F38,EC5C68 o="CHONGQING FUGUI ELECTRONICS CO.,LTD." +1844CF o="B+L Industrial Measurements GmbH" +184644,54A9C8,6074B1,68F44B,98063A,D4B8FF o="Home Control Singapore Pte Ltd" +18473D,1CBFC0,28CDC4,402343,405BD8,4CD577,4CEBBD,5C3A45,5CBAEF,5CFB3A,646C80,6CADAD,7412B3,8CC84B,A497B1,A8934A,ACD564,B068E6,B4B5B6,C0B5D7,C89402,D41B81,D81265,E86F38,EC5C68 o="CHONGQING FUGUI ELECTRONICS CO.,LTD." 1848D8 o="Fastback Networks" 184BDF o="Caavo Inc" +184CAE o="AUMOVIO France S.A.S." 184E94 o="MESSOA TECHNOLOGIES INC." +184F5D o="JRC Mobility Inc." 18502A o="SOARNEX" -185207,187532,248BE0,2C6373,54E061,5C4A1F,5CA176,68262A,908674,9C32A9,9C9C40,B8224F,E0C63C,ECF8EB,F092B4 o="SICHUAN TIANYI COMHEART TELECOMCO., LTD" +185073 o="Tianjin HuaLai Technology CO., Ltd." +18523D o="Xiamen Jiwu Technology CO.,Ltd" 185869 o="Sailer Electronic Co., Ltd" 185AE8 o="Zenotech.Co.,Ltd" +185D6F o="N3com" 185D9A o="BobjGear LLC" 1861C7 o="lemonbeat GmbH" 186571 o="Top Victory Electronics (Taiwan) Co., Ltd." +1865C7 o="Dongguan YIMO Technology Co.LTD" 1866C7 o="Shenzhen Libre Technology Co., Ltd" 1866E3 o="Veros Systems, Inc." +1866F0 o="Jupiter Systems" 18673F o="Hanover Displays Limited" 186751 o="KOMEG Industrielle Messtechnik GmbH" 186882 o="Beward R&D Co., Ltd." -1869D8,68572D,D4A651 o="HANGZHOU AIXIANGJI TECHNOLOGY CO., LTD" +186BE2 o="LYLINK LIMITED" +186C60 o="Jifeline Networks B.V." 186D99 o="Adanis Inc." -186F2D,703A73,9C3A9A,A80CCA,D468BA o="Shenzhen Sundray Technologies Company Limited" 187117 o="eta plus electronic gmbh" 1871D5 o="Hazens Automotive Electronics(SZ)Co.,Ltd." +187758 o="Audoo Limited (UK)" 1878D4,20C047,485D36 o="Verizon" 1879A2 o="GMJ ELECTRIC LIMITED" 187A93,C4FEE2 o="AMICCOM Electronics Corporation" -187C81 o="Valeo Vision Systems" +187C81,94F2BB,B8FC28 o="Valeo Vision Systems" 187ED5 o="shenzhen kaism technology Co. Ltd" 1880CE o="Barberry Solutions Ltd" 188219,D896E0 o="Alibaba Cloud Computing Ltd." 188410 o="CoreTrust Inc." +1884C1,1C2FA2,209BE6,283DE8,385439,44370B,584146,7424CA,8493EC,8C3592,8C7AB3,90E468,B40429,B841D9,BC6BFF,C08ACD,D874EF,DCEC4F,E0276C,E8519E,ECC1AB,F42015 o="Guangzhou Shiyuan Electronic Technology Company Limited" 18863A o="DIGITAL ART SYSTEM" 188857 o="Beijing Jinhong Xi-Dian Information Technology Corp." -1889A0,40BC68 o="Wuhan Funshion Online Technologies Co.,Ltd" -1889DF o="CerebrEX Inc." +1889DF o="OMNIVISION" 188A6A o="AVPro Global Hldgs" 188B15 o="ShenZhen ZhongRuiJing Technology co.,LTD" 188ED5 o="TP Vision Belgium N.V. - innovation site Brugge" 188EF9 o="G2C Co. Ltd." +189024 o="Astera LED Technology GmbH" 18922C o="Virtual Instruments" +1894A3 o="Wistron Service(Kunshan) Co., Ltd." 1894C6 o="ShenZhen Chenyee Technology Co., Ltd." 189552,6CCE44,78A7EB,9C9789 o="1MORE" +189677,308B23,506245,F8F295 o="Annapurna labs" +1897F1 o="KOSTAL (Shanghai) Management Co., Ltd." 1897FF o="TechFaith Wireless Technology Limited" 189A67 o="CSE-Servelec Limited" +189C2C,3409C9,A4C139,F4B62D o="Dongguan Huayin Electronic Technology Co., Ltd." +189E2D,2C572C,60C22A,A017F1,A8F1B2,DC446D o="Allwinner Technology Co., Ltd" +189EAD o="Shenzhen Chengqian Information Technology Co., Ltd" 18A28A o="Essel-T Co., Ltd" 18A4A9 o="Vanu Inc." +18A788 o="Shenzhen MEK Intellisys Pte Ltd" 18A958 o="PROVISION THAI CO., LTD." +18A9A6 o="Nebra Ltd" 18AA45 o="Fon Technology" 18AACA,48A73C,B0AAD2,B4CFE0,F4323D o="Sichuan tianyi kanghe communications co., LTD" 18ABF5 o="Ultra Electronics Electrics" 18AD4D o="Polostar Technology Corporation" 18AEBB o="Siemens Convergence Creators GmbH&Co.KG" 18AF9F o="DIGITRONIC Automationsanlagen GmbH" +18AFA1 o="Shenzhen Yifang Network Technology Co., Ltd." +18B185 o="Qiao Information Technology (Zhengzhou) Co., Ltd." 18B209 o="Torrey Pines Logic, Inc" 18B3BA o="Netlogic AB" 18B430,641666 o="Nest Labs Inc." 18B591 o="I-Storm" 18B79E o="Invoxia" -18B905,B4E842 o="Hong Kong Bouffalo Lab Limited" +18B905,249494,B4E842 o="Hong Kong Bouffalo Lab Limited" 18BDAD o="L-TECH CORPORATION" 18BE92,6CB9C5 o="Delta Networks, Inc." +18C1E2,3C3178 o="Qolsys Inc." +18C23C,54EF44 o="Lumi United Technology Co., Ltd" +18C241,2CB8ED,FC395A o="SonicWall" 18C451 o="Tucson Embedded Systems" 18C8E7 o="Shenzhen Hualistone Technology Co.,Ltd" 18CC23 o="Philio Technology Corporation" -18CC88 o="Hitachi Johnson Controls Air" +18CC88 o="Hitachi Global Life Solutions, Inc." 18D5B6 o="SMG Holdings LLC" 18D66A o="Inmarsat" 18D6CF o="Kurth Electronic GmbH" @@ -11872,18 +12129,28 @@ 18DFB4 o="BOSUNG POWERTEC CO.,LTD." 18DFC1 o="Aetheros" 18E1CA o="wanze" +18E1DE o="Chengdu ChipIntelli Technology Co., Ltd" +18E204 o="BEIJING COOLSHARK TECHNOLOGY CO.,LTD." 18E288 o="STT Condigi" 18E80F o="Viking Electronics Inc." +18E83B o="Citadel Wallet LLC" 18E8DD o="MODULETEK" +18EFC0,4CFBFE o="Sercomm Japan Corporation" 18F145 o="NetComm Wireless Limited" 18F18E o="ChipER Technology co. ltd" 18F292 o="Shannon Systems" +18F46B o="Telenor Connexion AB" 18F650 o="Multimedia Pacific Limited" +18F697 o="Axiom Memory Solutions, Inc." 18F76B o="Zhejiang Winsight Technology CO.,LTD" 18F87A o="i3 International Inc." -18F9C4 o="BAE Systems" +18F87F o="Wha Yu Industrial Co., Ltd." +18F9C4,BCD767 o="BAE Systems" 18FA6F o="ISC applied systems corp" +18FB8E,403E22,6CF43D,840055,84C7E2,882222,A4EA4F,B8C051,BCA13A,C4EB68,C877F3 o="VusionGroup" +18FC26,30E8E4,44A54E,74057C,9C6937,C49886 o="Qorvo International Pte. Ltd." 18FC9F o="Changhe Electronics Co., Ltd." +18FD00 o="Marelli" 18FF2E o="Shenzhen Rui Ying Da Technology Co., Ltd" 1C0042 o="NARI Technology Co., Ltd." 1C012D o="Ficer Technology" @@ -11898,93 +12165,124 @@ 1C14B3 o="Airwire Technologies" 1C184A o="ShenZhen RicherLink Technologies Co.,LTD" 1C19DE o="eyevis GmbH" +1C1A1B,68508C,74F7F6 o="Shanghai Sunmi Technology Co.,Ltd." 1C1CFD o="Dalian Hi-Think Computer Technology, Corp" 1C1E38 o="PCCW Global, Inc." 1C1FD4 o="LifeBEAM Technologies LTD" +1C2156 o="Smappee NV" +1C2285 o="Serrature Meroni SpA" 1C234F,441102 o="EDMI Europe Ltd" -1C24CD,505FB5,88DE7C o="Askey Computer Corp." 1C24EB o="Burlywood" 1C27DD o="Datang Gohighsec(zhejiang)Information Technology Co.,Ltd." 1C2AA3 o="Shenzhen HongRui Optical Technology Co., Ltd." +1C2AB0,1C8BEF,2072A9,3C2CA6,447147,68B8BB,785333,94626D,B852E0,E44519,EC1055 o="Beijing Xiaomi Electronics Co.,Ltd" +1C2CE0 o="Shanghai Mountain View Silicon" 1C2E1B o="Suzhou Tremenet Communication Technology Co., Ltd." +1C3283 o="COMTTI Intelligent Technology(Shenzhen) Co., Ltd." 1C330E o="PernixData" 1C334D o="ITS Telecom" 1C3477 o="Innovation Wireless" 1C35F1 o="NEW Lift Neue Elektronische Wege Steuerungsbau GmbH" 1C37BF o="Cloudium Systems Ltd." 1C3A4F o="AccuSpec Electronics, LLC" +1C3B01,D484D0,F421AE o="Shanghai Xiaodu Technology Limited" 1C3B8F o="Selve GmbH & Co. KG" 1C3DE7 o="Sigma Koki Co.,Ltd." 1C40E8 o="SHENZHEN PROGRESS&WIN TECHNOLOGY CO.,LTD" 1C4158 o="Gemalto M2M GmbH" 1C43EC o="JAPAN CIRCUIT CO.,LTD" 1C4455 o="Sieb & Meyer AG" +1C45C2 o="Huizhou City Sunsin lntelligent Technology Co.,Ltd" +1C47F6 o="Zhidao Network Technology(Shenzhen) Co.,Ltd" 1C4840 o="IMS Messsysteme GmbH" 1C4AF7 o="AMON INC" 1C4BB9 o="SMG ENTERPRISE, LLC" +1C4C27 o="World WLAN Application Alliance" +1C4D89,302450,A83162,AC3DFA o="Hangzhou Huacheng Network Technology Co.,Ltd" +1C4EA2,341FC4,703A2D o="Shenzhen V-Link Technology CO., LTD." 1C51B5 o="Techaya LTD" 1C5216 o="DONGGUAN HELE ELECTRONICS CO., LTD" +1C52A7 o="Coram AI, Inc" 1C52D6 o="FLAT DISPLAY TECHNOLOGY CORPORATION" +1C54E6 o="Shenzhen Yisheng Technology Co.,Ltd" 1C553A o="QianGua Corp." +1C573E,5067E0,58FC20,68AAC4,C87023 o="Altice Labs" 1C57D8 o="Kraftway Corporation PLC" 1C5A0B o="Tegile Systems" 1C5A6B o="Philips Electronics Nederland BV" 1C5C55 o="PRIMA Cinema, Inc" 1C5C60 o="Shenzhen Belzon Technology Co.,LTD." 1C5D80 o="Mitubishi Hitachi Power Systems Industries Co., Ltd." +1C5EE6,549359,6CEFC6 o="SHENZHEN TWOWING TECHNOLOGIES CO.,LTD." 1C5FFF o="Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch" +1C6066,9CE91E o="TEJAS NETWORKS LTD" 1C60DE,488AD2,6C5940,8CF228,BC5FF6,C8E7D8,D02516,F4EE14 o="MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD." +1C63A5 o="securityplatform" 1C63B7 o="OpenProducts 237 AB" 1C63BF o="SHENZHEN BROADTEL TELECOM CO.,LTD" +1C6760 o="Phonesuite" 1C687E,5C27D4,B05947,B88035,C85BA0 o="Shenzhen Qihu Intelligent Technology Company Limited" -1C697A,94C691 o="EliteGroup Computer Systems Co., LTD" +1C697A,88AEDD,94C691 o="EliteGroup Computer Systems Co., LTD" 1C6BCA o="Mitsunami Co., Ltd." 1C6E4C o="Logistic Service & Engineering Co.,Ltd" +1C6E74 o="EnOcean Edge Inc." 1C6E76 o="Quarion Technology Inc" +1C6EE6 o="NHNETWORKS" +1C70C9 o="Jiangsu Aisida Electronic Co., Ltd" 1C7328,447F77 o="Connected Home" 1C7370 o="Neotech" 1C76CA o="Terasic Technologies Inc." 1C7839,20906F o="Shenzhen Tencent Computer System Co., Ltd." +1C784B,248602,28BBED,547AF4,685377,7488A8,7C3E82,7CB94C,806A34,9C2410,A405FD,A81710,ACD829,B40ECF,B4C2E0,B83DFB,C4D7FD,C890A8,C8E713,E8CA50,F44250,FC13F0 o="Bouffalo Lab (Nanjing) Co., Ltd." +1C792D,3C3BAD,409CA7,54AEBC,5C8AAE,6C05D3,907ADA,A46B40,A84FA4,A8A092,B0AC82,BC2B02,C0E350,C826E2,C88AD8 o="CHINA DRAGON TECHNOLOGY LIMITED" 1C7C11 o="EID" 1C7C45 o="Vitek Industrial Video Products, Inc." 1C7CC7 o="Coriant GmbH" -1C7D22 o="Fuji Xerox Co., Ltd." 1C7E51 o="3bumen.com" 1C8341 o="Hefei Bitland Information Technology Co.Ltd" 1C83B0 o="Linked IP GmbH" +1C83EC o="Ubee Interactive co, Limited." 1C8464 o="FORMOSA WIRELESS COMMUNICATION CORP." +1C860B o="Guangdong Taiying Technology Co.,Ltd" 1C86AD o="MCT CO., LTD." 1C8E8E o="DB Communication & Systems Co., ltd." +1C8EE6 o="VTECH TELECOMMUNICATIONS LIMITED" 1C8F8A o="Phase Motion Control SpA" 1C9179 o="Integrated System Technologies Ltd" -1C919D,9C19C2 o="Dongguan Liesheng Electronic Co., Ltd." 1C9492 o="RUAG Schweiz AG" 1C955D o="I-LAX ELECTRONICS INC." 1C959F o="Veethree Electronics And Marine LLC" -1C965A,2C4D79,401B5F,4CB99B,841766,90895F,A0AB51,A41566,A45385,A830AD,ACFD93,DC0C2D,DCAF68 o="WEIFANG GOERTEK ELECTRONICS CO.,LTD" 1C973D o="PRICOM Design" 1C97C5 o="Ynomia Pty Ltd" -1C98C1,30C9AB,8060B7,DCE994 o="CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD." +1C97FB o="CoolBitX Ltd." 1C9C26 o="Zoovel Technologies" 1C9ECB o="Beijing Nari Smartchip Microelectronics Company Limited" -1CA0B8,28C13C,702084,A4AE11-A4AE12,F4939F o="Hon Hai Precision Ind. Co., Ltd." +1C9F4E,D83EEF o="COOSEA GROUP (HK) COMPANY LIMITED" 1CA2B1 o="ruwido austria gmbh" +1CA410 o="Amlogic, Inc." +1CA852 o="SENSAIO PTE LTD" 1CAB01 o="Innovolt" 1CADD1 o="Bosung Electronics Co., Ltd." 1CB243 o="TDC A/S" 1CB3E9 o="Shenzhen Zhongke United Communication Technology" 1CB857 o="Becon Technologies Co,.Ltd." +1CB8BA,E8A788 o="XIAMEN LEELEN TECHNOLOGY CO., LTD" 1CBBA8 o="OJSC %Ufimskiy Zavod %Promsvyaz%" +1CBCEC,84253F o="silex technology, Inc." 1CBD0E o="Amplified Engineering Pty Ltd" -1CBFCE o="Shenzhen Century Xinyang Technology Co., Ltd" +1CBFCE,90DE80 o="Shenzhen Century Xinyang Technology Co., Ltd" 1CC11A o="Wavetronix" -1CC316 o="MileSight Technology Co., Ltd." +1CC316,24E124 o="Xiamen Milesight IoT Co., Ltd." 1CC586 o="Absolute Acoustics" 1CC72D o="Shenzhen Huapu Digital CO.,Ltd" +1CC8C1 o="HongKong YiTong Technology Ltd." +1CCA41,4829E4,D8AF81,DCE305 o="AO" 1CCDE5,FC539E o="Shanghai Wind Technologies Co.,Ltd" +1CD1D7,348E89 o="Hangzhou BroadLink Technology Co., Ltd" 1CD40C o="Kriwan Industrie-Elektronik GmbH" 1CD6BD o="LEEDARSON LIGHTING CO., LTD." 1CE165 o="Marshal Corporation" +1CE89E o="SJIT" 1CEEC9,78B3CE o="Elo touch solutions" 1CEEE8 o="Ilshin Elecom" 1CEFCE o="bebro electronic GmbH" @@ -11993,47 +12291,67 @@ 1CF5E7 o="Turtle Industry Co., Ltd." 1CFCBB o="Realfiction ApS" 1CFEA7 o="IDentytech Solutins Ltd." +1CFF3F o="Cust2mate" 20014F o="Linea Research Ltd" +20019C o="Bigleaf Networks Inc." +2002C9 o="Zhejiang Huayi IOT Technology Co.,Ltd" +2002FE o="Hangzhou Dangbei Network Technology Co., Ltd" 200505 o="RADMAX COMMUNICATION PRIVATE LIMITED" +2005B6 o="OpenWrt" 2005E8 o="OOO InProMedia" 200A5E o="Xiangshan Giant Eagle Technology Developing Co., Ltd." -200DB0,40A5EF o="Shenzhen Four Seas Global Link Network Technology Co., Ltd." +200A87 o="Guangzhou On-Bright Electronics Co., Ltd." +200C86,B48618 o="GX India Pvt Ltd" +200D3D,3C227F o="Quectel Wireless Solutions Co., Ltd." +200DB0,40A5EF,E0E1A9 o="Shenzhen Four Seas Global Link Network Technology Co., Ltd." +200E0F o="Panasonic Marketing Middle East & Africa FZE" 200E95 o="IEC – TC9 WG43" 200F70 o="FOXTECH" +200F92 o="STK Technology Co., Ltd." 20114E o="MeteRSit S.R.L." 201257 o="Most Lucky Trading Ltd" 2012D5 o="Scientech Materials Corporation" +201746 o="Paradromics, Inc." 20180E o="Shenzhen Sunchip Technology Co., Ltd" +2019F3 o="WavTek Technologies, Inc" 201D03 o="Elatec GmbH" +202141 o="Universal Electronics BV" 202598 o="Teleview" 2028BC o="Visionscape Co,. Ltd." +2029B9 o="Ikotek technology SH Co., Ltd" 202AC5 o="Petite-En" 202CB7 o="Kong Yue Electronics & Information Industry (Xinhui) Ltd." 202D23 o="Collinear Networks Inc." 202DF8 o="Digital Media Cartridge Ltd." +20318D o="Giax GmbH" 2031EB o="HDSN" 20365B,80DABC,F00E1D o="Megafone Limited" 2036D7 o="Shanghai Reacheng Communication Technology Co.,Ltd" 2037BC o="Kuipers Electronic Engineering BV" -203AEF o="Sivantos GmbH" +203AEF,D487CC o="Sivantos GmbH" +203CC0 o="Beijing Tosee Technology Co., Ltd." 204005 o="feno GmbH" 20415A o="Smarteh d.o.o." +204181 o="ESYSE GmbH Embedded Systems Engineering" 20443A o="Schneider Electric Asia Pacific Ltd" 2046A1 o="VECOW Co., Ltd" 2046F9 o="Advanced Network Devices (dba:AND)" 204AAA o="Hanscan Spain S.A." 204C6D o="Hugo Brennenstuhl Gmbh & Co. KG." 204E6B o="Axxana(israel) ltd" +20500F o="Fiber Groep B.V." 2053CA o="Risk Technology Ltd" 205532 o="Gotech International Technology Limited" 205721 o="Salix Technology CO., Ltd." 2057AF o="Shenzhen FH-NET OPTOELECTRONICS CO.,LTD" 2059A0 o="Paragon Technologies Inc." 205A00 o="Coval" +205A8F o="Shenzhen Hikeen Technology Co.,LTD" 205B5E o="Shenzhen Wonhe Technology Co., Ltd" 205CFA o="Yangzhou ChangLian Network Technology Co,ltd." -205F3D,28D0CB,AC51EE o="Cambridge Communication Systems Ltd" +206296 o="Shenzhen Malio Technology Co.,Ltd" 20635F o="Abeeway" +2066FD o="CONSTELL8 NV" 2067B1 o="Pluto inc." 206AFF o="Atlas Elektronik UK Limited" 206D31 o="FIREWALLA INC" @@ -12043,22 +12361,35 @@ 207693 o="Lenovo (Beijing) Limited." 207759 o="OPTICAL NETWORK VIDEO TECHNOLOGIES (SHENZHEN) CO., LTD." 20780B o="Delta Faucet Company" +207BD2,9C69D3,C8A362,CC4792,F8E43B o="ASIX Electronics Corporation" +207C14 o="Qotom" 207C8F o="Quanta Microsystems,Inc." +208097 o="Shenzhen OXO Technology limited" 2083F8,686359,C477AF o="Advanced Digital Broadcast SA" +2084F5 o="Yufei Innovation Software(Shenzhen) Co., Ltd." 20858C o="Assa" 2087AC o="AES motomation" +208BD1,343C30,400326,40EEBE,487706,4CD4B1,50C1F0,5C6152,60045C,804C5D,84F1F7,98E7D5,9CDFB3,A8F8C9,AC3B96,ACF932,B05246,B43D6B,BCB4FD,C47DA8,D419F6,DCCD66,F4635A o="NXP Semiconductor (Tianjin) LTD." +208C47 o="Tenstorrent Inc" 20918A o="PROFALUX" 2091D9 o="I'M SPA" -20968A,2823F5,58C876,8C1850,B45459,CCF0FD,F010AB o="China Mobile (Hangzhou) Information Technology Co., Ltd." +20968A,2823F5,58C876,8044FD,8C1850,B45459,BCD7CE,CCF0FD,F010AB o="China Mobile (Hangzhou) Information Technology Co., Ltd." +209727 o="TELTONIKA NETWORKS UAB" +20988E,789F38 o="Shenzhen Feasycom Co., Ltd" 2098D8 o="Shenzhen Yingdakang Technology CO., LTD" +2098ED,2CCC7A,2CD8DE,30BE29,3854F5,387707,4472AC,48A4FD,48D01C,4C2F7B,4C37DE,4C60BA,58C587,5C4EEE,6056EE,60DC81,6C221A,7CAADE,8C5C53,90314B,94FF7D,98A829,BCADAE,C02EDF,C08A60,D83A36,D83EEB,E022A1,E82D79,E8F494,F41C26,F4E25D o="AltoBeam Inc." 209AE9 o="Volacomm Co., Ltd" 209BA5 o="JIAXING GLEAD Electronics Co.,Ltd" 20A2E7 o="Lee-Dickens Ltd" 20A783 o="miControl GmbH" 20A787 o="Bointec Taiwan Corporation Limited" +20A7F9 o="SHENZHEN OLANBOA TECHNOLOGY CO., LTD" 20AA25 o="IP-NET LLC" +20AC9C o="China Telecom Corporation Limited" +20AF1B,289A4B o="SteelSeries ApS" 20B0F7 o="Enclustra GmbH" -20B5C6 o="Mimosa Networks" +20B5C6,849CA4,8CB6C5,9070BF,CC54FE o="Mimosa Networks" +20B730 o="TeconGroup, Inc" 20B780 o="Toshiba Visual Solutions Corporation Co.,Ltd" 20B7C0 o="OMICRON electronics GmbH" 20BB76 o="COL GIOVANNI PAOLO SpA" @@ -12068,6 +12399,9 @@ 20C1AF o="i Wit Digital Co., Limited" 20C3A4 o="RetailNext" 20C60D o="Shanghai annijie Information technology Co.,LTD" +20C74F o="SensorPush" +20C792 o="Wuhan Maiwe communication Co.,Ltd" +20CBCC o="GridVisibility, inc." 20CEC4 o="Peraso Technologies" 20D21F o="Wincal Technology Corp." 20D25F o="SmartCap Technologies" @@ -12079,6 +12413,7 @@ 20DE88 o="IC Realtime LLC" 20DF3F,6C8366 o="Nanjing SAC Power Grid Automation Co., Ltd." 20E407 o="Spark srl" +20E59B o="Panasonic Automotive Systems" 20E791 o="Siemens Healthcare Diagnostics, Inc" 20EAC7 o="SHENZHEN RIOPINE ELECTRONICS CO., LTD" 20ED74 o="Ability enterprise co.,Ltd." @@ -12087,42 +12422,55 @@ 20F41B,28F366,3C3300,44334C,ACA213 o="Shenzhen Bilian electronic CO.,LTD" 20F452 o="Shanghai IUV Software Development Co. Ltd" 20F510 o="Codex Digital Limited" +20F597 o="Maasiv, LLC" +20F83B o="Nabu Casa, Inc." 20F85E o="Delta Electronics" 20FABB o="Cambridge Executive Limited" +20FADB o="Huahao Kunpeng Technology (chengDu) Co.,Ltd." 20FECD o="System In Frontier Inc." 20FEDB o="M2M Solution S.A.S." 2400FA o="China Mobile (Hangzhou) Information Technology Co., Ltd" +240462 o="Siemens Energy Global GmbH & Co.KG - GT PRM" 24050F o="MTN Electronic Co. Ltd" +24085D o="AUMOVIO Aftermarket GmbH" 240917 o="Devlin Electronics Limited" 240B2A o="Viettel Group" 240BB1 o="KOSTAL Industrie Elektrik GmbH" 240D65 o="Shenzhen Vsun Communication Technology Co., Ltd." 240D6C o="SMND" +240F5E o="Shenzhen z-router Technology Co., Ltd" 241064 o="Shenzhen Ecsino Tecnical Co. Ltd" 241125 o="Hutek Co., Ltd." 241148 o="Entropix, LLC" 2411D0 o="Chongqing Ehs Science and Technology Development Co.,Ltd." 241407 o="Xiamen Sigmastar Technology Ltd." +2418C0 o="E. Wehrle GmbH" 241A8C o="Squarehead Technology AS" 241B13 o="Shanghai Nutshell Electronic Co., Ltd." 241B44 o="Hangzhou Tuners Electronics Co., Ltd" 241C04 o="SHENZHEN JEHE TECHNOLOGY DEVELOPMENT CO., LTD." +241E2B,3063CF,FCBC0E o="Zhejiang Cainiao Supply Chain Management Co., Ltd" 241F2C o="Calsys, Inc." 242642 o="SHARP Corporation." +2426BA o="Shenzhen Toptel Technology Co., Ltd." +242856 o="Beijing Gctech Technology Co.,LTD" 242E90 o="PALIT MICROSYSTEMS, LTD" 242FFA o="Toshiba Global Commerce Solutions" 2435CC o="Zhongshan Scinan Internet of Things Co.,Ltd." 2437EF o="EMC Electronic Media Communication SA" 243A82 o="IRTS" 243C20 o="Dynamode Group" +243CB0 o="Dongguan Mentech Optical & Magnetic Co., Ltd." 243F30 o="Oxygen Broadband s.a." 2440AE o="NIIC Technology Co., Ltd." 2442BC o="Alinco,incorporated" -2443E2,304F75,9C65EE,D096FB o="DASAN Network Solutions" +2442E3 o="Shenzhen Ai-Thinker Technology Co.,Ltd" +2443E2,64681A o="DASAN Network Solutions" 244597 o="GEMUE Gebr. Mueller Apparatebau" 24470E o="PentronicAB" 24497B o="Innovative Converged Devices Inc" 244F1D o="iRule LLC" +24506F o="THINKCAR TECH CO.,LTD." 2453BF o="Enernet" 245880 o="VIZEO" 24590B o="White Sky Inc. Limited" @@ -12130,18 +12478,23 @@ 245CBF o="NCSE" 245CCB o="AXIe Consortium, Inc." 245EBE,E843B6 o="QNAP Systems, Inc." +245EE1 o="United Automotive Electronic Systems Co.,Ltd." 246081 o="razberi technologies" -246278 o="sysmocom - systems for mobile communications GmbH" +246278 o="sysmocom - s.f.m.c. GmbH" 2464EF o="CYG SUNRI CO.,LTD." +246830 o="Shenzhen Shokzhear Co., Ltd" 246880 o="Braveridge.co.,ltd." 24693E o="innodisk Corporation" 24694A o="Jasmine Systems Inc." 246AAB o="IT-IS International" 246C8A o="YUKAI Engineering" +24724A o="Nile Global Inc" 247260 o="IOTTECH Corp" 247656 o="Shanghai Net Miles Fiber Optics Technology Co., LTD." +247823 o="Panasonic Entertainment & Communication Co., Ltd." 2479EF o="Greenpacket Berhad, Taiwan" 2479F8 o="KUPSON spol. s r.o." +247C46 o="FLEXTRONICS TECHNOLOGIES MEXICO S DE RL DE CV" 247C4C o="Herman Miller" 248000 o="Westcontrol AS" 2481AA o="KSH International Co., Ltd." @@ -12150,17 +12503,25 @@ 2486F4 o="Ctek, Inc." 248707 o="SEnergy Corporation" 248894 o="shenzhen lensun Communication Technology LTD" +249038 o="Universal Biosensors Pty Ltd" 2493CA o="Voxtronic Austria" 249442 o="OPEN ROAD SOLUTIONS , INC." +2496D5 o="NEXCON Technology Co.,ltd." 2497ED o="Techvision Intelligent Technology Limited" -24A42C o="KOUKAAM a.s." +249AD8,3497D7,44DBD2,644F56,805E0C,805EC0,B061A9,C4FC22,EC1DA9,F01653 o="YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD." +249D2A o="LinkData Technology (Tianjin) Co., LTD" +249E7D,B04A39 o="Beijing Roborock Technology Co., Ltd." +24A42C o="NETIO products a.s." 24A495 o="Thales Canada Inc." 24A534 o="SynTrust Tech International Ltd." +24A5FF o="Fairbanks Scales" 24A87D o="Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd." 24A937 o="PURE Storage" 24AF54 o="NEXGEN Mediatech Inc." +24AFCC,58C935,5C579E,98C854,CC9F7A,E897B8 o="Chiun Mai Communication System, Inc" 24B0A9 o="Shanghai Mobiletek Communication Ltd." -24B105 o="Prama Hikvision India Private Limited" +24B105,BC2978 o="Prama Hikvision India Private Limited" +24B5F2 o="Shanghai Ingeek Technology Co., Ltd" 24B6B8 o="FRIEM SPA" 24B88C o="Crenus Co.,Ltd." 24B8D2 o="Opzoon Technology Co.,Ltd." @@ -12172,6 +12533,8 @@ 24C0B3 o="RSF" 24C17A o="BEIJING IACTIVE NETWORK CO.,LTD" 24C1BD o="CRRC DALIAN R&D CO.,LTD." +24C35D o="Duke University" +24C406,501B6A,505E5C,746859 o="SUNITEC TECHNOLOGY CO.,LIMITED" 24C42F o="Philips Lifeline" 24C848 o="mywerk Portal GmbH" 24C86E o="Chaney Instrument Co." @@ -12180,14 +12543,19 @@ 24CBE7 o="MYK, Inc." 24CF21 o="Shenzhen State Micro Technology Co., Ltd" 24D13F o="MEXUS CO.,LTD" +24D208 o="Sensata Technologies Inc." 24D2CC o="SmartDrive Systems Inc." 24D51C o="Zhongtian broadband technology co., LTD" 24D76B o="Syntronic AB" +24D81E o="MirWifi,Joint-Stock Company" +24D904,A0C016 o="Sichuan Changhong Network Technologies Co., Ltd." 24DA11 o="NO NDA Inc" 24DAB6 o="Sistemas de Gestión Energética S.A. de C.V" 24DBAD o="ShopperTrak RCT Corporation" -24DFA7,A043B0 o="Hangzhou BroadLink Technology Co.,Ltd" -24E124 o="Xiamen Ursalink Technology Co., Ltd." +24DC0F,686B6A,980E24,C02B31 o="Phytium Technology Co.,Ltd." +24DD1B o="Qingdao Hi-image Technologies Co., Ltd" +24DFA7,A043B0,E81656,E87072,EC0BAE o="Hangzhou BroadLink Technology Co.,Ltd" +24E3DE o="China Telecom Fufu Information Technology Co., Ltd." 24E43F o="Wenzhou Kunmei Communication Technology Co.,Ltd." 24E5AA o="Philips Oral Healthcare, Inc." 24E6BA o="JSC Zavod im. Kozitsky" @@ -12195,74 +12563,102 @@ 24EB65 o="SAET I.S. S.r.l." 24EC51 o="ADF Technologies Sdn Bhd" 24ECD6 o="CSG Science & Technology Co.,Ltd.Hefei" +24EDFD o="Siemens Canada Limited" 24EE3A o="Chengdu Yingji Electronic Hi-tech Co Ltd" +24EFB4 o="Shanghai Neardi Technologies Co. Ltd." 24F0FF o="GHT Co., Ltd." 24F128 o="Telstra" 24F150 o="Guangzhou Qi'an Technology Co., Ltd." -24F2DD o="Radiant Zemax LLC" +24F2DD o="Radiant Vision Systems, LLC" 24F57E o="HWH CO., LTD." +24FAD4 o="ShenZhen More Star Technology Co.,LTD" 24FAF3 o="Shanghai Flexem Technology Co.,Ltd." 24FD5B o="SmartThings, Inc." 280245 o="Konze System Technology Co.,Ltd." +2804C6,5C56A4,B038E2,E09DFA o="Wanan Hongsheng Electronic Co.Ltd" 2804E0 o="FERMAX ELECTRONICA S.A.U." +28052E o="Dematic Corp" 28061E o="NINGBO GLOBAL USEFUL ELECTRIC CO.,LTD" 28068D o="ITL, LLC" 28070D o="GUANGZHOU WINSOUND INFORMATION TECHNOLOGY CO.,LTD." 280C28 o="Unigen DataStorage Corporation" +280C2D o="QUALVISION TECHNOLOGY CO.,LTD" 280CB8 o="Mikrosay Yazilim ve Elektronik A.S." 280E8B o="Beijing Spirit Technology Development Co., Ltd." +280FC5 o="Beijing Leadsec Technology Co., Ltd." 28101B o="MagnaCom" 281471 o="Lantis co., LTD." +2815A4 o="SHENZHEN PINSU ZHILIAN INFORMATION TECHNOLOGY CO.,LTD." +2817CB o="Software Freedom Conservancy" 2817CE o="Omnisense Ltd" -2818FD o="Aditya Infotech Ltd." +2818FD,5C3548,F82097 o="Aditya Infotech Ltd." +281B04 o="Zalliant LLC" +281D21 o="IN ONE SMART TECHNOLOGY(H,K,)LIMITED" +281DAA o="ASTI India Private Limited" 282246 o="Beijing Sinoix Communication Co., LTD" 282373 o="Digita" 282536 o="SHENZHEN HOLATEK CO.,LTD" +28255F,48E2AD,A840F8,BC9A8E o="HUMAX NETWORKS" 2826A6 o="PBR electronics GmbH" 282986 o="APC by Schneider Electric" 2829CC o="Corsa Technology Incorporated" 2829D9 o="GlobalBeiMing technology (Beijing)Co. Ltd" +282BB9 o="Shenzhen Xiongxin Technology Co.,Ltd" +282E30 o="MECHATRONICS INNOVATION TECHNOLOGIES, S.L.U." 282FC2 o="Automotive Data Solutions" 2830AC o="Frontiir Co. Ltd." 28317E,540384 o="Hongkong Nano IC Technologies Co., Ltd" 283410 o="Enigma Diagnostics Limited" 283713 o="Shenzhen 3Nod Digital Technology Co., Ltd." -28385C,70E1FD o="FLEXTRONICS" +28385C,70E1FD,9839C0 o="FLEXTRONICS" 2838CF o="Gen2wave" +283984 o="Qidi Technology (shanghai) Co.,Ltd." 2839E7 o="Preceno Technology Pte.Ltd." 283B96 o="Cool Control LTD" +283E0C o="Preferred Robotics, Inc." 283E76 o="Common Networks" 28401A o="C8 MediSensors, Inc." 284121 o="OptiSense Network, LLC" -284430 o="GenesisTechnical Systems (UK) Ltd" +2843DC o="United Memory Technology (Jiangsu) Limited" +284430,606134 o="Arcade Communications Ltd." 284846 o="GridCentric Inc." +284992,284D92 o="Luminator Technology Group Global LLC" 284C53 o="Intune Networks" -284D92 o="Luminator" 284ED7 o="OutSmart Power Systems, Inc." +284EE9,E47C1A o="mercury corperation" 284FCE o="Liaoning Wontel Science and Technology Development Co.,Ltd." 285132 o="Shenzhen Prayfly Technology Co.,Ltd" 2852E0 o="Layon international Electronic & Telecom Co.,Ltd" 2852F9 o="Zhongxin Intelligent Times (Shenzhen) Co., Ltd." +2853E0 o="Sintela Ltd" 285F2F o="RNware Co.,Ltd." 286046 o="Lantech Communications Global, Inc." 286094 o="CAPELEC" +2864EF o="Shenzhen Fsan Intelligent Technology Co.,Ltd" 28656B o="Keystone Microtech Corporation" -286D97 o="SAMJIN Co., Ltd." -286DCD o="Beijing Winner Microelectronics Co.,Ltd." +286BB4,3455E5,34FC99 o="SJIT Co., Ltd." +286D97,683A48,A457A0 o="SAMJIN Co., Ltd." +286DCD,C8586A o="Beijing Winner Microelectronics Co.,Ltd." 287184 o="Spire Payments" 2872C5 o="Smartmatic Corp" 2872F0 o="ATHENA" 287610 o="IgniteNet" -2876CD o="Funshion Online Technologies Co.,Ltd" +2877B1 o="Tri plus grupa d.o.o." 287994 o="Realplay Digital Technology(Shenzhen) Co.,Ltd" 287CDB o="Hefei Toycloud Technology Co.,ltd" +28827C o="Bosch Automative products(Suzhou)Co.,Ltd Changzhou Branch" +288328 o="EMALDO TECHNOLOGY(HK)LIMITED" 28840E o="silicon valley immigration service" 28852D o="Touch Networks" +2885BB o="Zen Exim Pvt. Ltd." 288915 o="CashGuard Sverige AB" +288EB9,44680C,4C968A,68A8E1,884A70,BC062D,E8A848 o="Wacom Co.,Ltd." +289176,788C4D o="Indyme Solutions, LLC" 2891D0 o="Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH" 2894AF o="Samhwa Telecom" +2897B8 o="myenergi Ltd" 2899C7 o="LINDSAY BROADBAND INC" -289A4B o="SteelSeries ApS" +289C6E,34EAE7,402A8F,D42787,E8FDF8 o="Shanghai High-Flying Electronics Technology Co., Ltd" 289EDF o="Danfoss Turbocor Compressors, Inc" 28A186 o="enblink" 28A192 o="GERP Solution" @@ -12271,15 +12667,21 @@ 28A574 o="Miller Electric Mfg. Co." 28A5EE o="Shenzhen SDGI CATV Co., Ltd" 28A6AC o="seca gmbh & co. kg" +28A915,78BBC1,8428D6,8CA399,98874C,9CD4A6,A8881F,A8DA0C,B4A7C6,D878C9,F0EDB8 o="SERVERCOM (INDIA) PRIVATE LIMITED" 28AC67 o="Mach Power, Rappresentanze Internazionali s.r.l." 28AD3E o="Shenzhen TONG BO WEI Technology CO.,LTD" 28AF0A o="Sirius XM Radio Inc" 28B0CC o="Xenya d.o.o." +28B133 o="SHINEMAN(SHENZHEN) Tech. Cor., Ltd." +28B221 o="Sienda Multimedia Ltd" +28B27C o="Sailing Northern Technology" 28B3AB o="Genmark Automation" 28B4FB o="Sprocomm Technologies CO.,LTD." +28B67C o="KEBODA Intelligent TECHNOLOGY CO., LTD." 28B9D9 o="Radisys Corporation" 28BA18 o="NextNav, LLC" 28BB59 o="RNET Technologies, Inc." +28BC05,60720B,6C5640,80FD7A-80FD7B,E4C801 o="BLU Products Inc" 28BC18 o="SourcingOverseas Co. Ltd" 28BC56 o="EMAC, Inc." 28C671 o="Yota Devices OY" @@ -12287,30 +12689,39 @@ 28C825 o="DellKing Industrial Co., Ltd" 28C914 o="Taimag Corporation" 28CA09 o="ThyssenKrupp Elevators (Shanghai) Co.,Ltd" +28CB5C o="Shenzhen CPETEK Technology Co.,Ltd." 28CBEB o="One" 28CCFF o="Corporacion Empresarial Altra SL" 28CD1C o="Espotel Oy" 28CD4C o="Individual Computers GmbH" 28CD9C o="Shenzhen Dynamax Software Development Co.,Ltd." -28CF08,487AFF,A8B9B3 o="ESSYS" -28D127,44237C,50D2F5,50EC50,5448E6,58B623,5CE50C,6490C1,88C397,8C53C3,9C9D7E,B460ED,EC4D3E o="Beijing Xiaomi Mobile Software Co., Ltd" -28D244 o="LCFC(HeFei) Electronics Technology Co., Ltd." +28CDC1,D83ADD,DCA632,E45F01 o="Raspberry Pi Trading Ltd" +28CE15 o="Shenzhen Xinwei Intelligent Co., Ltd" +28CF08,487AFF,A8B9B3,ECAB3E o="ESSYS" +28D044 o="Shenzhen Xinyin technology company" 28D436 o="Jiangsu dewosi electric co., LTD" 28D576 o="Premier Wireless, Inc." 28D93E o="Telecor Inc." 28D98A o="Hangzhou Konke Technology Co.,Ltd." 28D997 o="Yuduan Mobile Co., Ltd." 28DB81 o="Shanghai Guao Electronic Technology Co., Ltd" +28DE59 o="Domus NTW CORP." 28DEF6 o="bioMerieux Inc." -28E297 o="Shanghai InfoTM Microelectronics Co.,Ltd." +28E297 o="Shanghai InfoTM Microelectronics Co.,Ltd" 28E476 o="Pi-Coral" 28E608 o="Tokheim" 28E6E9 o="SIS Sat Internet Services GmbH" 28E794 o="Microtime Computer Inc." +28EA5B,FCDB21 o="SAMSARA NETWORKS INC" +28EB0A o="Rolling Wireless S.a.r.l. Luxembourg" +28EBA6 o="Nex-T LLC" +28EBB7 o="ambie corporation" 28ED58 o="JAG Jakob AG" 28EE2C o="Frontline Test Equipment" 28EED3 o="Shenzhen Super D Technology Co., Ltd" 28F358 o="2C - Trifonov & Co" +28F49B o="LEETEK" +28F52B,4080E1,40F4C9,448763,503123,58E4EB,648214,706871,78BE81,7C8899,809D65,A4E88D,A89609,C00925,E85C5F o="FN-LINK TECHNOLOGY Ltd." 28F532 o="ADD-Engineering BV" 28F606 o="Syes srl" 28FBD3,88A73C,C0854C o="Ragentek Technology Group" @@ -12318,18 +12729,23 @@ 28FCF6 o="Shenzhen Xin KingBrand enterprises Co.,Ltd" 28FECD,B4EFFA o="Lemobile Information Technology (Beijing) Co., Ltd." 28FEDE o="COMESTA, Inc." -28FFB2 o="Toshiba Corp." +28FF5F o="HG Genuine Intelligent Terminal (Xiaogan) Co.,Ltd." 2C002C o="UNOWHY" 2C0033 o="EControls, LLC" 2C00F7 o="XOS" 2C010B o="NASCENT Technology, LLC - RemKon" 2C029F o="3ALogics" +2C0369,BC121F,FC3D98 o="ACCTON TECHNOLOGY CORPORATION" 2C0623 o="Win Leader Inc." 2C073C o="DEVLINE LIMITED" +2C07F6 o="SKG Health Technologies Co., Ltd." 2C081C o="OVH" +2C0823,2C93FB,3417DD,54ECB0 o="Sercomm France Sarl" 2C094D o="Raptor Engineering, LLC" 2C09CB o="COBS AB" +2C157E o="RADIODATA GmbH" 2C15E1,2CB21A,68DB54,747D24,CC81DA,D8C8E9,FC7C02 o="Phicomm (Shanghai) Co., Ltd." +2C17E0 o="SYSTEMES ET TECHNOLOGIES IDENTIFICATION (STid)" 2C18AE o="Trend Electronics Co., Ltd." 2C1984 o="IDN Telecom, Inc." 2C1A31 o="Electronics Company Limited" @@ -12341,48 +12757,62 @@ 2C228B o="CTR SRL" 2C245F o="Babolat VS" 2C2617 o="Oculus VR, LLC" +2C27E4 o="Luxshare Precision Industry (Xuancheng) Co.,Ltd." 2C282D,309BAD,4813F3,486B2C,6C25B9,80414E,98CF53 o="BBK EDUCATIONAL ELECTRONICS CORP.,LTD." 2C28B7 o="Hangzhou Ruiying technology co., LTD" -2C2D48 o="bct electronic GesmbH" +2C301A o="Technicolor CH USA Inc for Telus" 2C3427 o="ERCO & GENER" -2C3557 o="ELLIY Power CO..Ltd" +2C347B o="SHENZHEN JUNGE TECHNOLOGY CO.,LTD" +2C3557 o="ELIIY Power CO., Ltd." 2C36A0 o="Capisco Limited" 2C3731 o="SHENZHEN YIFANG DIGITAL TECHNOLOGY CO.,LTD." 2C3796 o="CYBO CO.,LTD." 2C37C5 o="Qingdao Haier Intelligent Home Appliance Technology Co.,Ltd" 2C3A28 o="Fagor Electrónica" -2C3AFD,2C91AB,3810D5,3CA62F,444E6D,5C4979,74427F,7CFF4D,989BCB,C80E14,CCCE1E,DC396F,E0286D,E8DF70,F0B014 o="AVM Audiovisuelles Marketing und Computersysteme GmbH" 2C3BFD o="Netstor Technology Co., Ltd." +2C3C05 o="Marinesync Corp" +2C3EBF o="HOSIN Global Electronics Co., Ltd." 2C3F3E o="Alge-Timing GmbH" 2C402B o="Smart iBlue Technology Limited" -2C4205,50DF95 o="Lytx" +2C4205,50DF95,58A748,70E46E o="Lytx" 2C441B o="Spectrum Medical Limited" +2C459A o="Dixon Technologies (India) Limited" 2C4759 o="Beijing MEGA preponderance Science & Technology Co. Ltd" 2C4E7D o="Chunghua Intelligent Network Equipment Inc." 2C5089 o="Shenzhen Kaixuan Visual Technology Co.,Limited" 2C534A o="Shenzhen Winyao Electronic Limited" -2C553C o="Gainspeed, Inc." +2C53D7,70661B,80283C o="Sonova AG" 2C5A8D o="SYSTRONIK Elektronik u. Systemtechnik GmbH" 2C5AA3 o="PROMATE ELECTRONIC CO.LTD" 2C5BE1 o="Centripetal Networks, Inc" 2C5FF3 o="Pertronic Industries" +2C60CD,B44CC2 o="NR ELECTRIC CO., LTD" 2C6104,70AF6A,A86B7C o="SHENZHEN FENGLIAN TECHNOLOGY CO., LTD." 2C625A o="Finest Security Systems Co., Ltd" 2C6289 o="Regenersis (Glenrothes) Ltd" +2C64F6,4087E5,48555C,6C11B3,D413B3,D84DB9,D8A6F0 o="Wu Qi Technologies,Inc." +2C66AD o="NimbleTech Digital Inc." +2C66F5 o="SHENZHEN ELECTRICAL APPLIANCES CO." 2C6798 o="InTalTech Ltd." +2C67AB,6C71BD o="EZELINK TELECOM" +2C67BE,589B4A,70F82B,78B213,7C8FDE,983B67,E00EE4,E42686,F8AA3F o="DWnet Technologies(Suzhou) Corporation" 2C67FB o="ShenZhen Zhengjili Electronics Co., LTD" 2C69BA o="RF Controls, LLC" +2C69CC o="Valeo Detection Systems" +2C6F4E o="Hubei Yuan Times Technology Co.,Ltd." 2C6F51 o="Herospeed Digital Technology Limited" 2C7155 o="HiveMotion" 2C72C3 o="Soundmatters" -2C7360,4C0FC7,6CE8C6,B447F5,B8C6AA o="Earda Technologies co Ltd" 2C750F o="Shanghai Dongzhou-Lawton Communication Technology Co. Ltd." +2C75CB o="Novitec Co., Ltd." +2C793D o="Boditech Med" 2C7B5A o="Milper Ltd" 2C7B84 o="OOO Petr Telegin" 2C7CE4,4C80BA,AC203E,B83241 o="Wuhan Tianyu Information Industry Co., Ltd." 2C7ECF o="Onzo Ltd" 2C8065 o="HARTING Inc. of North America" 2C8BF2 o="Hitachi Metals America Ltd" +2C8D37 o="Virtium" 2C9127 o="Eintechno Corporation" 2C922C o="Kishu Giken Kogyou Company Ltd,." 2C9464 o="Cincoze Co., Ltd." @@ -12390,41 +12820,60 @@ 2C9717 o="I.C.Y. B.V." 2C97ED o="Sony Imaging Products & Solutions Inc." 2C9AA4 o="Eolo SpA" +2C9D4B o="Lavelle Networks Private Limited" +2C9D5A,64FE15,88BD78 o="Flaircomm Microelectronics,Inc." +2C9EE0 o="Cavli Inc." 2C9EEC o="Jabil Circuit Penang" 2CA02F o="Veroguard Systems Pty Ltd" 2CA157 o="acromate, Inc." 2CA2B4 o="Fortify Technologies, LLC" 2CA30E o="POWER DRAGON DEVELOPMENT LIMITED" +2CA327,5CBE69,5CE8B7 o="Oraimo Technology Limited" 2CA539 o="Parallel Wireless, Inc" 2CA780 o="True Technologies Inc." +2CA7EF,30BB7D,4801C5,487412,4C4FEE,5C17CF,64A2F9,6C6016,78EDBC,7CF0E5,8C64A2,94652D,9809CF,AC5FEA,ACC048,ACD618,D0497C,E44122 o="OnePlus Technology (Shenzhen) Co., Ltd" 2CA89C o="Creatz inc." -2CAA8E,7C78B2 o="Wyze Labs Inc" +2CAA8E,7C78B2,80482C,D03F27,F0C88B o="Wyze Labs Inc" 2CAC44 o="CONEXTOP" 2CAD13 o="SHENZHEN ZHILU TECHNOLOGY CO.,LTD" 2CB0DF o="Soliton Technologies Pvt Ltd" +2CB0FD,38CA73,408C4C,50A132,8CEA12,B899AE o="Shenzhen MiaoMing Intelligent Technology Co.,Ltd" 2CB69D o="RED Digital Cinema" -2CB8ED o="SonicWall" +2CBACA o="Cosonic Electroacoustic Technology Co., Ltd." 2CBE97 o="Ingenieurbuero Bickele und Buehler GmbH" +2CBEEB,2CBEEE,3CB0ED o="Nothing Technology Limited" 2CC407 o="machineQ" 2CC548 o="IAdea Corporation" +2CC6A0 o="Lumacron Technology Ltd." 2CCA0C o="WITHUS PLANET" +2CCA75 o="Robert Bosch GmbH AnP" 2CCD27 o="Precor Inc" 2CCD43 o="Summit Technology Group" 2CCD69 o="Aqavi.com" -2CD1DA o="Sanjole, Inc." +2CCE1E o="Cloudtronics Pty Ltd" +2CCF67,88A29E o="Raspberry Pi (Trading) Ltd" 2CD2E3 o="Guangzhou Aoshi Electronic Co.,Ltd" +2CD8AE,D4CFF9 o="Shenzhen SEI Robotics Co.,Ltd" +2CDA3F o="DongGuan Ramaxel Memory Technology Limited" +2CDC78 o="Descartes Systems (USA) LLC" 2CDD0C o="Discovergy GmbH" +2CDEDF o="Guangxi Konaixin Precision Technology Co., Ltd" 2CE2A8 o="DeviceDesign" 2CE310 o="Stratacache" 2CE871 o="Alert Metalguard ApS" +2CEADA o="ICC Intelligent Platforms GmbH" +2CECF7,5C7B5C,B0B369,B49DFD,B4E265,FCD5D9 o="Shenzhen SDMC Technology CO.,Ltd." 2CEDEB o="Alpheus Digital Company Limited" 2CEE26 o="Petroleum Geo-Services" 2CF203 o="EMKO ELEKTRONIK SAN VE TIC AS" 2CF7F1 o="Seeed Technology Inc." 2CFCE4 o="CTEK Sweden AB" 2CFD37 o="Blue Calypso, Inc." -2CFDAB,40A108,4888CA,542758,64DB43,7C4685,84B8B8,94BE46,980CA5,D0F88C o="Motorola (Wuhan) Mobility Technologies Communication Co., Ltd." +2CFE8B,74C90F,74D5C6,8C7112 o="Microchip Technologies Inc" +300475 o="QBIC COMMUNICATIONS DMCC" 30053F o="JTI Co.,Ltd." +30075C o="43403" +300A9D o="Axino Solutions AG" 300AC5 o="Ruio telecommunication technologies Co., Limited" 300B9C o="Delta Mobile Systems, Inc." 300D2A o="Zhejiang Wellcom Technology Co.,Ltd." @@ -12434,32 +12883,44 @@ 301518 o="Ubiquitous Communication Co. ltd." 30168D o="ProLon" 3018CF o="DEOS control systems GmbH" -301A28 o="Mako Networks Ltd" +301A28,301A30 o="Mako Networks Ltd" 301B97 o="Lierda Science & Technology Group Co.,Ltd" +301D49 o="Firmus Technologies Pty Ltd" 30215B o="Shenzhen Ostar Display Electronic Co.,Ltd" +3023BA o="Accelerated Memory Production Inc." +3027CF o="Canopy Growth Corp" 3029BE o="Shanghai MRDcom Co.,Ltd" +302BDC o="Top-Unum Electronics Co., LTD" 302DE8 o="JDA, LLC (JDA Systems)" +302FAC o="Zhejiang HuaRay Technology Co.,Ltd" +30305F,8896F2 o="Valeo Schalter und Sensoren GmbH" 303294 o="W-IE-NE-R Plein & Baus GmbH" 3032D4 o="Hanilstm Co., Ltd." 303335 o="Boosty" -3034D2,9023EC o="Availink, Inc." +3034D2,9023EC,F829C0 o="Availink, Inc." +3034F6 o="Vantiva Connected Home - Subcomponents" 303955 o="Shenzhen Jinhengjia Electronic Co., Ltd." +3039A9 o="Hongshan Information Science and Technology (HangZhou) Co.,Ltd." 303ABA o="Guangzhou BaoLun Electronics Co., Ltd" 303D08 o="GLINTT TES S.A." 303EAD o="Sonavox Canada Inc" +303F5D,7800A8,B04BBF o="PT HAN SUNG ELECTORONICS INDONESIA" 304174 o="ALTEC LANSING LLC" 304225 o="BURG-WÄCHTER KG" 3042A1 o="ilumisys Inc. DBA Toggled" -304449 o="PLATH GmbH" +304449 o="PLATH Signal Products GmbH & Co. KG" 3044A1 o="Shanghai Nanchao Information Technology" 30493B o="Nanjing Z-Com Wireless Co.,Ltd" -304A26,68B9D3 o="Shenzhen Trolink Technology CO, LTD" +304A26,68B9D3,94A408 o="Shenzhen Trolink Technology CO, LTD" 304C7E o="Panasonic Electric Works Automation Controls Techno Co.,Ltd." 304EC3 o="Tianjin Techua Technology Co., Ltd." -305075,70BF92,745C4B o="GN Audio A/S" +3050F1 o="Ennoconn Corporation." 3051F8 o="BYK-Gardner GmbH" +305253 o="BuildJet, Inc." 30525A o="NST Co., LTD" 3055ED o="Trex Network LLC" +30560F o="GIGA-BYTE TECHNOLOGY CO. , Ltd." +305684 o="SHENZHEN YUNJI INTELLIGENT TECHNOLOGY CO.,LTD" 3057AC o="IRLAB LTD." 30595B o="streamnow AG" 3059B7,4C0BBE,501AC5,5882A8,6045BD,7C1E52,7CED8D,B4AE2B,C0335E o="Microsoft" @@ -12475,12 +12936,16 @@ 3071B2 o="Hangzhou Prevail Optoelectronic Equipment Co.,LTD." 307350 o="Inpeco SA" 3077CB o="Maike Industry(Shenzhen)CO.,LTD" +3077DF o="Terex Corporation" 30785C o="Partow Tamas Novin (Parman)" 30786B o="TIANJIN Golden Pentagon Electronics Co., Ltd." 3078C2 o="Innowireless / QUCELL Networks" +3078D3 o="Virgilant Technologies Ltd." +307A57,ECC38A o="Accuenergy (CANADA) Inc" 307CB2,A43E51 o="ANOV FRANCE" -30862D o="Arista Network, Inc." -308841,44B295,4898CA,501395,6023A4,809F9B,80AC7C,889746,D4B761,EC9C32 o="Sichuan AI-Link Technology Co., Ltd." +30836B o="SteeRetail Co.,Ltd." +30862D,606B5B,688BF4,A43F68,B492FE o="Arista Network, Inc." +308841,44B295,4898CA,501395,6023A4,809F9B,80AC7C,889746,905607,D4B761,EC9C32 o="Sichuan AI-Link Technology Co., Ltd." 308944 o="DEVA Broadcast Ltd." 308976 o="DALIAN LAMBA TECHNOLOGY CO.,LTD" 308999 o="Guangdong East Power Co.," @@ -12489,49 +12954,75 @@ 3092F6,98473C o="SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD" 3095E3 o="SHANGHAI SIMCOM LIMITED" 309FFB o="Ardomus Networks Corporation" +30A023 o="ROCK PATH S.R.L" 30A220 o="ARG Telecom" 30A243 o="Shenzhen Prifox Innovation Technology Co., Ltd." +30A3B5 o="Jiangsu Best Tone Information Service Co., Ltd" 30A452 o="Arrival Elements BV" +30A612 o="ShenZhen Hugsun Technology Co.,Ltd." 30A889 o="DECIMATOR DESIGN" 30AABD o="Shanghai Reallytek Information Technology Co.,Ltd" +30ACED o="Packet Clearing House" 30AE7B o="Deqing Dusun Electron CO., LTD" 30AEF6 o="Radio Mobile Access" +30B0EA o="Shenzhen Chuangxin Internet Communication Technology Co., Ltd" 30B164 o="Power Electronics International Inc." -30B216 o="Hitachi ABB Power Grids – Grid Automation" -30B237,345BBB,502DBB,847C9B,A0681C,F0C9D1 o="GD Midea Air-Conditioning Equipment Co.,Ltd." +30B216 o="Hitachi Energy Germany AG" +30B29F o="EVIDENT CORPORATION" +30B346 o="CJSC NORSI-TRANS" 30B3A2 o="Shenzhen Heguang Measurement & Control Technology Co.,Ltd" 30B5F1 o="Aitexin Technology Co., Ltd" 30B9B0 o="Intracom Asia Co., Ltd" +30BB43 o="Sixi Networks Co., Ltd" +30BC4F o="Beijing Jianguo Bite Technology Co., Ltd." 30C750 o="MIC Technology Group" 30C82A o="WI-BIZ srl" +30C91B o="Zhen Shi Information Technology(Shanghai)Co.,Ltd." +30CB36 o="Belden Singapore Pte. Ltd." +30CB89 o="OnLogic Inc" 30D357 o="Logosol, Inc." 30D46A o="Autosales Incorporated" +30D51F o="Prolights" 30D659 o="Merging Technologies SA" +30D941 o="Raydium Semiconductor Corp." +30D959,542F04 o="Shanghai Longcheer Technology Co., Ltd." +30D97F,80F1F1,9C7DC0 o="Tech4home, Lda" +30DDAA,407AA4,4C99E8,F8CE07 o="ZHEJIANG DAHUA TECHNOLOGYCO.,LTD" 30DE86 o="Cedac Software S.r.l." -30E090 o="Linctronix Ltd," +30E090 o="Genevisio Ltd." +30E271 o="Fsas Technologies Inc." 30E3D6 o="Spotify USA Inc." 30E48E o="Vodafone UK" 30EA26 o="Sycada BV" 30EB1F o="Skylab M&C Technology Co.,Ltd" -30EB5A o="LANDIS + GYR" +30EB5A,98B177 o="LANDIS + GYR" +30EC7C o="Shenzhen Along Electronics Co., Ltd" +30ECA3 o="Alfatron Electronics INC" +30ED96 o="LS Mecapion" 30EFD1 o="Alstom Strongwish (Shenzhen) Co., Ltd." +30F028 o="Bosch Sicherheitssysteme GmbH" +30F03A o="UEI Electronics Private Ltd." 30F33A o="+plugg srl" 30F42F o="ESP" 30F6B9 o="Ecocentric Energy" 30F77F,50A83A o="S Mobile Devices Limited" 30F7D7 o="Thread Technology Co., Ltd" 30FAB7 o="Tunai Creative" +30FB68 o="Wuhan Zmvision Technology Co. Ltd." 30FB94 o="Shanghai Fangzhiwei Information Technology CO.,Ltd." 30FD11 o="MACROTECH (USA) INC." 30FFF6 o="HangZhou KuoHeng Technology Co.,ltd" 34029B o="Plexonics Technologies LImited" 34074F o="AccelStor, Inc." +3407AC o="PRONYX TRADING LLC" 340A22 o="TOP-ACCESS ELECTRONICS CO LTD" 340B40 o="MIOS ELETTRONICA SRL" 340CED o="Moduel AB" 340F66 o="Web Sensing LLC" 341290 o="Treeview Co.,Ltd." +341343,786DEB,DC2FFA o="GE Lighting" 3413A8 o="Mediplan Limited" +341453 o="Gantner Electronic GmbH" 341A4C o="SHENZHEN WEIBU ELECTRONICS CO.,LTD." 341B22 o="Grandbeing Technology Co., Ltd" 342003 o="Shenzhen Feitengyun Technology Co.,LTD" @@ -12540,36 +13031,52 @@ 342606 o="CarePredict, Inc." 3428F0 o="ATN International Limited" 3429EA o="MCD ELECTRONICS SP. Z O.O." -342CC4,38437D,546751,5C353B,6802B8,905C44,AC2205,DC537C o="Compal Broadband Networks, Inc." +342B70 o="Arris" +342C8E,5C0758,E8C57A o="Ufispace Co., LTD." +342CC4,38437D,546751,5C353B,6802B8,905C44,AC2205,B4F267,DC537C o="Compal Broadband Networks, Inc." 342F6E o="Anywire corporation" +34317F,80C755,B46C47,D8AFF1 o="Panasonic Appliances Company" 3432E6 o="Panasonic Industrial Devices Europe GmbH" +343607 o="PINEWAVE PTE. LTD." 343794 o="Hamee Corp." -3438AF o="Inlab Software GmbH" +3438AF o="Inlab Networks GmbH" +343D7F o="Klipsch Group, Inc." 343D98,74B9EB o="JinQianMao Technology Co.,Ltd." -343EA4,54E019 o="Ring LLC" 3440B5,40F2E9,98BE94,A897DC o="IBM" 3441A8 o="ER-Telecom" 34466F o="HiTEM Engineering" +3447D4,E0EF02,EC314A o="Chengdu Quanjing Intelligent Technology Co.,Ltd" +344951 o="Eliyan Corp." +344AC3 o="HuNan ZiKun Information Technology CO., Ltd" 344CA4 o="amazipoint technology Ltd." 344CC8 o="Echodyne Corp" 344F3F o="IO-Power Technology Co., Ltd." 344F5C o="R&M AG" 344F69 o="EKINOPS SAS" -345180,3C591E,5C36B8,CCA12B o="TCL King Electrical Appliances (Huizhou) Co., Ltd" +34516F,78202E o="Skychers Creations ShenZhen Limited" +345180,3C591E,5C36B8,CCA12B,D814DF o="TCL King Electrical Appliances (Huizhou) Co., Ltd" 3451AA o="JID GLOBAL" 34543C o="TAKAOKA TOKO CO.,LTD." +3456ED o="Goerdyna Group Co., Ltd" +34587C o="MIRAE INFORMATION TECHNOLOGY CO., LTD." +345A18 o="Alignment Engine Inc." 345ABA o="tcloud intelligence" 345B11 o="EVI HEAT AB" 345C40 o="Cargt Holdings LLC" 345D10 o="Wytek" +345EE7 o="Hangzhou ChengFengErLai Digial Technology Co.,Ltd." 3463D4 o="BIONIX SUPPLYCHAIN TECHNOLOGIES SLU" 3466EA o="VERTU INTERNATIONAL CORPORATION LIMITED" 34684A o="Teraworks Co., Ltd." +346893 o="Tecnovideo Srl" 346C0F o="Pramod Telecom Pvt. Ltd" 346E8A o="Ecosense" +346F11 o="Qingdao Zhipai Information Technology Co., Ltd." +346F71 o="TenaFe Inc." 346F92 o="White Rodgers Division" 346FED o="Enovation Controls" -347563,38839A,38A28C,58B3FC,7CC709,842096,C0210D,C46E7B,CC79CF,E0859A,F085C1 o="SHENZHEN RF-LINK TECHNOLOGY CO.,LTD." +347379 o="xFusion Digital Technologies Co., Limited" +347563,38839A,38A28C,58B3FC,7CC709,842096,BC9D42,C0210D,C46E7B,CC79CF,E0859A,F085C1 o="SHENZHEN RF-LINK TECHNOLOGY CO.,LTD." 347877 o="O-Net Communications (Shenzhen) Limited" 347ECA o="NEXTWILL" 34800D o="Cavium Inc" @@ -12578,11 +13085,13 @@ 3482DE o="Kiio Inc" 348302 o="iFORCOM Co., Ltd" 34862A o="Heinz Lackmann GmbH & Co KG" -34873D,50804A,546503,80FBF0,90BDE6,A486AE,C44137 o="Quectel Wireless Solutions Co., Ltd." -34885D,F47335 o="Logitech Far East" +3487FB o="GTAI" +34885D,405899,4471B3,F47335 o="Logitech Far East" 348B75,48FCB6,AC562C o="LAVA INTERNATIONAL(H.K) LIMITED" 34916F o="UserGate Ltd." +3492C2 o="Square Route Co., Ltd." 349342 o="TTE Corporation" +34976F o="Rootech, Inc." 3497FB o="ADVANCED RF TECHNOLOGIES INC" 34996F o="VPI Engineering" 349971,48BD0E o="Quanta Storage Inc." @@ -12592,23 +13101,29 @@ 349D90 o="Heinzmann GmbH & CO. KG" 349E34 o="Evervictory Electronic Co.Ltd" 34A183 o="AWare, Inc" +34A34E o="NevadaNano" 34A3BF o="Terewave. Inc." 34A55D o="TECHNOSOFT INTERNATIONAL SRL" +34A5B4 o="NAVTECH PTE LTD" 34A5E1 o="Sensorist ApS" 34A68C o="Shine Profit Development Limited" 34A709 o="Trevil srl" 34A7BA o="Fischer International Systems Corporation" +34A8DB o="SenArch ApS" 34AAEE o="Mikrovisatos Servisas UAB" 34ADE4 o="Shanghai Chint Power Systems Co., Ltd." +34AFA3,3847F2 o="Recogni Inc" 34B571 o="PLDS" -34B5A3,A4817A,EC84B4 o="CIG SHANGHAI CO LTD" 34B7FD o="Guangzhou Younghead Electronic Technology Co.,Ltd" 34BA38 o="PAL MOHAN ELECTRONICS PVT LTD" 34BA51 o="Se-Kure Controls, Inc." 34BA75 o="Everest Networks, Inc" 34BA9A o="Asiatelco Technologies Co." 34BCA6 o="Beijing Ding Qing Technology, Ltd." +34BD20 o="Hangzhou Hikrobot Technology Co., Ltd." 34BDF9 o="Shanghai WDK Industrial Co.,Ltd." +34C103 o="Hangzhou Huamu Technology Co.,Ltd." +34C1E9 o="Ulak Communications Inc." 34C5D0 o="Hagleitner Hygiene International GmbH" 34C69A o="Enecsys Ltd" 34C99D o="EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD." @@ -12617,33 +13132,47 @@ 34CC28 o="Nexpring Co. LTD.," 34CD6D o="CommSky Technologies" 34CE94 o="Parsec (Pty) Ltd" +34CF6C o="Hangzhou Taili wireless communication equipment Co.,Ltd" +34CFB5 o="Robotic d.o.o." 34D09B o="MobilMAX Technology Inc." -34D262,60601F o="SZ DJI TECHNOLOGY CO.,LTD" 34D2C4 o="RENA GmbH Print Systeme" +34D4E3 o="Atom Power, Inc." +34D509,34E380,580032,943F0C o="Genexis B.V." 34D712 o="Smartisan Digital Co., Ltd" +34D737 o="IBG Industriebeteiligungsgesellschaft mbH &b Co. KG" 34D772 o="Xiamen Yudian Automation Technology Co., Ltd" 34D7B4 o="Tributary Systems, Inc." 34D954 o="WiBotic Inc." 34DAC1 o="SAE Technologies Development(Dongguan) Co., Ltd." -34DD7E o="Umeox Innovations Co.,Ltd" +34DD04 o="Minut AB" +34DD7E,888187 o="Umeox Innovations Co.,Ltd" +34DF20 o="Shenzhen Comstar .Technology Co.,Ltd" 34DF2A o="Fujikon Industrial Co.,Limited" 34E0D7 o="DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD" -34E380 o="Genexis B.V." 34E3DA o="Hoval Aktiengesellschaft" 34E42A o="Automatic Bar Controls Inc." 34E70B o="HAN Networks Co., Ltd" +34E9FE o="Metis Co., Ltd." +34EA10,D8D45D o="Orbic North America" 34EA34,780F77,C8F742 o="HangZhou Gubei Electronics Technology Co.,Ltd" -34EAE7 o="Shanghai High-Flying Electronics Technology Co., Ltd" +34ECB6,40B7FC,80ACC8,E068EE,E498BB o="Phyplus Microelectronics Limited" 34ED0B o="Shanghai XZ-COM.CO.,Ltd." -34EF8B o="NTT Communications Corporation" +34EF8B o="NTT DOCOMO BUSINESS, Inc." 34F0CA o="Shenzhen Linghangyuan Digital Technology Co.,Ltd." +34F223 o="Fujian Newland Communication Science Technology Co.,Ltd." 34F39B o="WizLAN Ltd." 34F6D2 o="Panasonic Taiwan Co.,Ltd." +34F86E o="Parker Hannifin Corporation" 34F968,74BE08 o="ATEK Products, LLC" 34FA40 o="Guangzhou Robustel Technologies Co., Limited" 34FC6F o="ALCEA" +34FCA1,886EDD o="Micronet union Technology(Chengdu)Co., Ltd." +34FE1C o="CHOUNG HWA TECH CO.,LTD" +34FE9E,60D51B,E817FC o="Fujitsu Limited" +34FEC5 o="Shenzhen Sunwoda intelligent hardware Co.,Ltd" 380118 o="ULVAC,Inc." 380197 o="TSST Global,Inc" +3802E3 o="YICHEN (SHENZHEN) TECHNOLOGY CO.,LTD" 380546 o="Foctek Photonics, Inc." 3805AC o="Piller Group GmbH" 3806B4 o="A.D.C. GmbH" @@ -12651,23 +13180,30 @@ 3808FD o="Silca Spa" 3809A4 o="Firefly Integrations" 380A0A o="Sky-City Communication and Electronics Limited Company" +380A4F o="PRACHI ENTERPRISES" 380AAB o="Formlabs" 380E7B o="V.P.S. Thai Co., Ltd" 380FE4 o="Dedicated Network Partners Oy" +38127B o="Crenet Labs Co., Ltd." +38141B o="Secure Letter Inc." 381730 o="Ulrich Lippert GmbH & Co KG" 381766 o="PROMZAKAZ LTD." -38184C,94DB56 o="Sony Home Entertainment&Sound Products Inc" 381C23 o="Hilan Technology CO.,LTD" 381C4A,48E6C0 o="SIMCom Wireless Solutions Co.,Ltd." 381D14 o="Skydio Inc." +381EC7,E8CBED o="Chipsea Technologies(Shenzhen) Corp." 3820A8,6854C1 o="ColorTokens, Inc." 382187 o="Midea Group Co., Ltd." +382228,4C8237,603FFB,AC5C80,BC9D37,BCF212,C0A3C7,C4224E,D0AB4A o="Telink Micro LLC" 38262B o="UTran Technology" 3826CD o="ANDTEK" 3828EA o="Fujian Netcom Technology Co., LTD" 3829DD o="ONvocal Inc" 382A19 o="Technica Engineering GmbH" +382A8B o="nFore Technology Co., Ltd." +382A8C,503A0F,6CB077,807484 o="ALL Winner (Hong Kong) Limited" 382B78 o="ECO PLUGS ENTERPRISE CO., LTD" +38315A o="Rinnai" 3831AC o="WEG" 383B26,84C2E4 o="Jiangsu Qinheng Co., Ltd." 383C9C o="Fujian Newland Payment Technology Co.,Ltd." @@ -12678,94 +13214,120 @@ 3843E5 o="Grotech Inc" 38454C o="Light Labs, Inc." 38458C o="MyCloud Technology corporation" +384712,80AA1C o="Luxottica Tristar (Dongguan) Optical Co.,Ltd" 384B5B o="ZTRON TECHNOLOGY LIMITED" 384B76 o="AIRTAME ApS" +385319 o="34ED LLC DBA Centegix" 385610 o="CANDY HOUSE, Inc." 3856B5 o="Peerbridge Health Inc" 38580C o="Panaccess Systems GmbH" 3859F8 o="MindMade Sp. z o.o." 385AA8 o="Beijing Zhongdun Security Technology Development Co." 385FC3 o="Yu Jeong System, Co.Ltd" +3861A5 o="Grabango Co" 3863F6 o="3NOD MULTIMEDIA(SHENZHEN)CO.,LTD" 386645 o="OOSIC Technology CO.,Ltd" 386793 o="Asia Optical Co., Inc." -3868A4,AC1E92,D0D003 o="Samsung Electronics Co.,LTD" 386C9B o="Ivy Biomedical" 386E21 o="Wasion Group Ltd." +387605 o="Inogeni" 3876CA o="Shenzhen Smart Intelligent Technology Co.Ltd" 3876D1 o="Euronda SpA" +3877CD o="KOKUSAI ELECTRIC CORPORATION" 387B47 o="AKELA, Inc." 388602 o="Flexoptix GmbH" 3889DC o="Opticon Sensors Europe B.V." +388A21,6CAFAB,7CD9F4 o="UAB %Teltonika Telematics%" 388AB7 o="ITC Networks" 388E7A o="AUTOIT" 388EE7 o="Fanhattan LLC" 3891FB o="Xenox Holding BV" -3894E0,7CA96B o="Syrotech Networks. Ltd." -389592 o="Beijing Tendyron Corporation" +389201,5408D3,64A40E,70378E,8CBE6F,981E89,AC50EE,D05BCB,F0016E o="Tianyi Telecom Terminals Company Limited" +38922E o="ArrayComm" +3894E0,5447E8,7CA96B o="Syrotech Networks. Ltd." 3898D8 o="MERITECH CO.,LTD" 389F5A o="C-Kur TV Inc." 389F83 o="OTN Systems N.V." 38A53C o="COMECER Netherlands" 38A5B6 o="SHENZHEN MEGMEET ELECTRICAL CO.,LTD" -38A851 o="Moog, Ing" +38A851 o="Quickset Defense Technologies, LLC" 38A86B o="Orga BV" 38A95F o="Actifio Inc" +38A9EA o="HK DAPU ELECTRONIC TECHNOLOGY CO., LIMITED" +38AB16 o="NPO RTT LLC" 38AC3D o="Nephos Inc" +38ACDD o="Valenco GmbH" +38AFD0 o="Nevro" 38B12D o="Sonotronic Nagel GmbH" -38B4D3,C8D778 o="BSH Hausgeraete GmbH" +38B4D3,745D43,C8D778 o="BSH Hausgeraete GmbH" 38B5BD o="E.G.O. Elektro-Ger" +38B5D3 o="SecuWorks" 38B74D o="Fijowave Limited" 38BB23 o="OzVision America LLC" 38BC1A,683E34,90F052 o="MEIZU Technology Co., Ltd." +38BC61 o="Starkoff Co., Ltd." +38BEAB,44291E,847AB6,88287D,9C1C37,A4EF15,B4FBE3,F4B19C o="AltoBeam (China) Inc." 38BF2F o="Espec Corp." 38C2BA o="CCTV NEOTECH" 38C4E8 o="NSS Sp. z o.o." 38C70A o="WiFiSong" 38C7BA o="CS Services Co.,Ltd." 38C9A9 o="SMART High Reliability Solutions, Inc." -38CA73,408C4C,50A132,B899AE o="Shenzhen MiaoMing Intelligent Technology Co.,Ltd" 38CA97 o="Contour Design LLC" 38CD07 o="Beijing FaceCam Technology Co., Ltd." 38D135 o="EasyIO Corporation Sdn. Bhd." 38D620 o="Limidea Concept Pte. Ltd." +38D6E0 o="TOPDON TECHNOLOGY Co.,Ltd." 38D7CA o="7HUGS LABS" 38D9A5 o="Mikotek Information Inc." 38DBBB o="Sunbow Telecom Co., Ltd." +38DE35 o="GUANGZHOU YUANDIANHE COMMUNICATION TECHNOLOGY CO.,LTD" 38DE60 o="Mohlenhoff GmbH" +38E054 o="Security Design, Inc." 38E26E o="ShenZhen Sweet Rain Electronics Co.,Ltd." +38E2CA o="Katun Corporation" 38E8DF o="b gmbh medien + datenbanken" 38E8EE o="Nanjing Youkuo Electric Technology Co., Ltd" 38E98C o="Reco S.p.A." 38EC11 o="Novatek Microelectronics Corp." 38EE9D o="Anedo Ltd." -38EFE3,B40016 o="INGENICO TERMINALS SAS" 38F098 o="Vapor Stone Rail Systems" -38F0C8 o="Mevo Inc." +38F0BB o="CompuSoft A/S" +38F0C8,4473D6,940230,C8DB26 o="Logitech" 38F135 o="SensorTec-Canada" -38F32E,5C443E,D08A55 o="Skullcandy" +38F18F,F01628 o="Technicolor (China) Technology Co., Ltd." +38F32E,5C443E,60C5E6,880894,8C0DD9,98672E,D08A55,E88F16 o="Skullcandy" 38F33F o="TATSUNO CORPORATION" +38F3FB o="Asperiq" +38F45E o="H1-Radio co.,ltd" 38F554 o="HISENSE ELECTRIC CO.,LTD" 38F557 o="JOLATA, INC." 38F597 o="home2net GmbH" 38F601 o="Solid State Storage Technology Corporation" +38F6ED o="EVK DI Kerschhaggl GmbH" 38F708 o="National Resource Management, Inc." 38F7B2 o="SEOJUN ELECTRIC" 38F8B7 o="V2COM PARTICIPACOES S.A." 38F8CA o="OWIN Inc." +38FBA0 o="Shenzhen Baseus Technology CoLtd" 38FEC5 o="Ellips B.V." +38FF13 o="Joint Stock Company %Research Instinite %Masshtab%" 3C02B1 o="Creation Technologies LP" 3C04BF o="PRAVIS SYSTEMS Co.Ltd.," 3C05AB o="Product Creation Studio" +3C0664 o="Beijing Leagrid Technology Co.,Ltd." 3C081E o="Beijing Yupont Electric Power Technology Co.,Ltd" 3C096D o="Powerhouse Dynamics" +3C0B4F,ACBAC0,B8876E o="Intertech Services AG" 3C0C48 o="Servergy, Inc." 3C0C7D o="Tiny Mesh AS" +3C0D2C o="Liquid-Markets GmbH" 3C0FC1 o="KBC Networks" 3C1040 o="daesung network" 3C106F o="ALBAHITH TECHNOLOGIES" 3C10E6 o="PHAZR Inc." 3C11B2 o="Fraunhofer FIT" +3C1512 o="Shenzhen Huanhu Technology Co.,Ltd" 3C15EA o="TESCOM CO., LTD." 3C18A0,606D3C o="Luxshare Precision Industry Company Limited" 3C1915 o="GFI Chrono Time" @@ -12777,17 +13339,21 @@ 3C1E13 o="HANGZHOU SUNRISE TECHNOLOGY CO., LTD" 3C26D5 o="Sotera Wireless" 3C2763 o="SLE quality engineering GmbH & Co. KG" -3C28A6 o="Alcatel-Lucent Enterprise (China)" -3C2AF4,B42200 o="Brother Industries, LTD." +3C2AB3 o="Telesystem communications Pte Ltd" +3C2AF4,94DDF8,B07C8E,B42200 o="Brother Industries, LTD." 3C2C94 o="杭州德澜科技有限公司(HangZhou Delan Technology Co.,Ltd)" 3C2F3A o="SFORZATO Corp." 3C300C o="Dewar Electronics Pty Ltd" -3C3178 o="Qolsys Inc." 3C3556 o="Cognitec Systems GmbH" 3C3888 o="ConnectQuest, llc" +3C39A8,A4AB39 o="Shenzhen Taichi Technology Limited" 3C39C3 o="JW Electronics Co., Ltd." +3C3B4D o="Toyo Seisakusho Kaisha, Limited" 3C3F51 o="2CRSI" +3C4015 o="12mm Health Technology (Hainan) Co., Ltd." 3C404F o="GUANGDONG PISEN ELECTRONICS CO.,LTD" +3C450B o="Sentry Equipment Corp." +3C4645,F8C4F3 o="Shanghai Infinity Wireless Technologies Co.,Ltd." 3C479B o="Theissen Training Systems, Inc." 3C4937 o="ASSMANN Electronic GmbH" 3C4C69 o="Infinity System S.L." @@ -12800,17 +13366,22 @@ 3C6278 o="SHENZHEN JETNET TECHNOLOGY CO.,LTD." 3C6716 o="Lily Robotics" 3C672C o="Sciovid Inc." +3C69D1 o="ADC Automotive Distance Control System GmbH" 3C6A7D o="Niigata Power Systems Co., Ltd." 3C6A9D o="Dexatek Technology LTD." +3C6D66,48B02D,4CBB47,AC3AE2 o="NVIDIA Corporation" 3C6E63 o="Mitron OY" 3C6F45 o="Fiberpro Inc." 3C6FEA o="Panasonic India Pvt. Ltd." 3C6FF7 o="EnTek Systems, Inc." 3C7059 o="MakerBot Industries" 3C7873 o="Airsonics" -3C7F6F,7C240C,90ADFC o="Telechips, Inc." +3C792B o="Dongguan Auklink TechnologyCo.,Ltd" +3C7AC4 o="Chemtronics" +3C7F6F,68418F,707FF2,7C240C,90ADFC,B08B9E,B4D286 o="Telechips, Inc." 3C806B o="Hunan Voc Acoustics Technology Co., Ltd." 3C80AA o="Ransnet Singapore Pte Ltd" +3C8129 o="Inheco Industrial Heating and Cooling GmbH" 3C831E o="CKD Corporation" 3C83B5 o="Advance Vision Electronics Co. Ltd." 3C86A8 o="Sangshin elecom .co,, LTD" @@ -12823,70 +13394,98 @@ 3C912B o="Vexata Inc" 3C9174 o="ALONG COMMUNICATION TECHNOLOGY" 3C92DC o="Octopod Technology Co. Ltd." -3C970E,482AE3,54EE75,94DF4E o="Wistron InfoComm(Kunshan)Co.,Ltd." +3C970E,482AE3,54EE75,94DF4E,F4A80D o="Wistron InfoComm(Kunshan)Co.,Ltd." +3C9722,742A8A,7866F3,B81743,C82B6B,E461F4,F8ABE5 o="shenzhen worldelite electronics co., LTD" 3C977E o="IPS Technology Limited" 3C98BF o="Quest Controls, Inc." +3C996D o="Marelli Europe s.p.a." +3C998C o="Houwa System Design Corp." 3C99F7 o="Lansentechnology AB" 3C9F81 o="Shenzhen CATIC Bit Communications Technology Co.,Ltd" +3C9FC3,80615F o="Beijing Sinead Technology Co., Ltd." +3C9FCD,B47748 o="Shenzhen Neoway Technology Co.,Ltd." +3CA070,70AD43,74AB93 o="Blink by Amazon" 3CA315 o="Bless Information & Communications Co., Ltd" 3CA31A o="Oilfind International LLC" +3CA8ED o="smart light technology" 3CAA3F o="iKey, Ltd." 3CAE69 o="ESA Elektroschaltanlagen Grimma GmbH" +3CB07E o="Arounds Intelligent Equipment Co., Ltd." 3CB17F o="Wattwatchers Pty Ld" +3CB43D o="SZ Tenveo video technology co., Ltd" 3CB53D o="HUNAN GOKE MICROELECTRONICS CO.,LTD" +3CB6E7 o="Handheld Scientific, Inc." 3CB72B o="PLUMgrid Inc" 3CB792 o="Hitachi Maxell, Ltd., Optronics Division" +3CB8D6 o="Bluebank Communication Technology Co.,Ltd." 3CB9A6 o="Belden Deutschland GmbH" 3CBB73,40C81F o="Shenzhen Xinguodu Technology Co., Ltd." -3CBD3E,6C0DC4,8C5AF8,C82832,D45EEC,E0B655,E4DB6D,ECFA5C o="Beijing Xiaomi Electronics Co., Ltd." 3CBDD8,3CCD93,9893CC,C041F6,CC2D8C,E85B5B o="LG ELECTRONICS INC" 3CC079 o="Shenzhen One-Nine Intelligent Electronic Science and Technology Co., Ltd" 3CC0C6 o="d&b audiotechnik GmbH" 3CC12C o="AES Corporation" 3CC1F6 o="Melange Systems Pvt. Ltd." 3CC2E1 o="XINHUA CONTROL ENGINEERING CO.,LTD" +3CC786 o="DONGGUAN HUARONG COMMUNICATION TECHNOLOGIES CO.,LTD." 3CC99E o="Huiyang Technology Co., Ltd" 3CCA87 o="Iders Incorporated" +3CCB4D o="Avikus Co., Ltd" 3CCD5A o="Technische Alternative GmbH" +3CCD73 o="Nebula Electronic Technology Corporation" +3CCE0D o="Shenzhen juduoping Technology Co.,Ltd" 3CCE15 o="Mercedes-Benz USA, LLC" 3CCF5B,580454 o="ICOMM HK LIMITED" +3CCFB4,406234,4CA0D4,C419D1,CC7D5B,CCACFE,D80BCB,D85F77 o="Telink Semiconductor (Shanghai) Co., Ltd." 3CD16E o="Telepower Communication Co., Ltd" +3CD1C9 o="Groupe SEB" 3CD4D6 o="WirelessWERX, Inc" 3CD7DA o="SK Mtek microelectronics(shenzhen)limited" 3CD9CE o="Eclipse WiFi" 3CDA6D o="Tiandy Technologies CO.,LTD" 3CDD89 o="SOMO HOLDINGS & TECH. CO.,LTD." +3CE038 o="Omnifi Inc." 3CE5B4 o="KIDASEN INDUSTRIA E COMERCIO DE ANTENAS LTDA" 3CE624 o="LG Display" 3CEAF9 o="JUBIXCOLTD" 3CEAFB o="NSE AG" +3CF341 o="Hosenso GmbH & Co. KG" 3CF392 o="Virtualtek. Co. Ltd" 3CF4F9 o="Moda-InnoChips" 3CF52C o="DSPECIALISTS GmbH" 3CF748 o="Shenzhen Linsn Technology Development Co.,Ltd" +3CF7D1 o="OMRON Corporation" 3CFB96 o="Emcraft Systems LLC" 4000E0 o="Derek(Shaoguan)Limited" 400107 o="Arista Corp" 40040C o="A&T" 400589 o="T-Mobile, USA" 4007C0 o="Railtec Systems GmbH" +400AE7,68A40E,942770,E467A6 o="BSH Hausgeräte GmbH" 400E67 o="Tremol Ltd." +4010ED,4439AA,A0D42D o="G.Tech Technology Ltd." 4011DC o="Sonance" 4012E4 o="Compass-EOS" 4013D9 o="Global ES" 401597 o="Protect America, Inc." 4016FA o="EKM Metering" 4017E2 o="INTAI TECHNOLOGY CORP." +4017F6 o="TKH SECURITY,S.L.U." 401D59 o="Biometric Associates, LP" 4022ED o="Digital Projection Ltd" +402508 o="Highway 9 Networks, Inc." +40268E o="Shenzhen Photon Leap Technology Co., Ltd." 40270B o="Mobileeco Co., Ltd" 402814 o="RFI Engineering" 402B69 o="Kumho Electric Inc." +402F51 o="Maxtek Optoelectronics Ltd" 403067 o="Conlog (Pty) Ltd" +40311B o="Genbyte Technology Inc." +40329D o="Union Image Co.,Ltd" 40336C o="Godrej & Boyce Mfg. co. ltd" +403668 o="E&B TELECOM" 4037AD o="Macro Image Technology, Inc." 404022,404028,A43111 o="ZIV" -40406B o="Icomera" +40406B-40406C o="Icomera" 404229 o="Layer3TV, Inc" 4045DA o="Spreadtrum Communications (Shanghai) Co., Ltd." 40476A o="Astro Gaming" @@ -12903,110 +13502,146 @@ 40562D o="Smartron India Pvt ltd" 405662 o="GuoTengShengHua Electronics LTD." 405A9B o="ANOVO" +405ADD,D0C0BF,FC1928 o="Actions Microelectronics" +405ECF o="Esconet Technologies Limited" 405EE1 o="Shenzhen H&T Intelligent Control Co.,Ltd." 40605A o="Hawkeye Tech Co. Ltd" 406186 o="MICRO-STAR INT'L CO.,LTD" 40618E o="Stella-Green Co" 406231 o="GIFA" -406234,C419D1,D80BCB,D85F77 o="Telink Semiconductor (Shanghai) Co., Ltd." 4062B6 o="Tele system communication" +4062EE,4CBB58,645A04,907F61,B0C090 o="Chicony Electronics Co., Ltd." +4064DC o="X-speed lnformation Technology Co.,Ltd" 40667A o="mediola - connected living AG" 406826 o="Thales UK Limited" 406A8E o="Hangzhou Puwell OE Tech Ltd." +406E0F o="SKYASTAR TECHNOLOGLES(ZHUHAI) LTD" 40704A o="Power Idea Technology Limited" 407074 o="Life Technology (China) Co., Ltd" 407496 o="aFUN TECHNOLOGY INC." 407875 o="IMBEL - Industria de Material Belico do Brasil" 407B1B o="Mettle Networks Inc." 407FE0 o="Glory Star Technics (ShenZhen) Limited" -408256 o="Continental Automotive GmbH" +408256,442063,E41E33 o="AUMOVIO Germany GmbH" +40827B o="STMicroelectronics Rousset SAS" 408493 o="Clavister AB" +408556,E41226 o="AUMOVIO Technologies Romania S.R.L." 40862E o="JDM MOBILE INTERNET SOLUTION CO., LTD." 4088E0 o="Beijing Ereneben Information Technology Limited Shenzhen Branch" +4089A8 o="WiredIQ, LLC" 408A9A o="TITENG CO., Ltd." 408BF6,5CAD76 o="Shenzhen TCL New Technology Co., Ltd" +408F9A o="KanEL Sweden AB" 409505 o="ACOINFO TECHNOLOGY CO.,LTD" 409558,40987B o="Aisino Corporation" 4095BD o="NTmore.Co.,Ltd" 4097D1 o="BK Electronics cc" 40984C o="Casacom Solutions AG" +4099E3 o="Guangzhou Mudi Information Technology Co., Ltd" +4099F6 o="Telink Semiconductor(Shanghai) Co.,Ltd" 409B0D o="Shenzhen Yourf Kwan Industrial Co., Ltd" +409CA6 o="Curvalux" 409F87 o="Jide Technology (Hong Kong) Limited" 409FC7 o="BAEKCHUN I&C Co., Ltd." +40A63D o="SignalFire Telemetry" 40A6A4 o="PassivSystems Ltd" 40A93F o="Pivotal Commware, Inc." 40AC8D o="Data Management, Inc." +40B0A1 o="VALCOM CO.,LTD." 40B3CD o="Chiyoda Electronics Co.,Ltd." 40B3FC o="Logital Co. Limited" 40B688 o="LEGIC Identsystems AG" 40B6B1 o="SUNGSAM CO,.Ltd" +40B8C2 o="OSMOZIS" +40BB56 o="TeraNXT Global India Pvt Ltd." 40BC73 o="Cronoplast S.L." 40BC8B o="itelio GmbH" 40BD9E o="Physio-Control, Inc" +40BEEE o="Shenzhen Yunding Information Technology Co.,Ltd" 40BF17 o="Digistar Telecom. SA" +40C0EE o="365mesh Pty Ltd" 40C245 o="Shenzhen Hexicom Technology Co., Ltd." 40C3C6 o="SnapRoute" +40C48C o="N-iTUS CO.,LTD." 40C4D6 o="ChongQing Camyu Technology Development Co.,Ltd." 40C62A o="Shanghai Jing Ren Electronic Technology Co., Ltd." 40C7C9 o="Naviit Inc." -40C8CB o="AM Telecom co., Ltd." +40C8CB,60567D o="AM Telecom co., Ltd." +40CA63,88571D o="Seongji Industry Company" 40CD3A o="Z3 Technology" 40D357 o="Ison Technology Co., Ltd." 40D40E o="Biodata Ltd" +40D4BD o="SK Networks Service CO., LTD." 40D559 o="MICRO S.E.R.I." +40D563 o="HANA Electronics" 40D63C o="Equitech Industrial(DongGuan)Co.,Ltd" 40DC9D o="HAJEN" 40DDD1 o="Beautiful Card Corporation" +40DE17 o="Shenzhen Lanfeng Times Industrial Co.,Ltd." 40DF02 o="LINE BIZ Plus" +40E11C o="shenzhen Cloud High Communication Technology Co.,Ltd" 40E730 o="DEY Storage Systems, Inc." 40E793 o="Shenzhen Siviton Technology Co.,Ltd" 40EACE o="FOUNDER BROADBAND NETWORK SERVICE CO.,LTD" 40F14C o="ISE Europe SPRL" -40F21C o="DASAN Zhone Solutions" 40F413 o="Rubezh" 40F52E o="Leica Microsystems (Schweiz) AG" 40F9D5 o="Tecore Networks" 40FA7F o="Preh Car Connect GmbH" 40FE0D o="MAXIO" +40FF40 o="GloquadTech" +4405E8 o="twareLAB" 4409B8 o="Salcomp (Shenzhen) CO., LTD." 440CFD o="NetMan Co., Ltd." 4410FE o="Huizhou Foryou General Electronics Co., Ltd." 4411C2 o="Telegartner Karl Gartner GmbH" 441319 o="WKK TECHNOLOGY LTD." 441441 o="AudioControl Inc." +441690 o="Wuxi Ranke Technology Co., Ltd." 441847 o="HUNAN SCROWN ELECTRONIC INFORMATION TECH.CO.,LTD" 44184F o="Fitview" +441A4C o="xFusion Digital Technologies Co.,Ltd." +441AAC o="Elektrik Uretim AS EOS" 441E91 o="ARVIDA Intelligent Electronics Technology Co.,Ltd." 4422F1 o="S.FAC, INC" 4423AA o="Farmage Co., Ltd." 4425BB o="Bamboo Entertainment Corporation" -4427F3 o="70mai Co.,Ltd." +4427F3,B859C8 o="70mai Co.,Ltd." 4428A3 o="Jiangsu fulian Communication Technology Co., Ltd." 442938 o="NietZsche enterprise Co.Ltd." 442AFF o="E3 Technology, Inc." +4432C2 o="GOAL Co., Ltd." 44348F o="MXT INDUSTRIAL LTDA" -44356F o="Neterix" +44356F o="Neterix Ltd" +4435B9 o="NetComm Wireless Pty Ltd" +443659,44D77E,BC903A,CCDD58,FCD6BD o="Robert Bosch GmbH" +44365D o="Shenzhen HippStor Technology Co., Ltd" 443708,DC4D23 o="MRV Comunications" 443719 o="2 Save Energy Ltd" 44376F o="Young Electric Sign Co" 443839 o="Cumulus Networks, inc" 443C88 o="FICOSA MAROC INTERNATIONAL" -443C9C o="Pintsch Tiefenbach GmbH" +443C9C o="Pintsch GmbH" 443D21 o="Nuvolt" 443E07 o="Electrolux" 443EB2 o="DEOTRON Co., LTD." 44422F o="TESTOP CO.,LTD." 444450 o="OttoQ" +44456F o="SHENZHEN ONEGA TECHNOLOGY CO.,LTD" 444687,5885A2,5885E9,705E55,9C6B72,D028BA o="Realme Chongqing MobileTelecommunications Corp Ltd" +444963 o="Woven By Toyota U.S., Inc." 444A65 o="Silverflare Ltd." 444AB0 o="Zhejiang Moorgen Intelligence Technology Co., Ltd" +444AD6 o="Shenzhen Rinocloud Technology Co.,Ltd." 444B5D o="GE Healthcare" 444F5E o="Pan Studios Co.,Ltd." 4451DB o="Raytheon BBN Technologies" 4454C0 o="Thompson Aerospace" 44568D o="PNC Technologies Co., Ltd." 4456B7 o="Spawn Labs, Inc" +445925 o="Square Inc." 44599F o="Criticare Systems, Inc" +445ADF o="MIKAMI & CO., LTD." 445D5E o="SHENZHEN Coolkit Technology CO.,LTD" 445ECD o="Razer Inc" 445EF3 o="Tonalite Holding B.V." @@ -13016,16 +13651,20 @@ 44619C o="FONsystem co. ltd." 446246 o="Comat AG" 44656A o="Mega Video Electronic(HK) Industry Co., Ltd" +44658A o="Dukelana LLC" +4465E0 o="Merlion Consulting Services (Shenzhen) Co., Ltd" 44666E o="IP-LINE" +446752 o="Wistron INFOCOMM (Zhongshan) CORPORATION" 446755 o="Orbit Irrigation" -44680C,68A8E1,884A70 o="Wacom Co.,Ltd." 4468AB o="JUIN COMPANY, LIMITED" 446C24 o="Reallin Electronic Co.,Ltd" +446D05 o="NoTraffic" +446FF8,C0AFF2,C8FF77 o="Dyson Limited" 44700B o="IFFU" 447098 o="MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED" -4473D6,C8DB26 o="Logitech" 447BC4 o="DualShine Technology(SZ)Co.,Ltd" 447C7F o="Innolight Technology Corporation" +447CAC o="Invictus-AV" 447DA5 o="VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD" 447E76 o="Trek Technology (S) Pte Ltd" 447E95 o="Alpha and Omega, Inc" @@ -13036,17 +13675,20 @@ 4488CB o="Camco Technologies NV" 448A5B o="Micro-Star INT'L CO., LTD." 448C52 o="KTIS CO., Ltd" +448CAB o="Beijing Flitlink Vientiane Technology Co., LTD" 448DBF o="Rhino Mobility LLC" 448E12 o="DT Research, Inc." 448E81 o="VIG" 4491DB,902181 o="Shanghai Huaqin Telecom Technology Co.,Ltd" +44938D o="Innolux Corporation" +44953B o="RLTech India Private Limited" 4495FA o="Qingdao Santong Digital Technology Co.Ltd" 44962B o="Aidon Oy" 449B78 o="The Now Factory" +449BC6 o="EOSS s.r.l." 449CB5 o="Alcomp, Inc" 449F7F o="DataCore Software Corporation" 44A466 o="GROUPE LDLC" -44A54E,9C6937,C49886 o="Qorvo International Pte. Ltd." 44A689 o="PROMAX ELECTRONICA SA" 44A6E5 o="THINKING TECHNOLOGY CO.,LTD" 44A8C2 o="SEWOO TECH CO., LTD" @@ -13055,9 +13697,11 @@ 44AD19 o="XINGFEI (H.K)LIMITED" 44B382 o="Kuang-chi Institute of Advanced Technology" 44B412 o="SIUS AG" +44B423 o="HANWHA VISION VIETNAM COMPANY LIMITED" 44B433 o="tide.co.,ltd" -44B462,C8C64A,F8D478 o="Flextronics Tech.(Ind) Pvt Ltd" +44B59C o="Tenet Networks Private Limited" 44B994 o="Douglas Lighting Controls" +44BDDE o="BHTC GmbH" 44BFE3 o="Shenzhen Longtech Electronics Co.,Ltd" 44C233 o="Guangzhou Comet Technology Development Co.Ltd" 44C306 o="SIFROM Inc." @@ -13066,13 +13710,18 @@ 44C56F o="NGN Easy Satfinder (Tianjin) Electronic Co., Ltd" 44C69B o="Wuhan Feng Tian Information Network CO.,LTD" 44C9A2 o="Greenwald Industries" +44CE3A o="Jiangsu Huacun Electronic Technology Co., Ltd." 44D15E o="Shanghai Kingto Information Technology Ltd" -44D1FA o="Shenzhen Yunlink Technology Co., Ltd" +44D1FA,7C273C o="Shenzhen Yunlink Technology Co., Ltd" +44D267 o="Snorble" 44D2CA o="Anvia TV Oy" 44D5A5 o="AddOn Computer" 44D63D o="Talari Networks" 44D6E1 o="Snuza International Pty. Ltd." +44D980 o="EVERYBOT INC." +44DB60 o="Nanjing Baihezhengliu Technology Co., Ltd" 44DCCB o="SEMINDIA SYSTEMS PVT LTD" +44E2F1 o="NewRadio Technologies Co. , Ltd." 44E49A o="OMNITRONICS PTY LTD" 44E8A5 o="Myreka Technologies Sdn. Bhd." 44EA4B o="Actlas Inc." @@ -13083,11 +13732,13 @@ 44F4E7 o="Cohesity Inc" 44F849 o="Union Pacific Railroad" 44FDA3 o="Everysight LTD." -4801C5,4C4FEE,5C17CF,64A2F9,94652D,9809CF,AC5FEA,E44122 o="OnePlus Technology (Shenzhen) Co., Ltd" +48007D o="DTS ELEKTRONIK SAN. TIC. LTD. STI." 48022A o="B-Link Electronic Limited" 480362 o="DESAY ELECTRONICS(HUIZHOU)CO.,LTD" 48049F o="ELECOM CO., LTD" +480560,509903,78C4FA,80F3EF,8457F7,882508,94F929,B417A8,C0DD8A,CCA174,D0B3C2,D4D659 o="Meta Platforms, Inc." 48066A o="Tempered Networks, Inc." +480E13,5CC336,683943,CCE536 o="ittim" 481063 o="NTT Innovation Institute, Inc." 481249 o="Luxcom Technologies Inc." 481693,48C58D o="Lear Corporation GmbH" @@ -13096,52 +13747,69 @@ 4818FA o="Nocsys" 481A84 o="Pointer Telocation Ltd" 481BD2 o="Intron Scientific co., ltd." +481F2D o="Shenzhen Jie Shi Lian Industrial Co.,LTD" 482335,80EACA o="Dialog Semiconductor Hellas SA" +482567 o="Poly" +48264C o="BSH Electrical Appliances (Jiangsu) Co., Ltd." 4826E8 o="Tek-Air Systems, Inc." 482759 o="Levven Electronics Ltd." 482CEA o="Motorola Inc Business Light Radios" +482D63 o="Wavarts Technologies Co., Ltd" 4833DD o="ZENNIO AVANCE Y TECNOLOGIA, S.L." 48343D o="IEP GmbH" 48352E o="Shenzhen Wolck Network Product Co.,LTD" +4838B6 o="Auhui Taoyun Technology Co., Ltd" 483974 o="Proware Technologies Co., Ltd." 483D32 o="Syscor Controls & Automation" +4845CF,58F85C,F4E578 o="LLC Proizvodstvennaya Kompania %TransService%" +48468D o="Zepcam B.V." 4846F1 o="Uros Oy" 484A30 o="George Robotics Limited" +4851D0 o="Jiangsu Xinsheng Intelligent Technology Co., Ltd." 485261 o="SOREEL" 485415 o="NET RULES TECNOLOGIA EIRELI" -48555C,D84DB9 o="Wu Qi Technologies,Inc." 4857DD,A40E2B o="Facebook Inc" 485A3F o="WISOL" +485A67 o="Shaanxi Ruixun Electronic Information Technology Co., Ltd" 485DEB o="Just Add Power" 4861A3 o="Concern %Axion% JSC" +486264,A41162,FC9C98 o="Arlo Technology" 486834 o="Silicon Motion, Inc." 486B91 o="Fleetwood Group Inc." 486E73 o="Pica8, Inc." 486EFB o="Davit System Technology Co., Ltd." +486F33 o="KYUNGWOO.SYSTEM, INC." 486FD2 o="StorSimple Inc" 487119 o="SGB GROUP LTD." 487583 o="Intellion AG" +487696 o="Huaan Zhongyun Co., Ltd." 487AF6 o="NCS ELECTRICAL SDN BHD" 487B5E o="SMT TELECOMM HK" +48814E o="E&M SOLUTION CO,.Ltd" 488244 o="Life Fitness / Div. of Brunswick" 4882F2 o="Appel Elektronik GmbH" 48872D o="SHEN ZHEN DA XIA LONG QUE TECHNOLOGY CO.,LTD" 488803 o="ManTechnology Inc." 48881E o="EthoSwitch LLC" 488E42 o="DIGALOG GmbH" +488EB7,609532,78B8D6,88BCAC,9075DE,94FB29,C81CFE o="Zebra Technologies Inc." +488F4C,4CA38F,DC8403,F0A882 o="shenzhen trolink Technology Co.,Ltd" 489153 o="Weinmann Geräte für Medizin GmbH + Co. KG" 4891F6 o="Shenzhen Reach software technology CO.,LTD" +4893DC o="UNIWAY INFOCOM PVT LTD" 489A42 o="Technomate Ltd" 489BE2 o="SCI Innovations Ltd" 489D18 o="Flashbay Limited" 48A22D o="Shenzhen Huaxuchang Telecom Technology Co.,Ltd" 48A2B7 o="Kodofon JSC" 48A2B8 o="Chengdu Vision-Zenith Tech.Co,.Ltd" -48A493,AC3FA4 o="TAIYO YUDEN CO.,LTD" +48A48C o="Shanghai Zenchant Electornics Co.,LTD" +48A493,8CD54A,AC3FA4 o="TAIYO YUDEN CO.,LTD" 48A6D2 o="GJsun Optical Science and Tech Co.,Ltd." +48A964 o="APEXSHA SMARTTECH PRIVATE LIMITED" 48AA5D o="Store Electronic Systems" -48B02D o="NVIDIA Corporation" 48B253 o="Marketaxess Corporation" +48B313 o="Idesco Oy" 48B5A7 o="Glory Horse Industries Ltd." 48B620 o="ROLI Ltd." 48B8DE o="HOMEWINS TECHNOLOGY CO.,LTD." @@ -13150,14 +13818,18 @@ 48BCA6 o="​ASUNG TECHNO CO.,Ltd" 48BE2D o="Symanitron" 48BF74 o="Baicells Technologies Co.,LTD" +48C030 o="Kogniza Inc." 48C049 o="Broad Telecom SA" 48C093 o="Xirrus, Inc." +48C35A o="LENOVO(BEIJING)CO., LTD." 48C3B0 o="Pharos Co.Ltd" 48C663 o="GTO Access Systems LLC" 48C862 o="Simo Wireless,Inc." 48C8B6 o="SysTec GmbH" 48CB6E o="Cello Electronics (UK) Ltd" +48D017 o="Telecom Infra Project" 48D18E o="Metis Communication Co.,Ltd" +48D475 o="Lampuga GmbH" 48D54C o="Jeda Networks" 48D7FF o="BLANKOM Antennentechnik GmbH" 48D845 o="Shenzhen Mainuoke Electronics Co., Ltd" @@ -13165,28 +13837,38 @@ 48D875 o="China TransInfo Technology Co., Ltd" 48D8FE o="ClarIDy Solutions, Inc." 48DA96 o="Eddy Smart Home Solutions Inc." +48DC9D o="Grandprint(Beijing) Technology Co., LTD." 48DF1C o="Wuhan NEC Fibre Optic Communications industry Co. Ltd" 48E1AF o="Vity" -48E1E9 o="Chengdu Meross Technology Co., Ltd." +48E1E9,C4E7AE o="Chengdu Meross Technology Co., Ltd." 48E3C3 o="JENOPTIK Advanced Systems GmbH" 48E695 o="Insigma Inc" +48E9CA o="creoline GmbH" 48EA63 o="Zhejiang Uniview Technologies Co., Ltd." 48EB30 o="ETERNA TECHNOLOGY, INC." +48EB65 o="Henan KunLun Technologies CO.,Ltd." 48ED80 o="daesung eltec" 48EE07 o="Silver Palm Technologies LLC" 48EE86 o="UTStarcom (China) Co.,Ltd" +48EEE2 o="ROAMWIFI TECHNOLOGY(HK) LIMITED" 48F027 o="Chengdu newifi Co.,Ltd" 48F230 o="Ubizcore Co.,LTD" 48F47D o="TechVision Holding Internation Limited" +48F8FF,DCA706,E89FEC o="CHENGDU KT ELECTRONIC HI-TECH CO.,LTD" 48F925 o="Maestronic" +48FC7C o="Shenzhen Huidu Technology Co., Ltd." 48FCB8 o="Woodstream Corporation" 48FEEA o="HOMA B.V." 4C022E o="CMR KOREA CO., LTD" 4C0289 o="LEX COMPUTECH CO., LTD" 4C068A o="Basler Electric Company" +4C06B7 o="ProDVX Europe B.V." 4C07C9 o="COMPUTER OFFICE Co.,Ltd." +4C09FA o="FRONTIER SMART TECHNOLOGIES LTD" 4C0A3D o="ADNACOM INC." +4C1154,7404F0,C0CBF1,D04E50 o="Mobiwire Mobiles (NingBo) Co., LTD" 4C1159 o="Vision Information & Communications" +4C12E8,7C7B68,B82903 o="VIETNAM POST AND TELECOMMUNICATION INDUSTRY TECHNOLOGY JOIN STOCK COMPANY" 4C1365 o="Emplus Technologies" 4C1480 o="NOREGON SYSTEMS, INC" 4C1694 o="shenzhen sibituo Technology Co., Ltd" @@ -13200,32 +13882,40 @@ 4C2C83 o="Zhejiang KaNong Network Technology Co.,Ltd." 4C2EFE o="Shenzhen Comnect Technology Co.,LTD" 4C2F9D o="ICM Controls" -4C3089 o="Thales Transportation Systems GmbH" +4C3089 o="Hitachi Rail GTS Deutschland GmbH" 4C322D o="TELEDATA NETWORKS" 4C32D9 o="M Rutty Holdings Pty. Ltd." 4C3329 o="Sweroam" 4C334E o="HIGHTECH" -4C364E o="Panasonic Corporation Connected Solutions Company" +4C364E,B8208E,BC3E0B o="Panasonic Connect Co., Ltd." 4C3909 o="HPL Electric & Power Private Limited" 4C3910 o="Newtek Electronics co., Ltd." +4C3B6C o="GARO AB" 4C3B74 o="VOGTEC(H.K.) Co., Ltd" +4C3FA7 o="uGrid Network Inc." 4C4088 o="SANSHIN ELECTRONICS CO.,LTD." 4C4576 o="China Mobile(Hangzhou) Information Technology Co.,Ltd." +4C46D1,4CD7C8,6C68A4,80F1A8,B46415 o="Guangzhou V-Solution Telecommunication Technology Co.,Ltd." 4C48DA o="Beijing Autelan Technology Co.,Ltd" 4C4B68 o="Mobile Device, Inc." -4C4D66,90C35F o="Nanjing Jiahao Technology Co., Ltd." +4C52EC o="SOLARWATT GmbH" +4C5369 o="YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd" 4C5427 o="Linepro Sp. z o.o." 4C5585 o="Hamilton Systems" 4C55B8 o="Turkcell Teknoloji" 4C55CC o="Zentri Pty Ltd" 4C56DF o="Targus US LLC" 4C5DCD o="Oy Finnish Electric Vehicle Technologies Ltd" +4C5ED3 o="Unisyue Technologies Co; LTD." 4C60D5 o="airPointe of New Hampshire" 4C6255 o="SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V." -4C63EB,C0BAE6 o="Application Solutions (Electronics and Vision) Ltd" +4C627B o="SmartCow AI Technologies Taiwan Ltd." +4C63EB o="Application Solutions (Electronics and Vision) Ltd" 4C64D9 o="Guangdong Leawin Group Co., Ltd" 4C6C13 o="IoT Company Solucoes Tecnologicas Ltda" 4C6E6E o="Comnect Technology CO.,LTD" +4C70CC o="Blyott NV" +4C7167 o="PoLabs d.o.o." 4C7367 o="Genius Bytes Software Solutions GmbH" 4C73A5 o="KOVE" 4C7403,B49D0B o="BQ" @@ -13235,21 +13925,24 @@ 4C7897 o="Arrowhead Alarm Products Ltd" 4C7A48 o="Nippon Seiki (Europe) B.V." 4C804F o="Armstrong Monitoring Corp" +4C8125 o="ZOWEE TECHNOLOGY(HEYUAN)Co.,Ltd" 4C8B55 o="Grupo Digicon" 4C8ECC o="SILKAN SA" 4C90DB o="JL Audio" 4C910C o="Lanix Internacional, S.A. de C.V." 4C962D o="Fresh AB" 4C98EF o="Zeo" +4C9D22 o="ACES Co.,Ltd" +4C9E6C o="BROADEX TECHNOLOGIES CO.LTD" 4C9E80 o="KYOKKO ELECTRIC Co., Ltd." 4C9EE4 o="Hanyang Navicom Co.,Ltd." -4CA003 o="VITEC" 4CA161 o="Rain Bird Corporation" 4CA515 o="Baikal Electronics JSC" 4CA928 o="Insensi" 4CAB33 o="KST technology" 4CADA8 o="PANOPTICS CORP." -4CAE1C o="SaiNXT Technologies LLP" +4CADDF o="Công ty Cổ phần Thiết bị Công nghiệp GEIC" +4CAE1C,D01E1D o="SaiNXT Technologies LLP" 4CAE31 o="ShengHai Electronics (Shenzhen) Ltd" 4CAEEC o="Guangzhou limee technology co.,LTD" 4CB008 o="Shenzhen Gwelltimes Technology Co.,Ltd" @@ -13259,18 +13952,17 @@ 4CB4EA o="HRD (S) PTE., LTD." 4CB76D o="Novi Security" 4CB81C o="SAM Electronics GmbH" -4CB911 o="Raisecom Technology CO.,LTD" 4CB9C8 o="CONET CO., LTD." +4CB9EA,501479,ACF473 o="iRobot Corporation" 4CBAA3 o="Bison Electronics Inc." -4CBB58,645A04,907F61,B0C090 o="Chicony Electronics Co., Ltd." 4CBC42 o="Shenzhen Hangsheng Electronics Co.,Ltd." 4CBCB4 o="ABB SpA - DIN Rail" 4CC206 o="Somfy" 4CC452 o="Shang Hai Tyd. Electon Technology Ltd." 4CC602 o="Radios, Inc." 4CC681 o="Shenzhen Aisat Electronic Co., Ltd." +4CC844,CCD81F o="Maipu Communication Technology Co.,Ltd." 4CCA53 o="Skyera, Inc." -4CCC34 o="Motorola Solutions Inc." 4CD637 o="Qsono Electronics Co., Ltd" 4CD7B6 o="Helmer Scientific" 4CD9C4 o="Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd" @@ -13278,49 +13970,61 @@ 4CDD7D o="LHP Telematics LLC" 4CDF3D o="TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD" 4CE1BB o="Zhuhai HiFocus Technology Co., Ltd." -4CE2F1 o="sclak srl" +4CE2F1 o="Udino srl" 4CE5AE o="Tianjin Beebox Intelligent Technology Co.,Ltd." 4CE933 o="RailComm, LLC" 4CECEF o="Soraa, Inc." 4CEEB0 o="SHC Netzwerktechnik GmbH" +4CEFE1 o="Dynacon Sp. z o.o." 4CF02E o="Vifa Denmark A/S" 4CF19E o="Groupe Atlantic" 4CF45B o="Blue Clover Devices" 4CF5A0 o="Scalable Network Technologies Inc" 4CF737 o="SamJi Electronics Co., Ltd" -4CFBFE o="Sercomm Japan Corporation" -4CFCAA,98ED5C o="Tesla,Inc." +4CFA9A o="Shenzhen Quanxing Technology Co., Ltd" +4CFAC9 o="BWS IoT" +4CFBF4 o="Optimal Audio Ltd" +4CFC22 o="SHANGHAI HI-TECH CONTROL SYSTEM CO.,LTD." 4CFF12 o="Fuze Entertainment Co., ltd" -500084 o="Siemens Canada" +500084,F815E0 o="Siemens Canada" 50008C o="Hong Kong Telecommunications (HKT) Limited" +500401 o="TelHi Corporation" 50053D o="CyWee Group Ltd" +5009E5 o="Drimsys,Inc" +500A52 o="Huiwan Technologies Co. Ltd" 500B32 o="Foxda Technology Industrial(ShenZhen)Co.,LTD" +500B88 o="Moxa.Inc" 500E6D o="TrafficCast International" 5011EB o="SilverNet Ltd" +501365 o="Vola Networks Inc." 501408 o="AiNET" -501479 o="iRobot Corporation" 5014B5 o="Richfit Information Technology Co., Ltd" 50184C o="Platina Systems Inc." 501E2D o="StreamUnlimited Engineering GmbH" -50206B o="Emerson Climate Technologies Transportation Solutions" +50206B o="Copeland - Transportation Solutions ApS" 502267 o="PixeLINK" 50252B o="Nethra Imaging Incorporated" +5026D2 o="AVIRE Trading Limited" 5027C7 o="TECHNART Co.,Ltd" 50294D o="NANJING IOT SENSOR TECHNOLOGY CO,LTD" 502A7E o="Smart electronic GmbH" 502A8B o="Telekom Research and Development Sdn Bhd" 502B98 o="Es-tech International" -502CC6,9424B8,C03937 o="GREE ELECTRIC APPLIANCES, INC. OF ZHUHAI" 502DF4 o="Phytec Messtechnik GmbH" +502DFB o="IGShare Co., Ltd." 502ECE o="Asahi Electronics Co.,Ltd" +5030F4 o="Exascend, Inc." 5031AD o="ABB Global Industries and Services Private Limited" 5033F0 o="YICHEN (SHENZHEN) TECHNOLOGY CO.LTD" 50382F o="ASE Group Chung-Li" +5038AB o="PROVE" 503A7D o="AlphaTech PLC Int’l Co., Ltd." 503E7C o="LeiShen Intelligent System Co.Ltd" 503F56 o="Syncmold Enterprise Corp" 503F98 o="CMITECH" +504348 o="ThingsMatrix Inc." 5043B9 o="OktoInform RUS" +504594 o="Radisys" 5045F7 o="Liuhe Intelligence Technology Ltd." 5048EB o="BEIJING HAIHEJINSHENG NETWORK TECHNOLOGY CO. LTD." 504A5E,8809AF,B810D4,C816A5,C88BE8,E0C2B7 o="Masimo Corporation" @@ -13330,16 +14034,20 @@ 50502A o="Egardia" 505065 o="TAKT Corporation" 5050CE o="Hangzhou Dianyixia Communication Technology Co. Ltd." +50514F o="Netbeam Technology Limited" 5052D2 o="Hangzhou Telin Technologies Co., Limited" -5056A8 o="Jolla Ltd" +5056A8 o="Jollyboys Ltd" 505800 o="WyTec International, Inc." 50584F o="waytotec,Inc." +5058B0 o="Hunan Greatwall Computer System Co., Ltd." 505967 o="Intent Solutions Inc" 505AC6 o="GUANGDONG SUPER TELECOM CO.,LTD." +505B1D,70A56A,80F7A6,C4CD50,D05FAF,E067B3,E0E8E6 o="Shenzhen C-Data Technology Co., Ltd." 506028 o="Xirrus Inc." 5061D6 o="Indu-Sol GmbH" 506441 o="Greenlee" 506787 o="Planet Networks" +50695A o="AiFamous(shenzhen)Technology Co.,Ltd" 506B8D,B47947,E01995 o="Nutanix" 506CBE o="InnosiliconTechnology Ltd" 506E92 o="Innocent Technology Co., Ltd." @@ -13350,6 +14058,7 @@ 507691 o="Tekpea, Inc." 5076A6 o="Ecil Informatica Ind. Com. Ltda" 50795B o="Interexport Telecomunicaciones S.A." +507973 o="Inagile Electronic Technology Co.,LTD." 507D02 o="BIODIT" 5087B8 o="Nuvyyo Inc" 508A0F o="SHENZHEN FISE TECHNOLOGY HOLDING CO.,LTD." @@ -13358,52 +14067,70 @@ 508C77 o="DIRMEIER Schanktechnik GmbH &Co KG" 508D6F o="CHAHOO Limited" 50934F o="Gradual Tecnologia Ltda." +509707 o="Xiamen Paperang Technology Co.,Ltd." 509772 o="Westinghouse Digital" 509871 o="Inventum Technologies Private Limited" 5098F3 o="Rheem Australia Pty Ltd" +509A46 o="Safetrust Inc" 50A054 o="Actineon" 50A0BF o="Alba Fiber Systems Inc." 50A6E3 o="David Clark Company" 50A715 o="Aboundi, Inc." 50A9DE o="Smartcom - Bulgaria AD" +50AB29 o="Trackunit ApS" 50AB3E o="Qibixx AG" 50ABBF o="Hoseo Telecom" 50AD71 o="Tessolve Semiconductor Private Limited" 50AD92 o="NX Technologies" 50ADD5 o="Dynalec Corporation" +50AE86 o="Linkintec Co., Ltd" 50AF73 o="Shenzhen Bitland Information Technology Co., Ltd." +50B140 o="ELPROMA ELEKTRONIKA SP Z O O" 50B363 o="Digitron da Amazonia S/A" +50B3B4 o="Shenzhen Furuilian Electronic Co.,Ltd." 50B695 o="Micropoint Biotechnologies,Inc." 50B888 o="wi2be Tecnologia S/A" 50B8A2 o="ImTech Technologies LLC," 50C006 o="Carmanah Signs" +50C0F0 o="Artek Microelectronics Co.,Ltd." 50C271 o="SECURETECH INC" +50C3A2 o="nFore Technology Co.,Ltd." 50C68E o="Biwin Semiconductor (HK) Company Limted" 50C9A0 o="SKIPPER AS" 50CD32 o="NanJing Chaoran Science & Technology Co.,Ltd." 50CE75 o="Measy Electronics Co., Ltd." 50CEE3 o="Gigafirm.co.LTD" +50D065 o="ESYLUX GmbH" +50D06D o="Bird Buddy" 50D213 o="CviLux Corporation" 50D274 o="Steffes Corporation" +50D33B o="cloudnineinfo" 50D37F o="Yu Fly Mikly Way Science and Technology Co., Ltd." 50D59C o="Thai Habel Industrial Co., Ltd." 50D6D7 o="Takahata Precision" 50D753 o="CONELCOM GmbH" +50DCD0,64255E o="Observint Technologies, Inc." 50DCFC o="ECOCOM" 50DD4F o="Automation Components, Inc" +50E099 o="HangZhou Atuo Future Technology Co., Ltd" 50E0C7 o="TurControlSystme AG" +50E0F9 o="GE Vernova" 50E666 o="Shenzhen Techtion Electronics Co., Ltd." 50E971 o="Jibo, Inc." 50ED78 o="Changzhou Yongse Infotech Co.,Ltd" 50ED94 o="EGATEL SL" 50F003 o="Open Stack, Inc." +50F261 o="Photon Sail Technologies" 50F43C o="Leeo Inc" 50F61A o="Kunshan JADE Technologies co., Ltd." 50F8A5 o="eWBM Co., Ltd." +50F908 o="Wizardlab Co., Ltd." 50FAAB o="L-tek d.o.o." +50FBFF o="Franklin Technology Inc." 50FC30 o="Treehouse Labs" +50FDD5,BC102F o="SJI Industry Company" 50FEF2 o="Sify Technologies Ltd" -50FF20 o="Keenetic Limited" +50FF20,FC5ADC o="Keenetic Limited" 540237 o="Teltronic AG" 5403F5 o="EBN Technology Corp." 540496 o="Gigawave LTD" @@ -13411,15 +14138,22 @@ 540593 o="WOORI ELEC Co.,Ltd" 54068B o="Ningbo Deli Kebei Technology Co.LTD" 54098D o="deister electronic GmbH" +540A8A o="Jlztlink Industry(ShenZhen)Co.,Ltd." +540BB6,F8DC7A o="Variscite LTD" 541031 o="SMARTO" +54107B o="Guangdong Jeton International Tech Ltd." 54112F o="Sulzer Pump Solutions Finland Oy" +541159 o="Nettrix Information Industry co.LTD" 54115F o="Atamo Pty Ltd" 5414FD o="Orbbec 3D Technology International" 541B5D o="Techno-Innov" +541D61 o="YEESTOR Microelectronics Co., Ltd" 541DFB o="Freestyle Energy Ltd" 541FD5 o="Advantage Electronics" 542018 o="Tely Labs" +542097 o="TTTech Auto AG" 542160 o="Alula" +542722 o="Lacroix" 54276C o="Jiangsu Houge Technology Corp." 54278D,B87C6F o="NXP (China) Management Ltd." 542A9C o="LSY Defense, LLC." @@ -13427,48 +14161,76 @@ 542CEA o="PROTECTRON" 542F89 o="Euclid Laboratories, Inc." 543131 o="Raster Vision Ltd" +5431D4 o="TGW Mechanics GmbH" 5435DF o="Symeo GmbH" +5435E9,6447E0,E092A7 o="Feitian Technologies Co., Ltd" 54369B o="1Verge Internet Technology (Beijing) Co., Ltd." 543968 o="Edgewater Networks Inc" +543976 o="Groq" +543ADF o="Qualfiber Technology Co.,Ltd" 543B30 o="duagon AG" +543D92 o="WIRELESS-TEK TECHNOLOGY LIMITED" 54466B o="Shenzhen CZTIC Electronic Technology Co., Ltd" 544741 o="XCHENG HOLDING" 5447D3 o="TSAT AS" 54489C o="CDOUBLES ELECTRONICS CO. LTD." +5449DF,AC040B o="Peloton Interactive, Inc" 544A05 o="wenglor sensoric gmbh" 545146 o="AMG Systems Ltd." 545414 o="Digital RF Corea, Inc" 5454CF o="PROBEDIGITAL CO.,LTD" +545B86,74D7CA,B0D888,CC5763 o="Panasonic Automotive Systems Co.,Ltd" +545DD9 o="EDISTEC" 545EBD o="NL Technologies" +545FA7 o="Jibaiyou Technology Co.,Ltd." 546172 o="ZODIAC AEROSPACE SAS" 5461EA o="Zaplox AB" +546925 o="PS INODIC CO., LTD." 546AD8 o="Elster Water Metering" 546D52 o="TOPVIEW OPTRONICS CORP." +546F71 o="uAvionix Corporation" +547068 o="VTech Communications Limited" +54726E o="Daimler Truck AG" 547398 o="Toyo Electronics Corporation" 5474E6 o="Webtech Wireless" +547885 o="SHENZHEN GIEC DIGITAL CO.,LTD" 547A52 o="CTE International srl" +547D40 o="Powervision Tech Inc." 547F54,54E140 o="INGENICO" 547FA8 o="TELCO systems, s.r.o." 547FBC o="iodyne" +54808A o="PT. BIZLINK TECHNOLOGY INDONESIA" 5481AD o="Eagle Research Corporation" +5483BB o="Honda Motor Co., Ltd" 54847B o="Digital Devices GmbH" +5485C1 o="Siliconwaves Technologies Co.,Ltd" +5488FE o="Xiaoniu network technology (Shanghai) Co., Ltd." 548922 o="Zelfy Inc" -549359,6CEFC6 o="SHENZHEN TWOWING TECHNOLOGIES CO.,LTD." +5491E1 o="Vitalacy Inc." 549478 o="Silvershore Technology Partners" +5496CB,B0F5C8 o="AMPAK Technology Inc." 549A16 o="Uzushio Electric Co.,Ltd." 549A4C o="GUANGDONG HOMECARE TECHNOLOGY CO.,LTD." 549C27 o="Plasma Cloud Limited" 549D85 o="EnerAccess inc" 549FAE o="iBASE Gaming Inc" 54A04F o="t-mac Technologies Ltd" +54A104 o="OPTOWL Co.,Ltd" +54A245 o="Digisol Systems Limited" 54A31B o="Shenzhen Linkworld Technology Co,.LTD" 54A3FA o="BQT Solutions (Australia)Pty Ltd" 54A54B o="NSC Communications Siberia Ltd" +54A552 o="Shenzhen WeSing Interactive Entertainment Technology Co., Ltd" +54A7A0 o="HUNAN AIMAG INTELLIGENT TECHNOLOGY CO.,LTD" 54A9D4 o="Minibar Systems" -54AED0 o="DASAN Networks, Inc." +54ACFC o="LIZN ApS" +54AED2 o="CSL Dualcom Ltd" 54B56C o="Xi'an NovaStar Tech Co., Ltd" 54B620 o="SUHDOL E&C Co.Ltd." 54B753 o="Hunan Fenghui Yinjia Science And Technology Co.,Ltd" +54C1D3 o="Guangzhou TR Intelligent Manufacturing Technology Co., Ltd" +54C6A6 o="Hubei Yangtze Mason Semiconductor Technology Co., Ltd." +54C8CC o="Shenzhen SDG Telecom Equipment Co.,Ltd." 54CDA7 o="Fujian Shenzhou Electronic Co.,Ltd" 54CDEE o="ShenZhen Apexis Electronic Co.,Ltd" 54CE69 o="Hikari Trading Co.,Ltd." @@ -13479,6 +14241,7 @@ 54D272 o="Nuki Home Solutions GmbH" 54D751 o="Proximus" 54D9E4 o="BRILLIANTTS CO., LTD" +54DBA2 o="Fibrain" 54DED0 o="Sevio Srl" 54DF00 o="Ulterius Technologies, LLC" 54DF63 o="Intrakey technologies GmbH" @@ -13488,14 +14251,16 @@ 54E63F o="ShenZhen LingKeWeiEr Technology Co., Ltd." 54E7D5,68A47D,A44B15 o="Sun Cupid Technology (HK) LTD" 54EDA3 o="Navdy, Inc." -54EF44 o="Lumi United Technology Co., Ltd" +54EF5B o="Science Corporation" 54EF92 o="Shenzhen Elink Technology Co., LTD" 54EFFE o="Fullpower Technologies, Inc." -54F15F,601D9D,A42985,B4C9B9,C0E7BF o="Sichuan AI-Link Technology Co., Ltd." 54F5B6 o="ORIENTAL PACIFIC INTERNATIONAL LIMITED" 54F666 o="Berthold Technologies GmbH and Co.KG" 54F876 o="ABB AG" +54F8F0 o="Tesla Inc" +54FA89 o="Medtronic CRM" 54FB58 o="WISEWARE, Lda" +54FB5A o="Optomind Inc." 54FDBF o="Scheidt & Bachmann GmbH" 54FF82 o="Davit Solution co." 54FFCF o="Mopria Alliance" @@ -13504,16 +14269,21 @@ 580556 o="Elettronica GF S.r.L." 5808FA o="Fiber Optic & telecommunication INC." 5809E5 o="Kivic Inc." +581031,7C66EF,843095,BCC746 o="Hon Hai Precision IND.CO.,LTD" 581CBD o="Affinegy" 581D91 o="Advanced Mobile Telecom co.,ltd." +581DC9 o="MSE CO.,LTD." 581F67 o="Open-m technology limited" 581FEF o="Tuttnaer LTD" 582136 o="KMB systems, s.r.o." 5821E9 o="TWPI" +58257A,E88FC4,F8EDAE o="MOBIWIRE MOBILES(NINGBO) CO.,LTD" +582745 o="Angelbird Technologies GmbH" 582BDB o="Pax AB" 582D34 o="Qingping Electronics (Suzhou) Co., Ltd" 582EFE o="Lighting Science Group" 582F42,D82477 o="Universal Electric Corporation" +58305B o="Shanghai Junqian Sensing Technology Co.,LTD" 583112 o="DRUST" 583277 o="Reliance Communications LLC" 58343B o="Glovast Technology Ltd." @@ -13528,11 +14298,15 @@ 5849BA o="Chitai Electronic Corp." 584C19 o="Chongqing Guohong Technology Development Company Limited" 584CEE o="Digital One Technologies, Limited" +584D42 o="Dragos, Inc." 585076 o="Linear Equipamentos Eletronicos SA" 5850AB o="TLS Corporation" 5850E6 o="Best Buy Corporation" 5853C0 o="Beijing Guang Runtong Technology Development Company co.,Ltd" 58570D o="Danfoss Solar Inverters" +585924 o="Nanjing Simon Info Tech Co.,Ltd." +585B69 o="TVT CO., LTD" +586010 o="shenzhen zovoton electronic co.,ltd" 586163 o="Quantum Networks (SG) Pte. Ltd." 58639A o="TPL SYSTEMES" 58671A,64C667 o="Barnes&Noble" @@ -13544,7 +14318,9 @@ 587675 o="Beijing ECHO Technologies Co.,Ltd" 5876C5 o="DIGI I'S LTD" 587A4D o="Stonesoft Corporation" +587AB1,D80A42 o="Shanghai Lixun Information Technology Co., Ltd." 587BE9 o="AirPro Technology India Pvt. Ltd" +587DB6 o="Northern Data AG" 587FB7 o="SONAR INDUSTRIAL CO., LTD." 587FC8 o="S2M" 58821D o="H. Schomäcker GmbH" @@ -13552,6 +14328,8 @@ 58856E o="QSC AG" 58874C o="LITE-ON CLEAN ENERGY TECHNOLOGY CORP." 5887E2,846223,94BA56,A4A80F o="Shenzhen Coship Electronics Co., Ltd." +588990,9C9C1D,A800E3 o="Starkey Labs Inc." +588D39 o="MITSUBISHI ELECTRIC AUTOMATION (CHINA) LTD." 588D64 o="Xi'an Clevbee Technology Co.,Ltd" 58920D o="Kinetic Avionics Limited" 5894A2 o="KETEK GmbH" @@ -13563,25 +14341,29 @@ 58A0CB o="TrackNet, Inc" 58A48E o="PixArt Imaging Inc." 58A76F o="iD corporation" -58A87B,5C75AF,F051EA o="Fitbit, Inc." +58A87B,5C75AF,C8B6FE,F051EA o="Fitbit, Inc." 58B0D4 o="ZuniData Systems Inc." -58B42D,7868F7,ACBB61 o="YSTen Technology Co.,Ltd" +58B0FE o="Team EPS GmbH" +58B42D,7868F7,904992,ACBB61 o="YSTen Technology Co.,Ltd" 58B568 o="SECURITAS DIRECT ESPAÑA, SAU" 58B961 o="SOLEM Electronique" 58B9E1 o="Crystalfontz America, Inc." +58BAD3 o="NANJING CASELA TECHNOLOGIES CORPORATION LIMITED" 58BC8F o="Cognitive Systems Corp." +58BD35,DC813D o="SHANGHAI XIANGCHENG COMMUNICATION TECHNOLOGY CO., LTD" 58BDF9 o="Sigrand" -58C935,CC9F7A o="Chiun Mai Communication Systems, Inc" 58CF4B o="Lufkin Industries" 58D071 o="BW Broadcast" 58D08F,908260,C4E032 o="IEEE 1904.1 Working Group" 58D67A o="TCPlink" 58D6D3 o="Dairy Cheq Inc" +58D8A7 o="Bird Home Automation GmbH" 58DB8D o="Fast Co., Ltd." 58DC6D o="Exceptional Innovation, Inc." 58E02C o="Micro Technic A/S" 58E16C o="Ying Hua Information Technology (Shanghai)Co., LTD" 58E326 o="Compass Technologies Inc." +58E359 o="Interroll Software & Electronics GmbH" 58E476 o="CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD" 58E636 o="EVRsafe Technologies" 58E747 o="Deltanet AG" @@ -13592,16 +14374,19 @@ 58ECE1 o="Newport Corporation" 58EECE o="Icon Time Systems" 58F102,CC794A o="BLU Products Inc." -58F387 o="HCCP" +58F387 o="Airios" 58F496 o="Source Chain" 58F67B o="Xia Men UnionCore Technology LTD." 58F6BF o="Kyoto University" 58F98E o="SECUDOS GmbH" 58FC73 o="Arria Live Media, Inc." -58FD20 o="Bravida Sakerhet AB" +58FCC6,944BF8 o="TOZO INC" +58FD20 o="Systemhouse Solutions AB" +58FD5D o="Hangzhou Xinyun technology Co., Ltd." 58FDBE o="Shenzhen Taikaida Technology Co., Ltd" 5C0038 o="Viasat Group S.p.A." 5C026A o="Applied Vision Corporation" +5C045A o="Company NA Stage & Light" 5C076F o="Thought Creator" 5C0BCA o="Tunstall Nordic AB" 5C0C0E o="Guizhou Huaxintong Semiconductor Technology Co Ltd" @@ -13609,62 +14394,85 @@ 5C0FFB o="Amino Communications Ltd" 5C1193 o="Seal One AG" 5C1437 o="Thyssenkrupp Aufzugswerke GmbH" +5C14EB o="Trident IoT" 5C1515 o="ADVAN" +5C15C5 o="Shenzhen SSC Technology Co. Ltd" 5C15E1 o="AIDC TECHNOLOGY (S) PTE LTD" -5C16C7 o="Big Switch Networks" 5C1737 o="I-View Now, LLC." 5C17D3,64995D,8C541D,B08991 o="LGE" 5C18B5 o="Talon Communications" +5C1923 o="Hangzhou Lanly Technology Co., Ltd." +5C1B17 o="Bosch Automotive Electronics India Pvt. Ltd." 5C20D0 o="Asoni Communication Co., Ltd." 5C22C4 o="DAE EUN ELETRONICS CO., LTD" 5C2316 o="Squirrels Research Labs LLC" 5C2443 o="O-Sung Telecom Co., Ltd." 5C2479 o="Baltech AG" +5C24E2 o="Suzhou Denbom Electronic S&T Co., Ltd" 5C254C o="Avire Global Pte Ltd" 5C2623 o="WaveLynx Technologies Corporation" +5C2763,D8AE90 o="Itibia Technologies" +5C2886,843A5B,EC5B71 o="Inventec(Chongqing) Corporation" 5C2AEF o="r2p Asia-Pacific Pty Ltd" 5C2BF5,A0FE61 o="Vivint Wireless Inc." +5C2D08 o="Subeca" 5C2ED2 o="ABC(XiSheng) Electronics Co.,Ltd" +5C2FAF o="HomeWizard B.V." 5C32C5 o="Teracom Ltd." 5C3327 o="Spazio Italia srl" 5C335C o="Swissphone Telecom AG" -5C3400 o="HISENSE VISUAL TECHNOLOGY CO.,LTD" 5C35DA o="There Corporation Oy" 5C38E0 o="Shanghai Super Electronics Technology Co.,LTD" 5C3B35 o="Gehirn Inc." 5C4058 o="Jefferson Audio Video Systems, Inc." +5C40E3 o="NOVAON" 5C415A o="Amazon.com, LLC" 5C41E7 o="Wiatec International Ltd." 5C43D2 o="HAZEMEYER" +5C4546,644212,FCB585 o="Shenzhen Water World Information Co.,Ltd." +5C46B0 o="SIMCom Wireless Solutions Limited" +5C4842 o="Hangzhou Anysoft Information Technology Co. , Ltd" +5C49FA o="Shenzhen Guowei Shidai Communication Equipement Co., Ltd" 5C4A26 o="Enguity Technology Corp" 5C5578 o="iryx corp" 5C56ED o="3pleplay Electronics Private Limited" 5C5819 o="Jingsheng Technology Co., Ltd." 5C5AEA o="FORD" -5C5B35,D420B0,D4DC09 o="Mist Systems, Inc." 5C5BC2 o="YIK Corporation" +5C5DEC o="JiangSu Newcom Optical&Electrical Communication CO Ltd" 5C63C9 o="Intellithings Ltd." +5C640F o="Sage Technologies Inc." +5C64F3,BC0FB7 o="sywinkey HongKong Co,. Limited?" 5C68D0 o="Aurora Innovation Inc." 5C6984 o="NUVICO" 5C6A7D o="KENTKART EGE ELEKTRONIK SAN. VE TIC. LTD. STI." 5C6B4F o="Hello Inc." 5C6BD7 o="Foshan VIOMI Electric Appliance Technology Co. Ltd." 5C6F4F o="S.A. SISTEL" +5C7545 o="Wayties, Inc." 5C7757 o="Haivision Network Video" +5C7B6C o="Tradit Co., Ltd" 5C81A7 o="Network Devices Pty Ltd" +5C83CD o="New platforms" 5C8486 o="Brightsource Industries Israel LTD" +5C85F8,70441C o="SHENZHEN KAIFA TECHNOLOGY CO.,LTD." 5C8613 o="Beijing Zhoenet Technology Co., Ltd" 5C864A o="Secret Labs LLC" 5C86C1 o="DONGGUAN SOLUM ELECTRONICS CO.,LTD" 5C8778 o="Cybertelbridge co.,ltd" 5C89D4 o="Beijing Banner Electric Co.,Ltd" +5C89E6 o="Richard Wolf GmbH" 5C8D2D o="Shanghai Wellpay Information Technology Co., Ltd" +5C8E10 o="TimeWatch Infocom Pvt. Ltd." +5C8E8B o="Shenzhen Linghai Electronics Co.,Ltd" 5C9012 o="Owl Cyber Defense Solutions, LLC" 5C91FD o="Jaewoncnc" +5C9462,B4CFDB o="Shenzhen Jiuzhou Electric Co.,LTD" 5C966A o="RTNET" 5CA178 o="TableTop Media (dba Ziosk)" 5CA1E0 o="EmbedWay Technologies" -5CA3EB o="Lokel s.r.o." +5CA3EB o="SKODA DIGITAL s.r.o." +5CA436 o="Shenzhen G-world Technology Incorporated Company" 5CA933 o="Luma Home" 5CB15F o="Oceanblue Cloud Technology Limited" 5CB29E o="ASCO Power Technologies" @@ -13674,11 +14482,14 @@ 5CB6CC o="NovaComm Technologies Inc." 5CB8CB o="Allis Communications" 5CBD9E o="HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED" +5CBE05 o="ISPEC" +5CBF03 o="EMOCO" 5CC213 o="Fr. Sauter AG" -5CC6E9,60F43A o="Edifier International" +5CC41D o="Stone Devices Sdn. Bhd." 5CC7D7 o="AZROAD TECHNOLOGY COMPANY LIMITED" +5CC8E3 o="Shintec Hozumi co.ltd." 5CC9D3 o="PALLADIUM ENERGY ELETRONICA DA AMAZONIA LTDA" -5CCA32 o="Theben AG" +5CCA32,CC7E0F o="Theben AG" 5CCCA0 o="Gridwiz Inc." 5CCCFF o="Techroutes Network Pvt Ltd" 5CCD7C o="MEIZU Technology Co.,Ltd." @@ -13689,19 +14500,24 @@ 5CD4AB o="Zektor" 5CD5B5 o="Shenzhen WiSiYiLink Technology Co.,Ltd" 5CD61F o="Qardio, Inc" +5CDFB8 o="Shenzhen Unionmemory Information System Limited" 5CE0CA o="FeiTian United (Beijing) System Technology Co., Ltd." 5CE0F6 o="NIC.br- Nucleo de Informacao e Coordenacao do Ponto BR" +5CE1A4 o="Pleneo" 5CE223 o="Delphin Technology AG" +5CE688 o="VECOS Europe B.V." 5CE7BF o="New Singularity International Technical Development Co.,Ltd" -5CE8B7 o="Oraimo Technology Limited" +5CE8D3 o="Signalinks Communication Technology Co., Ltd" 5CEB4E o="R. STAHL HMI Systems GmbH" 5CEB68 o="Cheerstar Technology Co., Ltd" 5CEE79 o="Global Digitech Co LTD" 5CF207 o="Speco Technologies" 5CF370 o="CC&C Technologies, Inc" 5CF50D o="Institute of microelectronic applications" +5CF53A o="Zhongge Smart Technology(Shanghai) Co., Ltd" 5CF7C3 o="SYNTECH (HK) TECHNOLOGY LIMITED" 5CF9F0 o="Atomos Engineering P/L" +5CFA5A o="Sinepower Lda" 5CFAFB o="Acubit" 5CFE9E o="Wiwynn Corporation Tainan Branch" 5CFFFF o="Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd" @@ -13710,28 +14526,35 @@ 60058A o="Hitachi Metals, Ltd." 60077C o="Jala Group" 600837 o="ivvi Scientific(Nanchang)Co.Ltd" -6009C3,6C1DEB,CCF957,D4CA6E o="u-blox AG" 600F77 o="SilverPlus, Inc" 6010A2 o="Crompton Instruments" 601199 o="Siama Systems Inc" 601283 o="TSB REAL TIME LOCATION SYSTEMS S.L." +601521 o="Redarc Electronics" 6015C7 o="IdaTech" 601803 o="Daikin Air-conditioning (Shanghai) Co., Ltd." 60182E o="ShenZhen Protruly Electronic Ltd co." 60190C o="RRAMAC" 601929 o="VOLTRONIC POWER TECHNOLOGY(SHENZHEN) CORP." 601970 o="HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD." +601A4F o="Beijing China Electronics Intelligent Acoustics Technology Co.,Ltd" 601D0F o="Midnite Solar" +601D16 o="Med-Eng Holdings ULC" 601E02 o="EltexAlatau" +601E98 o="Axevast Technology" 602103 o="I4VINE, INC" 6024C1 o="Jiangsu Zhongxun Electronic Technology Co., Ltd" 60271C o="VIDEOR E. Hartig GmbH" 6029D5 o="DAVOLINK Inc." +602A1B o="JANCUS" 602A54 o="CardioTek B.V." +603192 o="OVT India pvt Ltd" 6032F0 o="Mplus technology" +603457 o="HP Tuners LLC" 603553 o="Buwon Technology" 603696 o="The Sapling Company" 60391F o="ABB Ltd" +603C0E o="Guizhou Huaxin Information Technology Co.,Ltd" 603E7B o="Gafachi, Inc." 603ECA o="Cambridge Medical Robotics Ltd" 603FC5 o="COX CO., LTD" @@ -13742,32 +14565,46 @@ 604762 o="Beijing Sensoro Technology Co.,Ltd." 6047D4 o="FORICS Electronic Technology Co., Ltd." 604826 o="Newbridge Technologies Int. Ltd." +60489C o="YIPPEE ELECTRONICS CO.,LIMITED" +604966 o="Shenzhen Dingsheng Technology Co., Ltd." 604A1C o="SUYIN Corporation" +604A77 o="Finder SpA" 604BAA o="Magic Leap, Inc." 6050C1 o="Kinetek Sports" 6052D0 o="FACTS Engineering" 605317 o="Sandstone Technologies" 605464 o="Eyedro Green Solutions Inc." 605661 o="IXECLOUD Tech" +605801 o="Shandong ZTop Microelectronics Co., Ltd." 6061DF o="Z-meta Research LLC" 6063F9 o="Ciholas, Inc." 6063FD o="Transcend Communication Beijing Co.,Ltd." 606453 o="AOD Co.,Ltd." 6064A1 o="RADiflow Ltd." +606832,F4227A o="Guangdong Seneasy Intelligent Technology Co., Ltd." 60699B o="isepos GmbH" +606D9D o="Otto Bock Healthcare Products GmbH" +606E53 o="Beijing Wisdomstar Technology Co., Ltd" 606ED0 o="SEAL AG" -60720B,80FD7A,E4C801 o="BLU Products Inc" +607072 o="SHENZHEN HONGDE SMART LINK TECHNOLOGY CO., LTD" 60748D o="Atmaca Elektronik" +607623 o="Shenzhen E-Superlink Technology Co., Ltd" 607688 o="Velodyne" -60812B o="Custom Control Concepts" +607D09 o="Luxshare Precision Industry Co., Ltd" +607DDD o="Shenzhen Shichuangyi Electronics Co.,Ltd" +607EA4,78DF72,94F827,B88880 o="Shanghai Imilab Technology Co.Ltd" +60812B o="Astronics Custom Control Concepts" 6081F9 o="Helium Systems, Inc" 6083B2 o="GkWare e.K." +6083E2 o="Shanghai Notion Information Technology Co., Ltd" +6083F8 o="SICHUAN HUAKUN ZHENYU INTELLIGENT TECHNOLOGY CO.,LTD" 60843B o="Soladigm, Inc." 608645 o="Avery Weigh-Tronix, LLC" 60893C o="Thermo Fisher Scientific P.O.A." 6089B1 o="Key Digital Systems" 6089B7 o="KAEL MÜHENDİSLİK ELEKTRONİK TİCARET SANAYİ LİMİTED ŞİRKETİ" 608C2B o="Hanson Technology" +608CDF o="Beamtrail-Sole Proprietorship" 608D17 o="Sentrus Government Systems Division, Inc" 609084 o="DSSD Inc" 6097DD o="MicroSys Electronics GmbH" @@ -13793,22 +14630,29 @@ 60BB0C o="Beijing HuaqinWorld Technology Co,Ltd" 60BC4C o="EWM Hightec Welding GmbH" 60BD91 o="Move Innovation" -60C0BF o="ON Semiconductor" +60BEB4 o="S-Bluetech co., limited" +60C01E o="V&G Information System Co.,Ltd" +60C0BF,F40046 o="ON Semiconductor" 60C1CB o="Fujian Great Power PLC Equipment Co.,Ltd" 60C5A8 o="Beijing LT Honway Technology Co.,Ltd" 60C658 o="PHYTRONIX Co.,Ltd." +60C727 o="Digiboard Eletronica da Amazonia Ltda" 60C980 o="Trymus" 60CBFB o="AirScape Inc." 60CDA9 o="Abloomy" 60CDC5 o="Taiwan Carol Electronics., Ltd" 60CE92 o="The Refined Industry Company Limited" +60CF69 o="meerecompany" 60D1AA o="Vishal Telecommunications Pvt Ltd" 60D262 o="Tzukuri Pty Ltd" 60D2B9 o="REALAND BIO CO., LTD." 60D2DD o="Shenzhen Baitong Putian Technology Co.,Ltd." 60D30A o="Quatius Limited" +60D561 o="Shenzhen Glazero Technology Co., Ltd." +60D877,A46D33,DC9B95,E8B527 o="Phyplus Technology (Shanghai) Co., Ltd" 60DA23 o="Estech Co.,Ltd" 60DB2A o="HNS" +60DC0D o="TAIWAN SHIN KONG SECURITY CO., LTD" 60DE35 o="GITSN, Inc." 60E00E o="SHINSEI ELECTRONICS CO LTD" 60E6BC o="Sino-Telecom Technology Co.,Ltd." @@ -13822,49 +14666,68 @@ 60F3DA o="Logic Way GmbH" 60F59C o="CRU-Dataport" 60F673 o="TERUMO CORPORATION" +60F8F2 o="Synaptec" +60FAB1 o="Kempower Oyj" 60FD56 o="WOORISYSTEMS CO., Ltd" 60FE1E o="China Palms Telecom.Ltd" 60FEF9 o="Thomas & Betts" 60FFDD o="C.E. ELECTRONICS, INC" 64002D o="Powerlinq Co., LTD" +64009C o="Insulet Corporation" +6401FB o="Landis+Gyr GmbH" +640552 o="China Post Communication Equipment Co.," 6405BE o="NEW LIGHT LED" 6405E9 o="Shenzhen WayOS Technology Crop., Ltd." 64094C o="Beijing Superbee Wireless Technology Co.,Ltd" 640B4A o="Digital Telecom Technology Limited" 640DE6 o="Petra Systems" 640E36 o="TAZTAG" +640E6A o="SECO-LARM USA Inc" 640E94,E0AF4B o="Pluribus Networks, Inc." +640E9B o="ISHIDA MEDICAL CO., LTD." 641084 o="HEXIUM Technical Development Co., Ltd." 641331 o="Bosch Car Multimedia (Wuhu) Co. Ltd." +64135A o="Itectra A/S" +641759 o="Intellivision Holdings, LLC" 641A22 o="Heliospectra AB" +641ABA o="Dryad Networks GmbH" 641C67 o="DIGIBRAS INDUSTRIA DO BRASILS/A" 641E81 o="Dowslake Microsystems" +6420E0 o="T3 Technology Co., Ltd." 642184 o="Nippon Denki Kagaku Co.,LTD" 642216 o="Shandong Taixin Electronic co.,Ltd" 642400 o="Xorcom Ltd." -64255E o="Observint Technologies, Inc." +6425EC o="guangdong kesheng zhixun technology" +642656 o="Shenzhen Fanweitai Technology Service Co.,Ltd" +642677 o="BKM-Micronic Richtfunkanlagen GmbH" 6429ED o="AO %PKK Milandr%" 642B8A o="ALL BEST Industrial Co., Ltd." 642DB7 o="SEUNGIL ELECTRONICS" +643172 o="ZHEJIANG HISING TECHNOLOGY CO.,LTD" 64317E o="Dexin Corporation" +643216 o="Weidu Technology (Beijing) Co., Ltd." 643409 o="BITwave Pte Ltd" 64351C o="e-CON SYSTEMS INDIA PVT LTD" +6437A4 o="TOKYOSHUHA CO.,LTD." 643F5F o="Exablaze" 644214 o="Swisscom Energy Solutions AG" 644346 o="GuangDong Quick Network Computer CO.,LTD" -6447E0,E092A7 o="Feitian Technologies Co., Ltd" +6444D5 o="TD Tech" 644BC3 o="Shanghai WOASiS Telecommunications Ltd., Co." 644BF0 o="CalDigit, Inc" +644C69 o="CONPROVE" 644D70 o="dSPACE GmbH" +644EEB o="Daikin Holdings Singapore Pte Ltd" 644F42 o="JETTER CO., Ltd." 644F74 o="LENUS Co., Ltd." 644FB0 o="Hyunjin.com" +6450D6 o="Liquidtool Systems" 64517E o="LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD." -645299,CC6A10 o="The Chamberlain Group, Inc" 64535D o="Frauscher Sensortechnik" 645422 o="Equinox Payments" -645563 o="Intelight Inc." +645563 o="Q-Free America, Inc." 64557F o="NSFOCUS Information Technology Co., Ltd." +6457E5 o="Beijing Royaltech Co.,Ltd" 6459F8 o="Vodafone Omnitel B.V." 645CF3 o="ParanTek Inc." 645DD7 o="Shenzhen Lifesense Medical Electronics Co., Ltd." @@ -13889,101 +14752,127 @@ 647FDA o="TEKTELIC Communications Inc." 64808B o="VG Controls, Inc." 648125 o="Alphatron Marine BV" +648434 o="BEMER Int. AG" +648624 o="Beijing Global Safety Technology Co., LTD." +648B9B o="ALWAYS ON TECH PTE.LTD." 648D9E o="IVT Electronic Co.,Ltd" +648FDB,C4600A o="Huaqin Technology Co.LTD" +64989E o="TRINNOV AUDIO" 6499A0 o="AG Elektronik AB" -649A08 o="Shenzhen SuperElectron Technology Co.,LTD" 649A12 o="P2 Mobile Technologies Limited" 649B24 o="V Technology Co., Ltd." 649D99 o="FS COM INC" 649FF7 o="Kone OYj" 64A232 o="OOO Samlight" 64A341 o="Wonderlan (Beijing) Technology Co., Ltd." +64A3CC o="LeoLabs" +64A444 o="Loongson Technology Corporation Limited" 64A68F o="Zhongshan Readboy Electronics Co.,Ltd" 64A837 o="Juni Korea Co., Ltd" 64A965 o="Linkflow Co., Ltd." 64AE88 o="Polytec GmbH" 64B21D o="Chengdu Phycom Tech Co., Ltd." 64B370 o="PowerComm Solutions LLC" -64B623 o="CCS Care Communication Solutions GmbH" +64B379 o="Jiangsu Viscore Technologies Co.,Ltd" +64B4E8 o="Shenzhen D-Robotics Co., Ltd." +64B623 o="Schrack Seconet Care Communication GmbH" 64B64A o="ViVOtech, Inc." +64B94E o="Dell Technologies" 64BABD o="SDJ Technologies, Inc." 64BC11 o="CombiQ AB" +64BE63 o="STORDIS GmbH" +64C17E o="cheilelectric" 64C5AA o="South African Broadcasting Corporation" 64C6AF o="AXERRA Networks Ltd" 64C901 o="INVENTEC Corporation" 64C944 o="LARK Technologies, Inc" 64CB5D o="SIA %TeleSet%" -64D02D o="Next Generation Integration (NGI)" +64CDF1 o="KO & AL Co., Ltd" +64CF13 o="Weigao Nikkiso(Weihai)Dialysis Equipment Co.,Ltd" +64D02D o="NEXT GENERATION INTEGRATION LIMITED (NGI)" 64D241 o="Keith & Koep GmbH" +64D4F0 o="NETVUE,INC." 64D912 o="Solidica, Inc." 64DAA0 o="Robert Bosch Smart Home GmbH" 64DB18 o="OpenPattern" 64DB81 o="Syszone Co., Ltd." 64DBA0,CC04B4 o="Select Comfort" 64DC01 o="Static Systems Group PLC" +64DCDE o="ZheJiang FuChunJiang Information Technology Co.,Ltd" 64DE1C o="Kingnetic Pte Ltd" 64DF10 o="JingLue Semiconductor(SH) Ltd." 64DFE9 o="ATEME" 64E161 o="DEP Corp." -64E172 o="Shenzhen Qihoo Intelligent Technology Co.,Ltd" +64E172,DC84E9 o="Shenzhen Qihoo Intelligent Technology Co.,Ltd" +64E204 o="NTN Technical Service Corporation" 64E625 o="Woxu Wireless Co., Ltd" +64E738 o="Zhejiang SUPCON Technology Co., Ltd." 64E84F o="Serialway Communication Technology Co. Ltd" 64E892 o="Morio Denki Co., Ltd." 64E8E6 o="global moisture management system" 64EAC5 o="SiboTech Automation Co., Ltd." 64ED62 o="WOORI SYSTEMS Co., Ltd" -64EEB7 o="Netcore Technology Inc" 64F242 o="Gerdes Aktiengesellschaft" -64F2FB o="Hangzhou Ezviz Software Co.,Ltd." 64F50E o="Kinion Technology Company Limited" -64F6BB,B436A9 o="Fibocom Wireless Inc." +64F6BB,88231F,B05A44,B436A9 o="Fibocom Wireless Inc." 64F6F7 o="Anhui Dynamic Power Co., Ltd." 64F81C o="Huawei Technologies Co., Ltd." 64F947 o="Senscomm Semiconductor Co., Ltd." 64F970 o="Kenade Electronics Technology Co.,LTD." 64F987 o="Avvasi Inc." 64F9C0 o="ANALOG DEVICES" +64FB01 o="Zhongshan Camry Electronic Company Limited" 64FB50 o="RoomReady/Zdi, Inc." 64FB92 o="PPC Broadband Inc." 64FC8C o="Zonar Systems" 680235 o="Konten Networks Inc." -68070A o="TPVision Europe B.V" 680AD7 o="Yancheng Kecheng Optoelectronic Technology Co., Ltd" 68122D o="Special Instrument Development Co., Ltd." 681295 o="Lupine Lighting Systems GmbH" +6813E2,9054B7,ECB1E0 o="Eltex Enterprise LTD" +681579 o="BrosTrend Technology LLC" 6815D3 o="Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A." 681605 o="Systems And Electronic Development FZCO" +6818D9 o="Hill AFB - CAPRE Group" 68193F o="Digital Airways" 6819AC o="Guangzhou Xianyou Intelligent Technogoly CO., LTD" 681CA2 o="Rosewill Inc." +681D4C,EC96BF o="Kontron eSystems GmbH" 681D64 o="Sunwave Communications Co., Ltd" 681DEF o="Shenzhen CYX Technology Co., Ltd." 681E8B o="InfoSight Corporation" 681F40 o="Blu Wireless Technology Ltd" 681FD8 o="Siemens Industry, Inc." 68234B o="Nihon Dengyo Kousaku" +6823F4 o="Shenzhen Jinlangxin Technology Co., Ltd" +682624 o="Ergatta" 6828BA o="Dejai" 6828F6 o="Vubiq Networks, Inc." 6829DC o="Ficosa Electronics S.L.U." +682C4F o="leerang corporation" +682D83 o="SHENZHEN DINGHE COMMUNICATION COMPANY" 682DDC o="Wuhan Changjiang Electro-Communication Equipment CO.,LTD" 6831FE o="Teladin Co.,Ltd." 68332C o="KENSTEL NETWORKS LIMITED" 683489 o="LEA Professional" 683563 o="SHENZHEN LIOWN ELECTRONICS CO.,LTD." 6836B5 o="DriveScale, Inc." -683943 o="ittim" +6838E3 o="EYESON SOLUTION CO.,Ltd" 683B1E o="Countwise LTD" 683C7D o="Magic Intelligence Technology Limited" 683E02 o="SIEMENS AG, Digital Factory, Motion Control System" 683EEC o="ERECA" 683F1E o="EFFECT Photonics B.V." +684216 o="Steplock Access AB" 684352 o="Bhuu Limited" 6843D7 o="Agilecom Photonics Solutions Guangdong Limited" 6845F1 o="TOSHIBA CLIENT SOLUTIONS CO., LTD." 6849B2 o="CARLO GAVAZZI LTD" 684B88 o="Galtronics Telemetry Inc." 684CA8 o="Shenzhen Herotel Tech. Co., Ltd." +68505D o="Halo Technologies" 6851B7 o="PowerCloud Systems, Inc." +685210 o="MCS Logic" 6852D6 o="UGame Technology Co.,Ltd" 68536C o="SPnS Co.,Ltd" 685388 o="P&S Technology" @@ -13992,6 +14881,7 @@ 685B36 o="POWERTECH INDUSTRIAL CO., LTD." 685E6B o="PowerRay Co., Ltd." 686350 o="Hella India Automotive Pvt Ltd" +6865B7 o="Zhishang Chuanglian Technology Co., Ltd" 68692E o="Zycoo Co.,Ltd" 686975 o="Angler Labs Inc" 6869CA,F84897 o="Hitachi, Ltd." @@ -13999,11 +14889,13 @@ 686E23 o="Wi3 Inc." 686E48 o="Prophet Electronic Technology Corp.,Ltd" 6872DC o="CETORY.TV Company Limited" -687848 o="Westunitis Co., Ltd." +687627 o="Zhuhai Dingzhi Electronic Technology Co., Ltd" +687848 o="WESTUNITIS CO., LTD." 687924 o="ELS-GmbH & Co. KG" +6879DD o="Omnipless Manufacturing (PTY) Ltd" 687CC8 o="Measurement Systems S. de R.L." 687CD5 o="Y Soft Corporation, a.s." -6882F2 o="grandcentrix GmbH" +6882F2 o="FIXME GmbH" 68831A o="Pandora Mobility Corporation" 688470 o="eSSys Co.,Ltd" 688540 o="IGI Mobile, Inc." @@ -14014,39 +14906,55 @@ 688AB5 o="EDP Servicos" 688DB6 o="AETEK INC." 688FC9 o="Zhuolian (Shenzhen) Communication Co., Ltd" +68932E o="Habana Labs LTD." +689575 o="Zhejiang Bodyguard Electronic Co., Ltd" 68974B o="Shenzhen Costar Electronics Co. Ltd." 6897E8 o="Society of Motion Picture & Television Engineers" 689861 o="Beacon Inc" 689AB7 o="Atelier Vision Corporation" 68A1B7 o="Honghao Mingchuan Technology (Beijing) CO.,Ltd." -68A40E o="BSH Hausgeräte GmbH" +68A2AA o="Acres Manufacturing" +68A878 o="GeoWAN Pty Ltd" 68AAD2 o="DATECS LTD.," 68AB8A o="RF IDeas" 68AF13 o="Futura Mobility" 68AFFF o="Shanghai Cambricon Information Technology Co., Ltd." 68B094 o="INESA ELECTRON CO.,LTD" +68B1C9 o="IYO, Inc" 68B35E o="Shenzhen Neostra Technology Co.Ltd" +68B41E o="ZEASN TECHNOLOGY PRIVATE LIMITED" 68B43A o="WaterFurnace International, Inc." 68B8D9 o="Act KDE, Inc." 68B983 o="b-plus GmbH" +68BE49 o="Nebula Matrix" +68C95D o="SZ Knowact Robot Technology Co., Ltd" 68CA00 o="Octopus Systems Limited" 68CC9C o="Mine Site Technologies" +68CCBA o="Dense Air Networks US LLC" 68CD0F o="U Tek Company Limited" 68CE4E o="L-3 Communications Infrared Products" 68D1FD o="Shenzhen Trimax Technology Co.,Ltd" 68D247 o="Portalis LC" +68D48B,ECAFF9 o="Hailo Technologies Ltd." 68D925 o="ProSys Development Services" 68DB67,6C8AEC o="Nantong Coship Electronics Co., Ltd." 68DB96 o="OPWILL Technologies CO .,LTD" 68DCE8 o="PacketStorm Communications" 68DD26 o="Shanghai Focus Vision Security Technology Co.,Ltd" +68E154 o="SiMa.ai" 68E41F o="Unglaube Identech GmbH" +68E6D4 o="FURUNO SYSTEMS CO.,LTD." 68E8EB o="Linktel Technologies Co.,Ltd" 68EBC5 o="Angstrem Telecom" 68EC62 o="YODO Technology Corp. Ltd." +68EC8A o="IKEA of Sweden AB" 68EDA4 o="Shenzhen Seavo Technology Co.,Ltd" +68EE4B o="Sharetronic Data Technology Co.,Ltd" +68EFA8 o="AutomationDirect.com" +68EFAB o="Vention" 68F06D o="ALONG INDUSTRIAL CO., LIMITED" 68F0BC o="Shenzhen LiWiFi Technology Co., Ltd" +68F0D0,9C54DA o="SkyBell Technologies Inc." 68F125 o="Data Controls Inc." 68F895 o="Redflow Limited" 68F956 o="Objetivos y Servicio de Valor Añadido" @@ -14055,42 +14963,58 @@ 6C0273 o="Shenzhen Jin Yun Video Equipment Co., Ltd." 6C0460 o="RBH Access Technologies Inc." 6C05D5 o="Ethertronics Inc" +6C0831 o="ANALOG SYSTEMS" 6C090A o="GEMATICA SRL" 6C09D6 o="Digiquest Electronics LTD" +6C0DE1,F0BE25 o="Dongguan Cannice Precision Manufacturing Co., Ltd." 6C0EE6 o="Chengdu Xiyida Electronic Technology Co,.Ltd" +6C0F61 o="Hypervolt Ltd" 6C0F6A o="JDC Tech Co., Ltd." +6C108B o="WeLink Communications" +6C1414 o="BUJEON ELECTRONICS Co,.Ltd" 6C14F7 o="Erhardt+Leimer GmbH" 6C15F9 o="Nautronix Limited" 6C160E o="ShotTracker" 6C1811 o="Decatur Electronics" +6C1B3F o="MiraeSignal Co., Ltd" 6C1E70 o="Guangzhou YBDS IT Co.,Ltd" 6C1E90 o="Hansol Technics Co., Ltd." +6C1FF7,EC1AC3 o="Ugreen Group Limited" 6C22AB o="Ainsworth Game Technology" +6C2316 o="TATUNG Technology Inc.," 6C23CB o="Wattty Corporation" 6C2990 o="WiZ Connected Lighting Company Limited" 6C2C06 o="OOO NPP Systemotechnika-NN" 6C2E33 o="Accelink Technologies Co.,Ltd." 6C2E72 o="B&B EXPORTING LIMITED" +6C2F1C o="Nexus Raytek Pty Ltd" 6C32DE o="Indieon Technologies Pvt. Ltd." 6C33A9 o="Magicjack LP" 6C3838 o="Marking System Technology Co., Ltd." 6C391D o="Beijing ZhongHuaHun Network Information center" +6C3A36 o="Glowforge Inc" 6C3A84 o="Shenzhen Aero-Startech. Co.Ltd" 6C3C53 o="SoundHawk Corp" +6C3E51 o="Mindray North America" 6C3E9C o="KE Knestel Elektronik GmbH" 6C40C6 o="Nimbus Data, Inc." 6C42AB o="Subscriber Networks, Inc." +6C4329 o="COSMIQ EDUSNAP PRIVATE LIMITED" 6C4418 o="Zappware" 6C4598 o="Antex Electronic Corp." +6C45C4 o="Cloudflare, Inc." +6C4725 o="Rochester Network Supply, Inc." 6C49C1 o="o2ones Co., Ltd." 6C4A39 o="BITA" +6C4A74 o="AERODISK LLC" 6C4B7F o="Vossloh-Schwabe Deutschland GmbH" 6C4B90 o="LiteON" 6C4D51 o="Shenzhen Ceres Technology Co., Ltd." 6C4E86 o="Third Millennium Systems Ltd." +6C4EB0 o="Castelion Corporation" 6C54CD o="LAMPEX ELECTRONICS LIMITED" 6C5779 o="Aclima, Inc." -6C5976 o="Shanghai Tricheer Technology Co.,Ltd." +6C5976,E09CE5 o="Shanghai Tricheer Technology Co.,Ltd." 6C5A34 o="Shenzhen Haitianxiong Electronic Co., Ltd." 6C5CDE o="SunReports, Inc." 6C5D63,E41218 o="ShenZhen Rapoo Technology Co., Ltd." @@ -14099,23 +15023,35 @@ 6C6126 o="Rinicom Holdings" 6C626D,8C89A5 o="Micro-Star INT'L CO., LTD" 6C641A o="Penguin Computing" +6C6567 o="BELIMO Automation AG" 6C6D09 o="Kyowa Electronics Co.,Ltd." +6C6E07,A0CEC8 o="CE LINK LIMITED" 6C6EFE o="Core Logic Inc." 6C6F18 o="Stereotaxis, Inc." 6C7039 o="Novar GmbH" -6C71BD o="EZELINK TELECOM" +6C72E2 o="amitek" 6C750D o="WiFiSONG" +6C76F7 o="MainStreaming SpA" +6C80AB o="ifanr Inc" 6C81FE o="Mitsuba Corporation" +6C8338 o="Ubihere" 6C8686 o="Technonia" 6C8CDB o="Otus Technologies Ltd" 6C8D65 o="Wireless Glue Networks, Inc." +6C8F4E,781C1E,D8A0E6,DC9EAB o="Chongqing Yipingfang Technology Co., Ltd." 6C90B1 o="SanLogic Inc" -6C92BF,B4055D o="Inspur Electronic Information Industry Co.,Ltd." +6C9106 o="Katena Computing Technologies" +6C92BF,9CC2C4,B4055D o="IEIT SYSTEMS Co., Ltd." 6C9354 o="Yaojin Technology (Shenzhen) Co., LTD." +6C9392 o="BEKO Technologies GmbH" 6C9522 o="Scalys" +6C97AA o="AI TECHNOLOGY CO.,LTD." +6C9AB4 o="Brodersen A/S" 6C9AC9 o="Valentine Research, Inc." 6C9BC0 o="Chemoptics Inc." 6C9CE9 o="Nimble Storage" +6CA367 o="Avlinkpro" +6CA401 o="essensys plc" 6CA682 o="EDAM information & communications" 6CA7FA o="YOUNGBO ENGINEERING INC." 6CA906 o="Telefield Ltd" @@ -14126,6 +15062,7 @@ 6CADEF o="KZ Broadband Technologies, Ltd." 6CAE8B,749975 o="IBM Corporation" 6CAF15 o="Webasto SE" +6CB0FD o="Shenzhen Xinghai Iot Technology Co.,Ltd" 6CB227 o="Sony Video & Sound Products Inc." 6CB311 o="Shenzhen Lianrui Electronics Co.,Ltd" 6CB350 o="Anhui comhigher tech co.,ltd" @@ -14133,9 +15070,16 @@ 6CB6CA o="DIVUS GmbH" 6CBFB5 o="Noon Technology Co., Ltd" 6CC147 o="Xiamen Hanin Electronic Technology Co., Ltd" +6CC41E o="NEXSEC Incorporated" +6CCF39 o="Shanghai StarFive Semiconductor Co., Ltd." 6CD146 o="FRAMOS GmbH" 6CD1B0 o="WING SING ELECTRONICS HONG KONG LIMITED" +6CD3EE,74A34A o="ZIMI CORPORATION" +6CD630 o="Rootous System Co.,Ltd" +6CD7A0 o="WIKO Terminal Technology (Dongguan) Co., Ltd." +6CD869 o="Guangzhou Sat Infrared Co.,LTD" 6CDC6A o="Promethean Limited" +6CDDEF o="EPCOMM Inc." 6CE01E o="Modcam AB" 6CE0B0 o="SOUND4" 6CE3B6 o="Nera Telecommunications Ltd." @@ -14145,7 +15089,8 @@ 6CEC5A o="Hon Hai Precision Ind. CO.,Ltd." 6CECA1 o="SHENZHEN CLOU ELECTRONICS CO. LTD." 6CED51 o="NEXCONTROL Co.,Ltd" -6CF17E o="Zhejiang Uniview Technologies Co.,Ltd." +6CEEF7 o="shenzhen scodeno technology co., Ltd." +6CF17E,88263F,C47905 o="Zhejiang Uniview Technologies Co.,Ltd." 6CF5E8 o="Mooredoll Inc." 6CF97C o="Nanoptix Inc." 6CF9D2 o="CHENGDU POVODO ELECTRONIC TECHNOLOGY CO., LTD" @@ -14153,19 +15098,25 @@ 6CFFBE o="MPB Communications Inc." 700136 o="FATEK Automation Corporation" 700258 o="01DB-METRAVIB" +70033F o="Pimax Technology(ShangHai)Co.,Ltd" 700433 o="California Things Inc." 7006AC o="Eastcompeace Technology Co., Ltd" +700777 o="OnTarget Technologies, Inc" 700BC0 o="Dewav Technology Company" 700FC7 o="SHENZHEN IKINLOOP TECHNOLOGY CO.,LTD." 700FEC o="Poindus Systems Corp." +701135 o="Livesecu co., Ltd" 7011AE o="Music Life LTD" 701404 o="Limited Liability Company" 70169F o="EtherCAT Technology Group" +7017D7 o="Shanghai Enflame Technology Co., Ltd." +701AD5 o="Avigilon Alta" 701AED o="ADVAS CO., LTD." 701D08 o="99IOT Shenzhen co.,ltd" 701D7F o="Comtech Technology Co., Ltd." 701DC4 o="NorthStar Battery Company, LLC" 701E68 o="Hanna Instruments, Inc." +701F0B o="WILOGY SRL" 702393 o="fos4X GmbH" 702605,CC988B o="SONY Visual Products Inc." 702900 o="Shenzhen ChipTrip Technology Co,Ltd" @@ -14177,18 +15128,20 @@ 702E80 o="DIEHL Connectivity Solutions" 702ED9,7472B0,78DDD9 o="Guangzhou Shiyuan Electronics Co., Ltd." 702F4B o="Steelcase Inc." +702F86 o="Marquardt GmbH" 702F97 o="Aava Mobile Oy" 70305E o="Nanjing Zhongke Menglian Information Technology Co.,LTD" 703187 o="ACX GmbH" 7032D5 o="Athena Wireless Communications Inc" +7036B2 o="Focusai Corp" 703811 o="Siemens Mobility Limited" 7038B4 o="Low Tech Solutions" 703AD8 o="Shenzhen Afoundry Electronic Co., Ltd" 703C03 o="RadiAnt Co.,Ltd" 703C39 o="SEAWING Kft" 7041B7 o="Edwards Lifesciences LLC" -70441C o="SHENZHEN KAIFA TECHNOLOGY CO.,LTD." 704642 o="CHYNG HONG ELECTRONIC CO., LTD." +7048B5 o="CTS System Co., LTD." 704AAE o="Xstream Flow (Pty) Ltd" 704AE4 o="Rinstrum Pty Ltd" 704CED o="TMRG, Inc." @@ -14196,6 +15149,7 @@ 704F08 o="Shenzhen Huisheng Information Technology Co., Ltd." 70533F o="Alfa Instrumentos Eletronicos Ltda." 7055F8 o="Cerebras Systems Inc" +705846 o="Trig Avionics Limited" 705896 o="InShow Technology" 705957 o="Medallion Instrumentation Systems" 705986 o="OOO TTV" @@ -14208,10 +15162,11 @@ 706417 o="ORBIS TECNOLOGIA ELECTRICA S.A." 706582,7CDD76 o="Suzhou Hanming Technologies Co., Ltd." 7065A3 o="Kandao lightforge Co., Ltd." -70661B o="Sonova AG" +7066E1 o="dnt Innovation GmbH" 706879 o="Saijo Denki International Co., Ltd." 706DEC o="Wifi-soft LLC" 70704C o="Purple Communications, Inc" +7070FC o="GOLD&WATER INDUSTRIAL LIMITED" 7071B3 o="Brain Corporation" 7072CF o="EdgeCore Networks" 7076DD o="OxyGuard Internation A/S" @@ -14220,17 +15175,21 @@ 707938 o="Wuxi Zhanrui Electronic Technology Co.,LTD" 707C18 o="ADATA Technology Co., Ltd" 707D95 o="Shenzhen City LinwlanTechnology Co. Ltd." +707DAF o="Plucent AB" 707EDE o="NASTEC LTD." 70820E o="as electronics GmbH" 70828E o="OleumTech Corporation" 70879E,C8478C o="Beken Corporation" 70884D o="JAPAN RADIO CO., LTD." +7089F5 o="Dongguan Lingjie IOT Co., LTD" 708B78 o="citygrow technology co., ltd" +708B97 o="INSYS icom GmbH" 708CBB o="MIMODISPLAYKOREA" 70918F o="Weber-Stephen Products LLC" 709383 o="Intelligent Optical Network High Tech CO.,LTD." 7093F8 o="Space Monkey, Inc." 709756 o="Happyelectronics Co.,Ltd" +709883 o="SHENZHEN KAYAN ELECTRONICS., LTD." 70991C o="Shenzhen Honesty Electronics Co.,Ltd" 709A0B o="Italian Institute of Technology" 709BA5 o="Shenzhen Y&D Electronics Co.,LTD." @@ -14238,6 +15197,7 @@ 709C8F o="Nero AG" 709E86 o="X6D Limited" 70A191 o="Trendsetter Medical, LLC" +70A3A4 o="Beijing Guming Communication Technology Co., Ltd." 70A41C o="Advanced Wireless Dynamics S.L." 70A66A o="Prox Dynamics AS" 70A84C o="MONAD., Inc." @@ -14248,7 +15208,10 @@ 70B08C o="Shenou Communication Equipment Co.,Ltd" 70B265 o="Hiltron s.r.l." 70B599 o="Embedded Technologies s.r.o." +70B651 o="Eight Sleep" 70B7E2 o="Jiangsu Miter Technology Co.,Ltd." +70B9BB o="Shenzhen Hankvision Technology CO.,LTD" +70BDD2 o="Adva Network Security GmbH" 70BF3E o="Charles River Laboratories" 70C6AC o="Bosch Automotive Aftermarket" 70C76F o="INNO S" @@ -14259,53 +15222,82 @@ 70D5E7 o="Wellcore Corporation" 70D6B6 o="Metrum Technologies" 70D880 o="Upos System sp. z o.o." +70D983 o="Shanghai JINXVM Microelectronics Co.,Ltd." +70DA17 o="Austrian Audio GmbH" 70DA9C o="TECSEN" 70DEF9 o="FAI WAH INTERNATIONAL (HONG KONG) LIMITED" 70E027 o="HONGYU COMMUNICATION TECHNOLOGY LIMITED" 70E139 o="3view Ltd" 70E24C o="SAE IT-systems GmbH & Co. KG" 70E843 o="Beijing C&W Optical Communication Technology Co.,Ltd." +70EB74 o="Ningbo Goneo Electric Appliance Co., Ltd." +70EDFA o="imperix Ltd" 70EE50 o="Netatmo" 70EEA3 o="Eoptolink Technology Inc. Ltd," 70F11C o="Shenzhen Ogemray Technology Co.,Ltd" 70F176 o="Data Modul AG" 70F1E5 o="Xetawave LLC" -70F82B,78B213,E00EE4,E42686 o="DWnet Technologies(Suzhou) Corporation" +70F6CF o="Relay, Inc." 70FF5C o="Cheerzing Communication(Xiamen)Technology Co.,Ltd" 74042B,E02CB2 o="Lenovo Mobile Communication (Wuhan) Company Limited" +7408DE o="Fujian Landi Commercial Technology Co., Ltd." +7409AC o="Quext, LLC" 740ABC o="LightwaveRF Technology Ltd" 740EDB o="Optowiz Co., Ltd" +741213 o="Linksys USA, Inc" 741489 o="SRT Wireless" 7415E2 o="Tri-Sen Systems Corporation" +741B39 o="CONVEY INDIA PRIVATE LIMITED" 741F79 o="YOUNGKOOK ELECTRONICS CO.,LTD" +74205F o="Shenzhen Zhongruixin Intelligent Technology Co., Ltd." +74220D o="CHENGDU XUGUANG TECHNOLOGY CO,LTD" +74249F o="TIBRO Corp." +74272C o="Advanced Micro Devices, Inc." 74273C o="ChangYang Technology (Nanjing) Co., LTD" 742857 o="Mayfield Robotics" +742920 o="MCX-PRO Kft." 742B0F o="Infinidat Ltd." 742D0A o="Norfolk Elektronik AG" +742E4F o="Stienen Group" +742EC1 o="Dixon Electro Appliances Pvt Ltd" 742EDB o="Perinet GmbH" 742EFC o="DirectPacket Research, Inc," 743256 o="NT-ware Systemprg GmbH" +7432C2 o="KYOLIS" 743400 o="MTG Co., Ltd." +743491 o="Shenzhen Kings IoT Co., Ltd" 7434AE o="this is engineering Inc." 74372F o="Tongfang Shenzhen Cloudcomputing Technology Co.,Ltd" 74373B o="UNINET Co.,Ltd." 743889 o="ANNAX Anzeigesysteme GmbH" +743E39 o="YUSUR Technology Co., Ltd." 743ECB o="Gentrice tech" +744687 o="Kingsignal Technology Co., Ltd." 744BE9 o="EXPLORER HYPERTECH CO.,LTD" 744D79 o="Arrive Systems Inc." +744DDC o="Sonim Technologies, Inc" +7452CE o="Hengtai Intelligent Technology (Zhongshan) Co., LTD" 745327 o="COMMSEN CO., LIMITED" +7453A8 o="ACL Airshop BV" +74546B o="hangzhou zhiyi communication co., ltd" 745798 o="TRUMPF Laser GmbH + Co. KG" +745889 o="Multilaser Industrial S.A." 745933 o="Danal Entertainment" +745CFA o="Shenzhen Shunrui Gaojie Technology Co., Ltd." 745F00 o="Samsung Semiconductor Inc." 745F90 o="LAM Technologies" 745FAE o="TSL PPL" +74604C o="RODE" 74614B o="Chongqing Huijiatong Information Technology Co., Ltd." +7461D1,989DB2,A8E207,B8B7DB o="GOIP Global Services Pvt. Ltd." 7463DF o="VTS GmbH" 7465D1 o="Atlinks" 746630 o="T:mi Ytti" +74675F o="COMPAL INFORMATION(KUNSHAN)CO.,LTD." 746A3A o="Aperi Corporation" 746A89 o="Rezolt Corporation" 746A8F o="VS Vision Systems GmbH" +746AB3 o="MICIUS Laboratory" 746B82 o="MOVEK" 746BAB o="GUANGDONG ENOK COMMUNICATION CO., LTD" 746EE4 o="Asia Vital Components Co.,Ltd." @@ -14313,124 +15305,168 @@ 746F3D o="Contec GmbH" 74721E o="Edison Labs Inc." 7472F2 o="Chipsip Technology Co., Ltd." +74731D o="ifm electronic gmbh" 747336 o="MICRODIGTAL Inc" +7473E2 o="Hillstone Networks Corp." +7475DF o="TECLINK" +74767D o="shenzhen kexint technology co.,ltd" 747818 o="Jurumani Solutions" +747847 o="Interdisciplinary Consulting Corporation" 747B7A o="ETH Inc." 747DB6 o="Aliwei Communications, Inc" 747E1A o="Red Embedded Design Limited" 747E2D o="Beijing Thomson CITIC Digital Technology Co. LTD." -74819A o="PT. Hartono Istana Teknologi" +74819A,9C5385 o="PT. Hartono Istana Teknologi" 7484E1 o="Dongguan Haoyuan Electronics Co.,Ltd" 7487A9 o="OCT Technology Co., Ltd." 748A69 o="Korea Image Technology Co., Ltd" +748B29 o="Micobiomed" 748B34 o="Shanghai Smart System Technology Co., Ltd" 748E08 o="Bestek Corp." 748F1B o="MasterImage 3D" -748F4D o="MEN Mikro Elektronik GmbH" +74901F o="Ragile Networks Inc." 749050 o="Renesas Electronics Corporation" 7491BD o="Four systems Co.,Ltd." +7492BA o="Movesense Ltd" 74943D o="AgJunction" +749533 o="Westala Technologies Inc." +749552 o="Xuzhou WIKA Electronics Control Technology Co., Ltd." 749637 o="Todaair Electronic Co., Ltd" -749C52 o="Huizhou Desay SV Automotive Co., Ltd." +74978E o="Nova Labs" +749AC0 o="Cachengo, Inc." +749C52,CCD920 o="Huizhou Desay SV Automotive Co., Ltd." 749CE3 o="KodaCloud Canada, Inc" -74A34A o="ZIMI CORPORATION" 74A4A7 o="QRS Music Technologies, Inc." 74A4B5 o="Powerleader Science and Technology Co. Ltd." -74AB93 o="Blink by Amazon" +74A57E o="Panasonic Ecology Systems" 74AC5F o="Qiku Internet Network Scientific (Shenzhen) Co., Ltd." +74AD45 o="Valeo Auto- Electric Hungary Ltd" 74AE76 o="iNovo Broadband, Inc." 74B00C o="Network Video Technologies, Inc" +74B3EA o="EK INC." 74B472 o="CIESSE" +74B7E6,907A58 o="Zegna-Daidong Limited" +74B80F o="Zipline International Inc." 74B91E o="Nanjing Bestway Automation System Co., Ltd" 74BADB o="Longconn Electornics(shenzhen)Co.,Ltd" 74BBD3 o="Shenzhen xeme Communication Co., Ltd." 74BFA1 o="HYUNTECK" 74BFB7 o="Nusoft Corporation" 74C621 o="Zhejiang Hite Renewable Energy Co.,LTD" +74C64A o="AGOS Co.,Ltd" +74C76E o="RTK-TECHNOLOGIES, LLC" 74CA25,FC2F40 o="Calxeda, Inc." 74CBF3 o="Lava international limited" 74CD0C o="Smith Myers Communications Ltd." 74CE56 o="Packet Force Technology Limited Company" +74D082,88B863,903C1D,A0004C,A062FB,C40826,CC1228,DC9A7D,E43BC9,E48A93 o="HISENSE VISUAL TECHNOLOGY CO.,LTD" +74D5B8 o="Infraeo Inc" 74D654 o="GINT" 74D675 o="WYMA Tecnologia" -74D7CA o="Panasonic Corporation Automotive" +74D713,B0A3F2 o="Huaqin Technology Co. LTD" 74D850 o="Evrisko Systems" +74D9EB o="Petabit Scale, Inc." 74DBD1 o="Ebay Inc" +74DDCB o="China Leadshine Technology Co.,Ltd" 74E06E o="Ergophone GmbH" 74E277 o="Vizmonet Pte Ltd" 74E424 o="APISTE CORPORATION" 74E537 o="RADSPIN" +74E6C7 o="LUXSHARE-ICT Co., Ltd." 74ECF1 o="Acumen" +74EE8D o="Apollo Intelligent Connectivity (Beijing) Technology Co., Ltd." 74F07D o="BnCOM Co.,Ltd" 74F102 o="Beijing HCHCOM Technology Co., Ltd" 74F413 o="Maxwell Forest" 74F661 o="Schneider Electric Fire & Security Oy" 74F726 o="Neuron Robotics" 74F737 o="KCE" -74F7F6 o="Shanghai Sunmi Technology Co.,Ltd." 74F85D o="Berkeley Nucleonics Corp" 74F91A o="Onface" 74FDA0 o="Compupal (Group) Corporation" 74FF7D o="Wren Sound Systems, LLC" 78028F o="Adaptive Spectrum and Signal Alignment (ASSIA), Inc." 7802B7 o="ShenZhen Ultra Easy Technology CO.,LTD" +78047A o="Edge Networks LLC" 780541 o="Queclink Wireless Solutions Co., Ltd" 78055F o="Shenzhen WYC Technology Co., Ltd." +78058C o="mMax Communications, Inc." +78071C,BC6E76 o="Green Energy Options Ltd" 780738 o="Z.U.K. Elzab S.A." 780AC7 o="Baofeng TV Co., Ltd." 780ED1 o="TRUMPF Werkzeugmaschinen GmbH+Co.KG" 781100 o="Quantumsolution" 781185 o="NBS Payment Solutions Inc." 7812B8 o="ORANTEK LIMITED" +78152D o="UNION CHIP TECHNOLOGY LIMITED" 78192E o="NASCENT Technology" 781DFD o="Jabil Inc" +781F11 o="RAB Lighting" 782079 o="ID Tech" +7820BD o="Polysense (Beijing) Technologies Co. Ltd" 78223D o="Affirmed Networks" 782544 o="Omnima Limited" 78257A o="LEO Innovation Lab" +7829AD o="NINGBO QIXIANG INFORMATION TECHNOLOGY CO., LTD" +782AF8 o="IETHCOM INFORMATION TECHNOLOGY CO., LTD." 782F17 o="Xlab Co.,Ltd" 78303B o="Stephen Technologies Co.,Limited" 7830E1 o="UltraClenz, LLC" +7830F5 o="TBT Inc." 78324F o="Millennium Group, Inc." 7835A0 o="Zurn Industries LLC" 783CE3 o="Kai-EE" 783D5B o="TELNET Redes Inteligentes S.A." 783F15 o="EasySYNC Ltd." 784405 o="FUJITU(HONG KONG) ELECTRONIC Co.,LTD." +78444A o="Shenzhen Aiwinn information Technology Co., Ltd." 784501 o="Biamp Systems" +78467D o="SKAIChips" +78482C o="START USA, INC." 78491D o="The Will-Burt Company" 784B08 o="f.robotics acquisitions ltd" +785005 o="MOKO TECHNOLOGY Ltd" 78510C o="LiveU Ltd." -78524A o="Ensenso GmbH" +78524A o="Optonic GmbH" 785262 o="Shenzhen Hojy Software Co., Ltd." -78530D,80EE25,C08F20 o="Shenzhen Skyworth Digital Technology CO., Ltd" 785364 o="SHIFT GmbH" 7853F2 o="Roxton Systems Ltd." 785517 o="SankyuElectronics" +785536 o="shenzhen AZW Technology(Group) Co.,Ltd" 785712 o="Mobile Integration Workgroup" +7857B0,C836A3 o="GERTEC BRASIL LTDA" +785844 o="Hangzhou Sciener Smart Technology Co., Ltd." 7858F3 o="Vachen Co.,Ltd" 78593E o="RAFI GmbH & Co.KG" +785994 o="Alif Semiconductor, Inc." 785C28 o="Prime Motion Inc." 785C72 o="Hioso Technology Co., Ltd." 785F4C o="Argox Information Co., Ltd." +786299 o="BITSTREAM sp. z o.o." 7864E6 o="Green Motive Technology Limited" +78653B o="Shaoxing Ourten Electronics Co., Ltd." +7866A5,98F67A,F02C59,F8F2F0 o="Chipsea Technologies (Shenzhen) Crop." 7866AE o="ZTEC Instruments, Inc." +7866D7 o="GENSTORAIGE TECHNOLOGY CO.LTD." 7869D4 o="Shenyang Vibrotech Instruments Inc." -786DEB o="GE Lighting" 787052 o="Welotec GmbH" +7876D9 o="EXARA Group" +787A6F o="Juice Technology AG" +787DF3 o="Sterlite Technologies Limited" 787F62 o="GiK mbH" 78818F o="Server Racks Australia Pty Ltd" 7884EE o="INDRA ESPACIO S.A." 78870D o="Unifiedgateways India Private Limited" 78888A o="CDR Sp. z o.o. Sp. k." 788973 o="CMC" -788B2A o="Zhen Shi Information Technology (Shanghai) Co., Ltd." 788B77 o="Standar Telecom" -788C4D o="Indyme Solutions, LLC" 788E33 o="Jiangsu SEUIC Technology Co.,Ltd" +788E45 o="Jizaie inc." +7891DE o="Guangdong ACIGA Science&Technology Co.,Ltd" 7894E8 o="Radio Bridge" 7897C3 o="DINGXIN INFORMATION TECHNOLOGY CO.,LTD" 7898FD o="Q9 Networks Inc." +789912 o="Flyingvoice (HongKong) Technologies Limited" 78995C o="Nationz Technologies Inc" 789966 o="Musilab Electronics (DongGuan)Co.,Ltd." 78998F o="MEDILINE ITALIA SRL" @@ -14440,7 +15476,9 @@ 789F87 o="Siemens AG I IA PP PRM" 78A051 o="iiNet Labs Pty Ltd" 78A183 o="Advidia" +78A1D8 o="ShenzhenEnjoyTechnologyCo.,Ltd" 78A351,F85E3C o="SHENZHEN ZHIBOTONG ELECTRONICS CO.,LTD" +78A4BA o="Marquardt India Pvt Ltd" 78A5DD o="Shenzhen Smarteye Digital Electronics Co., Ltd" 78A683 o="Precidata" 78A6BD o="DAEYEON Control&Instrument Co,.Ltd" @@ -14455,37 +15493,44 @@ 78B6C1 o="AOBO Telecom Co.,Ltd" 78B6EC o="Scuf Gaming International LLC" 78B81A o="INTER SALES A/S" -78B8D6,94FB29 o="Zebra Technologies Inc." 78BAD0 o="Shinybow Technology Co. Ltd." +78BB88 o="Maxio Technology (Hangzhou) Ltd." 78BEB6 o="Enhanced Vision" 78BEBD o="STULZ GmbH" 78C40E o="H&D Wireless" 78C4AB o="Shenzhen Runsil Technology Co.,Ltd" -78C6BB o="Innovasic, Inc." 78CA5E o="ELNO" +78CB2C o="Join Digital, Inc." 78CB33 o="DHC Software Co.,Ltd" 78CC2B o="SINEWY TECHNOLOGY CO., LTD" 78CD8E,B89BC9,C4393A o="SMC Networks Inc" +78CEA5 o="Vital link vietnam company limited" 78D004 o="Neousys Technology Inc." 78D129 o="Vicos" 78D34F o="Pace-O-Matic, Inc." 78D38D o="HONGKONG YUNLINK TECHNOLOGY LIMITED" +78D3ED o="NORMA" 78D5B5 o="NAVIELEKTRO KY" 78D66F o="Aristocrat Technologies Australia Pty. Ltd." 78D99F o="NuCom HK Ltd." +78D9E9 o="MOMENTUM IOT" 78DAA2 o="Cynosure Technologies Co.,Ltd" 78DAB3 o="GBO Technology" 78DDD6 o="c-scape" +78E167 o="Launch Tech Co., Ltd." 78E2BD o="Vodafone Automotive S.p.A." 78E980 o="RainUs Co.,Ltd" 78EB39 o="Instituto Nacional de Tecnología Industrial" 78EC22 o="Shanghai Qihui Telecom Technology Co., LTD" 78EC74 o="Kyland-USA" 78EF4C o="Unetconvergence Co., Ltd." +78F276 o="Cyklop Fastjet Technologies (Shanghai) Inc." 78F5E5 o="BEGA Gantenbrink-Leuchten KG" +78F7A3 o="Opentext" 78F7D0 o="Silverbrook Research" 78F8B8 o="Rako Controls Ltd" 78FC14 o="Family Zone Cyber Safety Ltd" +78FDF1 o="Shenzhen Huadian Communication Co., Ltd" 78FE41 o="Socus networks" 78FEE2 o="Shanghai Diveo Technology Co., Ltd" 7C0187 o="Curtis Instruments, Inc." @@ -14495,6 +15540,7 @@ 7C08D9 o="Shanghai B-Star Technology Co" 7C092B o="Bekey A/S" 7C0A50 o="J-MEX Inc." +7C0C92 o="Suzhou Mobydata Smart System Co.,Ltd." 7C0CF6 o="Guangdong Huiwei High-tech Co., Ltd." 7C1015 o="Brilliant Home Technology, Inc." 7C11CD o="QianTang Technology" @@ -14503,13 +15549,16 @@ 7C18CD o="E-TRON Co.,Ltd." 7C1A03 o="8Locations Co., Ltd." 7C1AFC o="Dalian Co-Edifice Video Technology Co., Ltd" +7C1E4A o="FORTUNE MARKETING PRIVATE LIMITED" 7C1EB3 o="2N TELEKOMUNIKACE a.s." 7C2048 o="KoamTac" 7C21D8 o="Shenzhen Think Will Communication Technology co., LTD." +7C246A o="Scita Solutions" 7C2587 o="chaowifi.com" 7C2BE1 o="Shenzhen Ferex Electrical Co.,Ltd" 7C2CF3 o="Secure Electrans Ltd" 7C2E0D o="Blackmagic Design" +7C3180 o="SMK corporation" 7C336E o="MEG Electronics Inc." 7C3548 o="Transcend Information" 7C386C o="Real Time Logic" @@ -14519,20 +15568,26 @@ 7C3E9D o="PATECH" 7C438F o="E-Band Communications Corp." 7C444C o="Entertainment Solutions, S.L." +7C45D0 o="Shenzhen Wewins Wireless Co., ltd" 7C48B2 o="Vida Resources Lte Ltd" 7C49B9 o="Plexus Manufacturing Sdn Bhd" 7C4A82 o="Portsmith LLC" 7C4AA8 o="MindTree Wireless PVT Ltd" 7C4B78 o="Red Sun Synthesis Pte Ltd" 7C4C58 o="Scale Computing, Inc." +7C4E09 o="Shenzhen Skyworth Wireless Technology Co.,Ltd" 7C4F7D o="Sawwave" +7C50DA o="E.J Ward" +7C5184 o="Unis Flash Memory Technology(Chengdu)Co.,Ltd." 7C5189 o="SG Wireless Limited" 7C534A o="Metamako" +7C55A7 o="Kastle Systems" 7C55E7 o="YSI, Inc." 7C574E o="COBI GmbH" 7C5A67 o="JNC Systems, Inc." 7C604A o="Avelon" 7C696B o="Atmosic Technologies" +7C6A8A o="SINOBONDER Technology Co., Ltd." 7C6AB3 o="IBC TECHNOLOGIES INC." 7C6AC3 o="GatesAir, Inc" 7C6ADB o="SafeTone Technology Co.,Ltd" @@ -14541,6 +15596,7 @@ 7C6BF7 o="NTI co., ltd." 7C6C39 o="PIXSYS SRL" 7C6C8F o="AMS NEVE LTD" +7C6CE1,90F260,F85C7D-F85C7E o="Shenzhen Honesty Electronics Co.,Ltd." 7C6DA6 o="Superwave Group LLC" 7C6F06 o="Caterpillar Trimble Control Technologies" 7C6FF8 o="ShenZhen ACTO Digital Video Technology Co.,Ltd." @@ -14556,13 +15612,18 @@ 7C822D o="Nortec" 7C8274 o="Shenzhen Hikeen Technology CO.,LTD" 7C8306 o="Glen Dimplex Nordic as" +7C8437 o="China Post Communications Equipment Co., Ltd." 7C8D91 o="Shanghai Hongzhuo Information Technology co.,LTD" 7C94B2 o="Philips Healthcare PCCI" 7C9763 o="Openmatics s.r.o." +7C992E o="Shanghai Notion lnformatio Technology Co.,Ltd." +7C9946,F8D0C5 o="Sector Alarm Tech S.L." 7C9A9B o="VSE valencia smart energy" 7CA15D o="GN ReSound A/S" +7CA236 o="Verizon Connect" 7CA237 o="King Slide Technology CO., LTD." 7CA29B o="D.SignT GmbH & Co. KG" +7CA58F o="shenzhen Qikai Electronic Co., Ltd." 7CA61D o="MHL, LLC" 7CA97D o="Objenious" 7CAB25 o="MESMO TECHNOLOGY INC." @@ -14573,8 +15634,11 @@ 7CB542 o="ACES Technology" 7CB77B o="Paradigm Electronics Inc" 7CB960 o="Shanghai X-Cheng telecom LTD" +7CBAC0 o="EVBox BV" +7CBAC6 o="Solar Manager AG" 7CBB6F o="Cosco Electronics Co., Ltd." 7CBD06 o="AE REFUsol" +7CBF77,D823E0 o="SPEEDTECH CORP." 7CBF88 o="Mobilicom LTD" 7CC4EF o="Devialet" 7CC6C4 o="Kolff Computer Supplies b.v." @@ -14585,43 +15649,57 @@ 7CCB0D o="Antaira Technologies, LLC" 7CCD11 o="MS-Magnet" 7CCD3C o="Guangzhou Juzing Technology Co., Ltd" +7CCF4E o="FINE TRIUMPH TECHNOLOGY CORP.,LTD." 7CCFCF o="Shanghai SEARI Intelligent System Co., Ltd" +7CD44D o="Shanghai Moorewatt Energy Technology Co.,Ltd" 7CD762 o="Freestyle Technology Pty Ltd" 7CD844 o="Enmotus Inc" 7CD9FE o="New Cosmos Electric Co., Ltd." 7CDA84 o="Dongnian Networks Inc." +7CDCCC o="BEIJING STARBLAZE TECHNOLOGY CO.,LTD" 7CDD11 o="Chongqing MAS SCI&TECH.Co.,Ltd" 7CDD20 o="IOXOS Technologies S.A." 7CDD90 o="Shenzhen Ogemray Technology Co., Ltd." 7CDDE9 o="ATOM tech Inc." 7CE044 o="NEON Inc" +7CE152 o="THE GOODYEAR TIRE & RUBBER COMPANY" 7CE1FF o="Computer Performance, Inc. DBA Digital Loggers, Inc." 7CE524 o="Quirky, Inc." 7CE56B o="ESEN Optoelectronics Technology Co.,Ltd." +7CE913,AC122F,E8EECC,F49D8A o="Fantasia Trading LLC" 7CEB7F o="Dmet Products Corp." 7CEBAE o="Ridgeline Instruments" 7CEBEA o="ASCT" 7CEC9B o="Fuzhou Teraway Information Technology Co.,Ltd" +7CEE7B o="Logically Us Ltd" 7CEF18 o="Creative Product Design Pty. Ltd." +7CEF40 o="Nextorage Corporation" 7CEF61 o="STR Elektronik Josef Schlechtinger GmbH" 7CEF8A o="Inhon International Ltd." 7CF098 o="Bee Beans Technologies, Inc." 7CF0BA o="Linkwell Telesystems Pvt Ltd" 7CF2DD o="Vence Corp" 7CF429 o="NUUO Inc." +7CF462 o="BEIJING HUAWOO TECHNOLOGIES CO.LTD" 7CF95C o="U.I. Lapp GmbH" +7CFA80,A85C03 o="JiangSu Fulian Communication Technology Co., Ltd" 7CFE28 o="Salutron Inc." 7CFE4E o="Shenzhen Safe vision Technology Co.,LTD" +7CFE62 o="ShenZhen XinZhongXin Technology Co., Ltd" 7CFF62 o="Huizhou Super Electron Technology Co.,Ltd." +80015C,90CC24,B402F2 o="Synaptics, Inc" 8002DF o="ORA Inc." +80053A o="CHeKT Inc." 8005DF o="Montage Technology Group Limited" +80071B o="VSOLUTION TELECOMMUNICATION TECHNOLOGY CO.,LTD." 8007A2 o="Esson Technology Inc." 800A06 o="COMTEC co.,ltd" 800B51 o="Chengdu XGimi Technology Co.,Ltd" 800DD7 o="Latticework, Inc" 800E24 o="ForgetBox" +800EA9 o="TCL Yuxin Zhixing Technology (Huizhou) Co.,Ltd" 801440 o="Sunlit System Technology Corp" -801609 o="Sleep Number" +801609,E023D7 o="Sleep Number" 8016B7 o="Brunel University" 801967 o="Shanghai Reallytek Information Technology Co.,Ltd" 8019FE o="JianLing Technology CO., LTD" @@ -14633,6 +15711,7 @@ 802E14 o="azeti Networks AG" 802FDE o="Zurich Instruments AG" 803457 o="OT Systems Limited" +8038D4 o="Fibercentury Network Technology Co.,Ltd." 8038FD o="LeapFrog Enterprises, Inc." 8039E5 o="PATLITE CORPORATION" 803B2A o="ABB Xiamen Low Voltage Equipment Co.,Ltd." @@ -14640,25 +15719,31 @@ 803BF6 o="LOOK EASY INTERNATIONAL LIMITED" 803F5D o="Winstars Technology Ltd" 803FD6 o="bytes at work AG" +804005 o="Guangdong COROS Sports Technology Co.,Ltd" 80427C o="Adolf Tedsen GmbH & Co. KG" 804731 o="Packet Design, Inc." +804863 o="Electralsys Networks" 804B20 o="Ventilation Control" 804F58 o="ThinkEco, Inc." 805067 o="W & D TECHNOLOGY CORPORATION" +80563C o="ZF" +805722 o="Wuxi Sunning Smart Devices Co., Ltd" 8058C5 o="NovaTec Kommunikationstechnik GmbH" 8059FD o="Noviga" -805E0C,805EC0 o="YEALINK(XIAMEN) NETWORK TECHNOLOGY CO.,LTD." -80615F o="Beijing Sinead Technology Co., Ltd." +805F8E,84F758 o="Huizhou BYD Electronic Co., Ltd." 80618F o="Shenzhen sangfei consumer communications co.,ltd" 806459 o="Nimbus Inc." 80647A o="Ola Sense Inc" 8065E9 o="BenQ Corporation" 806629 o="Prescope Technologies CO.,LTD." 806940 o="LEXAR CO.,LIMITED" +806A10 o="Whisker Labs - Ting" 806C8B o="KAESER KOMPRESSOREN AG" 806CBC o="NET New Electronic Technology GmbH" 807459 o="K's Co.,Ltd." +807677 o="hangzhou puwell cloud tech co., ltd." 807693 o="Newag SA" +807933 o="Aigentec Technology(Zhejiang) Co., Ltd." 8079AE o="ShanDong Tecsunrise Co.,Ltd" 807A7F o="ABB Genway Xiamen Electrical Equipment CO., LTD" 807B1E o="Corsair Memory, Inc." @@ -14668,55 +15753,72 @@ 808287 o="ATCOM Technology Co.Ltd." 8084A9 o="oshkosh Corporation" 808698 o="Netronics Technologies Inc." +808AF7 o="Nanoleaf" 808B5C o="Shenzhen Runhuicheng Technology Co., Ltd" 8091C0 o="AgileMesh, Inc." +8092A5 o="Valeo Interior Controls (Shenzhen) Co.,Ltd" 809393 o="Xapt GmbH" 80946C o="TOKYO RADAR CORPORATION" 80971B o="Altenergy Power System,Inc." +809733 o="Shenzhen Elebao Technology Co., Ltd" +809FE4,8C0528,8C44BB o="SHEN ZHEN TENDA TECHNOLOGY CO.,LTD" 80A1AB o="Intellisis" -80A796 o="Neurotek LLC" +80A796 o="Neuralink Corp." 80A85D o="Osterhout Design Group" 80AAA4 o="USAG" +80AFCA,D40DAB o="Shenzhen Cudy Technology Co., Ltd." 80B219 o="ELEKTRON TECHNOLOGY UK LIMITED" +80B269 o="Subtle Computing" 80B289 o="Forworld Electronics Ltd." 80B32A o="UK Grid Solutions Ltd" 80B624 o="IVS" 80B708 o="Blue Danube Systems, Inc" 80B709 o="Viptela, Inc" +80B745 o="The Silk Technologies ILC LTD" 80B95C o="ELFTECH Co., Ltd." +80BA16 o="Micas Networks Inc." 80BAAC o="TeleAdapt Ltd" 80BAE6 o="Neets" 80BBEB o="Satmap Systems Ltd" +80C3BA o="Sonova Consumer Hearing GmbH" +80C45D o="IPG Laser GmbH" +80C501 o="OctoGate IT Security Systems GmbH" 80C548 o="Shenzhen Zowee Technology Co.,Ltd" 80C63F o="Remec Broadband Wireless , LLC" 80C6CA o="Endian s.r.l." -80C755,B46C47,D8AFF1 o="Panasonic Appliances Company" 80C862 o="Openpeak, Inc" 80CA4B o="SHENZHEN GONGJIN ELECTRONICS CO.,LTD" +80CA52,84BA59 o="Wistron InfoComm(Chongqing)Co.,Ltd." 80CEB1 o="Theissen Training Systems GmbH" 80D019 o="Embed, Inc" 80D065 o="CKS Corporation" 80D18B o="Hangzhou I'converge Technology Co.,Ltd" +80D266 o="ScaleFlux" 80D433 o="LzLabs GmbH" +80D52C o="Beijing Cheering Networks Technology Co.,Ltd." 80D733 o="QSR Automations, Inc." 80DB31 o="Power Quotient International Co., Ltd." -80F1F1 o="Tech4home, Lda" +80DECC o="HYBE Co.,LTD" +80E94A o="LEAPS s.r.o." 80F25E o="Kyynel" 80F593 o="IRCO Sistemas de Telecomunicación S.A." 80F8EB o="RayTight" +80FBF1 o="Freescale Semiconductor (China) Ltd." 80FFA8 o="UNIDIS" 8401A7 o="Greyware Automation Products, Inc" 8404D2 o="Kirale Technologies SL" +8407C4 o="Walter Kidde Portable Equipment, Inc." +840A9E o="Nexapp Technologies Pvt Ltd" 840F45 o="Shanghai GMT Digital Technologies Co., Ltd" 841715 o="GP Electronics (HK) Ltd." 841826 o="Osram GmbH" -841B38 o="Shenzhen Excelsecu Data Technology Co.,Ltd" +841B38,C4D496 o="Shenzhen Excelsecu Data Technology Co.,Ltd" 841E26 o="KERNEL-I Co.,LTD" 842141 o="Shenzhen Ginwave Technologies Ltd." 84225E o="SHENZHEN TECHNEWCHIP TECHNOLOGY CO.,LTD." 842519 o="Samsung Electronics" -84253F o="silex technology, Inc." 8425A4 o="Tariox Limited" +84267A o="GUANGDONG TAIDE ZHILIAN TECHNOLOGY CO.,LTD" 842690 o="BEIJING THOUGHT SCIENCE CO.,LTD." 8427CE o="Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints" 84285A o="Saffron Solutions Inc" @@ -14724,71 +15826,91 @@ 842B50 o="Huria Co.,Ltd." 842BBC o="Modelleisenbahn GmbH" 842F75 o="Innokas Group" +8430CE o="Shenzhen Jaguar Microsystems Co., Ltd" 8430E5 o="SkyHawke Technologies, LLC" 84326F o="GUANGZHOU AVA ELECTRONICS TECHNOLOGY CO.,LTD" 8432EA o="ANHUI WANZTEN P&T CO., LTD" +8433F2 o="Shenzhen Stellamore Technology Co.,Ltd" 843611 o="hyungseul publishing networks" -843E79,A03C31,B4EE25,DC4BFE o="Shenzhen Belon Technology CO.,LTD" +843B10,B812DA o="LVSWITCHES INC." +843C4C o="Robert Bosch SRL" 843F4E o="Tri-Tech Manufacturing, Inc." -844076 o="Drivenets" +844076,A4C0B0 o="Drivenets" 844464 o="ServerU Inc" +8445A0 o="Tube investments of India Limited" +844709 o="Shenzhen IP3 Century Intelligent Technology CO.,Ltd" 844823 o="WOXTER TECHNOLOGY Co. Ltd" 844915 o="vArmour Networks, Inc." -844BB7 o="Beijing Sankuai Online Technology Co.,Ltd" +8449EE,98D93D o="Demant Enterprise A/S" +844BB7,E881AB o="Beijing Sankuai Online Technology Co.,Ltd" 844F03 o="Ablelink Electronics Ltd" 84509A o="Easy Soft TV Co., Ltd" 84569C o="Coho Data, Inc.," 845787 o="DVR C&C Co., Ltd." 845A81 o="ffly4u" +845B0C o="eFAB P.S.A." 845C93 o="Chabrier Services" 845DD7 o="Shenzhen Netcom Electronics Co.,Ltd" +846082 o="Hyperloop Technologies, Inc dba Virgin Hyperloop" 8462A6 o="EuroCB (Phils), Inc." +84652B o="Donaldson Company" 8468C8 o="TOTOLINK TECHNOLOGY INT‘L LIMITED" 846A66 o="Sumitomo Kizai Co.,Ltd." 846AED o="Wireless Tsukamoto.,co.LTD" 846B48 o="ShenZhen EepuLink Co., Ltd." 846EB1 o="Park Assist LLC" -847207 o="I&C Technology" 847303 o="Letv Mobile and Intelligent Information Technology (Beijing) Corporation Ltd." 847616 o="Addat s.r.o." 847778 o="Cochlear Limited" 847933 o="profichip GmbH" 847D50 o="Holley Metering Limited" 848094 o="Meter, Inc." +84821B o="PROX SG Pte Ltd" 8482F4 o="Beijing Huasun Unicreate Technology Co., Ltd" 848319 o="Hangzhou Zero Zero Technology Co., Ltd." 848336 o="Newrun" 848433 o="Paradox Engineering SA" 84850A o="Hella Sonnen- und Wetterschutztechnik GmbH" +848553 o="Biznes Systema Telecom, LLC" 8485E6 o="Guangdong Asano Technology CO.,Ltd." +848687 o="weiyuantechnology" 8486F3 o="Greenvity Communications" +848A59 o="Hisilicon Technologies Co., Ltd" 848D84 o="Rajant Corporation" 848E96 o="Embertec Pty Ltd" -849000 o="Arnold & Richter Cine Technik" +849000 o="Arnold&Richter Cine Technik GmbH & Co. Betriebs KG" 84930C o="InCoax Networks Europe AB" 849681 o="Cathay Communication Co.,Ltd" 8497B8 o="Memjet Inc." +849C02 o="Druid Software" +849D4B,880E85,984744,B49A95 o="Shenzhen Boomtech Industrial Corporation" 849DC5 o="Centera Photonics Inc." 84A24D o="Birds Eye Systems Private Limited" 84A3B5 o="Propulsion systems" 84A788 o="Perples" 84A991 o="Cyber Trans Japan Co.,Ltd." 84A9EA o="Career Technologies USA" +84AAA4 o="SONoC Corp." +84AC60 o="Guangxi Hesheng Electronics Co., Ltd." 84ACA4 o="Beijing Novel Super Digital TV Technology Co., Ltd" 84ACFB o="Crouzet Automatismes" -84AF1F o="Beat System Service Co,. Ltd." 84B31B o="Kinexon GmbH" 84B866 o="Beijing XiaoLu technology co. LTD" +84BE8B o="Chengdu Geeker Technology Co., Ltd." 84C3E8 o="Vaillant GmbH" 84C727 o="Gnodal Ltd" -84C78F o="STORDIS GmbH" +84C78F o="APS Networks GmbH" 84C7A9 o="C3PO S.A." 84C8B1 o="Incognito Software Systems Inc." +84CC11 o="LG Electornics" 84CD62 o="ShenZhen IDWELL Technology CO.,Ltd" 84CFBF o="Fairphone" +84D0DB,A486DB o="Guangdong Juan Intelligent Technology Joint Stock Co., Ltd." 84D32A o="IEEE 1905.1" +84D5A0,F8E44E o="MCOT INC." +84D608 o="Wingtech Mobile Communications Co., Ltd." 84D9C8 o="Unipattern Co.," -84DB9E o="Aifloo AB" +84DB9E o="Pink Nectarine Health AB" 84DDB7 o="Cilag GmbH International" 84DE3D o="Crystal Vision Ltd" 84DF0C o="NET2GRID BV" @@ -14799,55 +15921,75 @@ 84E5D8 o="Guangdong UNIPOE IoT Technology Co.,Ltd." 84E629 o="Bluwan SA" 84E714 o="Liang Herng Enterprise,Co.Ltd." -84EA97,98C97C,A47D9F o="Shenzhen iComm Semiconductor CO.,LTD" 84EA99 o="Vieworks" +84EAD2 o="KOGANEI CORPORATION" 84EB3E o="Vivint Smart Home" +84EB3F o="Vivint Inc" 84ED33 o="BBMC Co.,Ltd" +84F117 o="Newseason" 84F129 o="Metrascale Inc." +84F175 o="Jiangxi Xunte Intelligent Terminal Co., Ltd" +84F1D0 o="EHOOME IOT PRIVATE LIMITED" +84F44C o="International Integrated Systems., Inc." 84F493 o="OMS spol. s.r.o." 84F64C o="Cross Point BV" 84F6FA o="Miovision Technologies Incorporated" 84F883 o="Luminar Technologies" +84FB43 o="Central Denshi Seigyo" 84FE9E o="RTC Industries, Inc." 84FEDC o="Borqs Beijing Ltd." 880118 o="BLT Co" 8801F2 o="Vitec System Engineering Inc." +880264 o="Pascal Audio" 880905 o="MTMCommunications" 880907 o="MKT Systemtechnik GmbH & Co. KG" 880F10 o="Huami Information Technology Co.,Ltd." 880FB6 o="Jabil Circuits India Pvt Ltd,-EHTP unit" 881036 o="Panodic(ShenZhen) Electronics Limted" 88123D o="Suzhou Aquila Solutions Inc." +88127D o="Shenzhen Melon Electronics Co.,Ltd" 88142B o="Protonic Holland" 8818AE o="Tamron Co., Ltd" 881B99 o="SHENZHEN XIN FEI JIA ELECTRONIC CO. LTD." +881E59 o="Onion Corporation" 882012 o="LMI Technologies" 8821E3 o="Nebusens, S.L." 882364 o="Watchnet DVR Inc" 8823FE o="TTTech Computertechnik AG" -882949,9C6B37,B436D1,C0E3A0 o="Renesas Electronics (Penang) Sdn. Bhd." 882950 o="Netmoon Technology Co., Ltd" +882AE1 o="MRC INC." 882B94 o="MADOKA SYSTEM Co.,Ltd." 882BD7 o="ADDÉNERGIE TECHNOLOGIES" 882D53 o="Baidu Online Network Technology (Beijing) Co., Ltd." 882E5A o="storONE" +882F64 o="BCOM Networks Limited" 8833BE o="Ivenix, Inc." 8834FE o="Bosch Automotive Products (Suzhou) Co. Ltd" 88354C o="Transics" 883612 o="SRC Computers, LLC" 883B8B o="Cheering Connection Co. Ltd." +883BDC o="CJ intelligent technology LTD." +883E0D o="HD Hyundai Electric" +883F0C o="system a.v. co., ltd." +883F37 o="UHTEK CO., LTD." 884157 o="Shenzhen Atsmart Technology Co.,Ltd." 8841C1 o="ORBISAT DA AMAZONIA IND E AEROL SA" +884558 o="Amicro Technology Co., Ltd." 88462A o="Telechips Inc." 884A18 o="Opulinks" 884B39 o="Siemens AG, Healthcare Sector" 884CCF o="Pulzze Systems, Inc" 8850DD o="Infiniband Trade Association" -88571D o="Seongji Industry Company" 88576D o="XTA Electronics Ltd" +8858BE o="kuosheng.com" +885EBD o="NCKOREA Co.,Ltd." +886076,886078 o="Sparnex n.v." 88615A o="Siano Mobile Silicon Ltd." +88625D o="BITNETWORKS CO.,LTD" 88685C o="Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd" 886B76 o="CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD" +886EE1 o="Erbe Elektromedizin GmbH" +886F29 o="Pocketbook International SA" 887033 o="Hangzhou Silan Microelectronic Inc" 8870EF o="SC Professional Trading Co., Ltd." 887398 o="K2E Tekpoint" @@ -14862,18 +16004,21 @@ 888964 o="GSI Electronics Inc." 888B5D o="Storage Appliance Corporation" 888C19 o="Brady Corp Asia Pacific Ltd" +888E7F o="ATOP CORPORATION" +888F10 o="Shenzhen Max Infinite Technology Co.,Ltd." 889166 o="Viewcooper Corp." 8891DD o="Racktivity" +88948E o="Max Weishaupt SE" 88948F o="Xi'an Zhisensor Technologies Co.,Ltd" 8894F9 o="Gemicom Technology, Inc." 8895B9 o="Unified Packet Systems Crop" 889655 o="Zitte corporation" 889676 o="TTC MARCONI s.r.o." 8896B6 o="Global Fire Equipment S.A." -8896F2 o="Valeo Schalter und Sensoren GmbH" 889765 o="exands" 8897DF o="Entrypass Corporation Sdn. Bhd." 889821 o="TERAON" +889AFF,CCA150 o="SystemX Co.,Ltd." 889CA6 o="BTB Korea INC" 889D98 o="Allied-telesisK.K." 889FAA o="Hella Gutmann Solutions GmbH" @@ -14881,19 +16026,21 @@ 88A3CC o="Amatis Controls" 88A5BD o="QPCOM INC." 88ACC1 o="Generiton Co., Ltd." +88AF7B o="Nanjing Powercore Tech Co.,Ltd" 88B168 o="Delta Control GmbH" +88B436 o="FUJIFILM Corporation" 88B627 o="Gembird Europe BV" 88B66B o="easynetworks" 88B8D0 o="Dongguan Koppo Electronic Co.,Ltd" 88BA7F o="Qfiednet Co., Ltd." -88BD78 o="Flaircomm Microelectronics,Inc." 88BFD5 o="Simple Audio Ltd" 88C242 o="Poynt Co." 88C36E o="Beijing Ereneben lnformation Technology Limited" 88C3B3 o="SOVICO" +88C3E5 o="Betop Techonologies" +88C48E o="UNEEVIU TECHNOLOGIES INDIA PRIVATE LIMITED" 88C626,C0288D,EC8193 o="Logitech, Inc" 88CBA5 o="Suzhou Torchstar Intelligent Technology Co.,Ltd" -88D039 o="TCL Technoly Electronics(Huizhou).,Ltd" 88D171 o="BEGHELLI S.P.A" 88D211 o="Eko Devices, Inc." 88D2BF o="German Autolabs" @@ -14902,7 +16049,7 @@ 88D7BC o="DEP Company" 88D962 o="Canopus Systems US LLC" 88DA33 o="Beijing Xiaoyuer Network Technology Co., Ltd" -88DC96 o="SENAO Networks, Inc." +88DC96,C4E3CE o="EnGenius Technologies, Inc." 88E034 o="Shinwa industries(China) ltd." 88E0A0 o="Shenzhen VisionSTOR Technologies Co., Ltd" 88E161 o="Art Beijing Science and Technology Development Co., Ltd." @@ -14914,8 +16061,11 @@ 88E90F o="innomdlelab" 88E917 o="Tamaggo" 88ED1C o="Cudo Communication Co., Ltd." +88F00F o="Miraeil" 88F488 o="cellon communications technology(shenzhen)Co.,Ltd." 88F490 o="Jetmobile Pte Ltd" +88F916 o="Qingdao Dayu Dance Digital Technology Co.,Ltd" +88F9C0 o="KTS Kommunikationstechnik und Systeme GmbH" 88FD15 o="LINEEYE CO., LTD" 88FED6 o="ShangHai WangYong Software Co., Ltd." 8C02FA o="COMMANDO Networks Limited" @@ -14927,19 +16077,33 @@ 8C0FA0 o="di-soric GmbH & Co. KG" 8C0FFA o="Hutec co.,ltd" 8C11CB o="ABUS Security-Center GmbH & Co. KG" +8C12C2 o="GLBB Japan" +8C13E2,8CC7C3 o="NETLINK ICT" +8C1553 o="Beijing Memblaze Technology Co Ltd" +8C1AF3 o="Shenzhen Gooxi Information Security CO.,Ltd." +8C1D55 o="Hanwha NxMD (Thailand) Co., Ltd." +8C1ED9 o="Beijing Unigroup Tsingteng Microsystem Co., LTD." 8C1F94 o="RF Surgical System Inc." +8C255E o="VoltServer" 8C271D o="QuantHouse" +8C2A8E,B04FA6 o="DongGuan Ramaxel Memory Technology" 8C2F39 o="IBA Dosimetry GmbH" 8C2FA6 o="Solid Optics B.V." +8C31E2 o="DAYOUPLUS" +8C3223 o="JWIPC Technology Co.,Ltd." 8C3330 o="EmFirst Co., Ltd." 8C3357 o="HiteVision Digital Media Technology Co.,Ltd." 8C3579 o="QDIQO Sp. z o.o." 8C395C o="Bit4id Srl" 8C3B32 o="Microfan B.V." 8C3C07 o="Skiva Technologies, Inc." +8C3D16 o="Shenzhen Four Seas Global Link Network Technology Co.,Ltd" +8C3DB1 o="Beijing H-IoT Technology Co., Ltd." 8C41F2 o="RDA Technologies Ltd." 8C41F4 o="IPmotion GmbH" +8C4361 o="Hailo Digital Hub GmbH & Co. KG" 8C4435 o="Shanghai BroadMobi Communication Technology Co., Ltd." +8C477F o="NambooSolution" 8C4AEE o="GIGA TMS INC" 8C4B59 o="3D Imaging & Simulations Corp" 8C4CAD o="Evoluzn Inc." @@ -14947,19 +16111,22 @@ 8C4DEA o="Cerio Corporation" 8C5105 o="Shenzhen ireadygo Information Technology CO.,LTD." 8C53F7 o="A&D ENGINEERING CO., LTD." +8C55BB o="Songwoo Information & Technology Co., Ltd" 8C569D o="Imaging Solutions Group" 8C57FD o="LVX Western" 8C598B o="C Technologies AB" 8C59DC o="ASR Microelectronics (Shanghai) Co., Ltd." 8C5AF0 o="Exeltech Solar Products" 8C5CA1 o="d-broad,INC" +8C5D54 o="Kisi" 8C5D60 o="UCI Corporation Co.,Ltd." -8C5F48 o="Continental Intelligent Transportation Systems LLC" +8C5E4D o="DragonWave Technologies DMCC" 8C5FDF o="Beijing Railway Signal Factory" 8C6078 o="Swissbit AG" 8C60E7 o="MPGIO CO.,LTD" 8C6102 o="Beijing Baofengmojing Technologies Co., Ltd" 8C640B o="Beyond Devices d.o.o." +8C64D4 o="Hyeco Smart Tech Co.,Ltd" 8C6878 o="Nortek-AS" 8C6AE4 o="Viogem Limited" 8C6DC4 o="Megapixel VR" @@ -14970,13 +16137,16 @@ 8C8126 o="ARCOM" 8C82A8 o="Insigma Technology Co.,Ltd" 8C839D o="SHENZHEN XINYUPENG ELECTRONIC TECHNOLOGY CO., LTD" -8C8580 o="Smart Innovation LLC" +8C83FC o="Axioma Metering UAB" 8C85E6 o="Cleondris GmbH" +8C8726 o="VAST Data Inc" 8C873B o="Leica Camera AG" +8C87D0 o="Shenzhen Uascent Technology Co.,Ltd" 8C897A o="AUGTEK" 8C89FA o="Zhejiang Hechuan Technology Co., Ltd." 8C8A6E o="ESTUN AUTOMATION TECHNOLOY CO., LTD" 8C8ABB o="Beijing Orient View Technology Co., Ltd." +8C8E4E o="Baylan Olcu Aletleri San. ve Tic.A.S." 8C8E76 o="taskit GmbH" 8C8F8B o="China Mobile Chongqing branch" 8C9109 o="Toyoshima Electric Technoeogy(Suzhou) Co.,Ltd." @@ -14985,26 +16155,34 @@ 8C9351 o="Jigowatts Inc." 8C94CF o="Encell Technology, Inc." 8C965F o="Shandong Zhongan Technology Co., Ltd." +8C9806 o="SHENZHEN SEI ROBOTICS CO.,LTD" 8CA048 o="Beijing NeTopChip Technology Co.,LTD" 8CA2FD o="Starry, Inc." +8CA401 o="Shenzhen New Chip Intelligence Co.,LTD" 8CA5A1 o="Oregano Systems - Design & Consulting GmbH" 8CAE4C o="Plugable Technologies" 8CAE89 o="Y-cam Solutions Ltd" -8CAEDB,F8F082 o="NAG LLC" +8CAEDB,F8F082 o="NAGTECH LLC" 8CB094 o="Airtech I&C Co., Ltd" -8CB0E9 o="Samsung Electronics.,LTD" +8CB0E9,C8418A o="Samsung Electronics.,LTD" 8CB7F7 o="Shenzhen UniStrong Science & Technology Co., Ltd" 8CB82C o="IPitomy Communications" +8CBAFC o="JOYNEXT GmbH" 8CBE24 o="Tashang Semiconductor(Shanghai) Co., Ltd." 8CBF9D o="Shanghai Xinyou Information Technology Ltd. Co." +8CC573 o="Xsight Labs LTD." +8CC58C o="ShenZhen Elsky Technology Co.,LTD" 8CC5E1 o="ShenZhen Konka Telecommunication Technology Co.,Ltd" 8CC661 o="Current, powered by GE" 8CC7AA o="Radinet Communications Inc." 8CC7D0 o="zhejiang ebang communication co.,ltd" +8CCB14 o="TBS GmbH" +8CCBDF,EC01E2 o="FOXCONN INTERCONNECT TECHNOLOGY" 8CCDA2 o="ACTP, Inc." 8CCEFD o="Shenzhen zhouhai technology co.,LTD" 8CCF5C o="BEFEGA GmbH" 8CCF8F o="ITC Systems" +8CD08B o="WuXi Rigosys Technology Co.,LTD" 8CD17B o="CG Mobile" 8CD2E9 o="YOKOTE SEIKO CO., LTD." 8CD3A2 o="VisSim AS" @@ -15018,13 +16196,18 @@ 8CE468 o="Guangzhou Sageran Technology Co., Ltd." 8CE78C o="DK Networks" 8CE7B3 o="Sonardyne International Ltd" +8CEA88 o="Chengdu Yocto Communication Technology Co.Ltd." 8CEEC6 o="Precepscion Pty. Ltd." +8CF0DF o="Beijing Zhongyuan Yishang Technology Co.,LTD" +8CF3E7 o="solidotech" 8CF813 o="ORANGE POLSKA" 8CF945 o="Power Automation pte Ltd" 8CF957 o="RuiXingHengFang Network (Shenzhen) Co.,Ltd" 8CF9C9 o="MESADA Technology Co.,Ltd." 8CFCA0 o="Shenzhen Smart Device Technology Co., LTD." +8CFD15 o="Imagine Marketing Private Limited" 8CFEB4 o="VSOONTECH ELECTRONICS CO., LIMITED" +90027A o="Shenzhen Sworix Techonlogy Co., Ltd" 90028A o="Shenzhen Shidean Legrand Electronic Products Co.,Ltd" 900372 o="Longnan Junya Digital Technology Co. Ltd." 900917 o="Far-sighted mobile" @@ -15035,7 +16218,6 @@ 900D66 o="Digimore Electronics Co., Ltd" 900E83 o="Monico Monitoring, Inc." 900EB3 o="Shenzhen Amediatech Technology Co., Ltd." -9012A1,E00EE1 o="We Corporation Inc." 9013DA o="Athom B.V." 901711 o="Hagenuk Marinekommunikation GmbH" 90179B o="Nanomegas" @@ -15045,8 +16227,12 @@ 901EDD o="GREAT COMPUTER CORPORATION" 90203A o="BYD Precision Manufacture Co.,Ltd" 902083 o="General Engine Management Systems Ltd." +90212E o="Apption Labs Ltd" 90272B o="Algorab S.r.l." +902778 o="Open Infrastructure" +902962 o="Linkpower Microelectronics Co., Ltd." 902CC7 o="C-MAX Asia Limited" +902CFB o="CanTops Co,.Ltd." 902E87 o="LabJack" 9031CD o="Onyx Healthcare Inc." 90342B o="Gatekeeper Systems, Inc." @@ -15069,10 +16255,14 @@ 9055AE,C835B8 o="Ericsson, EAB/RWI/K" 905682 o="Lenbrook Industries Limited" 905692 o="Autotalks Ltd." +90593C o="AZ-TECHNOLOGY SDN BHD" 905C34 o="Sirius Electronic Systems Srl" 905F8D o="modas GmbH" 90610C o="Fida International (S) Pte Ltd" 906717 o="Alphion India Private Limited" +906976 o="Withrobot Inc." +906A94 o="hangzhou huacheng network technology co., ltd" +906C4B o="Advance Security Electronics" 906D05 o="BXB ELECTRONICS CO., LTD" 906DC8 o="DLG Automação Industrial Ltda" 906FA9 o="NANJING PUTIAN TELECOMMUNICATIONS TECHNOLOGY CO.,LTD." @@ -15080,15 +16270,16 @@ 907990 o="Benchmark Electronics Romania SRL" 907A0A o="Gebr. Bode GmbH & Co KG" 907A28 o="Beijing Morncloud Information And Technology Co. Ltd." -907A58 o="Zegna-Daidong Limited" 907AF1 o="Wally" 907E30 o="LARS" 907EBA o="UTEK TECHNOLOGY (SHENZHEN) CO.,LTD" +908060 o="Nilfisk A/S" 90834B,F41C95 o="BEIJING YUNYI TIMES TECHNOLOGY CO,.LTD" 90837A o="General Electric Water & Process Technologies" -90842B o="LEGO System A/S" +90842B,9C9AC0 o="LEGO System A/S" 90848B o="HDR10+ Technologies, LLC" 9088A2 o="IONICS TECHNOLOGY ME LTDA" +908938 o="Hefei Linkin Technology Co., Ltd." 908C09 o="Total Phase" 908C44 o="H.K ZONGMU TECHNOLOGY CO., LTD." 908C63 o="GZ Weedong Networks Technology Co. , Ltd" @@ -15102,8 +16293,11 @@ 909864 o="Impex-Sat GmbH&Co KG" 909916 o="ELVEES NeoTek OJSC" 909DE0 o="Newland Design + Assoc. Inc." +909E24 o="ekey biometric systems gmbh" 909F43 o="Accutron Instruments Inc." +90A0BE o="Cannice" 90A137 o="Beijing Splendidtel Communication Technology Co,. Ltd" +90A1BA o="PNetworks Electronics Information" 90A210 o="United Telecoms Ltd" 90A2DA o="GHEO SA" 90A46A o="SISNET CO., LTD" @@ -15112,55 +16306,77 @@ 90A7C1 o="Pakedge Device and Software Inc." 90A935 o="JWEntertainment" 90AC3F o="BrightSign LLC" +90AF59 o="Choice IT Global LLC" 90AFD1 o="netKTI Co., Ltd" 90B1E0 o="Beijing Nebula Link Technology Co., Ltd" +90B4DD o="ZPT R&D" 90B8D0 o="Joyent, Inc." 90B8E0 o="SHENZHEN YANRAY TECHNOLOGY CO.,LTD" +90C952 o="Durin, Inc" 90C99B o="Tesorion Nederland B.V." -90CC24 o="Synaptics, Inc" 90CF6F o="Dlogixs Co Ltd" 90D11B o="Palomar Medical Technologies" +90D689 o="Huahao Fangzhou Technology Co.,Ltd" 90D74F o="Bookeen" 90D7BE o="Wavelab Global Inc." 90D852 o="Comtec Co., Ltd." 90D92C o="HUG-WITSCHI AG" 90DA4E o="AVANU" 90DA6A o="FOCUS H&S Co., Ltd." +90DAF9 o="Siemens Rail Automation SAU" 90DB46 o="E-LEAD ELECTRONIC CO., LTD" 90DFB7 o="s.m.s smart microwave sensors GmbH" 90DFFB o="HOMERIDER SYSTEMS" 90E0F0 o="IEEE 1722a Working Group" 90EA60 o="SPI Lasers Ltd" +90EB48 o="Shanghai XinMiaoLink Technology Co., Ltd" 90EC50 o="C.O.B.O. SPA" 90EC77 o="silicom" 90EED9 o="UNIVERSAL DE DESARROLLOS ELECTRÓNICOS, SA" +90F005 o="Xi'an Molead Technology Co., Ltd" 90F1B0 o="Hangzhou Anheng Info&Tech CO.,LTD" 90F278 o="Radius Gateway" 90F3B7 o="Kirisun Communications Co., Ltd." 90F4C1 o="Rand McNally" +90F721 o="IndiNatus (IndiNatus India Private Limited)" 90F72F o="Phillips Machine & Welding Co., Inc." +90F964 o="Rawasi Co" +90FB93 o="Renesas Design US Inc." +90FEE2 o="ISIF" 90FF79 o="Metro Ethernet Forum" 940006 o="jinyoung" 940149 o="AutoHotBox" +94017D o="SHENZHEN SHLINK.CO.,LIMITED" +9401AC o="Wuhan Qianyang Iotian Technology Co., Ltd" 94026B o="Optictimes Co.,Ltd" 9405B6 o="Liling FullRiver Electronics & Technology Ltd" +9409D3 o="shenzhen maxtopic technology co.,ltd" 940B2D o="NetView Technologies(Shenzhen) Co., Ltd" 940BD5 o="Himax Technologies, Inc" +941042 o="Fanox Electronic S.L." 9411DA o="ITF Fröschl GmbH" 941673 o="Point Core SARL" +941724 o="Anhui Guoke Ruidian communication technology Co.,Ltd." 94193A o="Elvaco AB" 941D1C o="TLab West Systems AB" +941F3A o="Ambiq" +941FA2 o="Wuhan YuXin Semiconductor Co., Ltd." 942197 o="Stalmart Technology Limited" 94236E o="Shenzhen Junlan Electronic Ltd" 94290C o="Shenyang wisdom Foundation Technology Development Co., Ltd." +942957 o="Airpo Networks Technology Co.,Ltd." 94298D o="Shanghai AdaptComm Technology Co., Ltd." 942A3F o="Diversey Inc" +942D3A o="PRIZOR VIZTECH LIMITED" 942E17 o="Schneider Electric Canada Inc" 942E63 o="Finsécur" 94319B o="Alphatronics BV" 9433DD o="Taco Inc" 9436E0 o="Sichuan Bihong Broadcast & Television New Technologies Co.,Ltd" +9438AA o="Technology Innovation Institute" 943DC9 o="Asahi Net, Inc." +943EE4 o="WiSA Technologies Inc" +943FBB o="JSC RPC Istok named after Shokin" 9440A2 o="Anywave Communication Technologies, Inc." 9441C1 o="Mini-Cam Limited" 9447B0 o="BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD" @@ -15181,10 +16397,13 @@ 9466E7 o="WOM Engineering" 94677E o="Belden India Private Limited" 9470D2 o="WINFIRM TECHNOLOGY" +94720F o="Guangdong Nanguang Photo&Video Systems Co., Ltd." 94756E o="QinetiQ North America" -947BBE o="Ubicquia" +947806 o="NINGBO SUNVOT TECHNOLOGY CO.,LTD" +947BBE o="Ubicquia LLC" 947C3E o="Polewall Norge AS" 947EB9 o="National Narrowband Network Communications Pty Ltd" +947F1D o="Shenzhen Fastrain Technology Co., Ltd." 9481A4 o="Azuray Technologies" 9483C4 o="GL Technologies (Hong Kong) Limited" 94857A o="Evantage Industries Corp" @@ -15192,7 +16411,6 @@ 9486D4 o="Surveillance Pro Corporation" 948815 o="Infinique Worldwide Inc" 94885E o="Surfilter Network Technology Co., Ltd." -948AC6,BC2DEF,C816DA o="Realme Chongqing Mobile Telecommunications Corp.,Ltd." 948B03 o="EAGET Innovation and Technology Co., Ltd." 948D50 o="Beamex Oy Ab" 948DEF o="Oetiker Schweiz AG" @@ -15200,6 +16418,8 @@ 948FEE o="Verizon Telematics" 9492BC o="SYNTECH(HK) TECHNOLOGY LIMITED" 9492D2 o="KCF Technologies, Inc." +949386 o="Shenzhen SiACRRIER Industry Machines Co.,LTD" +94944A o="Particle Industries Inc." 9498A2 o="Shanghai LISTEN TECH.LTD" 949901 o="Shenzhen YITOA Digital Appliance CO.,LTD" 949990 o="VTC Telecommunications" @@ -15211,19 +16431,23 @@ 94A04E o="Bostex Technology Co., LTD" 94A3CA o="KonnectONE, LLC" 94A40C o="Diehl Metering GmbH" +94A4CE o="Sensear Pty Ltd" 94A7BC o="BodyMedia, Inc." 94AAB8 o="Joview(Beijing) Technology Co. Ltd." +94AB18 o="cellXica ltd" 94ABDE o="OMX Technology - FZE" 94ACCA o="trivum technologies GmbH" 94AEE3 o="Belden Hirschmann Industries (Suzhou) Ltd." 94B9B4 o="Aptos Technology" 94BA31 o="Visiontec da Amazônia Ltda." 94BBAE o="Husqvarna AB" +94BE36 o="ADOPT NETTECH PVT LTD" 94BF1E o="eflow Inc. / Smart Device Planning and Development Division" 94BF95 o="Shenzhen Coship Electronics Co., Ltd" 94C014 o="Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek" 94C038 o="Tallac Networks" 94C2BD o="TECNOBIT" +94C36B o="DRD Automation GmbH" 94C3E4 o="Atlas Copco IAS GmbH" 94C4E9 o="PowerLayer Microsystems HongKong Limited" 94C6EB o="NOVA electronics, Inc." @@ -15231,6 +16455,7 @@ 94C960 o="Zhongshan B&T technology.co.,ltd" 94C962 o="Teseq AG" 94CA0F o="Honeywell Analytics" +94CA9A o="Paul Vahle GmbH & Co. KG" 94CDAC o="Creowave Oy" 94CE31 o="CTS Limited" 94D019 o="Cydle Corp." @@ -15239,6 +16464,7 @@ 94D417 o="GPI KOREA INC." 94D60E o="shenzhen yunmao information technologies co., ltd" 94D6DB o="NexFi" +94D86B o="nass magnet Hungária Kft." 94D93C o="ENELPS" 94DB49 o="SITCORP" 94DC4E o="AEV, spol. s r. o." @@ -15250,28 +16476,37 @@ 94E2FD o="Boge Kompressoren OTTO Boge GmbH & Co. KG" 94E711 o="Xirka Dama Persada PT" 94E848 o="FYLDE MICRO LTD" +94EAE7 o="Lynq Technologies" +94EF49 o="BDR Thermea Group B.V" 94F19E o="HUIZHOU MAORONG INTELLIGENT TECHNOLOGY CO.,LTD" 94F278 o="Elma Electronic" +94F524 o="Chengdu BeiZhongWangXin Technology Co.Ltd" 94F551 o="Cadi Scientific Pte Ltd" 94F692 o="Geminico co.,Ltd." 94F720 o="Tianjin Deviser Electronics Instrument Co., Ltd" 94FAE8 o="Shenzhen Eycom Technology Co., Ltd" 94FD1D o="WhereWhen Corp" 94FD2E o="Shanghai Uniscope Technologies Co.,Ltd" -980074,A86D5F,C850E9,CCC2E0 o="Raisecom Technology CO., LTD" 9800C1 o="GuangZhou CREATOR Technology Co.,Ltd.(CHINA)" 980284 o="Theobroma Systems GmbH" 9803A0 o="ABB n.v. Power Quality Products" -980E24 o="Phytium Technology Co.,Ltd." +980802 o="ORBIS BV" +981082 o="Nsolution Co., Ltd." 981094 o="Shenzhen Vsun communication technology Co.,ltd" +981223 o="Tarmoc Network LTD" +9812B7 o="KARST.AI" 9814D2 o="Avonic" +9816CD o="leapio" 9816EC o="IC Intracom" 981BB5 o="ASSA ABLOY Korea Co., Ltd iRevo" +981C42 o="LAIIER" +981DAC o="Cyviz AS" 981E0F o="Jeelan (Shanghai Jeelan Technology Information Inc" 981FB1 o="Shenzhen Lemon Network Technology Co.,Ltd" 98208E o="Definium Technologies" 98234E o="Micromedia AG" 98262A o="Applied Research Associates, Inc" +98288B o="zhejiang Dusun Electron Co.,Ltd" 98291D o="Jaguar de Mexico, SA de CV" 98293F o="Fujian Start Computer Equipment Co.,Ltd" 982D56 o="Resolution Audio" @@ -15279,27 +16514,35 @@ 982DBA o="Fibergate Inc." 983000 o="Beijing KEMACOM Technologies Co., Ltd." 983071 o="DAIKYUNG VASCOM" +98348C,BC3F4E,C4CBBE o="Great Talent Technology Limited" 98349D o="Krauss Maffei Technologies GmbH" 983571 o="Sub10 Systems Ltd" 9835B8 o="Assembled Products Corporation" 983713 o="PT.Navicom Indonesia" +98387D o="ITRONIC TECHNOLOGY CO . , LTD ." 983F9F o="China SSJ (Suzhou) Network Technology Inc." 984246 o="SOL INDUSTRY PTE., LTD" +9842AB,A8A913,CC896C o="GN Hearing A/S" 9843DA o="INTERTECH" 9844B6 o="INFRANOR SAS" +98499F o="Domo Tactical Communications" 9849E1,A42983 o="Boeing Defence Australia" 984A47 o="CHG Hospital Beds" 984C04 o="Zhangzhou Keneng Electrical Equipment Co Ltd" 984CD3 o="Mantis Deposition" 984E97 o="Starlight Marketing (H. K.) Ltd." +9850A3 o="SIGNALTEK JSC" 9857D3 o="HON HAI-CCPBG PRECISION IND.CO.,LTD." 98588A o="SYSGRATION Ltd." 985949 o="LUXOTTICA GROUP S.P.A." +985B76 o="Vantiva Connected Home - Orange Belgium" 985BB0 o="KMDATA INC." 985C93 o="SBG Systems SAS" 985D46 o="PeopleNet Communication" 985E1B o="ConversDigital Co., Ltd." +985F4F o="Tongfang Computer Co.,Ltd." 986022 o="EMW Co., Ltd." +986297 o="Shenzhen Techwinsemi Technology Co., Ltd." 9866EA o="Industrial Control Communications, Inc." 986C5C o="Jiangxi Gosun Guard Security Co.,Ltd" 986DC8 o="TOSHIBA MITSUBISHI-ELECTRIC INDUSTRIAL SYSTEMS CORPORATION" @@ -15308,12 +16551,14 @@ 98743D o="Shenzhen Jun Kai Hengye Technology Co. Ltd" 9876B6 o="Adafruit" 987770 o="Pep Digital Technology (Guangzhou) Co., Ltd" +9877CB o="Vorteks ED" +987A9B,C87EA1 o="TCL MOKA International Limited" 987E46 o="Emizon Networks Limited" -987ECA,A463A1 o="Inventus Power Eletronica do Brasil LTDA" 988217 o="Disruptive Ltd" 9886B1 o="Flyaudio corporation (China)" 988744 o="Wuxi Hongda Science and Technology Co.,LTD" 9889ED o="Anadem Information Inc." +988B69 o="Shenzhen hylitech Co.,LTD" 988BAD o="Corintech Ltd." 988E34 o="ZHEJIANG BOXSAM ELECTRONIC CO.,LTD" 988E4A o="NOXUS(BEIJING) TECHNOLOGY CO.,LTD" @@ -15321,20 +16566,32 @@ 988EDD o="TE Connectivity Limerick" 989080 o="Linkpower Network System Inc Ltd." 989449 o="Skyworth Wireless Technology Ltd." +989D40 o="MIWA LOCK CO.,LTD." +989E80,D45944 o="tonies GmbH" 98A40E o="Snap, Inc." +98A44E o="IEC Technologies S. de R.L de C.V." 98A7B0 o="MCST ZAO" -98A942 o="Guangzhou Tozed Kangwei Intelligent Technology Co., LTD" +98A878 o="Agnigate Technologies Private Limited" 98AA3C o="Will i-tech Co., Ltd." 98AAD7 o="BLUE WAVE NETWORKING CO LTD" +98AB15 o="Fujian Youyike Technology Co.,Ltd" 98AE71 o="VVDN Technologies Pvt Ltd" +98B785 o="Shenzhen 10Gtek Transceivers Co., Limited" 98BB99 o="Phicomm (Sichuan) Co.,Ltd." 98BC57 o="SVA TECHNOLOGIES CO.LTD" 98BC99 o="Edeltech Co.,Ltd." +98BFF4 o="MARKIN co., Ltd." 98C0EB o="Global Regency Ltd" +98C3D2 o="Ningbo Sanxing Medical Electric Co.,Ltd" 98C7A4 o="Shenzhen HS Fiber Communication Equipment CO., LTD" +98C81C o="BAYTEC LIMITED" 98C845 o="PacketAccess" +98C9BE o="Shenzhen SDMC Technology CO., LTD" +98CA20 o="Shanghai SIMCOM Ltd." 98CB27 o="Galore Networks Pvt. Ltd." +98CB38 o="Boxin Communications Limited Liability Company" 98CC4D o="Shenzhen mantunsci co., LTD" +98CCE4 o="Shenzhen Mindray Animal Medical Technology Co.,LTD" 98CDB4 o="Virident Systems, Inc." 98D331 o="Shenzhen Bolutek Technology Co.,Ltd." 98D3D2 o="MEKRA Lang GmbH & Co. KG" @@ -15350,9 +16607,11 @@ 98E848 o="Axiim" 98EC65 o="Cosesy ApS" 98F058 o="Lynxspring, Incl." +98F1AE o="Senaisc" 98F8DB o="Marini Impianti Industriali s.r.l." 98FAA7 o="INNONET" 98FB12 o="Grand Electronics (HK) Ltd" +98FBF5 o="ATRALTECH" 98FD74 o="ACT.CO.LTD" 98FE03 o="Ericsson - North America" 98FF6A o="OTEC(Shanghai)Technology Co.,Ltd." @@ -15360,64 +16619,86 @@ 9C039E o="Beijing Winchannel Software Technology Co., Ltd" 9C0473 o="Tecmobile (International) Ltd." 9C066E o="Hytera Communications Corporation Limited" +9C06CF o="PLAUD Inc." 9C0DAC o="Tymphany HK Limited" 9C0E4A o="Shenzhen Vastking Electronic Co.,Ltd." 9C13AB o="Chanson Water Co., Ltd." 9C1465 o="Edata Elektronik San. ve Tic. A.Ş." +9C1C6D o="HEFEI DATANG STORAGE TECHNOLOGY CO.,LTD" +9C1ECE o="ALT Co., Ltd." +9C1ECF o="Valeo Telematik und Akustik GmbH" +9C1FCA o="Hangzhou AlmightyDigit Technology Co., Ltd" 9C1FDD o="Accupix Inc." 9C220E o="TASCAN Systems GmbH" 9C25BE o="Wildlife Acoustics, Inc." 9C2840 o="Discovery Technology,LTD.." -9C28BF,ACC358 o="Continental Automotive Czech Republic s.r.o." +9C28BF,ACC358 o="AUMOVIO Czech Republic s.r.o." +9C2D49 o="Nanowell Info Tech Co., Limited" 9C2DCF o="Shishi Tongyun Technology(Chengdu)Co.,Ltd." 9C2F73 o="Universal Tiancheng Technology (Beijing) Co., Ltd." 9C3066 o="RWE Effizienz GmbH" 9C3178 o="Foshan Huadian Intelligent Communications Teachnologies Co.,Ltd" 9C31B6 o="Kulite Semiconductor Products Inc" +9C3312 o="Treon Oy" 9C3583 o="Nipro Diagnostics, Inc" +9C36F8 o="Hyundai Kefico" +9C3B91 o="VSSL" 9C3EAA o="EnvyLogic Co.,Ltd." 9C417C o="Hame Technology Co., Limited" 9C443D o="CHENGDU XUGUANG TECHNOLOGY CO, LTD" 9C44A6 o="SwiftTest, Inc." 9C4563 o="DIMEP Sistemas" +9C45F0 o="SKYLARK ELECTRONICS PVT LTD" +9C47F9 o="LJU Automatisierungstechnik GmbH" +9C4B6B o="iFlight Technology Company Limited" 9C4CAE o="Mesa Labs" 9C4E8E o="ALT Systems Ltd" 9C4EBF o="BoxCast" 9C53CD o="ENGICAM s.r.l." 9C541C o="Shenzhen My-power Technology Co.,Ltd" +9C5440,D0A0D6 o="ChengDu TD Tech" 9C54CA o="Zhengzhou VCOM Science and Technology Co.,Ltd" -9C54DA o="SkyBell Technologies Inc." +9C558F o="Lockin Technology(Beijing) Co.,Ltd." 9C55B4 o="I.S.E. S.r.l." 9C5711 o="Feitian Xunda(Beijing) Aeronautical Information Technology Co., Ltd." +9C5A8A o="DJI BAIWANG TECHNOLOGY CO LTD" 9C5B96 o="NMR Corporation" 9C5C8D o="FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA" 9C5D95 o="VTC Electronics Corp." 9C5E73 o="Calibre UK LTD" 9C611D o="Panasonic Corporation of North America" 9C645E o="Harman Consumer Group" +9C65FA o="AcSiP" 9C6650 o="Glodio Technolies Co.,Ltd Tianjin Branch" 9C685B o="Octonion SA" 9C6ABE o="QEES ApS." +9C6D92 o="Shanghai Kanghai Infomation System CO.,LTD" 9C7514 o="Wildix srl" +9C756E o="Ajax Systems DMCC" 9C77AA o="NADASNV" 9C79AC o="Suntec Software(Shanghai) Co., Ltd." 9C7BD2 o="NEOLAB Convergence" 9C7F57 o="UNIC Memory Technology Co Ltd" 9C807D o="SYSCABLE Korea Inc." 9C83BF o="PRO-VISION, Inc." +9C8566 o="Wingtech Mobile Communications Co.,Ltd." 9C86DA o="Phoenix Geophysics Ltd." +9C8824 o="PetroCloud LLC" 9C8888 o="Simac Techniek NV" +9C891E o="FireBrick Ltd" 9C8BF1 o="The Warehouse Limited" 9C8D1A o="INTEG process group inc" 9C8DD3 o="Leonton Technologies" -9C8ECD o="Amcrest Technologies" -9C934E o="Xerox Corporation" +9C9019 o="Beyless" +9C934E,E84DEC o="Xerox Corporation" +9C935C o="Unisyue Technologies Co;LTD" 9C93B0 o="Megatronix (Beijing) Technology Co., Ltd." 9C95F8 o="SmartDoor Systems, LLC" +9C9613 o="Lenovo Future Communication Technology (Chongqing) Company Limited" 9C9811 o="Guangzhou Sunrise Electronics Development Co., Ltd" 9C99CD o="Voippartners" -9C9C1D o="Starkey Labs Inc." 9C9D5D o="Raden Inc" +9C9E03 o="awayfrom" 9CA10A o="SCLE SFE" 9CA134 o="Nike, Inc." 9CA3A9 o="Guangzhou Juan Optical and Electronical Tech Joint Stock Co., Ltd" @@ -15427,23 +16708,28 @@ 9CA69D o="Whaley Technology Co.Ltd" 9CADEF o="Obihai Technology, Inc." 9CB008 o="Ubiquitous Computing Technology Corporation" -9CB206 o="PROCENTEC" 9CB6D0 o="Rivet Networks" 9CB793 o="Creatcomm Technology Inc." 9CBB98 o="Shen Zhen RND Electronic Co.,LTD" 9CBD6E o="DERA Co., Ltd" 9CBD9D o="SkyDisk, Inc." 9CBEE0 o="Biosoundlab Co., Ltd." +9CBF0D o="Framework Computer Inc." 9CC077 o="PrintCounts, LLC" 9CC0D2 o="Conductix-Wampfler GmbH" +9CC7B1 o="ELITEGROUP COMPUTER SYSTEMS CO.,LTD." 9CC8AE o="Becton, Dickinson and Company" 9CC950 o="Baumer Holding" +9CCBF7 o="CLOUD STAR TECHNOLOGY CO., LTD." 9CCD82 o="CHENG UEI PRECISION INDUSTRY CO.,LTD" +9CD1D0 o="Guangzhou Ronsuo Electronic Technology Co.,Ltd" 9CD332 o="PLC Technology Ltd" 9CD48B o="Innolux Technology Europe BV" +9CD8E3 o="Wuhan Huazhong Numerical Control Co., Ltd" 9CD9CB o="Lesira Manufacturing Pty Ltd" -9CDB07 o="Thum+Mahr GmbH" +9CDB07 o="Yellowtec GmbH" 9CDD1F o="Intelligent Steward Co.,Ltd" +9CDE4D o="ML vision Co.,LTD" 9CDFB1,F4BC97 o="Shenzhen Crave Communication Co., LTD" 9CE10E,E856D6 o="NCTech Ltd" 9CE1D6 o="Junger Audio-Studiotechnik GmbH" @@ -15455,8 +16741,10 @@ 9CEFD5 o="Panda Wireless, Inc." 9CF61A o="Carrier Fire & Security" 9CF67D o="Ricardo Prague, s.r.o." +9CF86B o="AgiTech Distribution Limited - Linki" 9CF8DB o="shenzhen eyunmei technology co,.ltd" 9CF938 o="AREVA NP GmbH" +9CFA3C o="Daeyoung Electronics" 9CFBF1 o="MESOMATIC GmbH & Co.KG" 9CFCD1 o="Aetheris Technology (Shanghai) Co., Ltd." 9CFFBE o="OTSL Inc." @@ -15468,32 +16756,50 @@ A007B6 o="Advanced Technical Support, Inc." A0094C o="CenturyLink" A00ABF o="Wieson Technologies Co., Ltd." A00CA1 o="SKTB SKiT" +A00CE2,A8F5E1 o="Shenzhen Shokz Co., Ltd." A012DB o="TABUCHI ELECTRIC CO.,LTD" A0133B o="HiTi Digital, Inc." A0165C o="Triteka LTD" A01859 o="Shenzhen Yidashi Electronics Co Ltd" A01917 o="Bertel S.p.a." +A01BD6 o="Nautitech Mining Systems Pty. Ltd." A01C05 o="NIMAX TELECOM CO.,LTD." A01E0B o="MINIX Technology Limited" +A0218B o="ACE Antenna Co., ltd" +A02252 o="Astra Wireless Technology FZ-LLC" A0231B o="TeleComp R&D Corp." +A024F9 o="Chengdu InnovaTest Technology Co., Ltd" +A029BD o="Team Group Inc" +A02B44 o="WaveGo Tech LLC" A02EF3 o="United Integrated Services Co., Led." +A03131 o="Procenne Digital Security" +A031EB o="Semikron Elektronik GmbH & Co. KG" A03299 o="Lenovo (Beijing) Co., Ltd." A0341B o="Adero Inc" A036F0 o="Comprehensive Power" A036FA o="Ettus Research LLC" +A03768 o="Shenzhen E-Life Intelligence Technology Co.,Ltd." A038F8 o="OURA Health Oy" +A03975 o="Leo Bodnar Electronics Ltd" A03A75 o="PSS Belgium N.V." +A03B01 o="Kyung In Electronics" A03B1B o="Inspire Tech" A04025 o="Actioncable, Inc." A04041 o="SAMWONFA Co.,Ltd." +A0412D o="Lansen Systems AB" A0415E o="Opsens Solution Inc." A041A7 o="NL Ministry of Defense" A0423F o="Tyan Computer Corp" A04246 o="IT Telecom Co., Ltd." A043DB o="Sitael S.p.A." +A04466 o="Intellics" +A044F3 o="RafaelMicro" +A0479B o="PROCITEC GmbH" A047D7 o="Best IT World (India) Pvt Ltd" A04CC1 o="Helixtech Corp." A04E01 o="CENTRAL ENGINEERING co.,ltd." +A052AB o="AVM ELECTRONICS PTE LTD" +A05394 o="Shenzhen zediel co., Ltd." A0593A o="V.D.S. Video Display Systems srl" A05AA4 o="Grand Products Nevada, Inc." A05B21 o="ENVINET GmbH" @@ -15501,6 +16807,7 @@ A05DC1 o="TMCT Co., LTD." A05DE7 o="DIRECTV, Inc." A05E6B o="MELPER Co., Ltd." A06518,A4F4C2,D49AA0 o="VNPT TECHNOLOGY" +A06636 o="Intracom SA Telecom Solutions" A067BE o="Sicon srl" A06986 o="Wellav Technologies Ltd" A06D09 o="Intelcan Technosystems Inc." @@ -15510,24 +16817,31 @@ A072E4 o="NJ SYSTEM CO.,LTD" A07332 o="Cashmaster International Limited" A073FC o="Rancore Technologies Private Limited" A075EA o="BoxLock, Inc." +A07751 o="ASMedia Technology Inc." A07771 o="Vialis BV" A078BA,D05785,D095C7 o="Pantech Co., Ltd." A082AC o="Linear DMS Solutions Sdn. Bhd." A082C7 o="P.T.I Co.,LTD" +A083B4 o="Velorum B.V" A084CB o="SonicSensory,Inc." A0861D o="Chengdu Fuhuaxin Technology co.,Ltd" A086EC o="SAEHAN HITEC Co., Ltd" +A0885E o="Anhui Xiangyao New Energy Technology Co., Ltd." A08A87 o="HuiZhou KaiYue Electronic Co.,Ltd" A08C15 o="Gerhard D. Wempe KG" A08C9B o="Xtreme Technologies Corp" +A08CF2 o="YINUOLINK CO.,LTD" A090DE o="VEEDIMS,LLC" A091A2 o="OnePlus Electronics (Shenzhen) Co., Ltd." A0946A o="Shenzhen XGTEC Technology Co,.Ltd." A09805 o="OpenVox Communication Co Ltd" +A09857 o="Shenzhen ELINK Technology Co., Ltd." A098ED o="Shandong Intelligent Optical Communication Development Co., Ltd." +A09A52 o="Shenzhen MoreSense Technology Co., Ltd." A09A5A o="Time Domain" A09BBD o="Total Aviation Solutions Pty Ltd" A09D91 o="SoundBridge" +A09F7A o="D-Link Middle East FZCO" A0A130 o="DLI Taiwan Branch office" A0A23C o="GPMS" A0A3B8 o="WISCLOUD" @@ -15543,14 +16857,14 @@ A0B662 o="Acutvista Innovation Co., Ltd." A0B8F8 o="Amgen U.S.A. Inc." A0B9ED o="Skytap" A0BAB8 o="Pixon Imaging" +A0BD71 o="QUALCOMM Incorporated" A0BF50 o="S.C. ADD-PRODUCTION S.R.L." A0BFA5 o="CORESYS" A0C2DE o="Costar Video Systems" A0C3DE o="Triton Electronic Systems Ltd." -A0C4A5 o="SYGN HOUSE CO.,LTD" +A0C4A5 o="SYGN HOUSE INC." A0C6EC o="ShenZhen ANYK Technology Co.,LTD" A0CAA5 o="INTELLIGENCE TECHNOLOGY OF CEC CO., LTD" -A0CEC8 o="CE LINK LIMITED" A0D12A o="AXPRO Technology Inc." A0D385 o="AUMA Riester GmbH & Co. KG" A0D635 o="WBS Technology" @@ -15559,6 +16873,7 @@ A0DA92 o="Nanjing Glarun Atten Technology Co. Ltd." A0DC04 o="Becker-Antriebe GmbH" A0DD97 o="PolarLink Technologies, Ltd" A0DE05 o="JSC %Irbis-T%" +A0E025 o="Provision-ISR" A0E201 o="AVTrace Ltd.(China)" A0E25A o="Amicus SK, s.r.o." A0E295 o="DAT System Co.,Ltd" @@ -15569,21 +16884,28 @@ A0E9DB o="Ningbo FreeWings Technologies Co.,Ltd" A0EB76 o="AirCUVE Inc." A0EF84 o="Seine Image Int'l Co., Ltd" A0F217 o="GE Medical System(China) Co., Ltd." +A0F509 o="IEI Integration Corp." +A0F7C3 o="Ficosa Automotive SLU" A0F9B7 o="Ademco Smart Homes Technology(Tianjin)Co.,Ltd." A0F9E0 o="VIVATEL COMPANY LIMITED" +A0FB68 o="Miba Battery Systems GmbH" A0FC6E o="Telegrafia a.s." A0FE91 o="AVAT Automation GmbH" +A0FF22 o="SHENZHEN APICAL TECHNOLOGY CO., LTD" A40130 o="ABIsystems Co., LTD" A4059E o="STA Infinity LLP" A409CB o="Alfred Kaercher GmbH & Co KG" +A40B78 o="FAST PHOTONICS HK CO., LIMITED" A40BED o="Carry Technology Co.,Ltd" A40C66 o="Shenzhen Colorful Yugong Technology and Development Co., Ltd." A40DBC o="Xiamen Intretech Inc." A41115 o="Robert Bosch Engineering and Business Solutions pvt. Ltd." -A41162 o="Arlo Technology" -A4134E o="Luxul" +A4134E,C491CF o="Luxul" +A41752 o="Hifocus Electronics India Private Limited" A41791 o="Shenzhen Decnta Technology Co.,LTD." +A41894 o="Bosch Security Systems B.V." A41BC0 o="Fastec Imaging Corporation" +A41CB4 o="DFI Inc" A42305 o="Open Networking Laboratory" A424B3 o="FlatFrog Laboratories AB" A424DD o="Cambrionix Ltd" @@ -15594,56 +16916,78 @@ A42C08 o="Masterwork Automodules" A433D1 o="Fibrlink Communications Co.,Ltd." A43412 o="Thales Alenia Space" A43523 o="Guangdong Donyan Network Technologies Co.,Ltd." +A4352D o="TRIZ Networks corp." A43831 o="RF elements s.r.o." A438FC o="Plastic Logic" +A439B6 o="SHENZHEN PEIZHE MICROELECTRONICS CO .LTD" +A43A39 o="AURORA TECHNOLOGIES CO.,LTD." A43A69 o="Vers Inc" +A43CD7 o="NTX Electronics YangZhou co.,LTD" A43EA0 o="iComm HK LIMITED" +A43F51 o="Shenzhen Benew Technology Co.,Ltd." +A4403D o="Shenzhen Baseus Technology Co., Ltd." A445CD o="IoT Diagnostics" A4466B o="EOC Technology" A446FA o="AmTRAN Video Corporation" +A44A64 o="Maverick Mobile LLC" A44AD3 o="ST Electronics(Shanghai) Co.,Ltd" +A44C62,ECDFC9 o="Hangzhou Microimage Software Co., Ltd" A44E2D o="Adaptive Wireless Solutions, LLC" A45006 o="SHENZHEN HUACHUANG SHIDAI TECHNOLOGYCO.,LTD" A45055 o="BUSWARE.DE" A45129 o="XAG" A45602 o="fenglian Technology Co.,Ltd." A4561B o="MCOT Corporation" +A45802 o="SHIN-IL TECH" A45A1C o="smart-electronic GmbH" +A45D5E o="Wilk Elektronik S.A." +A45E5A o="ACTIVIO Inc." A45F9B o="Nexell" +A45FB9 o="DreamBig Semiconductor, Inc." +A46185 o="Tools for Humanity Corporation" A46191 o="NamJunSa" A462DF o="DS Global. Co., LTD" +A468BC o="Oakley Inc." A46CC1 o="LTi REEnergy GmbH" A46E79 o="DFT System Co.Ltd" +A46EA7 o="DX ANTENNA CO.,LTD." A47758 o="Ningbo Freewings Technologies Co.,Ltd" A479E4 o="KLINFO Corp" A47ACF o="VIBICOM COMMUNICATIONS INC." +A47B52 o="JoulWatt Technology Co., Ltd" A47B85 o="ULTIMEDIA Co Ltd," A47C14 o="ChargeStorm AB" A47C1F o="Cobham plc" A48269 o="Datrium, Inc." A4856B o="Q Electronics Ltd" A4895B o="ARK INFOSOLUTIONS PVT LTD" +A4897E o="Guangzhou Yuhong Technology Co.,Ltd." A48CC0 o="JLG Industries, Inc." A48E0A o="DeLaval International AB" A49005 o="CHINA GREATWALL COMPUTER SHENZHEN CO.,LTD" A49340 o="Beijing Supvan Information Technology Co.,Ltd." A49426 o="Elgama-Elektronika Ltd." +A494DC o="Infinite Clouds" A497BB o="Hitachi Industrial Equipment Systems Co.,Ltd" A49981 o="FuJian Elite Power Tech CO.,LTD." A49B13 o="Digital Check" A49BF5 o="Hybridserver Tec GmbH" A49D49 o="Ketra, Inc." +A49DB8,C06E3D,C4D4D0 o="SHENZHEN TECNO TECHNOLOGY" A49EDB o="AutoCrib, Inc." A49F85 o="Lyve Minds, Inc" A49F89 o="Shanghai Rui Rui Communication Technology Co.Ltd." A4A179 o="Nanjing dianyan electric power automation co. LTD" A4A1E4 o="Innotube, Inc." +A4A404 o="Bubendorff SAS" A4A4D3 o="Bluebank Communication Technology Co.Ltd" A4AD00 o="Ragsdale Technology" +A4AD9E o="NEXAIOT" A4ADB8 o="Vitec Group, Camera Dynamics Ltd" A4AE9A o="Maestro Wireless Solutions ltd." A4B121 o="Arantia 2010 S.L." A4B1EE o="H. ZANDER GmbH & Co. KG" +A4B256 o="Shenzhen Incar Technology Co., Ltd." A4B2A7 o="Adaxys Solutions AG" A4B36A o="JSC SDO Chromatec" A4B818 o="PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH" @@ -15652,19 +16996,25 @@ A4BBAF o="Lime Instruments" A4BE61 o="EutroVision System, Inc." A4C0C7 o="ShenZhen Hitom Communication Technology Co..LTD" A4C138 o="Telink Semiconductor (Taipei) Co. Ltd." +A4C23E o="Huizhou Speed Wireless Technology Co.,Ltd" A4C2AB o="Hangzhou LEAD-IT Information & Technology Co.,Ltd" +A4C40D o="WAC Lighting" A4CC32 o="Inficomm Co., Ltd" A4CD23 o="Shenzhenshi Xinzhongxin Co., Ltd" -A4D094 o="Erwin Peters Systemtechnik GmbH" A4D18F o="Shenzhen Skyee Optical Fiber Communication Technology Ltd." A4D1D1 o="ECOtality North America" A4D3B5 o="GLITEL Stropkov, s.r.o." A4D4B2 o="Shenzhen MeiG Smart Technology Co.,Ltd" +A4D501 o="Yucca Technology Company Limited." +A4D530 o="Avaya LLC" +A4D795,EC354D o="Wingtech Mobile Communications Co.,Ltd" A4D856 o="Gimbal, Inc" A4D8CA o="HONG KONG WATER WORLD TECHNOLOGY CO. LIMITED" A4D9A4 o="neXus ID Solutions AB" A4DA3F o="Bionics Corp." +A4DAD4 o="Yamato Denki Co.,Ltd." A4DB2E o="Kingspan Environmental Ltd" +A4DB4C o="RAI Institute" A4DE50 o="Total Walther GmbH" A4DEC9 o="QLove Mobile Intelligence Information Technology (W.H.) Co. Ltd." A4E0E6 o="FILIZOLA S.A. PESAGEM E AUTOMACAO" @@ -15673,37 +17023,50 @@ A4E391 o="DENY FONTAINE" A4E597 o="Gessler GmbH" A4E6B1 o="Shanghai Joindata Technology Co.,Ltd." A4E7E4 o="Connex GmbH" +A4E8A3 o="Fujian Newland Auto-ID Tech Co.,Ltd." A4E991 o="SISTEMAS AUDIOVISUALES ITELSIS S.L." A4E9A3 o="Honest Technology Co., Ltd" A4EF52 o="Telewave Co., Ltd." A4F3C1 o="Open Source Robotics Foundation, Inc." A4F522 o="CHOFU SEISAKUSHO CO.,LTD" A4F7D0 o="LAN Accessories Co., Ltd." +A4F9E4 o="AirVine Scientific, Inc." A4FB8D o="Hangzhou Dunchong Technology Co.Ltd" A4FCCE o="Security Expert Ltd." A8016D o="Aiwa Corporation" A80180 o="IMAGO Technologies GmbH" A80577 o="Netlist, Inc." +A80C03 o="Florawise" A81559 o="Breathometer, Inc." A815D6 o="Shenzhen Meione Technology CO., LTD" A81758 o="Elektronik System i Umeå AB" A81B18 o="XTS CORP" A81B5D o="Foxtel Management Pty Ltd" +A81F79 o="Yingling Innovations Pte. Ltd." A81FAF o="KRYPTON POLSKA" +A82450 o="Beijing Huadianzhongxin Tech.Co.,Ltd" A824EB o="ZAO NPO Introtest" A8294C o="Precision Optical Transceivers, Inc." +A82AD6 o="Arthrex Inc." A82BD6 o="Shina System Co., Ltd" A8329A o="Digicom Futuristic Technologies Ltd." A8367A o="frogblue TECHNOLOGY GmbH" +A83A48,F4BDB9 o="Ubiqcom India Pvt Ltd" A83CCB o="ROSSMA" A84025 o="Oxide Computer Company" A84041 o="Dragino Technology Co., Limited" -A84122 o="China Mobile (Hangzhou) Information Technology Co.,Ltd." +A84122,B4BA12 o="China Mobile (Hangzhou) Information Technology Co.,Ltd." +A84397 o="Innogrit Corporation" A845CD o="Siselectron Technology LTD." A845E9 o="Firich Enterprises CO., LTD." A849A5 o="Lisantech Co., Ltd." +A84A63 o="TPV Display Technology(Xiamen) Co.,Ltd." A84D4A o="Audiowise Technology Inc." -A8556A o="Pocketnet Technology Inc." +A85008 o="Felion Technologies Company Limited" +A854A2,B0DD74 o="Heimgard Technologies AS" +A8556A o="3S System Technology Inc." +A8584E o="PK VEGA" +A8587C o="Shoogee GmbH & Co. KG" A85AF3 o="Shanghai Siflower Communication Technology Co., Ltd" A85B6C o="Robert Bosch Gmbh, CM-CI2" A85BB0 o="Shenzhen Dehoo Technology Co.,Ltd" @@ -15712,21 +17075,27 @@ A85EE4 o="12Sided Technology, LLC" A8610A o="ARDUINO AG" A861AA o="Cloudview Limited" A862A2 o="JIWUMEDIA CO., LTD." +A86308 o="AVUTEC" A863DF o="DISPLAIRE CORPORATION" A86405 o="nimbus 9, Inc" A865B2 o="DONGGUAN YISHANG ELECTRONIC TECHNOLOGY CO., LIMITED" +A8671E o="RATP" A86AC1 o="HanbitEDS Co., Ltd." +A86ACB o="EVAR" A870A5 o="UniComm Inc." +A8727E o="WISDRI (wuhan) Automation Company Limited" A87285 o="IDT, INC." A875D6 o="FreeTek International Co., Ltd." A875E2 o="Aventura Technologies, Inc." A8776F o="Zonoff" A88038 o="ShenZhen MovingComm Technology Co., Limited" A881F1 o="BMEYE B.V." +A881FE o="Luxul Tech Co., Ltd" A8827F o="CIBN Oriental Network(Beijing) CO.,Ltd" A885D7 o="Sangfor Technologies Inc." A88792 o="Broadband Antenna Tracking Systems" A887ED o="ARC Wireless LLC" +A88B28 o="SHENZHEN DIYANG SMART TECHNOLOGY CO.,LTD." A88CEE o="MicroMade Galka i Drozdz sp.j." A88D7B o="SunDroid Global limited." A89008 o="Beijing Yuecheng Technology Co. Ltd." @@ -15736,12 +17105,17 @@ A893E6 o="JIANGXI JINGGANGSHAN CKING COMMUNICATION TECHNOLOGY CO.,LTD" A895B0 o="Aker Subsea Ltd" A898C6 o="Shinbo Co., Ltd." A8995C o="aizo ag" +A899AD o="Chaoyue Technology Co., Ltd." +A899DC o="i-TOP DESING TECHNOLOGY CO.,LTD" A89B10 o="inMotion Ltd." A89CA4 o="Furrion Limited" A8A089 o="Tactical Communications" A8A097 o="ScioTeq bvba" A8A5E2 o="MSF-Vathauer Antriebstechnik GmbH & Co KG" -A8B0AE o="LEONI" +A8B028 o="CubePilot Pty Ltd" +A8B0AE o="BizLink Special Cables Germany GmbH" +A8B0D1 o="EFUN Display Technology (Shenzhen) Co., Ltd." +A8B8E0 o="Changwang Technology inc." A8BB50 o="WiZ IoT Company Limited" A8BC9C o="Cloud Light Technology Limited" A8BD1A o="Honey Bee (Hong Kong) Limited" @@ -15752,40 +17126,50 @@ A8C87F o="Roqos, Inc." A8CB95 o="EAST BEST CO., LTD." A8CCC5 o="Saab AB (publ)" A8CE90 o="CVC" +A8CFE0 o="GDN Enterprises Private Limited" A8D0E3 o="Systech Electronics Ltd" A8D236 o="Lightware Visual Engineering" -A8D3C8,D490E0 o="Topcon Electronics GmbH & Co. KG" +A8D3C8,D490E0 o="Wachendorff Automation GmbH & CO.KG" A8D409 o="USA 111 Inc" A8D498 o="Avira Operations GmbH & Co. KG" A8D579 o="Beijing Chushang Science and Technology Co.,Ltd" A8D828 o="Ascensia Diabetes Care" A8D88A o="Wyconn" A8DA01 o="Shenzhen NUOLIJIA Digital Technology Co.,Ltd" -A8E539 o="Moimstone Co.,Ltd" +A8DC5A o="Digital Watchdog" +A8DE68 o="Beijing Wide Technology Co.,Ltd" A8E552 o="JUWEL Aquarium AG & Co. KG" A8E824 o="INIM ELECTRONICS S.R.L." +A8EAE4 o="Weiser" +A8ED71 o="Analogue Enterprises Limited" +A8EE6D o="Fine Point-High Export" A8EEC6 o="Muuselabs NV/SA" A8EF26 o="Tritonwave" A8F038 o="SHEN ZHEN SHI JIN HUA TAI ELECTRONICS CO.,LTD" A8F470 o="Fujian Newland Communication Science Technologies Co.,Ltd." -A8F94B,E0D9E3,E45AD4,E828C1 o="Eltex Enterprise Ltd." +A8F766 o="ITE Tech Inc" +A8F94B,CC9DA2,E0D9E3,E45AD4,E828C1 o="Eltex Enterprise Ltd." A8FB70 o="WiseSec L.t.d" A8FCB7 o="Consolidated Resource Imaging" +AC00F9 o="BizLink Technology (S.E.A) Sdn. Bhd." AC0142 o="Uriel Technologies SIA" AC02CA o="HI Solutions, Inc." AC02CF o="RW Tecnologia Industria e Comercio Ltda" AC02EF o="Comsis" -AC040B o="Peloton Interactive, Inc" +AC0425 o="ball-b GmbH Co KG" AC0481 o="Jiangsu Huaxing Electronics Co., Ltd." AC0613 o="Senselogix Ltd" +AC0650 o="Shanghai Baosight Software Co., Ltd" AC06C7 o="ServerNet S.r.l." AC0A61 o="Labor S.r.L." AC0DFE o="Ekon GmbH - myGEKKO" +AC1065 o="KT Micro, Inc." AC11D3 o="Suzhou HOTEK Video Technology Co. Ltd" AC1461 o="ATAW Co., Ltd." AC14D2 o="wi-daq, inc." AC1585 o="silergy corp" AC1702 o="Fibar Group sp. z o.o." +AC1754 o="tiko Energy Solutions AG" AC199F o="SUNGROW POWER SUPPLY CO.,LTD." AC1ED0 o="Temic Automotive Philippines Inc." AC1F09 o="shenzhen RAKwireless technology Co.,Ltd" @@ -15796,6 +17180,7 @@ AC2A0C o="CSR ZHUZHOU INSTITUTE CO.,LTD." AC2DA3 o="TXTR GmbH" AC2FA8 o="Humannix Co.,Ltd." AC319D,ECD9D1 o="Shenzhen TG-NET Botone Technology Co.,Ltd." +AC330B o="Japan Computer Vision Corp." AC34CB o="Shanhai GBCOM Communication Technology Co. Ltd" AC3651 o="Jiangsu Hengtong Terahertz Technology Co., Ltd." AC37C9 o="RAID Incorporated" @@ -15825,36 +17210,49 @@ AC6123 o="Drivven, Inc." AC61B9 o="WAMA Technology Limited" AC620D o="Jabil Circuit(Wuxi) Co.,Ltd" AC676F o="Electrocompaniet A.S." +AC6AA3 o="Shenzhen Kertong Technology Co.,Ltd" AC6B0F o="CADENCE DESIGN SYSTEMS INC" AC6BAC o="Jenny Science AG" AC6F4F o="Enspert Inc" AC6FBB o="TATUNG Technology Inc." AC6FD9 o="Valueplus Inc." AC7236 o="Lexking Technology Co., Ltd." +AC74C4 o="Maytronics Ltd." AC7713 o="Honeywell Safety Products (Shanghai) Co.,Ltd" +AC77B9 o="Nanjing Yufei Intelligent Control Technology Co.,LTD" AC7A42 o="iConnectivity" AC80D6 o="Hexatronic AB" +AC81B5 o="Accton Technology Corporation" AC8317 o="Shenzhen Furtunetel Communication Co., Ltd" AC83E9 o="Beijing Zile Technology Co., Ltd" -AC83F0 o="ImmediaTV Corporation" +AC83F0 o="Cobalt Digital Inc." +AC84FA,C4D7DC,F4D0A7 o="Zhejiang Weilai Jingling Artificial Intelligence Technology Co., Ltd." AC8674,F8D9B8 o="Open Mesh, Inc." AC867E o="Create New Technology (HK) Limited Company" AC8ACD o="ROGER D.Wensker, G.Wensker sp.j." AC8B9C o="Primera Technology, Inc." AC8D14 o="Smartrove Inc" +AC915D o="Digital Control Technology Limited" AC9403 o="Envision Peripherals Inc" AC9572 o="Jovision Technology Co., Ltd." +AC965B o="Lucid Motors" +AC976C o="Greenliant" AC9B84 o="Smak Tecnologia e Automacao" ACA22C o="Baycity Technologies Ltd" +ACA32F,C8D6B7 o="Solidigm Technology" ACA430 o="Peerless AV" +ACA613 o="Aivres SYSTEMS INC" ACA667 o="Electronic Systems Protection, Inc." ACA919 o="TrekStor GmbH" ACA9A0 o="Audioengine, Ltd." ACAB2E o="Beijing LasNubes Technology Co., Ltd." ACAB8D o="Lyngso Marine A/S" ACABBF o="AthenTek Inc." -ACB1EE,F013C3 o="SHENZHEN FENDA TECHNOLOGY CO., LTD" +ACACE2,E8C6E6 o="CHANGHONG (HONGKONG) TRADING LIMITED" +ACB181 o="Belden Mooresville" +ACB1EE,CCBF0C,F013C3 o="SHENZHEN FENDA TECHNOLOGY CO., LTD" ACB859 o="Uniband Electronic Corp," +ACBC5B o="VIVIBIT INC" ACBD0B o="Leimac Ltd." ACBE75 o="Ufine Technologies Co.,Ltd." ACBEB6 o="Visualedge Technology Co., Ltd." @@ -15864,21 +17262,27 @@ ACC595 o="Graphite Systems" ACC698 o="Kohzu Precision Co., Ltd." ACC73F o="VITSMO CO., LTD." ACC935 o="Ness Corporation" +ACCA0F o="INDISR COMMUNICATION SERVICES AND TECHNOLOGIES INDIA" ACCA54 o="Telldus Technologies AB" ACCA8E o="ODA Technologies" ACCAAB o="Virtual Electric Inc" ACCABA o="Midokura Co., Ltd." ACCB09 o="Hefcom Metering (Pty) Ltd" -ACCC8E,B8A44F o="Axis Communications AB" ACCE8F o="HWA YAO TECHNOLOGIES CO., LTD" ACCF23 o="Hi-flying electronics technology Co.,Ltd" ACD180 o="Crexendo Business Solutions, Inc." ACD364 o="ABB SPA, ABB SACE DIV." +ACD3FB o="Arycs Technologies Inc" ACD657,C09C04 o="Shaanxi GuoLian Digital TV Technology Co.,Ltd." +ACD8A7 o="BELLDESIGN Inc." ACD9D6 o="tci GmbH" +ACDB22 o="Marquardt Schaltsysteme SCS" ACDBDA o="Shenzhen Geniatech Inc, Ltd" ACE069 o="ISAAC Instruments" +ACE0D6 o="koreabts" +ACE14F o="Autonomic Controls, Inc." ACE348 o="MadgeTech, Inc" +ACE403 o="Shenzhen Visteng Technology CO.,LTD" ACE42E o="SK hynix" ACE5F0 o="Doppler Labs" ACE64B o="Shenzhen Baojia Battery Technology Co., Ltd." @@ -15886,10 +17290,13 @@ ACE87E o="Bytemark Computer Consulting Ltd" ACE97F o="IoT Tech Limited" ACE9AA o="Hay Systems Ltd" ACEA6A o="GENIX INFOCOMM CO., LTD." +ACEA70 o="ZUNDA Inc." ACEE3B o="6harmonics Inc" ACEE70 o="Fontem Ventures BV" ACF0B2 o="Becker Electronics Taiwan Ltd." +ACF85C o="Chengdu Higon Integrated Circuit Design Co,. Ltd." ACF97E o="ELESYS INC." +ACFAA5 o="digitron" B0027E o="MULLER SERVICES" B008BF o="Vital Connect, Inc." B009D3 o="Avizia" @@ -15898,27 +17305,35 @@ B01203 o="Dynamics Hong Kong Limited" B01266 o="Futaba-Kikaku" B01408 o="LIGHTSPEED INTERNATIONAL CO." B01743 o="EDISON GLOBAL CIRCUITS LLC" +B01B4B o="Invisible Fun Studio Limited" B01B7C o="Ontrol A.S." B01BD2,B8FC9A,C80E77,D4B169,E0A8B8 o="Le Shi Zhi Xin Electronic Technology (Tianjin) Limited" B01C91 o="Elim Co" B01F29 o="Helvetia INC." +B02347 o="Shenzhen Giant Microelectronics Company Limited" B024F3 o="Progeny Systems" -B02628,BC97E1,E43D1A o="Broadcom Limited" +B025AA o="AIstone Global Limited" +B0285B o="JUHUA Technology Inc." B030C8 o="Teal Drones, Inc." +B03226 o="Keheng Information Industry Co., Ltd." +B034FB o="ShenZhen Microtest Automation Co.,Ltd" B0350B,E048D3,E4FB8F o="MOBIWIRE MOBILES (NINGBO) CO.,LTD" -B03829 o="Siliconware Precision Industries Co., Ltd." B03850 o="Nanjing CAS-ZDC IOT SYSTEM CO.,LTD" +B03893 o="Onda TLC Italia S.r.l." +B03B1B o="Kontrolnext Technology (Beijing) Ltd." B03D96 o="Vision Valley FZ LLC" +B03DC2 o="Wasp artificial intelligence(Shenzhen) Co.,ltd" B03EB0 o="MICRODIA Ltd." B04089 o="Senient Systems LTD" B0411D o="ITTIM Technologies" B0416F o="Shenzhen Maxtang Computer Co.,Ltd" -B0435D o="NuLEDs, Inc." +B0435D o="MechoShade" +B0449C o="Assa Abloy AB - Yale" B04515 o="mira fitness,LLC." B04545 o="YACOUB Automation GmbH" B0495F o="OMRON HEALTHCARE Co., Ltd." -B04BBF o="PT HAN SUNG ELECTORONICS INDONESIA" B04C05 o="Fresenius Medical Care Deutschland GmbH" +B04F3C o="Genuine Optics" B04FC3 o="Shenzhen NVC Cloud Technology Co., Ltd." B050BC o="SHENZHEN BASICOM ELECTRONIC CO.,LTD." B0518E o="Holl technology CO.Ltd." @@ -15931,6 +17346,7 @@ B065F1 o="WIO Manufacturing HK Limited" B0672F o="Bowers & Wilkins" B068B6 o="Hangzhou OYE Technology Co. Ltd" B06971 o="DEI Sales, Inc." +B06BB3 o="GRT" B06CBF o="3ality Digital Systems GmbH" B0750C o="QA Cafe" B07870 o="Wi-NEXT, Inc." @@ -15944,6 +17360,7 @@ B081D8 o="I-sys Corp" B0869E o="Chloride S.r.L" B08807 o="Strata Worldwide" B089C2 o="Zyptonite" +B08BBE o="ABL GmbH" B08E1A o="URadio Systems Co., Ltd" B09074 o="Fulan Electronics Limited" B090D4 o="Shenzhen Hoin Internet Technology Co., Ltd" @@ -15951,9 +17368,11 @@ B09134 o="Taleo" B09137 o="ISis ImageStream Internet Solutions, Inc" B0966C o="Lanbowan Technology Ltd." B0973A o="E-Fuel Corporation" +B097E6 o="FUJIAN FUCAN WECON CO LTD" B0989F o="LG CNS" B09AE2 o="STEMMER IMAGING GmbH" B09BD4 o="GNH Software India Private Limited" +B09E1B o="Butlr Technologies, Inc." B0A10A o="Pivotal Systems Corporation" B0A37E,BC8AE8,C8D779,DC330D o="QING DAO HAIER TELECOM CO.,LTD." B0A454 o="Tripwire Inc." @@ -15963,7 +17382,8 @@ B0AE25 o="Varikorea" B0B32B o="Slican Sp. z o.o." B0B5E8 o="Ruroc LTD" B0B8D5 o="Nanjing Nengrui Auto Equipment CO.,Ltd" -B0BB8B o="WAVETEL TECHNOLOGY LIMITED" +B0BB8B,D4DD0B o="WAVETEL TECHNOLOGY LIMITED" +B0BC8E o="SkyMirr" B0BD6D o="Echostreams Innovative Solutions" B0BDA1 o="ZAKLAD ELEKTRONICZNY SIMS" B0BF99 o="WIZITDONGDO" @@ -15977,17 +17397,23 @@ B0C95B o="Beijing Symtech CO.,LTD" B0CE18 o="Zhejiang shenghui lighting co.,Ltd" B0CF4D o="MI-Zone Technology Ireland" B0D2F5 o="Vello Systems, Inc." +B0D41F o="MOBITITECABSOLUT S.A." B0D7C5 o="Logipix Ltd" B0D7CC o="Tridonic GmbH & Co KG" +B0D7DE o="Hangzhou Linovision Co., Ltd." B0DA00 o="CERA ELECTRONIQUE" B0E39D o="CAT SYSTEM CO.,LTD." B0E50E o="NRG SYSTEMS INC" B0E71D o="Shanghai Maigantech Co.,Ltd" B0E7DE o="Homa Technologies JSC" B0E97E o="Advanced Micro Peripherals" +B0E9FE o="Woan Technology (Shenzhen) Co., Ltd." +B0EA19 o="TPV Audio and Visual Technology (Shenzhen) Co.,Ltd." B0EC8F o="GMX SAS" +B0F00C o="Dongguan Wecxw CO.,Ltd." B0F1A3 o="Fengfan (BeiJing) Technology Co., Ltd." B0F1BC o="Dhemax Ingenieros Ltda" +B0F3E9 o="PATEO CONNECT (Xiamen) Co., Ltd." B4009C o="CableWorld Ltd." B40418 o="Smartchip Integrated Inc." B40566 o="SP Best Corporation Co., LTD." @@ -15995,15 +17421,20 @@ B40832 o="TC Communications" B40AC6 o="DEXON Systems Ltd." B40B44 o="Smartisan Technology Co., Ltd." B40B78,B40B7A o="Brusa Elektronik AG" +B40E06 o="Third Reality, Inc" B40E96 o="HERAN" B40EDC o="LG-Ericsson Co.,Ltd." B4157E o="Celona Inc." +B4174D o="PROJECT MONITOR INC" B41780 o="DTI Group Ltd" +B41CAB o="ICR, inc." B41DEF o="Internet Laboratories, Inc." +B41E52 o="Flock Safety" B4211D o="Beijing GuangXin Technology Co., Ltd" B4218A o="Dog Hunter LLC" B42330 o="Itron Inc" B424E7 o="Codetek Technology Co.,Ltd" +B42875 o="Futecho Solutions Private Limited" B428F1 o="E-Prime Co., Ltd." B4293D o="Shenzhen Urovo Technology Co.,Ltd." B42A39 o="ORBIT MERRET, spol. s r. o." @@ -16017,19 +17448,24 @@ B43564 o="Fujian Tian Cheng Electron Science & Technical Development Co.,Ltd." B435F7 o="Zhejiang Pearmain Electronics Co.ltd." B436E3 o="KBVISION GROUP" B43741 o="Consert, Inc." +B437D8 o="D-Link (Shanghai) Limited Corp." B43934 o="Pen Generations, Inc." +B43D08 o="GX International BV" B43DB2 o="Degreane Horizon" B43E3B o="Viableware, Inc" +B44130 o="Jabil Circuit (Guangzhou) Ltd." B4430D o="Broadlink Pty Ltd" -B44CC2 o="NR ELECTRIC CO., LTD" +B4466B o="REALTIMEID AS" B44F96 o="Zhejiang Xinzailing Technology co., ltd" B45062 o="EmBestor Technology Inc." B451F9 o="NB Software" B45570 o="Borea" B456B9 o="Teraspek Technologies Co.,Ltd" +B456FA o="IOPSYS Software Solutions" B45861 o="CRemote, LLC" B45CA4 o="Thing-talk Wireless Communication Technologies Corporation Limited" B461FF o="Lumigon A/S" +B4622E,C46E33 o="Zhong Ge Smart Technology Co., Ltd." B46238 o="Exablox" B462AD o="Elysia Germany GmbH" B46698 o="Zealabs srl" @@ -16037,9 +17473,9 @@ B46D35 o="Dalian Seasky Automation Co;Ltd" B46F2D o="Wahoo Fitness" B47356 o="Hangzhou Treebear Networking Co., Ltd." B47447 o="CoreOS" -B47748 o="Shenzhen Neoway Technology Co.,Ltd." B47C29 o="Shenzhen Guzidi Technology Co.,Ltd" B47C59 o="Jiangsu Hengxin Technology Co.,Ltd." +B47D76 o="KNS Group LLC" B47F5E o="Foresight Manufacture (S) Pte Ltd" B481BF o="Meta-Networks, LLC" B48255 o="Research Products Corporation" @@ -16047,8 +17483,9 @@ B4827B o="AKG Acoustics GmbH" B482C5 o="Relay2, Inc." B48547 o="Amptown System Company GmbH" B48910 o="Coster T.E. S.P.A." +B48970 o="IGEN Tech Co., Ltd." B4944E o="WeTelecom Co., Ltd." -B49A95 o="Shenzhen Boomtech Industrial Corporation" +B49882 o="Brusa HyPower AG" B49DB4 o="Axion Technologies Inc." B49EAC o="Imagik Int'l Corp" B49EE6 o="SHENZHEN TECHNOLOGY CO LTD" @@ -16060,7 +17497,8 @@ B4A82B o="Histar Digital Electronics Co., Ltd." B4A9FE o="GHIA Technology (Shenzhen) LTD" B4AA4D o="Ensequence, Inc." B4AB2C o="MtM Technology Corporation" -B4ADA3,D49E3B,DCBD7A o="Guangzhou Shiyuan Electronic Technology Company Limited" +B4AC8C o="Bern University of Applied Sciences" +B4ADA3,BCFAB8,D49E3B,DCBD7A o="Guangzhou Shiyuan Electronic Technology Company Limited" B4AE6F o="Circle Reliance, Inc DBA Cranberry Networks" B4B15A o="Siemens AG Energy Management Division" B4B265 o="DAEHO I&T" @@ -16069,38 +17507,46 @@ B4B542 o="Hubbell Power Systems, Inc." B4B5AF o="Minsung Electronics" B4B859 o="Texa Spa" B4B88D o="Thuh Company" +B4BA02 o="Agatel Ltd" B4C170 o="Yi chip Microelectronics (Hangzhou) Co., Ltd" B4C44E o="VXL eTech Pvt Ltd" B4C476 o="Wuhan Maritime Communication Research Institute" +B4C556 o="Shanghai Kenmyond Industrial Network Equipment Co., Ltd" B4C6F8 o="Axilspot Communication" -B4C810 o="UMPI Elettronica" +B4C810 o="Umpi srl" B4CC04 o="Piranti" B4CCE9 o="PROSYST" +B4CDF5 o="CUB ELECPARTS INC." B4CEFE o="James Czekaj" -B4CFDB o="Shenzhen Jiuzhou Electric Co.,LTD" B4D135 o="Cloudistics" +B4D31A o="LYSORA TECHNOLOGY INC." B4D64E o="Caldero Limited" B4D8A9 o="BetterBots" B4D8DE o="iota Computing, Inc." B4DC09 o="Guangzhou Dawei Communication Co.,Ltd" B4DD15 o="ControlThings Oy Ab" -B4DDD0 o="Continental Automotive Hungary Kft" +B4DDD0 o="AUMOVIO Hungary Kft." +B4DDE0 o="Shanghai Amphenol Airwave Communication Electronics Co.,Ltd." B4DF3B o="Chromlech" B4DFFA o="Litemax Electronics Inc." B4E01D o="CONCEPTION ELECTRONIQUE" +B4E025 o="ITLook" B4E0CD o="Fusion-io, Inc" +B4E54C o="LLC %Elektra%" B4E782 o="Vivalnk" +B4E85C o="fünfeinhalb Funksysteme GmbH" B4E8C9 o="XADA Technologies" B4E9A3 o="port industrial automation GmbH" B4ECF2 o="Shanghai Listent Medical Tech Co., Ltd." +B4ECFF o="Wuhan IPG Technologies Co., Ltd." B4ED19 o="Pie Digital, Inc." B4ED54 o="Wohler Technologies" B4EF04 o="DAIHAN Scientific Co., Ltd." B4EF1C o="360 AI Technology Co.Ltd" +B4EF30 o="Shanghai SYH Technology CO.,LTD" B4F323 o="PETATEL INC." B4F81E o="Kinova" B4F949 o="optilink networks pvt ltd" -B4FBE3 o="AltoBeam (China) Inc." B4FC75 o="SEMA Electronics(HK) CO.,LTD" B4FE8C o="Centro Sicurezza Italia SpA" B80018 o="Htel" @@ -16117,6 +17563,7 @@ B82410 o="Magneti Marelli Slovakia s.r.o." B8241A o="SWEDA INFORMATICA LTDA" B824F0 o="SOYO Technology Development Co., Ltd." B8259A o="Thalmic Labs" +B825B5 o="Trakm8 Ltd" B8266C o="ANOV France" B826D4 o="Furukawa Industrial S.A. Produtos Elétricos" B827EB o="Raspberry Pi Foundation" @@ -16128,22 +17575,27 @@ B830A8 o="Road-Track Telematics Development" B836D8 o="Videoswitch" B838CA o="Kyokko Tsushin System CO.,LTD" B83A7B o="Worldplay (Canada) Inc." +B83B8F o="Hangzhou Hylin IoT Techonology Co.,Ltd." B83D4E o="Shenzhen Cultraview Digital Technology Co.,Ltd Shanghai Branch" B8415F o="ASP AG" B843E4 o="Vlatacom" B8477A o="Dasan Electron Co., Ltd." B847C6 o="SanJet Technology Corp." +B8511D o="TELECHIPS, INC" B856BD o="ITT LLC" B85776 o="lignex1" B85810 o="NUMERA, INC." B85AF7 o="Ouya, Inc" B85AFE o="Handaer Communication Technology (Beijing) Co., Ltd" +B85B6C o="Control Accessories LLC" B86091 o="Onnet Technologies and Innovations LLC" B86142 o="Beijing Tricolor Technology Co., Ltd" B863BC o="ROBOTIS, Co, Ltd" +B86468 o="BBSakura Networks, Inc." B86491 o="CK Telecom Ltd" B8653B o="Bolymin, Inc." B869C2 o="Sunitec Enterprise Co., Ltd." +B87029 o="Shenzhen Ruiyuanchuangxin Technology Co.,Ltd." B87424 o="Viessmann Elektronik GmbH" B87447 o="Convergence Technologies" B875C0 o="PayPal, Inc." @@ -16155,6 +17607,7 @@ B887A8 o="Step Ahead Innovations Inc." B887C6 o="Prudential Technology co.,LTD" B88981 o="Chengdu InnoThings Technology Co., Ltd." B889CA o="ILJIN ELECTRIC Co., Ltd." +B88DF1 o="Nanjing BigFish Semiconductor Co., Ltd." B88E3A o="Infinite Technologies JLT" B88EC6 o="Stateless Networks" B88EDF o="Zencheer Communication Technology Co., Ltd." @@ -16171,13 +17624,19 @@ B89A9A o="Xin Shi Jia Technology (Beijing) Co.,Ltd" B89ACD o="ELITE OPTOELECTRONIC(ASIA)CO.,LTD" B89AED o="OceanServer Technology, Inc" B89BE4 o="ABB Power Systems Power Generation" +B89EA6 o="SPBEC-MINING CO.LTD" B8A3E0 o="BenRui Technology Co.,Ltd" B8A58D o="Axe Group Holdings Limited" +B8A75E o="Wuxi Xinjie Electric Co.,Ltd" B8A8AF o="Logic S.p.A." B8AD3E,B8F8BE o="BLUECOM" +B8AE1C o="Smart Cube., Ltd" +B8AE1D o="Guangzhou Xingyi Electronic Technology Co.,Ltd" B8B1C7 o="BT&COM CO.,LTD" B8B2EB o="Googol Technology (HK) Limited" +B8B2F7 o="DRIMAES INC." B8B3DC o="DEREK (SHAOGUAN) LIMITED" +B8B77D o="Guangdong Transtek Medical Electronics CO.,Ltd" B8B7D7 o="2GIG Technologies" B8B94E o="Shenzhen iBaby Labs, Inc." B8BA68 o="Xi'an Jizhong Digital Communication Co.,Ltd" @@ -16185,20 +17644,24 @@ B8BA72 o="Cynove" B8BB23 o="Guangdong Nufront CSC Co., Ltd" B8BB6D o="ENERES Co.,Ltd." B8BD79 o="TrendPoint Systems" +B8C007 o="tickIoT Inc." B8C1A2 o="Dragon Path Technologies Co., Limited" B8C227 o="PSTec" B8C3BF o="Henan Chengshi NetWork Technology Co.,Ltd" B8C46F o="PRIMMCON INDUSTRIES INC" B8C855 o="Shanghai GBCOM Communication Technology Co.,Ltd." +B8CB93 o="IC BOSS.COM TECH INC" B8CD93 o="Penetek, Inc" B8CDA7 o="Maxeler Technologies Ltd." B8D06F o="GUANGZHOU HKUST FOK YING TUNG RESEARCH INSTITUTE" B8D309 o="Cox Communications, Inc" B8D49D o="M Seven System Ltd." +B8D56B o="Mirka Ltd." B8DAF1 o="Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH" B8DAF7 o="Advanced Photonics, Inc." B8DC87 o="IAI Corporation" B8DF6B o="SpotCam Co., Ltd." +B8E44A o="Xconnect" B8E589 o="Payter BV" B8E779 o="9Solutions Oy" B8EAAA o="ICG NETWORKS CO.,ltd" @@ -16211,10 +17674,13 @@ B8F5E7 o="WayTools, LLC" B8F732 o="Aryaka Networks Inc" B8F74A o="RCNTEC" B8F828 o="Changshu Gaoshida Optoelectronic Technology Co. Ltd." +B8FBAF o="Xiamen IPRT Technology CO.,LTD" B8FD32 o="Zhejiang ROICX Microelectronics" B8FF6F o="Shanghai Typrotech Technology Co.Ltd" BC0200 o="Stewart Audio" BC03A7 o="MFP MICHELIN" +BC0866 o="Nestle Purina PetCare" +BC095C o="FiSens GmbH" BC0F2B o="FORTUNE TECHGROUP CO.,LTD" BC0FA7 o="Ouster" BC125E o="Beijing WisVideo INC." @@ -16222,8 +17688,10 @@ BC14EF o="ITON Technology Limited" BC15A6 o="Taiwan Jantek Electronics,Ltd." BC1A67 o="YF Technology Co., Ltd" BC1C81 o="Sichuan iLink Technology Co., Ltd." +BC1FE1 o="Ascendent Technology Group" BC20BA o="Inspur (Shandong) Electronic Information Co., Ltd" BC22FB o="RF Industries" +BC2411 o="Proxmox Server Solutions GmbH" BC25F0 o="3D Display Technologies Co., Ltd." BC261D o="HONG KONG TECON TECHNOLOGY" BC2643 o="Elprotronic Inc." @@ -16231,35 +17699,43 @@ BC26A1 o="FACTORY FIVE Corporation" BC282C o="e-Smart Systems Pvt. Ltd" BC2846 o="NextBIT Computing Pvt. Ltd." BC28D6 o="Rowley Associates Limited" +BC2B1E o="Cresyn Co., Ltd." BC2B6B o="Beijing Haier IC Design Co.,Ltd" BC2BD7 o="Revogi Innovation Co., Ltd." BC2C55 o="Bear Flag Design, Inc." BC2D98 o="ThinGlobal LLC" +BC2EC3 o="Shenzhen Tianruixiang Communication Equipment Co.,Ltd" +BC34CA o="INOVANCE" BC35E5 o="Hydro Systems Company" BC3865 o="JWCNETWORKS" BC38D2 o="Pandachip Limited" BC39A6 o="CSUN System Technology Co.,LTD" BC39D9 o="Z-TEC" BC3E13 o="Accordance Systems Inc." -BC3F4E o="Teleepoch Ltd" BC4100 o="CODACO ELECTRONIC s.r.o." BC4377 o="Hang Zhou Huite Technology Co.,ltd." BC44B0 o="Elastifile" BC452E o="Knowledge Development for POF S.L." +BC4548 o="Beijing gpthink technology co.,LTD." +BC458C o="Shenzhen Topwise Communication Co.,Ltd" +BC49B2 o="SHENZHEN ALONG COMMUNICATION TECH CO., LTD" BC4B79 o="SensingTek" BC4E3C o="CORE STAFF CO., LTD." BC4E5D o="ZhongMiao Technology Co., Ltd." BC51FE o="Swann communications Pty Ltd" BC54F9 o="Drogoo Technology Co., Ltd." +BC5729 o="Shenzhen KKM Co., Ltd" BC5EA1 o="PsiKick, Inc." BC629F o="Telenet Systems P. Ltd." BC62D2 o="Genexis International B.V." BC66DE o="Shadow Creator Information Technology Co.,Ltd." BC6784 o="Environics Oy" +BC69CB o="Panasonic Electric Works Networks Co., Ltd." BC6A16 o="tdvine" BC6A2F o="Henge Docks LLC" -BC6E76 o="Green Energy Options Ltd" +BC6D05 o="Dusun Electron Co.,Ltd." BC71C1 o="XTrillion, Inc." +BC73A4 o="ANDA TELECOM PVT LTD" BC74D7 o="HangZhou JuRu Technology CO.,LTD" BC7596 o="Beijing Broadwit Technology Co., Ltd." BC764E o="Rackspace US, Inc." @@ -16267,27 +17743,34 @@ BC779F o="SBM Co., Ltd." BC7DD1 o="Radio Data Comms" BC811F o="Ingate Systems" BC8199 o="BASIC Co.,Ltd." +BC8529,F47257 o="Jiangxi Remote lntelligence Technology Co.,Ltd" +BC8753 o="Sera Network Inc." BC8893 o="VILLBAU Ltd." BC88C3 o="Ningbo Dooya Mechanic & Electronic Technology Co., Ltd" BC8AA3 o="NHN Entertainment" BC8B55 o="NPP ELIKS America Inc. DBA T&M Atlantic" -BC903A,FCD6BD o="Robert Bosch GmbH" BC9325 o="Ningbo Joyson Preh Car Connect Co.,Ltd." BC99BC o="FonSee Technology Inc." BC9CC5 o="Beijing Huafei Technology Co., Ltd." BC9DA5 o="DASCOM Europe GmbH" BCA042 o="SHANGHAI FLYCO ELECTRICAL APPLIANCE CO.,LTD" -BCA13A o="SES-imagotag" +BCA37F o="Rail-Mil Sp. z o.o. Sp. K." BCA4E1 o="Nabto" +BCA68D o="Continetal Automotive Systems Sibiu" BCA9D6 o="Cyber-Rain, Inc." BCAB7C o="TRnP KOREA Co Ltd" +BCAD90 o="Kymeta Purchasing" +BCAF87 o="smartAC.com, Inc." BCAF91 o="TE Connectivity Sensor Solutions" BCB22B o="EM-Tech" BCB308 o="HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED" +BCB6FB o="P4Q ELECTRONICS, S.L." BCB852 o="Cybera, Inc." +BCB923 o="Alta Networks" BCBAE1 o="AREC Inc." BCBBC9 o="Kellendonk Elektronik GmbH" BCBC46 o="SKS Welding Systems GmbH" +BCBEFB o="ASL Xiamen Technology CO., LTD" BCC168 o="DinBox Sverige AB" BCC23A o="Thomson Video Networks" BCC31B o="Kygo Life A" @@ -16302,6 +17785,7 @@ BCE767 o="Quanzhou TDX Electronics Co., Ltd" BCE796 o="Wireless CCTV Ltd" BCEA2B o="CityCom GmbH" BCEB5F o="Fujian Beifeng Telecom Technology Co., Ltd." +BCF2E5 o="Powerful Devices" BCF61C o="Geomodeling Wuxi Technology Co. Ltd." BCF811 o="Xiamen DNAKE Technology Co.,Ltd" BCF9F2 o="TEKO" @@ -16313,17 +17797,22 @@ C0074A o="Brita GmbH" C00D7E o="Additech, Inc." C011A6 o="Fort-Telecom ltd." C01242 o="Alpha Security Products" +C0188C o="Altus Sistemas de Automação S.A." C01C30 o="Shenzhen WIFI-3L Technology Co.,Ltd" C01E9B o="Pixavi AS" +C02242 o="Chauvet" C02250 o="Koss Corporation" C02567 o="Nexxt Solutions" C027B9 o="Beijing National Railway Research & Design Institute of Signal & Communication Co., Ltd." C02973 o="Audyssey Laboratories Inc." C029F3 o="XySystem" +C02B56 o="CANDID OPTRONIX PRIVATE LIMITED" C02BFC o="iNES. applied informatics GmbH" C02C7A,F82387 o="Shenzhen Horn Audio Co.,Ltd." C02DEE o="Cuff" +C02E26 o="iRhythm Technologies, Inc." C02FF1 o="Volta Networks" +C033DA o="Shenzhen JRUN Technologies CO., LTD" C034B4 o="Gigastone Corporation" C03580 o="A&R TECH" C035BD o="Velocytech Aps" @@ -16331,30 +17820,41 @@ C035C5 o="Prosoft Systems LTD" C03B8F o="Minicom Digital Signage" C03D46 o="Shanghai Sango Network Technology Co.,Ltd" C03F2A o="Biscotti, Inc." +C03FBB o="Zhongshan Zhiniu Electronics Co.,Ltd." C04004 o="Medicaroid Corporation" C04301 o="Epec Oy" C044E3 o="Shenzhen Sinkna Electronics Co., LTD" +C04884 o="Sigma Bilisim Sist. Tekn. Elk. Enj. ve San. D??. Tic. Ltd. ?ti." C0493D o="MAITRISE TECHNOLOGIQUE" C04A09 o="Zhejiang Everbright Communication Equip. Co,. Ltd" +C04B13 o="WonderSound Technology Co., Ltd" C04DF7 o="SERELEC" C05336 o="Beijing National Railway Research & Design Institute of Signal & Communication Group Co..Ltd." +C0555C o="Impulse Labs" C058A7 o="Pico Systems Co., Ltd." C05E6F o="V. Stonkaus firma %Kodinis Raktas%" C05E79 o="SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD" +C05F87 o="Legrand INTELLIGENT ELECTRICAL(HUIZHOU)CO.,LTD." +C0613D o="BioIntelliSense, Inc." +C062F2 o="Beijing Cotytech Co.,LTD" C06369 o="BINXIN TECHNOLOGY(ZHEJIANG) LTD." C06C0F o="Dobbs Stanford" C06C6D o="MagneMotion, Inc." C06D1A o="Tianjin Henxinhuifeng Technology Co.,Ltd." +C071AA o="ShenZhen OnMicro Electronics Co.,Ltd." +C07415 o="IntelPro Inc." C0742B o="SHENZHEN XUNLONG SOFTWARE CO.,LIMITED" C07E40 o="SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD" C08135 o="Ningbo Forfan technology Co., LTD" C08170 o="Effigis GeoSolutions" C08488 o="Finis Inc" C086B3 o="Shenzhen Voxtech Co., Ltd." +C08706 o="Shenzhen Qianfenyi Intelligent Technology Co.,LTD" C0885B o="SnD Tech Co., Ltd." -C08ACD o="Guangzhou Shiyuan Electronic Technology Company Limited" +C0886D o="Securosys SA" C08B6F o="S I Sistemas Inteligentes Eletrônicos Ltda" C09132 o="Patriot Memory" +C09573 o="AIxLink" C095DA o="NXP India Private Limited" C09879 o="Acer Inc." C098E5 o="University of Michigan" @@ -16370,42 +17870,54 @@ C0A364 o="3D Systems Massachusetts" C0A39E o="EarthCam, Inc." C0A8F0 o="Adamson Systems Engineering" C0AA68 o="OSASI Technos Inc." +C0AEFD o="Shenzhen HC-WLAN Technology Co.,Ltd" C0B339 o="Comigo Ltd." C0B357 o="Yoshiki Electronics Industry Ltd." +C0B3C8 o="LLC %NTC Rotek%" C0B713 o="Beijing Xiaoyuer Technology Co. Ltd." C0B8B1 o="BitBox Ltd" +C0BAE6 o="Zenitel GB Ltd" C0BD42 o="ZPA Smart Energy a.s." C0C3B6 o="Automatic Systems" C0C569 o="SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD" C0C946 o="MITSUYA LABORATORIES INC." -C0CBF1,D04E50 o="Mobiwire Mobiles (NingBo) Co., LTD" +C0CF64 o="Hangzhou Zenith Electron Co.,Ltd" C0CFA3 o="Creative Electronics & Software, Inc." C0D834 o="xvtec ltd" +C0D941 o="Shenzhen VMAX Software Co., Ltd." C0D9F7 o="ShanDong Domor Intelligent S&T CO.,Ltd" C0DA74 o="Hangzhou Sunyard Technology Co., Ltd." C0DC6A o="Qingdao Eastsoft Communication Technology Co.,LTD" C0DF77 o="Conrad Electronic SE" +C0E01C o="IoT Security Group, SL" C0E54E o="ARIES Embedded GmbH" +C0E911 o="RealNetworks" C0EEB5 o="Enice Network." C0EEFB o="OnePlus Tech (Shenzhen) Ltd" C0F1C4 o="Pacidal Corporation Ltd." C0F636 o="Hangzhou Kuaiyue Technologies, Ltd." C0F79D o="Powercode" +C0F827 o="Rapidmax Technology Corporation" C0F945 o="Toshiba Toko Meter Systems Co., LTD." C0F991 o="GME Standard Communications P/L" +C0F9D2 o="arkona technologies GmbH" C40006 o="Lipi Data Systems Ltd." C40049 o="Kamama" +C400B5 o="HongKong Tenry Technology Co., Ltd." C40142 o="MaxMedia Technology Limited" C401B1 o="SeekTech INC" C401CE o="PRESITION (2000) CO., LTD." C402E1 o="Khwahish Technologies Private Limited" +C404D8 o="Aviva Links Inc." C40880 o="Shenzhen UTEPO Tech Co., Ltd." +C40898 o="Dropbeats Technology Co., Ltd." C40E45 o="ACK Networks,Inc." C40F09 o="Hermes electronic GmbH" C411E0 o="Bull Group Co., Ltd" C416FA o="Prysm Inc" C4198B o="Dominion Voting Systems Corporation" C419EC o="Qualisys AB" +C41C9C o="JiQiDao" C41ECE o="HMI Sources Ltd." C4237A o="WhizNets Inc." C423A2 o="PT. Emsonic Indonesia" @@ -16413,11 +17925,14 @@ C4242E o="Galvanic Applied Sciences Inc" C42628 o="Airo Wireless" C4282D o="Embedded Intellect Pty Ltd" C4291D o="KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS." -C42996 o="Signify B.V." +C42996,FC268C o="Signify B.V." C42C4F o="Qingdao Hisense Mobile Communication Technology Co,Ltd" +C430CA o="SD Biosensor" C432D1 o="Farlink Technology Limited" +C43396 o="Dongguan Hele Electronics Co., Ltd." C43655 o="Shenzhen Fenglian Technology Co., Ltd." C436DA o="Rusteletech Ltd." +C43772 o="Virtuozzo International GmbH" C438D3 o="TAGATEC CO.,LTD" C43A9F o="Siconix Inc." C43C3C o="CYBELEC SA" @@ -16430,32 +17945,43 @@ C44B44 o="Omniprint Inc." C44BD1 o="Wallys Communications Teachnologies Co.,Ltd." C44E1F o="BlueN" C44EAC o="Shenzhen Shiningworth Technology Co., Ltd." +C45379 o="Micronview Limited Liability Company" C455A6 o="Cadac Holdings Ltd" C455C2 o="Bach-Simpson" C45600 o="Galleon Embedded Computing" C456FE o="Lava International Ltd." C4571F o="June Life Inc" +C45781 o="Wingtech Group (HongKong) Limited" C458C2 o="Shenzhen TATFOOK Technology Co., Ltd." C45976 o="Fugoo Coorporation" C45BF7 o="ants" C45DD8 o="HDMI Forum" C46044 o="Everex Electronics Limited" +C46237 o="sunweit industrial limited" C4626B o="ZPT Vigantice" C46354 o="U-Raku, Inc." C463FB o="Neatframe AS" +C4678B o="Alphabet Capital Sdn Bhd" +C467A1 o="Accelight Technologies (Wuhan) Inc." C467B5 o="Libratone A/S" C4693E o="Turbulence Design Inc." C46BB4 o="myIDkey" C46DF1 o="DataGravity" C4700B o="GUANGZHOU CHIP TECHNOLOGIES CO.,LTD" +C47469 o="BT9" C474F8 o="Hot Pepper, Inc." C477AB o="Beijing ASU Tech Co.,Ltd" +C47981 o="Ehya LTD" +C4799F o="Haiguang Smart Device Co.,Ltd." C47B2F o="Beijing JoinHope Image Technology Ltd." +C47B80 o="Protempis, LLC" C47BA3 o="NAVIS Inc." C47DFE o="A.N. Solutions GmbH" C47F51 o="Inventek Systems" +C4808A o="Cloud Diagnostics Canada ULC" C4823F o="Fujian Newland Auto-ID Tech. Co,.Ltd." C4824E o="Changzhou Uchip Electronics Co., LTD." +C4864F o="Beijing BitIntelligence Information Technology Co. Ltd." C489ED o="Solid Optics EU N.V." C48A5A o="JFCONTROL" C48F07 o="Shenzhen Yihao Hulian Science and Technology Co., Ltd." @@ -16465,19 +17991,25 @@ C4924C o="KEISOKUKI CENTER CO.,LTD." C49300 o="8Devices" C49313 o="100fio networks technology llc" C49380 o="Speedytel technology" +C4955F o="Anhui Saida Technology Limited Liability Company" C495A2 o="SHENZHEN WEIJIU INDUSTRY AND TRADE DEVELOPMENT CO., LTD" C49805 o="Minieum Networks, Inc" C49878 o="SHANGHAI MOAAN INTELLIGENT TECHNOLOGY CO.,LTD" +C49A89 o="Suzhou K-Hiragawa Electronic Technology Co.,Ltd" C49E41 o="G24 Power Limited" C49FF3 o="Mciao Technologies, Inc." +C4A9B8 o="XIAMENSHI C-CHIP TECHNOLOGY CO.,LTD" C4AAA1 o="SUMMIT DEVELOPMENT, spol.s r.o." C4AD21 o="MEDIAEDGE Corporation" C4ADF1 o="GOPEACE Inc." +C4B16B o="Advantech Czech" C4B512 o="General Electric Digital Energy" +C4B691 o="Angel Robotics" C4BA99 o="I+ME Actia Informatik und Mikro-Elektronik GmbH" C4BAA3 o="Beijing Winicssec Technologies Co., Ltd." C4BB4C o="Zebra Information Tech Co. Ltd" C4BBEA o="Pakedge Device and Software Inc" +C4BCD7 o="New Ryatek" C4BD6A o="SKF GmbH" C4C0AE o="MIDORI ELECTRONIC CO., LTD." C4C138 o="OWLink Technology Inc" @@ -16485,6 +18017,8 @@ C4C19F o="National Oilwell Varco Instrumentation, Monitoring, and Optimization ( C4C755,E01D38 o="Beijing HuaqinWorld Technology Co.,Ltd" C4C919 o="Energy Imports Ltd" C4C9EC o="Gugaoo HK Limited" +C4CA67 o="Chongqing ZQZER Technology Co., LTD" +C4CB54 o="Fibocom Auto Inc." C4CB6B o="Airista Flow, Inc." C4CD45 o="Beijing Boomsense Technology CO.,LTD." C4CD82 o="Hangzhou Lowan Information Technology Co., Ltd." @@ -16498,24 +18032,34 @@ C4E0DE o="Zhengzhou XindaJiean Information Technology Co.,Ltd." C4E17C o="U2S co." C4E506 o="Piper Networks, Inc." C4E510 o="Mechatro, Inc." +C4E5B1 o="Suzhou PanKore Integrated Circuit Technology Co. Ltd." +C4E733 o="Clear Align LLC" C4E7BE o="SCSpro Co.,Ltd" C4E92F o="AB Sciex" C4EBE3 o="RRCN SAS" C4EEAE o="VSS Monitoring" C4EEF5 o="II-VI Incorporated" C4EF70 o="Home Skinovations" +C4F035 o="Hughes Network Systems, LLC" +C4F122 o="Nexar Ltd." C4F1D1 o="BEIJING SOGOU TECHNOLOGY DEVELOPMENT CO., LTD." C4F464 o="Spica international" C4F5A5 o="Kumalift Co., Ltd." C4F839 o="Actia Automotive" +C4FBC8 o="Shenzhen Candour Co., Ltd." C4FCE4 o="DishTV NZ Ltd" +C4FCEF o="SambaNova Systems, Inc." C4FDE6 o="DRTECH" C80258 o="ITW GSE ApS" C8028F o="Nova Electronics (Shanghai) Co., Ltd." C802A6 o="Beijing Newmine Technology" +C8059E o="Hefei Symboltek Co.,Ltd" +C805A4 o="Motorola(Wuhan) Mobility Technologies Communication Co.,Ltd" C80718 o="TDSi" +C80A35 o="Qingdao Hisense Smart Life Technology Co., Ltd" C80D32 o="Holoplot GmbH" C80E95 o="OmniLync Inc." +C81072 o="BBPOS Limited" C81073 o="CENTURY OPTICOMM CO.,LTD" C81AFE o="DLOGIC GmbH" C81B5C o="BCTech" @@ -16528,6 +18072,7 @@ C82E47 o="Suzhou SmartChip Semiconductor Co., LTD" C82E94 o="Halfa Enterprise Co., Ltd." C83168 o="eZEX corporation" C83232 o="Hunting Innova" +C83A1B o="Toshiba TEC Corporation Inc" C83A35 o="Tenda Technology Co., Ltd." C83B45 o="JRI" C83DFC o="AlphaTheta Corporation" @@ -16537,50 +18082,69 @@ C84544 o="Asia Pacific CIS (Wuxi) Co, Ltd" C8458F o="Wyler AG" C84782 o="Areson Technology Corp." C848F5 o="MEDISON Xray Co., Ltd" -C853E1 o="Beijing Bytedance Network Technology Co., Ltd" +C84D34 o="LIONS Taiwan Technology Inc." +C84D44 o="Shenzhen Jiapeng Huaxiang Technology Co.,Ltd" +C853E1 o="Douyin Vision Co., Ltd" C85645 o="Intermas France" C85663 o="Sunflex Europe GmbH" +C861D0 o="SHEN ZHEN KTC TECHNOLOGY.,LTD." C8662C o="Beijing Haitai Fangyuan High Technology Co,.Ltd." +C8664B o="Aperion Technologies LLC" C86C1E o="Display Systems Ltd" +C86C9A o="SNUC System" C86CB6 o="Optcom Co., Ltd." +C870D4 o="IBO Technology Co,Ltd" +C8711F o="SUZHOU TESIEN TECHNOLOGY CO., LTD." C87248 o="Aplicom Oy" C87324 o="Sow Cheng Technology Co. Ltd." C8755B o="Quantify Technology Pty. Ltd." +C875DD o="LG Electronics NV" C87CBC o="Valink Co., Ltd." +C87CE2 o="Infrawaves" C87D77 o="Shenzhen Kingtech Communication Equipment Co.,Ltd" -C87EA1 o="TCL MOKA International Limited" C88314 o="Tempo Communications" C88439 o="Sunrise Technologies" C88447 o="Beautiful Enterprise Co., Ltd" +C8844E o="Flextronics International Kft" C88629 o="Shenzhen Duubee Intelligent Technologies Co.,LTD." C88722 o="Lumenpulse" C8873B o="Net Optics" C88A83 o="Dongguan HuaHong Electronics Co.,Ltd" C88B47 o="Nolangroup S.P.A con Socio Unico" +C88DD4 o="Markone technology Co., Ltd." +C89009 o="Budderfly Inc." C8903E o="Pakton Technologies" C89346 o="MXCHIP Company Limited" C89383 o="Embedded Automation, Inc." C894D2 o="Jiangsu Datang Electronic Products Co., Ltd" C89C13 o="Inspiremobile" +C89E61 o="Lyngsoe Systems LTd" C89F1D o="SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD" C89F42 o="VDII Innovation AB" C8A1B6 o="Shenzhen Longway Technologies Co., Ltd" C8A1BA o="Neul Ltd" C8A2CE o="Oasis Media Systems LLC" +C8A40D o="Cooler Master Technology Inc" C8A620 o="Nebula, Inc" C8A70A o="Verizon Business" C8A729 o="SYStronics Co., Ltd." +C8A913 o="Lontium Semiconductor Corporation" C8A9FC o="Goyoo Networks Inc." C8AA55 o="Hunan Comtom Electronic Incorporated Co.,Ltd" +C8AC35 o="PiLink Co., Ltd." +C8ADE7 o="Shenzhen Shengxi Industrial Co.,Ltd" C8AE9C o="Shanghai TYD Elecronic Technology Co. Ltd" C8AF40 o="marco Systemanalyse und Entwicklung GmbH" +C8AFF0 o="CDVI Wireless SpA" C8B1EE o="Qorvo" +C8B4AB o="Inspur Computer Technology Co.,Ltd." C8BAE9 o="QDIS" C8BBD3 o="Embrane" C8BCE5 o="Sense Things Japan INC." C8C126 o="ZPM Industria e Comercio Ltda" C8C13C o="RuggedTek Hangzhou Co., Ltd" C8C2C6 o="Shanghai Airm2m Communication Technology Co., Ltd" +C8C432 o="SG Armaturen AS" C8C50E o="Shenzhen Primestone Network Technologies.Co., Ltd." C8C791 o="Zero1.tv GmbH" C8D019 o="Shanghai Tigercel Communication Technology Co.,Ltd" @@ -16595,10 +18159,14 @@ C8E130 o="Milkyway Group Ltd" C8E1A7 o="Vertu Corporation Limited" C8E42F o="Technical Research Design and Development" C8E776 o="PTCOM Technology" +C8EDFC o="Shenzhen Ideaform Industrial Product Design Co., Ltd" C8EE08 o="TANGTOP TECHNOLOGY CO.,LTD" C8EE75 o="Pishion International Co. Ltd" C8EEA6 o="Shenzhen SHX Technology Co., Ltd" +C8EED7 o="Lightspeed Technologies Inc." C8EF2E o="Beijing Gefei Tech. Co., Ltd" +C8EFBC o="Inspur Communication Technology Co.,Ltd." +C8F2B4 o="Guizhou Huaxin Information Technology Co., Ltd." C8F36B o="Yamato Scale Co.,Ltd." C8F386 o="Shenzhen Xiaoniao Technology Co.,Ltd" C8F68D o="S.E.TECHNOLOGIES LIMITED" @@ -16608,12 +18176,14 @@ C8F981 o="Seneca s.r.l." C8F9C8 o="NewSharp Technology(SuZhou)Co,Ltd" C8FA84 o="Trusonus corp." C8FAE1 o="ARQ Digital LLC" +C8FB54 o="iMin Technology Pte. Ltd." C8FE30 o="Bejing DAYO Mobile Communication Technology Ltd." -C8FF77 o="Dyson Limited" CC0080 o="BETTINI SRL" +CC0388 o="MangoBoost Inc" CC047C o="G-WAY Microwave" CC09C8 o="IMAQLIQ LTD" CC0CDA o="Miljovakt AS" +CC0DE7 o="B METERS S.R.L." CC10A3 o="Beijing Nan Bao Technology Co., Ltd." CC14A6 o="Yichun MyEnergy Domain, Inc" CC187B o="Manzanita Systems, Inc." @@ -16623,15 +18193,18 @@ CC1FC4 o="InVue" CC2218 o="InnoDigital Co., Ltd." CC262D o="Verifi, LLC" CC2A80 o="Micro-Biz intelligence solutions Co.,Ltd" +CC2AAC o="Yunjing lntelligent Technology(Dongguan).,Ltd" CC2C83 o="DarkMatter L.L.C" CC3080 o="VAIO Corporation" +CC312A o="HUIZHOU TCL COMMUNICATION ELECTRON CO.,LTD" CC34D7 o="GEWISS S.P.A." CC355A o="SecuGen Corporation" CC398C o="Shiningtek" +CC3ADF o="Neptune Technology Group Inc." CC3B3E o="Lester Electrical" CC3B58 o="Curiouser Products Inc" CC3C3F o="SA.S.S. Datentechnik AG" -CC3F1D o="Intesis Software SL" +CC3F1D o="HMS Industrial Networks SLU" CC3FEA o="BAE Systems, Inc" CC418E o="MSA Innovation" CC43E3 o="Trump s.a." @@ -16641,6 +18214,7 @@ CC47BD o="Rhombus Systems" CC4AE1 o="fourtec -Fourier Technologies" CC4BFB o="Hellberg Safety AB" CC4D38 o="Carnegie Technologies" +CC4D74 o="Fujian Newland Payment Technology Co., Ltd." CC501C o="KVH Industries, Inc." CC5076 o="Ocom Communications, Inc." CC5289 o="SHENZHEN OPTFOCUS TECHNOLOGY.,LTD" @@ -16651,10 +18225,12 @@ CC5D57 o="Information System Research Institute,Inc." CC5D78 o="JTD Consulting" CC5FBF o="Topwise 3G Communication Co., Ltd." CC60BB o="Empower RF Systems" +CC67D8 o="Telin Semiconductor (Wuhan) Co.,Ltd" CC69B0 o="Global Traffic Technologies, LLC" CC6B98 o="Minetec Wireless Technologies" CC6BF1 o="Sound Masking Inc." CC6DEF o="TJK Tietolaite Oy" +CC7190 o="VIETNAM POST AND TELECOMMUNICATION INDUSTRY TECHNOLOGY JOINT STOCK COMPANY" CC720F o="Viscount Systems Inc." CC7286 o="Xi'an Fengyu Information Technology Co., Ltd." CC7314 o="HONG KONG WHEATEK TECHNOLOGY LIMITED" @@ -16685,58 +18261,80 @@ CCBD35 o="Steinel GmbH" CCBDD3 o="Ultimaker B.V." CCBE71 o="OptiLogix BV" CCC104 o="Applied Technical Systems" +CCC4B2 o="Shenzhen Trolink Technology Co.,LTD" CCC50A o="SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD" CCC5EF o="Co-Comm Servicios Telecomunicaciones S.L." CCC62B o="Tri-Systems Corporation" CCC8D7 o="CIAS Elettronica srl" CCC92C o="Schindler - PORT Technology" CCCC4E o="Sun Fountainhead USA. Corp" +CCCC77 o="Zaram Technology. Inc." CCCD64 o="SM-Electronic GmbH" CCCE40 o="Janteq Corp" +CCCFFE o="Henan Lingyunda Information Technology Co., Ltd" CCD29B o="Shenzhen Bopengfa Elec&Technology CO.,Ltd" CCD811 o="Aiconn Technology Corporation" -CCD81F o="Maipu Communication Technology Co.,Ltd." CCD9E9 o="SCR Engineers Ltd." +CCDB04 o="DataRemote Inc." CCDC55 o="Dragonchip Limited" CCE0C3 o="EXTEN Technologies, Inc." +CCE236 o="Hangzhou Yaguan Technology Co. LTD" CCE798 o="My Social Stuff" CCE7DF o="American Magnetics, Inc." CCE8AC o="SOYEA Technology Co.,Ltd." CCEA1C o="DCONWORKS Co., Ltd" +CCEA27,FCB97E o="GE Appliances" +CCEB18 o="OOO %TSS%" +CCECB7 o="ShenZhen Linked-Z Intelligent Display Co., Ltd" CCEED9 o="VAHLE Automation GmbH" CCEF03 o="Hunan Keyshare Communication Technology Co., Ltd." +CCF305 o="SHENZHEN TIAN XING CHUANG ZHAN ELECTRONIC CO.,LTD" CCF3A5 o="Chi Mei Communication Systems, Inc" CCF407 o="EUKREA ELECTROMATIQUE SARL" CCF538 o="3isysnetworks" +CCF55F o="E FOCUS INSTRUMENTS INDIA PRIVATE LIMITED" CCF67A o="Ayecka Communication Systems LTD" CCF841 o="Lumewave" CCF8F0 o="Xi'an HISU Multimedia Technology Co.,Ltd." CCFC6D o="RIZ TRANSMITTERS" CCFCB1 o="Wireless Technology, Inc." +D0066A o="Cornelis Networks, Inc." D00EA4 o="Porsche Cars North America" D00F6D o="T&W Electronics Company" D01242 o="BIOS Corporation" D0131E o="Sunrex Technology Corp" +D017B7 o="Atios AG" D01AA7 o="UniPrint" +D01BBE o="Onward Brands" D01CBB o="Beijing Ctimes Digital Technology Co., Ltd." +D021AC o="Yohana" D02C45 o="littleBits Electronics, Inc." D03110 o="Ingenic Semiconductor Co.,Ltd" +D03BF4 o="Shenzhen Kean Digital Co.,Ltd" D03D52 o="Ava Security Limited" D03DC3 o="AQ Corporation" +D040BE o="NPO RPS LLC" +D04433 o="Clourney Semiconductor" D046DC o="Southwest Research Institute" +D047C1 o="Elma Electronic AG" D048F3 o="DATTUS Inc" D0498B o="ZOOM SERVER" D04CC1 o="SINTRONES Technology Corp." +D04FAB o="Yoqu Technology (Shenzhen) Co., Ltd." D05157 o="LEAX Arkivator Telecom" D052A8 o="Physical Graph Corporation" +D05475 o="SAVI Controls" +D056BF o="AMOSENSE" D057A1 o="Werma Signaltechnik GmbH & Co. KG" D05875 o="Active Control Technology Inc." +D058AB o="Mara Tech LLC" D058C0 o="Qingdao Haier Multimedia Limited." D059C3 o="CeraMicro Technology Corporation" D05A0F o="I-BT DIGITAL CO.,LTD" D05AF1 o="Shenzhen Pulier Tech CO.,Ltd" D05C7A o="Sartura d.o.o." D05FCE o="Hitachi Data Systems" +D0622C o="Xi'an Yipu Telecom Technology Co.,Ltd." D062A0 o="China Essence Technology (Zhumadian) Co., Ltd." D0634D o="Meiko Maschinenbau GmbH & Co. KG" D063B4 o="SolidRun Ltd." @@ -16744,29 +18342,35 @@ D0666D o="Shenzhen Bus-Lan Technology Co., Ltd." D0699E o="LUMINEX Lighting Control Equipment" D069D0 o="Verto Medical Solutions, LLC" D06A1F o="BSE CO.,LTD." +D06C37 o="ikeja wireless (pty) ltd" D06F4A o="TOPWELL INTERNATIONAL HOLDINGS LIMITED" D0737F o="Mini-Circuits" D0738E o="DONG OH PRECISION CO., LTD." D073D5 o="LIFI LABS MANAGEMENT PTY LTD" D075BE o="Reno A&E" +D07B6F o="Zhuhai Yunmai Technology Co.,Ltd" D07C2D o="Leie IOT technology Co., Ltd" D07DE5 o="Forward Pay Systems, Inc." D07FC4 o="Ou Wei Technology Co.,Ltd. of Shenzhen City" D083D4 o="Xtel Wireless ApS" +D087B5 o="SAFEMO PTE. LTD." D08999 o="APCON, Inc." D08B7E o="Passif Semiconductor" D08CFF o="UPWIS AB" +D09200 o="FiRa Consortium" +D09288 o="Powertek Limited" D09380 o="Ducere Technologies Pvt. Ltd." D093F8 o="Stonestreet One LLC" +D098B1 o="GScoolink Microelectronics (Beijing) Co.,LTD" D09B05 o="Emtronix" D09C30 o="Foster Electric Company, Limited" D09D0A o="LINKCOM" -D0A0D6 o="Chengdu TD Tech Ltd." D0A311 o="Neuberger Gebäudeautomation GmbH" D0A4B1 o="Sonifex Ltd." D0AFB6 o="Linktop Technology Co., LTD" D0B0CD o="Moen" D0B214 o="PoeWit Inc" +D0B270 o="Visteon Portuguesa, Ltd" D0B498 o="Robert Bosch LLC Automotive Electronics" D0B523 o="Bestcare Cloucal Corp." D0B53D o="SEPRO ROBOTIQUE" @@ -16774,58 +18378,75 @@ D0B60A o="Xingluo Technology Company Limited" D0BB80 o="SHL Telemedicine International Ltd." D0BD01 o="DS International" D0BE2C o="CNSLink Co., Ltd." -D0C0BF o="Actions Microelectronics Co., Ltd" D0C193 o="SKYBELL, INC" +D0C31E o="JUNGJIN Electronics Co.,Ltd" +D0C35A o="Jabil Circuit de Chihuahua" D0C42F o="Tamagawa Seiki Co.,Ltd." D0C5D8 o="LATECOERE" +D0C901 o="GLA ELECTRONICS PVT LTD" D0CDE1 o="Scientech Electronics" +D0CEC9 o="HAN CHANG" D0CF5E o="Energy Micro AS" +D0CFD8 o="Huizhou Boshijie Technology Co.,Ltd" D0D212 o="K2NET Co.,Ltd." D0D286 o="Beckman Coulter K.K." D0D3FC o="Mios, Ltd." D0D471 o="MVTECH co., Ltd" D0D6CC o="Wintop" +D0DBB7,F02E51 o="Casa Systems" D0DFB2 o="Genie Networks Limited" D0E347 o="Yoga" D0E40B o="Wearable Inc." +D0E828 o="Radiant Industries Incorporated" D0EB03 o="Zhehua technology limited" D0EB9E o="Seowoo Inc." -D0F27F o="SteadyServ Technoligies, LLC" +D0EDFF o="ZF CVCS" +D0F121 o="Xi'an LINKSCI Technology Co., Ltd" +D0F27F o="BrewLogix, LLC" D0F73B o="Helmut Mauell GmbH Werk Weida" +D0F8E7 o="Shenzhen Shutong Space Technology Co., Ltd" D0FA1D o="Qihoo 360 Technology Co.,Ltd" D4000D o="Phoenix Broadband Technologies, LLC." D40057 o="MC Technologies GmbH" +D400CA o="AUMOVIO Systems Romania S.R.L." D4024A o="Delphian Systems LLC" +D40868 o="Beijing Lanxum Computer Technology CO.,LTD." +D40A9E o="GO development GmbH" D40BB9 o="Solid Semecs bv." +D40E60 o="Nanjing phx-gctech Information Technology Co., Ltd" D40FB2 o="Applied Micro Electronics AME bv" D41090 o="iNFORM Systems AG" D410CF o="Huanshun Network Science and Technology Co., Ltd." D411D6 o="ShotSpotter, Inc." D41296 o="Anobit Technologies Ltd." D412BB o="Quadrant Components Inc. Ltd" +D41368,D4ADFC o="Shenzhen Intellirocks Tech. Co. Ltd." D4136F o="Asia Pacific Brands" D41AC8 o="Nippon Printer Engineering" D41C1C o="RCF S.P.A." D41E35,F0B022 o="TOHO Electronics INC." -D422CD o="Xsens Technologies B.V." +D422CD o="Movella Technologies B.V." D42493 o="GW Technologies Co.,Ltd" D42751 o="Infopia Co., Ltd" D428B2 o="ioBridge, Inc." D429EA o="Zimory GmbH" D42C3D o="Sky Light Digital Limited" -D42DC5 o="Panasonic i-PRO Sensing Solutions Co., Ltd." +D42DC5 o="i-PRO Co., Ltd." D42F23 o="Akenori PTE Ltd" D4319D o="Sinwatec" D43266 o="Fike Corporation" D436DB o="Jiangsu Toppower Automotive Electronics Co., Ltd" D43A65 o="IGRS Engineering Lab Ltd." D43AE9 o="DONGGUAN ipt INDUSTRIAL CO., LTD" +D43B8A o="Shenzhen Zhide technology Co., LTD" D43D39 o="Dialog Semiconductor" D43D67 o="Carma Industries Inc." D43D7E o="Micro-Star Int'l Co, Ltd" D440D0 o="OCOSMOS Co., LTD" +D4413F o="Gen IV Technology LLC" D443A8 o="Changzhou Haojie Electric Co., Ltd." D445E8 o="Jiangxi Hongpai Technology Co., Ltd." +D4475A o="ScreenBeam, Inc." D4482D o="Shenzhen Deejoy Lighting Technology Co.,Ltd." D44B5E o="TAIYO YUDEN CO., LTD." D44C24 o="Vuppalamritha Magnetic Components LTD" @@ -16837,51 +18458,68 @@ D4507A o="CEIVA Logic, Inc" D4522A o="TangoWiFi.com" D45251 o="IBT Ingenieurbureau Broennimann Thun" D45297 o="nSTREAMS Technologies, Inc." +D452C7 o="Beijing L&S Lancom Platform Tech. Co., Ltd." +D45347 o="Merytronic 2012, S.L." D453AF o="VIGO System S.A." D45556 o="Fiber Mountain Inc." D45AB2 o="Galleon Systems" D46132 o="Pro Concept Manufacturer Co.,Ltd." +D46352 o="Vutility Inc." D464F7 o="CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD" D466A8 o="Riedo Networks Ltd" D46761 o="XonTel Technology Co." D46867 o="Neoventus Design Group" D469A5 o="Miura Systems Ltd." +D46C62 o="MultiTracks.com, LLC" D46CBF o="Goodrich ISR" D46CDA o="CSM GmbH" D46F42 o="WAXESS USA Inc" D47208 o="Bragi GmbH" +D47350 o="DBG Commnunications Technology Co., Ltd." D4741B o="Beijing HuaDa ZhiBao Electronic System Co.,Ltd." D4772B o="Nanjing Ztlink Network Technology Co.,Ltd" D477B2 o="Netix Global B.V." D479C3 o="Cameronet GmbH & Co. KG" D47B35 o="NEO Monitors AS" +D47B6B o="Shanghai Cygnus Semiconductor Co., Ltd." +D47F78 o="Dopple B.V." D481CA o="iDevices, LLC" D4823E o="Argosy Technologies, Ltd." D4883F o="HDPRO CO., LTD." D48DD9 o="Meld Technology, Inc" D48FAA o="Sogecam Industrial, S.A." D491AF o="Electroacustica General Iberica, S.A." +D492B9 o="ORION NOVA, S.L." D493A0 o="Fidelix Oy" D4945A o="COSMO CO., LTD" D496DF o="SUNGJIN C&T CO.,LTD" D49B5C o="Chongqing Miedu Technology Co., Ltd." +D49B74 o="Kinetic Technologies" D49C28 o="JayBird LLC" +D49C53 o="NETCRAZE LLC" D49C8E o="University of FUKUI" +D49D9D o="Shenzhen Goodocom lnformation Technology Co.,Ltd." D49E6D o="Wuhan Zhongyuan Huadian Science & Technology Co.," +D4A38B o="ELE(GROUP)CO.,LTD" D4A425 o="SMAX Technology Co., Ltd." D4A499 o="InView Technology Corporation" +D4A5B4 o="Hengji Jiaye (Hangzhou) Technology Co., Ltd" +D4A7EA o="Solar76" D4A928 o="GreenWave Reality Inc" D4AAFF o="MICRO WORLD" D4AC4E o="BODi rS, LLC" +D4AD20 o="Jinan USR IOT Technology Limited" D4B43E o="Messcomp Datentechnik GmbH" +D4B680 o="Shanghai Linkyum Microeletronics Co.,Ltd" D4BD1E o="5VT Technologies,Taiwan LTd." D4BF2D o="SE Controls Asia Pacific Ltd" D4BF7F o="UPVEL" +D4C1A8 o="KYKXCOM Co., Ltd." +D4C3B0 o="Gearlinx Pty Ltd" D4C766 o="Acentic GmbH" -D4C9B2 o="Quanergy Systems Inc" +D4C9B2 o="Quanergy Solutions Inc" D4CEB8 o="Enatel LTD" D4CF37 o="Symbolic IO" -D4CFF9 o="Shenzhen SEI Robotics Co.,Ltd" D4D249 o="Power Ethernet" D4D2E5 o="BKAV Corporation" D4D50D o="Southwest Microwave, Inc" @@ -16890,26 +18528,35 @@ D4D898 o="Korea CNO Tech Co., Ltd" D4DF57 o="Alpinion Medical Systems" D4E08E o="ValueHD Corporation" D4E32C o="S. Siedle & Sohne" +D4E5C9 o="Senao Networks Inc." D4E90B o="CVT CO.,LTD" D4EC0C o="Harley-Davidson Motor Company" D4EC86 o="LinkedHope Intelligent Technologies Co., Ltd" D4EE07 o="HIWIFI Co., Ltd." D4F027 o="Trust Power Ltd." D4F0B4 o="Napco Security Technologies" +D4F0C9 o="KYOCERA Document Solutions Inc." D4F143 o="IPROAD.,Inc" D4F207 o="DIAODIAO(Beijing)Technology CO.,Ltd" D4F337 o="Xunison Ltd." D4F63F o="IEA S.R.L." +D80093 o="Aurender Inc." +D801EB o="Infinity Electronics Ltd" D8052E o="Skyviia Corporation" D806D1 o="Honeywell Fire System (Shanghai) Co,. Ltd." D808F5 o="Arcadia Networks Co. Ltd." +D8094E o="Active Brains" D809C3 o="Cercacor Labs" +D809D6 o="ZEXELON CO., LTD." D80CCF o="C.G.V. S.A.S." D80DE3 o="FXI TECHNOLOGIES AS" +D80FB5 o="SHENZHEN ULTRAEASY TECHNOLOGY CO LTD" +D810CB o="Andrea Informatique" D814D6 o="SURE SYSTEM Co Ltd" D8160A o="Nippon Electro-Sensory Devices" D816C1 o="DEWAV (HK) ELECTRONICS LIMITED" D8182B o="Conti Temic Microelectronic GmbH" +D81909 o="Wiwynn Technology Service Malaysia" D8197A o="Nuheara Ltd" D819CE o="Telesquare" D81BFE o="TWINLINX CORPORATION" @@ -16917,20 +18564,28 @@ D81C14 o="Compacta International, Ltd." D81EDE o="B&W Group Ltd" D8209F o="Cubro Acronet GesmbH" D822F4 o="Avnet Silica" +D824EC o="Plenom A/S" D825B0 o="Rockeetech Systems Co.,Ltd." +D825DF o="CAME UK" D826B9 o="Guangdong Coagent Electronics S&T Co.,Ltd." +D826FA o="Jiangxi Zhentian Technology CO.,LTD" D8270C o="MaxTronic International Co., Ltd." D828C9 o="General Electric Consumer and Industrial" D82916 o="Ascent Communication Technology" D82986 o="Best Wish Technology LTD" D82A15 o="Leitner SpA" +D82D40 o="Janz - Contagem e Gestão de Fluídos S.A." D82D9B o="Shenzhen G.Credit Communication Technology Co., Ltd" D82DE1 o="Tricascade Inc." D8337F o="Office FA.com Co.,Ltd." -D834EE o="Stem Audio" +D834D1 o="Shenzhen Orange Digital Technology Co.,Ltd" D8380D o="SHENZHEN IP-COM Network Co.,Ltd" D83AF5 o="Wideband Labs LLC" +D83D3F o="JOYNED GmbH" +D83DCC o="shenzhen UDD Technologies,co.,Ltd" D842E2 o="Canary Connect, Inc." +D842F7,FC3FFC o="Tozed Kangwei Tech Co.,Ltd" +D843EA o="SY Electronics Ltd" D843ED o="Suzuken" D8445C o="DEV Tecnologia Ind Com Man Eq LTDA" D84606 o="Silicon Valley Global Marketing" @@ -16938,46 +18593,60 @@ D848EE o="Hangzhou Xueji Technology Co., Ltd." D84B2A o="Cognitas Technologies, Inc." D84F37 o="Proxis, spol. s r.o." D84FB8 o="LG ELECTRONICS" +D850A1 o="Hunan Danuo Technology Co.,LTD" +D853BC o="Lenovo Information Products (Shenzhen)Co.,Ltd" +D85482 o="Oxit, LLC" +D858C6 o="Katch Asset Tracking Pty Limited" D858D7 o="CZ.NIC, z.s.p.o." +D85A49 o="INGCHIPS Technology Co., Ltd" +D85B22 o="Shenzhen Hohunet Technology Co., Ltd" D85D84 o="CAx soft GmbH" D85DEF o="Busch-Jaeger Elektro GmbH" D860B0 o="bioMérieux Italia S.p.A." D860B3 o="Guangdong Global Electronic Technology CO.,LTD" D86194 o="Objetivos y Sevicios de Valor Añadido" D862DB o="Eno Inc." +D8638C o="Shenzhen Dttek Technology Co., Ltd." D86595 o="Toy's Myth Inc." D866C6 o="Shenzhen Daystar Technology Co.,ltd" D866EE o="BOXIN COMMUNICATION CO.,LTD." D86960 o="Steinsvik" D86C02 o="Huaqin Telecom Technology Co.,Ltd" +D86DD0 o="InnoCare Optoelectronics" D8760A o="Escort, Inc." D878E5 o="KUHN SA" D87CDD o="SANIX INCORPORATED" +D87D45 o="Nicent Technology Co., Ltd." +D87E6F o="CASCINATION AG" D87EB1 o="x.o.ware, inc." D8803C o="Anhui Huami Information Technology Company Limited" D881CE o="AHN INC." +D88332 o="TaiXin Semiconductor Co., Ltd" D887D5 o="Leadcore Technology CO.,LTD" D888CE o="RF Technology Pty Ltd" D88A3B o="UNIT-EM" D88B4C o="KingTing Tech." D88DC8 o="Atil Technology Co., LTD" +D8911D o="Jiangsu Yuwell POCTech Biotechnology Co.,Ltd" D89136 o="Dover Fueling Solutions" D89341 o="General Electric Global Research" +D89563 o="Taiwan Digital Streaming Co." D89760 o="C2 Development, Inc." D8977C o="Grey Innovation" D89790 o="Commonwealth Scientific and Industrial Research Organisation" D89A34 o="Beijing SHENQI Technology Co., Ltd." +D89C8E,F0463B,F061F3 o="Comcast Cable Corporation" D89DB9 o="eMegatech International Corp." D8A105 o="Syslane, Co., Ltd." D8A534 o="Spectronix Corporation" -D8A6FD o="Ghost Locomotion" +D8A6FD o="Ghost Autonomy Inc." D8ADDD o="Sonavation, Inc." -D8AE90 o="Itibia Technologies" D8AED0 o="Shanghai Engineering Science & Technology Co.,LTD CGNPC" D8AF3B o="Hangzhou Bigbright Integrated communications system Co.,Ltd" -D8AF81,DCE305 o="ZAO %NPK Rotek%" D8B02E o="Guangzhou Zonerich Business Machine Co., LTD." D8B04C o="Jinan USR IOT Technology Co., Ltd." +D8B061 o="SHENZHEN WENXUN TECHNOLOGY CO.,LTD" +D8B293 o="TOPSSD" D8B6C1 o="NetworkAccountant, Inc." D8B6D6 o="Blu Tether Limited" D8B8F6 o="Nantworks" @@ -16989,8 +18658,10 @@ D8C06A o="Hunantv.com Interactive Entertainment Media Co.,Ltd." D8C3FB o="DETRACOM" D8C561 o="CommFront Communications Pte Ltd" D8C691 o="Hichan Technology Corp." +D8C6F9 o="Tracklab Inc" D8C99D o="EA DISPLAY LIMITED" D8CA06 o="Titan DataCenters France" +D8CD2C o="WUXI NEIHUA NETWORK TECHNOLOGY CO., LTD" D8CF89 o="Beijing DoSee Science and Technology Co., Ltd." D8D27C o="JEMA ENERGY, SA" D8D4E6 o="Hytec Inter Co., Ltd." @@ -17020,10 +18691,12 @@ D8FB11 o="AXACORE" D8FB68 o="Cloud Corner Ltd." D8FC38 o="Giantec Semiconductor Inc" D8FE8F o="IDFone Co., Ltd." +D8FFC3 o="Shenzhen 3SNIC information technology company Limited" DC0265 o="Meditech Kft" DC052F o="National Products Inc." DC0575 o="SIEMENS ENERGY AUTOMATION" DC05ED o="Nabtesco Corporation" +DC0682 o="Accessia Technology Ltd." DC07C1 o="HangZhou QiYang Technology Co.,Ltd." DC0D30 o="Shenzhen Feasycom Technology Co., Ltd." DC15DB o="Ge Ruili Intelligent Technology ( Beijing ) Co., Ltd." @@ -17036,6 +18709,7 @@ DC1DD4 o="Microstep-MIS spol. s r.o." DC1EA3 o="Accensus LLC" DC2008 o="ASD Electronics Ltd" DC21B9 o="Sentec Co.Ltd" +DC226F o="HangZhou Nano IC Technologies Co., Ltd" DC2834 o="HAKKO Corporation" DC2919 o="AltoBeam (Xiamen) Technology Ltd, Co." DC293A o="Shenzhen Nuoshi Technology Co., LTD." @@ -17045,6 +18719,7 @@ DC2B66 o="InfoBLOCK S.A. de C.V." DC2BCA o="Zera GmbH" DC2C26 o="Iton Technology Limited" DC2DCB o="Beijing Unis HengYue Technology Co., Ltd." +DC2DDE o="Ledworks SRL" DC2E6A o="HCT. Co., Ltd." DC2F03 o="Step forward Group Co., Ltd." DC309C o="Heyrex Limited" @@ -17055,42 +18730,61 @@ DC3C84 o="Ticom Geomatics, Inc." DC3CF6 o="Atomic Rules LLC" DC3E51 o="Solberg & Andersen AS" DC41E5 o="Shenzhen Zhixin Data Service Co., Ltd." -DC446D o="Allwinner Technology Co., Ltd" +DC44B1 o="Hilti Corporation" DC48B2 o="Baraja Pty. Ltd." +DC4965,F42756 o="DASAN Newtork Solutions" DC49C9 o="CASCO SIGNAL LTD" DC4EDE o="SHINYEI TECHNOLOGY CO., LTD." DC4EF4 o="Shenzhen MTN Electronics CO., Ltd" DC503A o="Nanjing Ticom Tech Co., Ltd." +DC54AD o="Hangzhou RunZhou Fiber Technologies Co.,Ltd" DC56E6 o="Shenzhen Bococom Technology Co.,LTD" DC5726 o="Power-One" +DC575C o="PR Electronics A/S" DC58BC o="Thomas-Krenn.AG" DC5E36 o="Paterson Technology" DC60A1 o="Teledyne DALSA Professional Imaging" +DC6294 o="Guangzhou Lango Electronics Technology Co.,Ltd." +DC6373 o="OBARA KOREA" DC647C o="C.R.S. iiMotion GmbH" DC663A o="Apacer Technology Inc." DC6723 o="barox Kommunikation GmbH" DC6B12 o="worldcns inc." DC6F00 o="Livescribe, Inc." DC6F08 o="Bay Storage Technology" +DC7035 o="Shengzhen Gongjin Electronics" +DC71DD o="AX Technologies" +DC7306 o="Vantiva Connected Home - Home Networks" +DC74CE o="ITOCHU Techno-Solutions Corporation" DC7834 o="LOGICOM SA" DC825B o="JANUS, spol. s r.o." DC82F6 o="iPort" +DC87CB o="Beijing Perfectek Technologies Co., Ltd." +DC9020 o="RURU TEK PRIVATE LIMITED" DC962C o="NST Audio Ltd" +DC973A o="Verana Networks" +DC99FE o="Armatura LLC" DC9A8E o="Nanjing Cocomm electronics co., LTD" DC9B1E o="Intercom, Inc." DC9C52 o="Sapphire Technology Limited." +DCA313 o="Shenzhen Changjin Communication Technology Co.,Ltd" DCA3A2 o="Feng mi(Beijing)technology co., LTD" DCA3AC o="RBcloudtech" -DCA632,E45F01 o="Raspberry Pi Trading Ltd" DCA6BD o="Beijing Lanbo Technology Co., Ltd." DCA7D9 o="Compressor Controls Corp" DCA8CF o="New Spin Golf, LLC." DCA989 o="MACANDC" +DCAA43 o="Shenzhen Terca Information Technology Co., Ltd." +DCAC6F o="Everytale Inc" DCAD9E o="GreenPriz" DCAE04 o="CELOXICA Ltd" DCB058 o="Bürkert Werke GmbH" +DCB131 o="SHENZHEN HUARUIAN TECHNOLOGY CO.,LTD" DCB3B4 o="Honeywell Environmental & Combustion Controls (Tianjin) Co., Ltd." DCB4C4 o="Microsoft XCG" +DCB4E8 o="Byos" +DCB7FC o="Alps Electric (Ireland) Ltd" +DCBB96 o="Full Solution Telecom" DCBE7A o="Zhejiang Nurotron Biotechnology Co." DCBF90 o="HUIZHOU QIAOXING TELECOMMUNICATION INDUSTRY CO.,LTD." DCC0DB o="Shenzhen Kaiboer Technology Co., Ltd." @@ -17100,10 +18794,12 @@ DCC422 o="Systembase Limited" DCC622 o="BUHEUNG SYSTEM" DCC8F5 o="Shanghai UMEinfo CO.,LTD." DCCBA8 o="Explora Technologies Inc" +DCCD74 o="Japan E.M.Solutions Co., Ltd." DCCE41 o="FE GLOBAL HONG KONG LIMITED" DCCEBC o="Shenzhen JSR Technology Co.,Ltd." DCCF94 o="Beijing Rongcheng Hutong Technology Co., Ltd." DCD0F7 o="Bentek Systems Ltd." +DCD160 o="Tianjin Changdatong Technology Co.,LTD" DCD52A o="Sunny Heart Limited" DCD87C o="Beijing Jingdong Century Trading Co., LTD." DCD87F o="Shenzhen JoinCyber Telecom Equipment Ltd" @@ -17122,23 +18818,31 @@ DCE71C o="AUG Elektronik GmbH" DCE838,E0C0D1 o="CK Telecom (Shenzhen) Limited" DCEB53 o="Wuhan QianXiao Elecronic Technology CO.,LTD" DCEC06 o="Heimi Network Technology Co., Ltd." +DCECE3 o="HORYS TECHNOLOGIES LLC" DCED84 o="Haverford Systems Inc" +DCEE14 o="ADT Technology" DCF05D o="Letta Teknoloji" DCF090 o="Nubia Technology Co.,Ltd." +DCF56E o="Wellysis Corp." DCF755 o="SITRONIK" DCF858 o="Lorent Networks, Inc." DCFAD5 o="STRONG Ges.m.b.H." +DCFBB8 o="Meizhou Guo Wei Electronics Co., Ltd" E002A5 o="ABB Robotics" E00370 o="ShenZhen Continental Wireless Technology Co., Ltd." +E0051C o="GigaDevice Semiconductor Inc." E009BF o="SHENZHEN TONG BO WEI TECHNOLOGY Co.,LTD" E00B28 o="Inovonics" E00DB9 o="Cree, Inc." E01283 o="Shenzhen Fanzhuo Communication Technology Co., Lt" +E01333 o="General Motors" E0143E o="Modoosis Inc." +E016B1 o="Advanced Design Technology co.,ltd." E019D8 o="BH TECHNOLOGIES" E01CEE o="Bravo Tech, Inc." E01E07 o="Anite Telecoms US. Inc" E01F0A o="Xslent Energy Technologies. LLC" +E021FE o="Richer Link Technologies CO.,LTD" E02538 o="Titan Pet Products" E02630 o="Intrigue Technologies, Inc." E0271A o="TTC Next-generation Home Network System WG" @@ -17155,9 +18859,13 @@ E03E7D o="data-complex GmbH" E043DB o="Shenzhen ViewAt Technology Co.,Ltd." E046E5 o="Gosuncn Technology Group Co., Ltd." E048AF o="Premietech Limited" +E048D8 o="Guangzhi Wulian Technology(Guangzhou) Co., Ltd" E049ED o="Audeze LLC" +E04B41 o="Hangzhou Beilian Low Carbon Technology Co., Ltd." E04B45 o="Hi-P Electronics Pte Ltd" +E04C05 o="EverCharge" E05597 o="Emergent Vision Technologies Inc." +E05694 o="Yunhight Microelectronics" E056F4 o="AxesNetwork Solutions inc." E0589E o="Laerdal Medical" E05B70 o="Innovid, Co., Ltd." @@ -17167,11 +18875,13 @@ E06089 o="Cloudleaf, Inc." E061B2 o="HANGZHOU ZENOINTEL TECHNOLOGY CO., LTD" E06290 o="Jinan Jovision Science & Technology Co., Ltd." E064BB o="DigiView S.r.l." -E067B3 o="Shenzhen C-Data Technology Co., Ltd" E0686D o="Raybased AB" E0693A o="Innophase Inc." E06CA6 o="Creotech Instruments S.A." +E06CF6 o="ESSENCORE limited" +E06D18 o="PIONEERCORPORATION" E0735F o="NUCOM" +E075AA o="Beijing Jingling Information System Technology Co., Ltd." E078A3 o="Shanghai Winner Information Technology Co.,Inc" E0795E o="Wuxi Xiaohu Technology Co.,Ltd." E079C4 o="iRay Technology Company Limited" @@ -17183,12 +18893,15 @@ E084F3 o="High Grade Controls Corporation" E087B1 o="Nata-Info Ltd." E08A7E o="Exponent" E08FEC o="REPOTEC CO., LTD." +E0913C o="Kyeungin CNS Co., Ltd." E09579 o="ORTHOsoft inc, d/b/a Zimmer CAS" E097F2 o="Atomax Inc." -E09DFA o="Wanan Hongsheng Electronic Co.Ltd" -E09F2A o="Iton Technology Corp." +E09C8D o="Seakeeper, Inc." E0A198 o="NOJA Power Switchgear Pty Ltd" +E0A258 o="Wanbang Digital Energy Co.,Ltd" +E0A25A o="Shanghai Mo xiang Network Technology CO.,ltd" E0A30F o="Pevco" +E0A498 o="SHENZHEN ORFA TECH CO.,LTD" E0A509 o="Bitmain Technologies Inc" E0A700 o="Verkada Inc" E0AAB0 o="SUNTAILI ENTERPRISE CO. LTD," @@ -17198,7 +18911,11 @@ E0AEB2 o="Bender GmbH & Co.KG" E0AEED o="LOENK" E0AF4F o="Deutsche Telekom AG" E0B260 o="TENO NETWORK TECHNOLOGIES COMPANY LIMITED" +E0B72E o="ShenZhen Qualmesh Technology Co.,Ltd." +E0B763 o="Bosch Automotive Products (Suzhou) Co., Ltd. Changzhou Branch" +E0B98A o="Shenzhen Taike industrial automation company,Ltd" E0BAB4 o="Arrcus, Inc" +E0BB0C o="Synertau LLC" E0BC43 o="C2 Microsystems, Inc." E0BE03 o="Lite-On Network Communication (Dongguan) Limited" E0C286 o="Aisai Communication Technology Co., Ltd." @@ -17211,43 +18928,53 @@ E0CF2D o="Gemintek Corporation" E0D10A o="Katoudenkikougyousyo co ltd" E0D1E6 o="Aliph dba Jawbone" E0D31A o="EQUES Technology Co., Limited" +E0D738 o="WireStar Networks" E0D9A2 o="Hippih aps" E0DADC o="JVC KENWOOD Corporation" E0DB88 o="Open Standard Digital-IF Interface for SATCOM Systems" -E0DCA0 o="Siemens Industrial Automation Products Ltd Chengdu" +E0E2D1 o="Beijing Netswift Technology Co.,Ltd." E0E631 o="SNB TECHNOLOGIES LIMITED" +E0E656 o="Nethesis srl" +E0E6E3 o="TeamF1 Networks Pvt Limited" E0E7BB o="Nureva, Inc." -E0E8E6 o="Shenzhen C-Data Technology Co., Ltd." +E0E8BB o="Unicom Vsens Telecommunications Co., Ltd." E0E8E8 o="Olive Telecommunication Pvt. Ltd" E0EB62 o="Shanghai Hulu Devices Co., Ltd" E0ED1A o="vastriver Technology Co., Ltd" E0EDC7 o="Shenzhen Friendcom Technology Development Co., Ltd" -E0EE1B,EC65CC o="Panasonic Automotive Systems Company of America" E0EF25 o="Lintes Technology Co., Ltd." E0F211 o="Digitalwatt" +E0F325 o="Elkor Technologies Inc." E0F379 o="Vaddio" E0F5CA o="CHENG UEI PRECISION INDUSTRY CO.,LTD." E0F9BE o="Cloudena Corp." E0FAEC o="Platan sp. z o.o. sp. k." E0FFF7 o="Softiron Inc." +E40177 o="SafeOwl, Inc." E40439 o="TomTom Software Ltd" -E405F8 o="Delta Innovation Technology Co., Ltd." -E41289 o="topsystem Systemhaus GmbH" +E405F8 o="Bytedance" +E41289 o="topsystem GmbH" E417D8 o="8BITDO TECHNOLOGY HK LIMITED" +E41A1D o="NOVEA ENERGIES" E41A2C o="ZPE Systems, Inc." E41C4B o="V2 TECHNOLOGY, INC." E41FE9 o="Dunkermotoren GmbH" +E42150 o="Shanghai Chint low voltage electrical technology Co.,Ltd." E42354 o="SHENZHEN FUZHI SOFTWARE TECHNOLOGY CO.,LTD" E425E9 o="Color-Chip" E42771 o="Smartlabs" +E42805 o="Pivotal Optics" +E428A4 o="Prama India Private Limited" +E4293D o="Shenzhen Sy-Fiber Optical Communication Technology.Co.,Ltd" E42AD3 o="Magneti Marelli S.p.A. Powertrain" E42C56 o="Lilee Systems, Ltd." E42F56 o="OptoMET GmbH" E42FF6 o="Unicore communication Inc." -E43022 o="Hanwha Techwin Security Vietnam" +E43022 o="Hanwha Vision VietNam" E43593 o="Hangzhou GoTo technology Co.Ltd" E435FB o="Sabre Technology (Hull) Ltd" E437D7 o="HENRI DEPAEPE S.A.S." +E43819 o="Shenzhen Hi-Link Electronic CO.,Ltd." E4388C o="Digital Products Limited" E438F2 o="Advantage Controls" E43A65 o="MofiNetwork Inc" @@ -17255,23 +18982,33 @@ E43A6E o="Shenzhen Zeroone Technology CO.,LTD" E43C80 o="University of Oklahoma" E43FA2 o="Wuxi DSP Technologies Inc." E441E6 o="Ottec Technology GmbH" +E446B0 o="Fujitsu Client Computing Limited" E446BD o="C&C TECHNIC TAIWAN CO., LTD." +E44791 o="Iris ID Systems, Inc." E44C6C o="Shenzhen Guo Wei Electronic Co,. Ltd." E44E18 o="Gardasoft VisionLimited" E44E76 o="CHAMPIONTECH ENTERPRISE (SHENZHEN) INC" E44F29 o="MA Lighting Technology GmbH" E44F5F o="EDS Elektronik Destek San.Tic.Ltd.Sti" E4509A o="HW Communications Ltd" +E451A9 o="Nanjing Xinlian Electronics Co., Ltd" E455EA o="Dedicated Computing" E45614 o="Suttle Apparatus" +E456CA o="Fractal BMS" E457A8 o="Stuart Manufacturing, Inc." E46059 o="Pingtek Co., Ltd." E46251 o="HAO CHENG GROUP LIMITED" +E46564 o="SHENZHEN KTC TECHNOLOGY CO.,LTD" +E46566 o="Maple IoT Solutions LLC" E4671E o="SHEN ZHEN NUO XIN CHENG TECHNOLOGY co., Ltd." E467BA o="Danish Interpretation Systems A/S" +E467DD o="ELA INNOVATION" E4695A o="Dictum Health, Inc." E46C21 o="messMa GmbH" +E46E8A o="BYD Lithium Battery Co., Ltd." E47185 o="Securifi Ltd" +E47305 o="Shenzhen INVT Electric CO.,Ltd" +E47450 o="Shenzhen Grandsun Electronic Co.,Ltd." E4751E o="Getinge Sterilization AB" E4776B o="AARTESYS AG" E477D4 o="Minrray Industry Co.,Ltd" @@ -17281,16 +19018,17 @@ E47D5A o="Beijing Hanbang Technology Corp." E47DEB o="Shanghai Notion Information Technology CO.,LTD." E481B3 o="Shenzhen ACT Industrial Co.,Ltd." E482CC o="Jumptronic GmbH" +E482FF o="Ecliptic Enterprises Corp" E4842B o="HANGZHOU SOFTEL OPTIC CO., LTD" E48501 o="Geberit International AG" E48AD5 o="RF WINDOW CO., LTD." E48C0F o="Discovery Insure" +E48F09 o="ithinx GmbH" E48F65 o="Yelatma Instrument Making Enterprise, JSC" E4922A o="DBG HOLDINGS LIMITED" E492E7 o="Gridlink Tech. Co.,Ltd." E496AE o="ALTOGRAPHICS Inc." E497F0 o="Shanghai VLC Technologies Ltd. Co." -E498BB o="Phyplus Microelectronics Limited" E4A32F o="Shanghai Artimen Technology Co., Ltd." E4A387 o="Control Solutions LLC" E4A5EF o="TRON LINK ELECTRONICS CO., LTD." @@ -17300,33 +19038,45 @@ E4AB46 o="UAB Selteka" E4AD7D o="SCL Elements" E4AFA1 o="HES-SO" E4B005 o="Beijing IQIYI Science & Technology Co., Ltd." +E4B633 o="Wuxi Stars Microsystem Technology Co., Ltd" +E4B731 o="Hangzhou Advance IOT Connectivity System Co., Ltd." E4BAD9 o="360 Fly Inc." +E4BC96 o="Versuni" +E4BD96 o="Chengdu Hurray Data Technology co., Ltd." E4C146 o="Objetivos y Servicios de Valor A" E4C1F1 o="SHENZHEN SPOTMAU INFORMATION TECHNOLIGY CO., Ltd" E4C62B o="Airware" E4C6E6 o="Mophie, LLC" E4C806 o="Ceiec Electric Technology Inc." +E4C90B o="Radwin" E4CB59 o="Beijing Loveair Science and Technology Co. Ltd." E4CE02 o="WyreStorm Technologies Ltd" +E4CE58 o="Anhui Realloong Automotive Electronics Co.,Ltd" E4CE70 o="Health & Life co., Ltd." -E4D3AA o="FUJITSU CONNECTED TECHNOLOGIES LIMITED" E4D71D o="Oraya Therapeutics" +E4DC5F o="Cofractal, Inc." E4DD79 o="En-Vision America, Inc." E4E409 o="LEIFHEIT AG" +E4E608 o="Kiwibit Inc." +E4E66C o="Tiandy Technologies Co.,LTD" E4EEFD o="MR&D Manufacturing" E4F327 o="ATOL LLC" E4F365 o="Time-O-Matic, Inc." E4F3E3 o="Shanghai iComhome Co.,Ltd." +E4F58E o="Schneider Electric USA" E4F7A1 o="Datafox GmbH" E4F939 o="Minxon Hotel Technology INC." E4FA1D o="PAD Peripheral Advanced Design Inc." E4FED9 o="EDMI Europe Ltd" E4FFDD o="ELECTRON INDIA" E80036 o="Befs co,. ltd" +E80115 o="COOCAA Network Technology CO.,TD." E804F3 o="Throughtek Co., Ltd." +E806EB o="ShieldSOS LLC" E80734 o="Champion Optical Network Engineering, LLC" E807BF o="SHENZHEN BOOMTECH INDUSTRY CO.,LTD" E80959 o="Guoguang Electric Co.,Ltd" +E80AEC o="Jiangsu Hengtong Optic-Electric Co., LTD" E80B13 o="Akib Systems Taiwan, INC" E80C38 o="DAEYOUNG INFORMATION SYSTEM CO., LTD" E80C75 o="Syncbak, Inc." @@ -17335,11 +19085,14 @@ E811CA o="SHANDONG KAER ELECTRIC.CO.,LTD" E81324 o="GuangZhou Bonsoninfo System CO.,LTD" E81363 o="Comstock RD, Inc." E81367 o="AIRSOUND Inc." +E81499 o="Yoqu Technology(Shenzhen)Co.,Ltd." E8162B o="IDEO Security Co., Ltd." -E817FC o="Fujitsu Cloud Technologies Limited" +E81711 o="Shenzhen Vipstech Co., Ltd" E81AAC o="ORFEO SOUNDWORKS Inc." E81B4B o="amnimo Inc." -E826B6 o="Inside Biometrics International Limited" +E81DEE o="i-TEK RFID" +E82587 o="Shenzhen Chilink IoT Technology Co., Ltd." +E826B6 o="Companies House to GlucoRx Technologies Ltd." E82877 o="TMY Co., Ltd." E828D5 o="Cots Technology" E82E0C o="NETINT Technologies Inc." @@ -17350,10 +19103,12 @@ E8361D o="Sense Labs, Inc." E83A97 o="Toshiba Corporation" E83EFB o="GEODESIC LTD." E8447E o="Bitdefender SRL" +E845EB o="Kohler Ventures, Inc." E8481F o="Advanced Automotive Antennas" E84943 o="YUGE Information technology Co. Ltd" E84C56 o="INTERCEPT SERVICES LIMITED" E84E06 o="EDUP INTERNATIONAL (HK) CO., LTD" +E84F4B o="Shenzhen Delos Electronic Co., Ltd" E8516E o="TSMART Inc." E8519D o="Yeonhab Precision Co.,LTD" E85484 o="NEO Information Systems Co., Ltd." @@ -17370,9 +19125,11 @@ E86183 o="Black Diamond Advanced Technology, LLC" E861BE o="Melec Inc." E866C4 o="Diamanti" E86CDA o="Supercomputers and Neurocomputers Research Center" +E86D16 o="Elmec Elettronica SRL" E86D54 o="Digit Mobile Inc" E86D65 o="AUDIO MOBIL Elektronik GmbH" -E86D6E o="voestalpine SIGNALING Fareham Ltd." +E86D6E o="voestalpine Signaling UK Ltd." +E86EAD o="Guangzhou Gizwits loT Technology Co.,Ltd" E8718D o="Elsys Equipamentos Eletronicos Ltda" E874C7 o="Sentinhealth" E8757F o="FIRS Technologies(Shenzhen) Co., Ltd" @@ -17383,27 +19140,36 @@ E887A3 o="Loxley Public Company Limited" E8886C o="Shenzhen SC Technologies Co.,LTD" E88E60 o="NSD Corporation" E89218 o="Arcontia International AB" +E893F3 o="Graphiant Inc" E8944C o="Cogent Healthcare Systems Ltd" +E89526 o="Luxshare Precision Industry CO., LTD." E89606 o="testo Instruments (Shenzhen) Co., Ltd." E898C2 o="ZETLAB Company" E8995A o="PiiGAB, Processinformation i Goteborg AB" -E89FEC o="CHENGDU KT ELECTRONIC HI-TECH CO.,LTD" +E89E0C o="MAX8USA DISTRIBUTORS INC." E8A364 o="Signal Path International / Peachtree Audio" E8A4C1 o="Deep Sea Electronics Ltd" -E8A788 o="XIAMEN LEELEN TECHNOLOGY CO., LTD" E8A7F2 o="sTraffic" E8ABFA o="Shenzhen Reecam Tech.Ltd." +E8AC7E o="TERAHOP PTE.LTD." +E8B3EE o="Pixelent Inc." E8B4AE o="Shenzhen C&D Electronics Co.,Ltd" +E8B722 o="GreenTrol Automation" +E8B723 o="Shenzhen Vatilon Electronics Co.,Ltd" +E8BAE2 o="Xplora Technologies AS" E8BB3D o="Sino Prime-Tech Limited" +E8BFDB o="Inodesign Group" E8C1B8 o="Nanjing Bangzhong Electronic Commerce Limited" +E8C1E8 o="Shenzhen Xiao Bi En Culture Education Technology Co.,Ltd." E8C229 o="H-Displays (MSC) Bhd" -E8C320 o="Austco Communication Systems Pty Ltd" -E8C57A o="Ufispace Co., LTD." +E8C320 o="Austco Marketing & Service (USA) ltd." E8CC32 o="Micronet LTD" +E8CC8C o="Chengdu Jiarui Hualian Communication Technology Co" E8CE06 o="SkyHawke Technologies, LLC." E8D0FA o="MKS Instruments Deutschland GmbH" E8D483 o="ULTIMATE Europe Transportation Equipment GmbH" E8D4E0 o="Beijing BenyWave Technology Co., Ltd." +E8DA00 o="Kivo Technology, Inc." E8DA96 o="Zhuhai Tianrui Electrical Power Tech. Co., Ltd." E8DAAA o="VideoHome Technology Corp." E8DE00 o="ChongQing GuanFang Technology Co.,LTD" @@ -17412,44 +19178,56 @@ E8DEFB o="MESOTIC SAS" E8DFF2 o="PRF Co., Ltd." E8E08F o="GRAVOTECH MARKING SAS" E8E1E2 o="Energotest" +E8E49D o="Nexthop Systems Inc." +E8E609 o="Chongqing Zhouhai intelligent technology CO., Ltd" E8E770 o="Warp9 Tech Design, Inc." E8E776 o="Shenzhen Kootion Technology Co., Ltd" E8E875 o="iS5 Communications Inc." E8E98E o="SOLAR controls s.r.o." E8EA6A o="StarTech.com" E8EADA o="Denkovi Assembly Electronics LTD" +E8EBDD o="Guangzhou Qingying Acoustics Technology Co., Ltd" E8ECA3 o="Dongguan Liesheng Electronic Co.Ltd" +E8EF05 o="MIND TECH INTERNATIONAL LIMITED" E8EF89 o="OPMEX Tech." +E8F0A4 o="Antonios A. Chariton" E8F226 o="MILLSON CUSTOM SOLUTIONS INC." E8F2E3 o="Starcor Beijing Co.,Limited" -E8F928 o="RFTECH SRL" +E8F928 o="ENGINKO SRL" E8FAF7 o="Guangdong Uniteddata Holding Group Co., Ltd." E8FC60 o="ELCOM Innovations Private Limited" E8FD72 o="SHANGHAI LINGUO TECHNOLOGY CO., LTD." E8FD90 o="Turbostor" E8FDE8 o="CeLa Link Corporation" EC0133 o="TRINUS SYSTEMS INC." -EC01E2 o="FOXCONN INTERCONNECT TECHNOLOGY" EC0441 o="ShenZhen TIGO Semiconductor Co., Ltd." +EC0482 o="STL Systems AG" EC0ED6 o="ITECH INSTRUMENTS SAS" EC1120 o="FloDesign Wind Turbine Corporation" EC13B2 o="Netonix" EC14F6 o="BioControl AS" +EC153D o="Beijing Yaxunhongda Technology Co., Ltd." EC1766 o="Research Centre Module" +EC1BCF o="Brain Technologies, Inc." EC219F o="VidaBox LLC" EC2257 o="JiangSu NanJing University Electronic Information Technology Co.,Ltd" EC2368 o="IntelliVoice Co.,Ltd." EC26FB o="TECC CO.,LTD." EC2AF0 o="Ypsomed AG" -EC2C49 o="University of Tokyo" +EC2C11 o="CWD INNOVATION LIMITED" +EC2C49 o="NakaoLab, The University of Tokyo" EC2E4E o="HITACHI-LG DATA STORAGE INC" +EC2F20 o="HYUNDAI WIA" +EC308E o="Lierda Science & Technology Group Co., Ltd" EC316D o="Hansgrohe" +EC3532 o="Tactrix Inc." EC363F o="Markov Corporation" EC3BF0 o="NovelSat" EC3C5A o="SHEN ZHEN HENG SHENG HUI DIGITAL TECHNOLOGY CO.,LTD" EC3C88 o="MCNEX Co.,Ltd." EC3E09 o="PERFORMANCE DESIGNED PRODUCTS, LLC" EC3F05 o="Institute 706, The Second Academy China Aerospace Science & Industry Corp" +EC41CA o="Shenzhen TecAnswer Technology co.,ltd" EC42B4 o="ADC Corporation" EC42F0 o="ADL Embedded Solutions, Inc." EC438B o="YAPTV" @@ -17470,16 +19248,23 @@ EC6264 o="Global411 Internet Services, LLC" EC63E5 o="ePBoard Design LLC" EC63ED o="Hyundai Autoever Corp." EC64E7 o="MOCACARE Corporation" +EC656E o="The Things Industries B.V." +EC6652 o="Info Fiber Solutions Pvt Ltd" EC66D1 o="B&W Group LTD" EC6C9F o="Chengdu Volans Technology CO.,LTD" +EC6E79 o="InHand Networks, INC." EC6F0B o="FADU, Inc." -EC71DB o="Shenzhen Baichuan Digital Technology Co., Ltd." +EC71DB o="Reolink Innovation Limited" +EC7359 o="Shenzhen Cloudsky Technologies Co., Ltd." +EC74D7 o="Grandstream Networks Inc" +EC75ED o="Citrix Systems, Inc." EC79F2 o="Startel" EC7C74 o="Justone Technologies Co., Ltd." EC7D9D o="CPI" EC7FC6 o="ECCEL CORPORATION SAS" EC8009 o="NovaSparks" EC836C o="RM Tech Co., Ltd." +EC83B7 o="PUWELL CLOUD TECH LIMITED" EC83D5 o="GIRD Systems Inc" EC8EAD o="DLX" EC8EAE o="Nagravision SA" @@ -17487,14 +19272,18 @@ EC9233 o="Eddyfi NDT Inc" EC9327 o="MEMMERT GmbH + Co. KG" EC9365 o="Mapper.ai, Inc." EC93ED o="DDoS-Guard LTD" +EC9468 o="META SYSTEM SPA" EC9681 o="2276427 Ontario Inc" EC97B2 o="SUMEC Machinery & Electric Co.,Ltd." EC986C o="Lufft Mess- und Regeltechnik GmbH" EC98C1 o="Beijing Risbo Network Technology Co.,Ltd" +EC9E68 o="Anhui Taoyun Technology Co., Ltd" +EC9EEA o="Xtra Technology LLC" ECA29B o="Kemppi Oy" ECA5DE o="ONYX WIFI Inc" ECAF97 o="GIT" ECB106 o="Acuro Networks, Inc" +ECB4E8 o="Wistron Mexico SA de CV" ECB541 o="SHINANO E and E Co.Ltd." ECB870 o="Beijing Heweinet Technology Co.,Ltd." ECB907 o="CloudGenix Inc" @@ -17502,7 +19291,6 @@ ECBAFE o="GIROPTIC" ECBBAE o="Digivoice Tecnologia em Eletronica Ltda" ECBD09 o="FUSION Electronics Ltd" ECC06A o="PowerChord Group Limited" -ECC38A o="Accuenergy (CANADA) Inc" ECC57F o="Suzhou Pairlink Network Technology" ECD00E o="MiraeRecognition Co., Ltd." ECD040 o="GEA Farm Technologies GmbH" @@ -17517,11 +19305,13 @@ ECE2FD o="SKG Electric Group(Thailand) Co., Ltd." ECE512 o="tado GmbH" ECE555 o="Hirschmann Automation" ECE744 o="Omntec mfg. inc" +ECE78E o="AsiaTelco Technologies Co." ECE90B o="SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH" ECE915 o="STI Ltd" ECE9F8 o="Guang Zhou TRI-SUN Electronics Technology Co., Ltd" ECEED8 o="ZTLX Network Technology Co.,Ltd" ECF236 o="NEOMONTANA ELECTRONICS" +ECF37A o="Forecr OU" ECF6BD o="SNCF MOBILITÉS" ECF72B o="HD DIGITAL TECH CO., LTD." ECFA03 o="FCA" @@ -17532,38 +19322,45 @@ ECFE7E o="BlueRadios, Inc." F0007F o="Janz - Contadores de Energia, SA" F0022B o="Chrontel" F00248 o="SmarteBuilding" +F00727 o="INTEREL BUILDING AUTOMATION" F00786 o="Shandong Bittel Electronics Co., Ltd" F00D5C o="JinQianMao Technology Co.,Ltd." F00DF5 o="ACOMA Medical Industry Co,. Ltd." F00EBF o="ZettaHash Inc." +F013C1 o="Hannto Technology Co., Ltd" F015A0 o="KyungDong One Co., Ltd." F015B9 o="PlayFusion Limited" F0182B o="LG Chem" F01E34 o="ORICO Technologies Co., Ltd" +F01EAC o="Rentokil Initial" F0224E o="Esan electronic co." F02329 o="SHOWA DENKI CO.,LTD." F02405 o="OPUS High Technology Corporation" F02408 o="Talaris (Sweden) AB" F02624 o="WAFA TECHNOLOGIES CO., LTD." F0264C o="Sigrist-Photometer AG" +F026F8 o="Worldcns Co.,Ltd." F02745 o="F-Secure Corporation" F02A23 o="Creative Next Design" F02A61 o="Waldo Networks, Inc." -F02E51 o="Casa Systems" F02FD8 o="Bi2-Vision" +F03012 o="AUMOVIO Autonomous Mobility Germany GmbH" F037A1 o="Huike Electronics (SHENZHEN) CO., LTD." F03A4B o="Bloombase, Inc." F03A55 o="Omega Elektronik AS" F03D29 o="Actility" F03EBF o="GOGORO TAIWAN LIMITED" F03FF8 o="R L Drake" +F040EC o="RainX PTE. LTD." F041C6 o="Heat Tech Company, Ltd." F04335 o="DVN(Shanghai)Ltd." -F0463B o="Comcast Cable Corporation" F04A2B o="PYRAMID Computer GmbH" +F04A3D o="Bosch Thermotechnik GmbH" F04B6A o="Scientific Production Association Siberian Arsenal, Ltd." F04BF2 o="JTECH Communications, Inc." F05494 o="Honeywell Connected Building" +F05582 o="Arashi Vision Inc." +F0578D o="JetHome LLC" F05849 o="CareView Communications" F05D89 o="Dycon Limited" F05DC8 o="Duracell Powermat" @@ -17573,6 +19370,7 @@ F0620D o="Shenzhen Egreat Tech Corp.,Ltd" F065C2 o="Yanfeng Visteon Electronics Technology (Shanghai) Co.,Ltd." F06853 o="Integrated Corporation" F06E32 o="MICROTEL INNOVATION S.R.L." +F06F46 o="Ubiik" F073AE o="PEAK-System Technik" F07485 o="NGD Systems, Inc." F074E4 o="Thundercomm Technology Co., Ltd" @@ -17580,9 +19378,11 @@ F07765 o="Sourcefire, Inc" F077D0 o="Xcellen" F07F0C o="Leopold Kostal GmbH &Co. KG" F081AF o="IRZ AUTOMATION TECHNOLOGIES LTD" +F0877F o="Magnetar Technology Shenzhen Co., LTD." F08A28 o="JIANGSU HENGSION ELECTRONIC S and T CO.,LTD" F08BFE o="COSTEL.,CO.LTD" F08EDB o="VeloCloud Networks" +F09258 o="China Electronics Cloud Computing Technology Co., Ltd" F0933A o="NxtConect" F093C5 o="Garland Technology" F095F1 o="Carl Zeiss AG" @@ -17592,18 +19392,25 @@ F09CBB o="RaonThink Inc." F09CD7 o="Guangzhou Blue Cheetah Intelligent Technology Co., Ltd." F0A764 o="GST Co., Ltd." F0A7B2 o="FUTABA CORPORATION" +F0AA0B o="Arra Networks/ Spectramesh" +F0ABFA o="Shenzhen Rayin Technology Co.,Ltd" F0ACA4 o="HBC-radiomatic" F0AD4E o="Globalscale Technologies, Inc." F0AE51 o="Xi3 Corp" +F0AE66 o="Cosonic Intelligent Technologies Co., Ltd." F0AF50 o="Phantom Intelligence" F0B5B7 o="Disruptive Technologies Research AS" F0B6EB o="Poslab Technology Co., Ltd." F0BCC8 o="MaxID (Pty) Ltd" F0BD2E o="H+S Polatis Ltd" F0BDF1 o="Sipod Inc." +F0C1CE o="GoodWe Technologies CO., Ltd" F0C24C o="Zhejiang FeiYue Digital Technology Co., Ltd" F0C27C o="Mianyang Netop Telecom Equipment Co.,Ltd." +F0C558 o="U.D.Electronic Corp." F0C88C o="LeddarTech Inc." +F0CCE0 o="Shenzhen All-Smartlink Technology Co.,Ltd." +F0CF4D o="BitRecords GmbH" F0D14F o="LINEAR LLC" F0D1B8 o="LEDVANCE" F0D3A7 o="CobaltRay Co., Ltd" @@ -17620,6 +19427,7 @@ F0DE71 o="Shanghai EDO Technologies Co.,Ltd." F0DEB9 o="ShangHai Y&Y Electronics Co., Ltd" F0E3DC o="Tecon MT, LLC" F0E5C3 o="Drägerwerk AG & Co. KG aA" +F0E752 o="Shenzhen Huajuxin Semiconductor Co.,ltd" F0EC39 o="Essec" F0ED1E o="Bilkon Bilgisayar Kontrollu Cih. Im.Ltd." F0EE58 o="PACE Telematics GmbH" @@ -17627,30 +19435,42 @@ F0EEBB o="VIPAR GmbH" F0EFD2 o="TF PAYMENT SERVICE CO., LTD" F0F08F o="Nextek Solutions Pte Ltd" F0F260 o="Mobitec AB" +F0F56D o="Kubota Corporation" F0F5AE o="Adaptrum Inc." F0F644 o="Whitesky Science & Technology Co.,Ltd." F0F669 o="Motion Analysis Corporation" +F0F69C o="NIO Co., Ltd." F0F7B3 o="Phorm" F0F842 o="KEEBOX, Inc." F0F9F7 o="IES GmbH & Co. KG" +F0FC65 o="SynaXG Technologies Pte. Ltd." F0FDA0 o="Acurix Networks Pty Ltd" +F0FDDD o="Foxtron Vehicle Technologies Co., Ltd." F40321 o="BeNeXt B.V." F4032F o="Reduxio Systems" F4044C o="ValenceTech Limited" F406A5 o="Hangzhou Bianfeng Networking Technology Co., Ltd." F40A4A o="INDUSNET Communication Technology Co.,LTD" F40F9B o="WAVELINK" +F41399 o="Aerospace new generation communications Co.,Ltd" +F41532 o="PETAiO (NanJing), Inc." F41535 o="SPON Communication Technology Co.,Ltd" F415FD o="Shanghai Pateo Electronic Equipment Manufacturing Co., Ltd." F419E2 o="Volterra" +F41AB0 o="Shenzhen Xingguodu Technology Co., Ltd." +F41C71 o="SHENZHEN SANMU COMMUNICATION TECHNOLOGY CO., LTD" F41E26 o="Simon-Kaloi Engineering" F41E5E o="RtBrick Inc." F41F0B o="YAMABISHI Corporation" F42012 o="Cuciniale GmbH" +F42462 o="Selcom Electronics (Shanghai) Co., Ltd" F42833 o="MMPC Inc." F42896 o="SPECTO PAINEIS ELETRONICOS LTDA" F42B48 o="Ubiqam" +F42B7D o="Chipsguide technology CO.,LTD." F42C56 o="SENOR TECH CO LTD" +F43149 o="Pixel FX" +F4331C o="Toast, Inc." F43328 o="CIMCON Lighting Inc." F436E1 o="Abilis Systems SARL" F43814 o="Shanghai Howell Electronic Co.,Ltd" @@ -17661,14 +19481,19 @@ F44156 o="Arrikto Inc." F44227 o="S & S Research Inc." F44450 o="BND Co., Ltd." F445ED o="Portable Innovation Technology Ltd." +F4462A o="maxon zub" F44713 o="Leading Public Performance Co., Ltd." F4472A o="Nanjing Rousing Sci. and Tech. Industrial Co., Ltd" F44848 o="Amscreen Group Ltd" F44955 o="MIMO TECH Co., Ltd." F449EF o="EMSTONE" F44D17 o="GOLDCARD HIGH-TECH CO.,LTD." +F44DAD o="Cable Matters Inc." +F44E38 o="Olibra LLC" F44EFD o="Actions Semiconductor Co.,Ltd.(Cayman Islands)" +F44FD3 o="shenzhen hemuwei technology co.,ltd" F450EB o="Telechips Inc" +F4525B o="Antare Technology Ltd" F45595 o="HENGBAO Corporation LTD." F455E0 o="Niceway CNC Technology Co.,Ltd.Hunan Province" F45842 o="Boxx TV Ltd" @@ -17678,15 +19503,18 @@ F45FF7 o="DQ Technology Inc." F4600D o="Panoptic Technology, Inc" F462D0 o="Not for Radio, LLC" F46349 o="Diffon Corporation" +F463E7 o="Nanjing Maxon O.E. Tech. Co., LTD" F4672D o="ShenZhen Topstar Technology Company" F46ABC o="Adonit Corp. Ltd." F46E24 o="NEC Personal Computers, Ltd." F46F4E o="Echowell" +F46FA4 o="Physik Instrumente GmbH & Co. KG" F473CA o="Conversion Sound Inc." F47626 o="Viltechmeda UAB" F47A4E o="Woojeon&Handan" F47ACC o="SolidFire, Inc." F483E1 o="Shanghai Clouder Semiconductor Co.,Ltd" +F485AE o="Senbiosys SA" F485C6 o="FDT Technologies" F48771 o="Infoblox" F490CA o="Tensorcom" @@ -17697,19 +19525,25 @@ F49466 o="CountMax, ltd" F497C2 o="Nebulon Inc" F499AC o="WEBER Schraubautomaten GmbH" F49C12 o="Structab AB" +F49EA4 o="Epiq Solutions" +F49ECE o="Sena Technologies Co., Ltd." +F4A17F o="Marquardt Electronics Technology (Shanghai) Co.Ltd" F4A294 o="EAGLE WORLD DEVELOPMENT CO., LIMITED" F4A52A o="Hawa Technologies Inc" F4B164 o="Lightning Telecommunications Technology Co. Ltd" F4B381 o="WindowMaster A/S" F4B520 o="Biostar Microtech international corp." -F4B549 o="Xiamen Yeastar Information Technology Co., Ltd." +F4B549 o="Xiamen Yeastar Digital Technology Co., Ltd" +F4B6C6 o="Indra Heera Technology LLP" F4B6E5 o="TerraSem Co.,Ltd" F4B72A o="TIME INTERCONNECT LTD" F4BD7C o="Chengdu jinshi communication Co., LTD" +F4C02F o="BlueBite" F4C447 o="Coagent International Enterprise Limited" F4C4D6 o="Shenzhen Xinfa Electronic Co.,ltd" F4C6D7 o="blackned GmbH" -F4C795 o="WEY Elektronik AG" +F4C795 o="WEY Technology AG" +F4C7AA o="Marvell Semiconductors" F4C7C8 o="Kelvin Inc." F4CA24 o="FreeBit Co., Ltd." F4CD90 o="Vispiron Rotec GmbH" @@ -17723,25 +19557,31 @@ F4DCA5 o="DAWON DNS" F4DCDA o="Zhuhai Jiahe Communication Technology Co., limited" F4DE0C o="ESPOD Ltd." F4E142 o="Delta Elektronika BV" -F4E204 o="Traqueur" -F4E578 o="LLC Proizvodstvennaya Kompania %TransService%" +F4E204 o="COYOTE SYSTEM" F4E6D7 o="Solar Power Technologies, Inc." F4E926 o="Tianjin Zanpu Technology Inc." F4EB9F o="Ellu Company 2019 SL" +F4ED37 o="Qingdao Yuze lntelligent Technology Co.,Ltd" F4ED5F o="SHENZHEN KTC TECHNOLOGY GROUP" F4EF9E o="SGSG SCIENCE & TECHNOLOGY CO. LTD" F4F197 o="EMTAKE Inc" +F4F19E o="Wistron InforComm (Zhongshan) Corporation" F4F3AA o="JBL GmbH & Co. KG" F4F646 o="Dediprog Technology Co. Ltd." +F4F70C o="Avang - neterbit" F4FCB1 o="JJ Corp" F4FD2B o="ZOYI Company" +F8009D o="INTRACOM DEFENSE S.A." F80332 o="Khomp" F8051C o="DRS Imaging and Targeting Solutions" +F809A4 o="Henan Thinker Rail Transportation Research Inc." F80BD0 o="Datang Telecom communication terminal (Tianjin) Co., Ltd." +F80D4B o="Nextracker, Inc." F80DEA o="ZyCast Technology Inc." F80DF1 o="Sontex SA" F80F84 o="Natural Security SAS" -F81037 o="Atopia Systems, LP" +F81037 o="ENTOUCH Controls" +F810A0 o="Xtreme Testek Inc." F81B04 o="Zhong Shan City Richsound Electronic Industrial Ltd" F81CE5 o="Telefonbau Behnke GmbH" F81D90 o="Solidwintech" @@ -17750,6 +19590,8 @@ F81E6F o="EBG compleo GmbH" F82055 o="Green Information System" F82285 o="Cypress Technology CO., LTD." F82441 o="Yeelink" +F824DB o="EntryPoint Networks, Inc" +F824E4 o="Beyonics Technology Electronic (Changshu) Co., Ltd" F8272E o="Mercku" F82BC8 o="Jiangsu Switter Co., Ltd" F82E8E o="Nanjing Kechen Electric Co., Ltd." @@ -17758,37 +19600,46 @@ F82F5B o="eGauge Systems LLC" F83094 o="Alcatel-Lucent Telecom Limited" F8313E o="endeavour GmbH" F83376 o="Good Mind Innovation Co., Ltd." +F83451 o="Comcast-SRL" F83553 o="Magenta Research Ltd." F83CBF o="BOTATO ELECTRONICS SDN BHD" F83D4E o="Softlink Automation System Co., Ltd" F842FB o="Yasuda Joho Co.,ltd." +F845C4 o="Shenzhen Netforward Micro-Electronic Co., Ltd." F8462D o="SYNTEC Incorporation" F8472D o="X2gen Digital Corp. Ltd" F84A73 o="EUMTECH CO., LTD" F84A7F o="Innometriks Inc" +F84D8B o="ecamtek" F8501C o="Tianjin Geneuo Technology Co.,Ltd" F85063 o="Verathon" F85128 o="SimpliSafe" F8516D o="Denwa Technology Corp." F852DF o="VNL Europe AB" +F8554B o="WirelessMobility Engineering Centre SDN. BHD" F8572E o="Core Brands, LLC" F85A00 o="Sanford LP" +F85B9B o="iMercury" F85B9C o="SB SYSTEMS Co.,Ltd" F85BC9 o="M-Cube Spa" +F85C24 o="Sonos Inc." F85C45 o="IC Nexus Co. Ltd." -F85C7D o="Shenzhen Honesty Electronics Co.,Ltd." F862AA o="xn systems" F86465 o="Anova Applied Electronics, Inc." F86601 o="Suzhou Chi-tek information technology Co., Ltd" F86971 o="Seibu Electric Co.," F86C03 o="Shenzhen Teleone Technology Co., Ltd" +F86D73 o="Zengge Co., Limited" F86ECF o="Arcx Inc" F86FDE o="Shenzhen Goodix Technology Co.,Ltd." F871FE o="The Goldman Sachs Group, Inc." F8769B o="Neopis Co., Ltd." +F87999 o="Guangdong Jiuzhi Technology Co.,Ltd" F87AEF o="Rosonix Technology, Inc." F87B62 o="FASTWEL INTERNATIONAL CO., LTD. Taiwan Branch" F87B8C o="Amped Wireless" +F87BE0 o="Funtime Pickleball Inc." +F87FA5 o="GREATEK" F88096 o="Elsys Equipamentos Eletrônicos Ltda" F8811A o="OVERKIZ" F88200 o="CaptionCall" @@ -17799,20 +19650,29 @@ F88DEF o="Tenebraex" F89066 o="Nain Inc." F8912A o="GLP German Light Products GmbH" F89173 o="AEDLE SAS" +F891F5 o="Dingtian Technologies Co., Ltd" F893F3 o="VOLANS" F89550 o="Proton Products Chengdu Ltd" +F89725 o="OPPLE LIGHTING CO., LTD" +F897B0 o="Goki Pty Ltd" F897CF o="DAESHIN-INFORMATION TECHNOLOGY CO., LTD." F8983A o="Leeman International (HongKong) Limited" F89955 o="Fortress Technology Inc" F89D0D o="Control Technology Inc." +F89D9D o="Shenzhen MinewSemi Co.,LTD." F89DBB o="Tintri" F89FB8 o="YAZAKI Energy System Corporation" F8A03D o="Dinstar Technologies Co., Ltd." F8A188 o="LED Roadway Lighting" F8A2B4 o="RHEWA-WAAGENFABRIK August Freudewald GmbH &Co. KG" +F8A475 o="PT Indoreka Jaya Wutama" +F8A4FB o="Nanjing Decowell Automation Co.,LTD" +F8A91F o="ZVISION Technologies Co., Ltd" F8A9DE o="PUISSANCE PLUS" F8AA8A o="Axview Technology (Shenzhen) Co.,Ltd" +F8AAB3 o="DESSMANN (China) Machinery & Electronic Co., Ltd" F8AC6D o="Deltenna Ltd" +F8ACC1 o="InnoXings Co., LTD." F8AE27 o="John Deere Electronic Solutions" F8B2F3 o="GUANGZHOU BOSMA TECHNOLOGY CO.,LTD" F8B599 o="Guangzhou CHNAVS Digital Technology Co.,Ltd" @@ -17820,31 +19680,37 @@ F8BC41 o="Rosslare Enterprises Limited" F8BE0D o="A2UICT Co.,Ltd." F8C091 o="Highgates Technology" F8C120 o="Xi'an Link-Science Technology Co.,Ltd" +F8C249 o="AMPERE COMPUTING LLC" F8C372 o="TSUZUKI DENKI" F8C397 o="NZXT Corp. Ltd." -F8C4F3 o="Shanghai Infinity Wireless Technologies Co.,Ltd." +F8C3F1 o="Raytron Photonics Co.,Ltd." F8C678 o="Carefusion" F8CA59 o="NetComm Wireless" F8CC6E o="DEPO Electronics Ltd" F8D3A9 o="AXAN Networks" F8D462 o="Pumatronix Equipamentos Eletronicos Ltda." F8D756 o="Simm Tronic Limited" +F8D758 o="Veratron AG" F8D7BF o="REV Ritter GmbH" F8DADF o="EcoTech, Inc." F8DAE2 o="NDC Technologies" F8DAF4 o="Taishan Online Technology Co., Ltd." F8DB4C o="PNY Technologies, INC." -F8DC7A o="Variscite LTD" F8DFE1 o="MyLight Systems" -F8E44E o="MCOT INC." F8E5CF o="CGI IT UK LIMITED" F8E7B5 o="µTech Tecnologia LTDA" F8E968 o="Egker Kft." F8EA0A o="Dipl.-Math. Michael Rauch" +F8EFB1 o="Hangzhou Zhongxinghui Intelligent Technology Co., Ltd." F8F005 o="Newport Media Inc." F8F014 o="RackWare Inc." +F8F09D o="Hangzhou Prevail Communication Technology Co., Ltd" +F8F0C5 o="Suzhou Kuhan Information Technologies Co.,Ltd." F8F25A o="G-Lab GmbH" +F8F3D3 o="Shenzhen Gotron electronic CO.,LTD" F8F464 o="Rawe Electonic GmbH" +F8F519 o="Rulogic Inc." +F8F7D2 o="Equal Optics, LLC" F8F7D3 o="International Communications Corporation" F8F7FF o="SYN-TECH SYSTEMS INC" F8FB2F o="Santur Corporation" @@ -17856,7 +19722,7 @@ FC0012 o="Toshiba Samsung Storage Technolgoy Korea Corporation" FC019E o="VIEVU" FC01CD o="FUNDACION TEKNIKER" FC0647 o="Cortland Research, LLC" -FC06ED o="M2Motive Technology Inc." +FC068C o="SHENZHEN MICIPC TECHNOLOGY CO.,LTD" FC07A0 o="LRE Medical GmbH" FC0877 o="Prentke Romich Company" FC09D8 o="ACTEON Group" @@ -17873,40 +19739,54 @@ FC1D59 o="I Smart Cities HK Ltd" FC1D84 o="Autobase" FC1E16 o="IPEVO corp" FC1FC0 o="EURECAM" +FC221C o="Shenzhen Xunman Technology Co., Ltd" FC229C o="Han Kyung I Net Co.,Ltd." +FC22D3 o="FDSYS" FC2325 o="EosTek (Shenzhen) Co., Ltd." FC27A2 o="TRANS ELECTRIC CO., LTD." FC29F3 o="McPay Co.,LTD." FC2A54 o="Connected Data, Inc." +FC2CFD o="dormakaba Canada Inc. - Keyscan" FC2E2D o="Lorom Industrial Co.LTD." FC2F6B o="Everspin Technologies, Inc." FC2FEF o="UTT Technologies Co., Ltd." FC3288 o="CELOT Wireless Co., Ltd" +FC3357 o="KAGA FEI Co., Ltd." FC335F o="Polyera" FC3598 o="Favite Inc." -FC35E6 o="Visteon corp" +FC3876 o="Forum Communication Systems, Inc" +FC38C4 o="China Grand Communications Co.,Ltd." FC3CE9 o="Tsingtong Technologies Co, Ltd." FC3FAB o="Henan Lanxin Technology Co., Ltd" FC4463 o="Universal Audio, Inc" FC4499 o="Swarco LEA d.o.o." FC455F o="JIANGXI SHANSHUI OPTOELECTRONIC TECHNOLOGY CO.,LTD" +FC478D o="SHENZHEN TOPWELL TECHNOLOGY CO., LTD." +FC48C9 o="Yobiiq Intelligence B.V." FC4B1C o="INTERSENSOR S.R.L." +FC4B57 o="Peerless Instrument Division of Curtiss-Wright" FC4D8C o="SHENZHEN PANTE ELECTRONICS TECHNOLOGY CO., LTD" +FC500C o="Sitehop Ltd" FC5090 o="SIMEX Sp. z o.o." FC52CE o="Control iD" FC55DC o="Baltic Latvian Universal Electronics LLC" +FC584A o="xiamenshi c-chip technology co., ltd" +FC58DF o="Interphone Service" FC58FA o="Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd." FC5B24 o="Weibel Scientific A/S" FC5B26 o="MikroBits" FC6018 o="Zhejiang Kangtai Electric Co., Ltd." FC6198 o="NEC Personal Products, Ltd" FC626E o="Beijing MDC Telecom" +FC626F o="Fortx" FC683E o="Directed Perception, Inc" +FC698C o="ANDREAS STIHL AG & Co. KG" FC6BF0 o="TOPWELL INTERNATIONAL HOLDINDS LIMITED" FC6C31 o="LXinstruments GmbH" FC6DC0 o="BME CORPORATION" FC6DD1 o="APRESIA Systems, Ltd." FC71FA o="Trane Technologies" +FC7692 o="Semptian Co.,Ltd." FC790B o="Hitachi High Technologies America, Inc." FC7CE7 o="FCI USA LLC" FC7D6C o="HYESUNG TECHWIN Co., Ltd" @@ -17914,34 +19794,45 @@ FC7F56 o="CoSyst Control Systems GmbH" FC8329 o="Trei technics" FC83C6 o="N-Radio Technologies Co., Ltd." FC8596 o="Axonne Inc." +FC8B1F o="GUTOR Electronic" +FC8D3D o="Leapfive Tech. Ltd." FC8E6E o="StreamCCTV, LLC" FC8FC4 o="Intelligent Technology Inc." FC90FA o="Independent Technologies" FC946C o="UBIVELOX" +FC97A8 o="Cricut Inc." FC9AFA o="Motus Global Inc." +FC9BD4 o="EdgeQ" FC9DD8 o="Beijing TongTongYiLian Science and Technology Ltd." FC9FAE o="Fidus Systems Inc" FC9FE1 o="CONWIN.Tech. Ltd" +FCA05A o="Oray.com co., LTD." FCA22A o="PT. Callysta Multi Engineering" +FCA64C o="Alibaba cloud computing Co., Ltd" +FCA84A o="Sentinum GmbH" FCA9B0 o="MIARTECH (SHANGHAI),INC." FCAD0F o="QTS NETWORKS" +FCAE2B o="Titan Products Ltd." FCAF6A o="Qulsar Inc" FCAFAC o="Socionext Inc." +FCAFBE o="TireCheck GmbH" FCB10D o="Shenzhen Tian Kun Technology Co.,LTD." +FCB387 o="Leapmotor (Jinhua) New Energy Vehicle Parts Technology Co., Ltd." +FCB577 o="Cortex Security Inc" FCB58A o="Wapice Ltd." FCB662 o="IC Holdings LLC" FCB7F0 o="Idaho National Laboratory" FCBBA1 o="Shenzhen Minicreate Technology Co.,Ltd" -FCBC0E o="Zhejiang Cainiao Supply Chain Management Co., Ltd" FCBC9C o="Vimar Spa" +FCC0CC o="Yunke China Information Technology Limited" +FCC2E5 o="HOLOWITS TECHNOLOGIES CO.,LTD" +FCC737 o="Shaanxi Gangsion Electronic Technology Co., Ltd" FCCAC4 o="LifeHealth, LLC" FCCCE4 o="Ascon Ltd." FCCF43 o="HUIZHOU CITY HUIYANG DISTRICT MEISIQI INDUSTRY DEVELOPMENT CO,.LTD" FCD4F2 o="The Coca Cola Company" FCD4F6 o="Messana Air.Ray Conditioning s.r.l." -FCD5D9 o="Shenzhen SDMC Technology Co., Ltd." FCD817 o="Beijing Hesun Technologies Co.Ltd." -FCDB21 o="SAMSARA NETWORKS INC" FCDB96 o="ENERVALLEY CO., LTD" FCDC4A o="G-Wearables Corp." FCDD55 o="Shenzhen WeWins wireless Co.,Ltd" @@ -17955,6 +19846,7 @@ FCE892 o="Hangzhou Lancable Technology Co.,Ltd" FCEDB9 o="Arrayent" FCEEE6 o="FORMIKE ELECTRONIC CO., LTD" FCF1CD o="OPTEX-FA CO.,LTD." +FCF763 o="KunGao Micro (JiangSu) Co., LTd" FCF8B7 o="TRONTEQ Electronic" FCFE77 o="Hitachi Reftechno, Inc." FCFEC2 o="Invensys Controls UK Limited" @@ -18002,7 +19894,7 @@ FCFEC2 o="Invensys Controls UK Limited" 02D o="DDTRONIK Dariusz Dowgiert" 02E o="BETTINI SRL" 02F o="Fibrain Co. Ltd." - 030 o="OctoGate it Security Systems GmbH" + 030 o="OctoGate IT Security Systems GmbH" 031 o="ADIXEIN LIMITED" 032 o="Osborne Coinage Co" 033 o="JE Suunnittelu Oy" @@ -18020,7 +19912,7 @@ FCFEC2 o="Invensys Controls UK Limited" 03F o="ELTRADE Ltd" 040 o="OOO Actidata" 041 o="DesignA Electronics Limited" - 042 o="ChamSys Ltd" + 042 o="Chamsys Ltd" 043 o="Coincident, Inc." 044 o="ZAO "RADIUS Avtomatika"" 045 o="Marvel Digital International Limited" @@ -18109,7 +20001,7 @@ FCFEC2 o="Invensys Controls UK Limited" 099 o="UAB Kitron" 09A o="Shenzhen Guang Lian Zhi Tong Limited" 09B o="YIK Corporation" - 09C o="S.I.C.E.S. srl" + 09C o="MECCALTE SPA" 09D o="Navitar Inc" 09E o="K+K Messtechnik GmbH" 09F o="ENTE Sp. z o.o." @@ -18150,7 +20042,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0C3 o="inomatic GmbH" 0C4 o="ELDES" 0C5 o="Gill Instruments Ltd" - 0C6 o="Connode" + 0C6 o="CyanConnode" 0C7 o="WIZZILAB SAS" 0C8 o="Dialine" 0C9 o="UAB Kitron" @@ -18186,6 +20078,70 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Desird Design R&D" D o="aversix" E o="Tianjin Lianwu Technology Co., Ltd." +006A5E + 0 o="TRULY ELECTRONICS MFG.,LTD" + 1 o="BroadMaster Biotech Corp" + 2 o="Creative Communication" + 3 o="Shenzhen yeahmoo Technology Co., Ltd." + 4 o="Evercomm (Pty) Ltd" + 5 o="Rayneo (wuxi) ltd" + 6 o="DICOM CORPORATION" + 7 o="Jiangsu Alstom NUG Propulsion System Co., Ltd" + 8 o="Hilti Corporation" + 9 o="Annapurna labs" + A o="Annapurna labs" + B o="AUMOVIO Brazil Industry Ltda." + C o="CYBERTEL BRIDGE" + D o="Beijing Lingji Innovations technology Co,LTD." + E o="Oppermann Regelgeräte GmbH" +008DF4 + 0 o="Sensata Technologies" + 1 o="Beijing Infinitesensing Technology Co.,Ltd" + 2 o="Symetrics Industries d.b.a. Extant Aerospace" + 3 o="Algodue Elettronica Srl" + 4 o="Energy Team S.p.A." + 5 o="Schneider Electric" + 6 o="Annapurna labs" + 7 o="HIMSA" + 8 o="ERA TOYS LIMITED" + 9 o="Relay, Inc." + A o="Adel System srl" + B o="Guangzhou Legendview Electronic Technology Co.,Ltd" + C o="Creative Security Technology Inc." + D o="ID TECH SOLUTIONS PVT LTD" + E o="Relay, Inc." +041119 + 0 o="FORT Robotics Inc." + 1 o="Acentury" + 2 o="Alethea Communications Technologies Pvt. Ltd." + 3 o="SUZHOU RIBAO TECHNOLOGY CO.,LTD." + 4 o="Bolicom Innovation Technology (BeiJing) Co.,LTD." + 5 o="CEITA COMMUNICATION TECHNOLOGY CO.,LTD" + 6 o="ZPD technology Co., Ltd" + 7 o="Herrick Tech Labs" + 8 o="Shenzhen YIZHENG Technology Co.,Ltd" + 9 o="AC Power Distribution / ACT Entmt." + A o="CyOne Security AG" + B o="Hubei Baobao Intelligent Technology Co.,LTD" + C o="Haerbin Donglin Technology Co., Ltd." + D o="Nuance Hearing Ltd." + E o="JULIDA LIMITED" +04585D + 0 o="Wetatronics Limited" + 1 o="Research Laboratory of Design Automation, Ltd." + 2 o="Foxconn Brasil Industria e Comercio Ltda" + 3 o="REXXON GmbH" + 4 o="Integrated Technical Vision Ltd" + 5 o="Sercomm Japan Corporation" + 6 o="VERTE Elektronik San. Ve Tic. A.Ş." + 7 o="HKC Security Ltd." + 8 o="JRK VISION" + 9 o="Dron Edge India Private Limited" + A o="TELEPLATFORMS" + B o="Chengdu Juxun Electronic Technology Co.,Ltd" + C o="Rexon Technology" + D o="HDS Otomasyon Güvenlik ve Yazılım Teknolojileri Sanayi Ticaret Limited Şirketi" + E o="Shanghai Kanghai Information System CO.,LTD." 04714B 0 o="Neurio Technology Inc." 1 o="uAvionix Corporation" @@ -18202,6 +20158,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="KittyHawk Corporation" D o="Shenzhen BoClouds Technology Co.,Ltd." E o="Gimso Mobile Ltd" +04A16F + 0 o="Shanghai Kanghai Information System CO.,LTD." + 1 o="iENSO Inc." + 2 o="Suzhou Lianshichuangzhi Technology Co.,Ltd" + 3 o="Crypto4A Technologies" + 4 o="Xiamen Akubela Innovation Technology CO., Ltd." + 5 o="DOM Security" + 6 o="GY-FX SAS" + 7 o="NDW Rollers B.V." + 8 o="Annapurna labs" + 9 o="Chongqing Jinmei Automotive Electronics co.,Ltd." + A o="UYAR GROUP" + B o="Chroma-Q" + C o="Broadband International" + D o="Zettlab Innovation Technology CO.,LTD" + E o="GajShield Infotech India Pvt. Ltd." 04C3E6 0 o="DREAMKAS LLC" 1 o="Guangdong New Pulse Electric Co., Ltd." @@ -18217,7 +20189,23 @@ FCFEC2 o="Invensys Controls UK Limited" B o="Flintec UK Ltd." C o="SHANTOU YINGSHENG IMPORT & EXPORT TRADING CO.,LTD." D o="Amiosec Ltd" - E o="Teleepoch Ltd" + E o="Great Talent Technology Limited" +04C98B + 0 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + 1 o="TinyPilot, LLC" + 2 o="Moog Inc" + 3 o="ShenZhen Link-High Technology CO.,LIMITED" + 4 o="Annapurna labs" + 5 o="Solana Mobile Inc." + 6 o="Annapurna labs" + 7 o="OPEX CORPORATION" + 8 o="DELTA NETWORKS (XIAMEN) LIMITED" + 9 o="Beijing BOE optoelectronic Technology Co. Ltd" + A o="Secury360" + B o="Freedom Factory" + C o="Rovox Solutions Sdn Bhd" + D o="Shenzhen Xiangrui Shixian Technology Co., Ltd." + E o="Agile Workspace Limited" 04D16E 0 o="INTRIPLE, a.s." 1 o="Launch Tech Co., Ltd." @@ -18234,6 +20222,70 @@ FCFEC2 o="Invensys Controls UK Limited" C o="PacPort Corporation" D o="Elotec Fischer Elektronik GmbH" E o="Evolute Systems Private Limited" +04EEE8 + 0 o="Zoomlion Huanuo(Beijing)Technology Co.,Ltd" + 1 o="Shanghai ZLAN Information Technology Co.,Ltd" + 2 o="Hengke Technology Industry Co., Ltd." + 3 o="Fluid Management Technology" + 4 o="Shenzhen Daotong Technology Co.,Ltd" + 5 o="RealWear" + 6 o="NALSSEN INC." + 7 o="Shanghai Kanghai Information System CO.,LTD." + 8 o="MPEON Co.,Ltd" + 9 o="Privacy Hero" + A o="Shenzhen JoiningFree Technology Co.,Ltd" + B o="Hunan Yaguan Communication Technology Co.,Ltd" + C o="daishin" + D o="SHENZHEN TOPWELL TECHNOLOGY CO., LTD." + E o="Best Integration Technology Co., Ltd." +0826AE + 0 o="Wuhan Tianyu Information Industry Co., Ltd." + 1 o="Beijing Silion Technology Corp.,Ltd." + 2 o="ZaiNar" + 3 o="Shenzhen Hai yingZhilian Industrial Co., Ltd." + 4 o="BANGJOO Co., Ltd." + 5 o="SHENNAN CIRCUITS CO.,LTD" + 6 o="Newcapec co.,Ltd" + 7 o="EVTECH SOLUTIONS LTD. DBA 3D-P" + 8 o="ShineTech Electronics Co., Ltd" + 9 o="Annapurna labs" + A o="Flextronics International Kft" + B o="F-Plus Mobile LLC" + C o="Brannstrom Sweden AB" + D o="Veth Propulsion bv" + E o="Mass Electronics Pty Ltd" +086332 + 0 o="Eaton Corporation" + 1 o="Shanghai eCloud Technologies Co.,ltd" + 2 o="innovative specialized security solutions" + 3 o="Umano Medical Inc." + 4 o="Beijing KELIBANG Information technology Co.,LTD" + 5 o="A Paul Software Systems Pvt. Ltd." + 6 o="OVT India pvt Ltd" + 7 o="SOFTWARE-AUTOMATION-CONTROL JOINT STOCK COMPANY (CADPRO., JSC)" + 8 o="in.hub GmbH" + 9 o="TZMedical Inc." + A o="Dynacom Communication" + B o="ShenZhen YuanXiang Digital Technology Co., Ltd" + C o="Swiftronix AB" + D o="akYtec GmbH" + E o="C-VUE (SHANGHAI) AUDIO TECHNOLOGY CO.,LTD" +08DA33 + 0 o="Smart and connective" + 1 o="TransTera Technology (HK) Limited" + 2 o="Shenzhen Zhenghao lnnovation Techenology Co.,LTD" + 3 o="AI Storm" + 4 o="Cleverfox Equipments Private Limited" + 5 o="Shengqing Acoustics LLC" + 6 o="Videoline Surveillance Services Pvt. Ltd." + 7 o="Origalys ElectroChem SAS" + 8 o="AMPACS Corporation" + 9 o="Lens Technology (Xiangtan) Co.,Ltd" + A o="JAKA Robotics Co., Ltd." + B o="Shenzhen Fanxiang lnformation Technology Co.,Ltd" + C o="GITHON TECHNOLOGY CO., LTD." + D o="Shanghai ReeLink Global Communication Company LTD" + E o="Telo Communication(Shenzhen)Co.,Ltd" 08ED02 0 o="D2SLink Systems" 1 o="Imperx, Inc" @@ -18250,6 +20302,53 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Guard RFID Solutions" D o="Origami Energy Ltd" E o="Telstra Corporation Limited" +08F80D + 0 o="Huizhou changfei Optoelectruonics Technology Co.,Ltd" + 1 o="Shenzhen DophiGo IoT Technology Co.,Ltd" + 2 o="Shanghai Mininglamp AI Group Co.,Ltd" + 3 o="Annapurna labs" + 4 o="FG-Lab Inc." + 5 o="Zhejiang Luci Technology Co., Ltd" + 6 o="SEDA CHEMICAL PRODUCTS CO., LTD." + 7 o="HANGZHOU YILI Communication Equipment Ltd" + 8 o="OpenYard LLC" + 9 o="Benelink Technology Inc." + A o="MICKEY INDUSTRY,LTD." + B o="Vont Innovations" + C o="ZMBIZI APP LLC" + D o="Zhe Jiang EV-Tech Co.,Ltd" + E o="Suzhou Sidi Information Technology Co., Ltd." +0C47A9 + 0 o="DIGITAL TELEMEDIA TECHNOLOGY PRIVATE LIMITED" + 1 o="Shanghai BST Electric Co.,ltd" + 2 o="Annapurna labs" + 3 o="HONGKONG STONEOIM TECHNOLOGY LIMITED" + 5 o="Everon Co., Ltd." + 6 o="Shenzhen Hahappylife Innovations Electronics Technology Co.,Ltd" + 7 o="Annapurna labs" + 8 o="Honest Networks LLC" + 9 o="Shanghai Sigen New Energy Technology Co., Ltd" + A o="Lens Technology (Xiangtan) Co.,Ltd" + B o="Shenzhen Hebang Electronic Co., Ltd" + C o="Annapurna labs" + D o="DIG_LINK" + E o="BGResearch" +0C5CB5 + 0 o="Yamasei" + 1 o="avxav Electronic Trading LLC" + 2 o="HongKong Blossom Limited" + 3 o="iH&S Technology Limited" + 4 o="Annapurna labs" + 5 o="The Raymond Corporation" + 6 o="S2C limited" + 7 o="Energybox Limited" + 8 o="Shanghai Kanghai Information System CO.,LTD." + 9 o="Colordeve International" + A o="Zhengzhou coal machinery hydraulic electric control Co.,Ltd" + B o="ADI Global Distribution" + C o="Hunan Newman Car NetworKing Technology Co.,Ltd" + D o="BSU Inc" + E o="Munters Europe AB" 0C73EB 0 o="Gemini Data Loggers (UK) Limited" 1 o="EVERSEC TECHNOLOGY CORPORATION" @@ -18261,11 +20360,75 @@ FCFEC2 o="Invensys Controls UK Limited" 7 o="Dinkle Enterprise Co., Ltd." 8 o="Beijing Miiiw Technology Co., Ltd" 9 o="Beijing L&S Lancom Platform Tech. Co., Ltd." - A o="Pi Innovo LLC" + A o="Dana" B o="Synaccess Networks" C o="Shenzhen Samchung Video Technology Co., Ltd." D o="D-Link (Shanghai)Limited Corp." E o="Taiwan Pulse Motion Co., Ltd." +0C7FED + 0 o="Guangdong Tianshu New Energy Technology Co., Ltd" + 1 o="Toast, Inc." + 2 o="Tango Networks Inc" + 3 o="Soft dB" + 4 o="Purple Mountain ,Inc" + 5 o="ShenZhen TianGang Micro Technology CO.LTD" + 6 o="Netweb Technologies India Pvt Ltd" + 7 o="Grandway Technology (Shenzhen) Limited" + 8 o="U-tec Group Inc." + 9 o="Shenzhen ORVIBO Technology Co., Ltd." + A o="Annapurna labs" + B o="TelX Systems" + C o="Shenzhen MoreSense Technology Co., Ltd." + D o="ALT Co., Ltd." + E o="environmental systems corporation" +0C8629 + 0 o="Shanghai Prophet Electronic Technology Co.,Ltd" + 1 o="Beijing Qinmu Data Technology Co., Ltd." + 2 o="BADA SYSTEM co., Ltd" + 3 o="Annapurna labs" + 4 o="Ag Express Electronics" + 5 o="Shenzhen protostellar technology Co., Ltd" + 6 o="C&A Marketing, INC." + 7 o="HagerEnergy GmbH" + 8 o="MyGregor Ltd" + 9 o="HONGKONG SAINT TECH INDUSTRIAL LIMITED" + A o="Nipron Co.,Ltd" + B o="Akribis Systems" + C o="SHENZHEN YINGMU TECHNOLOGY.,LTD" + D o="BEIJING BEIBIANZHIDA TECHNOLOGY CO.,LTD" + E o="FX TECHNOLOGY LIMITED" +0CBFB4 + 0 o="Acula Technology Corp" + 1 o="Innomotics GmbH" + 2 o="Macnica Technology" + 3 o="ShenZhen XunDun Technology CO.LTD" + 4 o="Shenzhen EN Plus Tech Co.,Ltd." + 5 o="ICWiser" + 6 o="Prolight Concepts (UK) Ltd" + 7 o="Odyssey Robot LLC" + 8 o="Changzhou Asia Networks Information Technology Co., Ltd" + 9 o="VirtualV Trading Limited" + A o="IRTEYA LLC" + B o="대한전력전자" + C o="ShenZhen Zeal-All Technology Co.,Ltd" + D o="Nanchang si colordisplay Technology Co.,Ltd" + E o="Shenzhen PengBrain Technology Co.,Ltd" +0CCC47 + 0 o="Shenzhen Jooan Technology Co., Ltd" + 1 o="General Industrial Controls Pvt Ltd" + 2 o="Sun Yan International Trading Ltd." + 3 o="Shimane Masuda Electronics CO.,LTD." + 4 o="Qingdao Geesatcom Technology Co., Ltd" + 5 o="DMECOM TELECOM CO.,LTD." + 6 o="Annapurna labs" + 7 o="Cyrus Audio LTD" + 8 o="NINGBO QIXIANG INFORMATION TECHNOLOGY CO., LTD" + 9 o="OptConnect" + A o="Rich Source Precision IND., Co., LTD." + B o="Spot AI, Inc." + C o="KUMI ELECTRONIC COMPONENTS" + D o="GODOX Photo Equipment Co., Ltd." + E o="Foxconn Brasil Industria e Comercio Ltda" 0CEFAF 0 o="Kenmore" 1 o="Goerlitz AG" @@ -18298,6 +20461,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Bepal Technology Co.,Ltd." D o="Maksat Technologies P Ltd" E o="NEWGREEN TECH CO., LTD." +100648 + 0 o="FLEXTRONICS TECHNOLOGIES (INDIA) PVT LTD" + 1 o="KYTRONICS" + 2 o="Dynics" + 3 o="illuminous LLC" + 4 o="Beijing Cheering Networks Technology Co., Ltd." + 5 o="Annapurna labs" + 6 o="Hong Kong BOZZ Co., Limited." + 7 o="Wilson Electronics" + 8 o="Zhejiang Chenghao Technology Co. , Ltd." + 9 o="Annapurna labs" + A o="Dreame Innovation Technology(Suzhou) Co.,Ltd." + B o="Shenzhen smart-core technology co.,ltd." + C o="Dongguan Hongyexiang Industrial Co.,Ltd" + D o="Microvast Energy" + E o="Kloud-12 LLC" 100723 0 o="RippleTek Tech Ltd" 1 o="Beijing Assem Technology Co., ltd" @@ -18313,8 +20492,41 @@ FCFEC2 o="Invensys Controls UK Limited" B o="Fujian Quanzhou Dong Ang Electronics Co., Ltd." C o="Shenzhen Xinfa Electronic Co.,ltd" E o="First Chair Acoustics Co., Ltd." +1054D2 + 0 o="GIPS Technology Co., Ltd." + 1 o="Jiangxi Ofilm&Jvneng IoT Tech Co., Ltd." + 2 o="ComNav Technology Ltd." + 3 o="Little Array Technology (Shenzhen) Co., Ltd." + 4 o="Raylogic Control Systems Private Limited" + 5 o="Sybersense" + 6 o="Lanao Communication Technology Limited" + 7 o="SHENZHEN CARSAFE TECHNOLOGY DEVELOPMENT CO.,LTD" + 8 o="Annapurna labs" + 9 o="Bamboo Dynamics Corporation., Ltd." + A o="Embion B.V." + B o="Shenzhen Dinstech Technology Co.,Ltd." + C o="LUXSHARE-ICT Co., Ltd." + D o="Sun wealth technology corporation limited" + E o="COSMO AIOT TECHNOLOGY CO LTD" +1063A3 + 0 o="Changsha Sunvote Limited" + 1 o="Jacobs Technology, Inc." + 2 o="Sichuan Puhui Zhida Communication Equipment Co. Ltd." + 3 o="Nextvision Stabilized Systems LTD" + 4 o="GANTECH E TECHNOLOGIES PRIVATE LIMITED" + 5 o="Lianxin (Dalian) Technology Co.,Ltd" + 6 o="Morgan Schaffer" + 7 o="NRS Co., Ltd." + 8 o="Shanghai Kanghai Information System CO.,LTD." + 9 o="Nexite" + A o="ITAB Shop products" + B o="Shen zhen shi shang mei dian zi shang wu you xian gong si" + C o="FLAT-PRO LLC" + D o="Triton Sensors" + E o="Annapurna labs" 10DCB6 - 1 o="ABB Switzerland Ltd." + 0 o="Apex Supply Chain Technologies" + 1 o="Hitachi Energy Switzerland Ltd" 2 o="CAL-COMP INDUSTRIA E COMERCIO DE ELETRONICOS E INFORMATICA LTDA" 3 o="HANACNS" 4 o="Annapurna labs" @@ -18325,7 +20537,7 @@ FCFEC2 o="Invensys Controls UK Limited" 9 o="Fuzhou Rockchip Electronics Co.,Ltd" A o="Pickering Interfaces Ltd" B o="Eyeball Fintech Company" - C o="BBPOS International Limited" + C o="BBPOS Limited" D o="LeoLabs" E o="Shenzhen Sunwoda intelligent hardware Co.,Ltd" 141FBA @@ -18334,7 +20546,7 @@ FCFEC2 o="Invensys Controls UK Limited" 2 o="Deutsche Energieversorgung GmbH" 4 o="BYZERO" 5 o="Inttelix Brasil Tecnologia e Sistemas Ltda" - 6 o="Thales Communications & Security SAS" + 6 o="Hitachi Rail RCS France SAS" 7 o="Wisnetworks Technologies Co., Ltd." 8 o="Shenzhen CATIC Information Technology Industry Co.,Ltd" 9 o="Black Moth Technologies" @@ -18375,6 +20587,54 @@ FCFEC2 o="Invensys Controls UK Limited" C o="IO Industries Inc." D o="iSolution Technologies Co.,Ltd." E o="Sercomm Corporation." +1845B3 + 0 o="leetop tech co.,ltd" + 1 o="Pfannenberg GmbH" + 2 o="Haier cloud Health Technology (Qingdao) Co., Ltd" + 3 o="Ancsonic (chongqing) Electronic Science& Technology Co.,Ltd" + 4 o="Mission Secure Inc" + 5 o="ELPITECH LLC" + 6 o="Harmonic Technology Limited" + 7 o="Shenzhen Incar Technology Co., Ltd." + 8 o="ShenZhen Topband Co.,Ltd" + 9 o="Teko Telecom Srl" + A o="Guangzhou Aoshi Internet Information & Technology Co.,Ltd." + B o="Hangzhou CCRFID Microelectronic Co., Ltd." + C o="Bdf Digital" + D o="Taicang T&W Electronics" + E o="Sleep Number" +186696 + 0 o="Annapurna labs" + 1 o="Turtle AV" + 2 o="Nanjin KW technology Co.,Ltd." + 3 o="Cheersu(Shenzhen) Technology Co., Ltd" + 4 o="Akteena Inc" + 5 o="Wuhan Precise Electronics Co.,Ltd." + 6 o="Shenzhen Safecuit Photonic Technology Co., Ltd" + 7 o="Shandong Hummingbird Internet of Things Technology Co., Ltd" + 8 o="Xunmu Information Technology(Shanghai) Co.,Ltd." + 9 o="Coocaa Network Technology Co.,Ltd." + A o="BIPAI ELECTRONIC TECHNOLOGY(DONGGUAN)CO.,LTD" + B o="HUNAN SONGBEN INFORMATION CO., LTD" + C o="Kee Tat Innovative Technology Holdings Limited" + D o="VIVA CO.,LTD." + E o="Indusenz AS" +1874E2 + 0 o="Ensor AG" + 1 o="Sartorius Lab Instruments GmbH & Co. KG" + 2 o="Shenzhen WITSTECH Co.,Ltd." + 3 o="CT Company" + 4 o="Aggressive Electronics Manufacturing Services Pvt Limited" + 5 o="HANGZHOU ZHOUJU ELECTRONIC TECHNOLOGICAL CO.,LTD" + 6 o="Beijing Jrunion Technology Co., Ltd." + 7 o="Sansec Technology Co.,Ltd" + 8 o="Kano Computing Limited" + 9 o="SHENZHEN AORO COMMUNICATION EQUIPMENT CO., LTD" + A o="Linux Automation GmbH" + B o="Shenzhen Jooan Technology Co., Ltd" + C o="NextGen RF Design, Inc." + D o="Samriddi Automations Pvt. Ltd." + E o="G&O Audio Co.,LTD" 189BA5 0 o="Dectris Ltd." 1 o="ChengDu Vantron Technology, Ltd." @@ -18391,6 +20651,53 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Christ Electronic System GmbH" D o="legendsky tech" E o="Taiwan Name Plate Co.,LTD" +18A59C + 0 o="Omwave" + 1 o="Cuman" + 2 o="Actiontec Electronics Inc." + 3 o="Beijing QS Medical Technology Co., Ltd." + 4 o="IT-1" + 5 o="Thermia AB" + 6 o="INTEGRAL PLUS" + 7 o="ePower Network Solution Co., Ltd." + 8 o="Residence Control Ltd" + 9 o="estun automation co.,ltd" + A o="Erba Lachema s.r.o." + B o="CAL-COMP INDUSTRIA E COMERCIO DE ELETRONICOS E INFORMATICA LTDA" + C o="BlueEyes Technology" + D o="Annapurna labs" + E o="BMC Messsysteme GmbH" +18C3F4 + 0 o="Scati Labs, S.A." + 1 o="Enertex Bayern GmbH" + 2 o="Changsha Kiloview Electronics Co., Ltd." + 3 o="General Test Systems" + 4 o="Annapurna labs" + 5 o="Synaptics, Inc" + 6 o="VeriFone Systems (China), Inc." + 7 o="Shenzhen Yecon-Tech Co.,Ltd." + 8 o="Shenzhen Liandian Communication Technology Co.LTD" + 9 o="Ningbo Yuda Communication Technology Co.,Ltd" + A o="Shenzhen Yunlianxin Technology Co., Ltd." + B o="VECTOR TECHNOLOGIES, LLC" + C o="HANGZHOU ZHONGKEJIGUANG TECHNOLOGY CO., LTD" + D o="Shanghai Kanghai Information System CO.,LTD." + E o="SHENZHEN MEGMEET ELECTRICAL CO., LTD" +18D793 + 0 o="Shenzhen JieXingTong Technology Co.,LTD" + 1 o="Annapurna labs" + 2 o="Hydrotechnik GmbH" + 3 o="Verification & Validation Technology Co.,Ltd" + 4 o="Remote Engineer B.V." + 5 o="DongGuan Orient Electronics & Metal Co.,Ltd" + 6 o="Autel lntelligent Technology Corp.,Ltd" + 7 o="JFA Electronics Industry and Commerce EIRELI" + 8 o="Torsa Global" + 9 o="Clarity Medical Pvt Ltd" + A o="zhejiang Anhong technology co.,ltd" + B o="EcoG" + D o="Kraken Technologies Ltd" + E o="Teegarden Applied Science Inc" 18FDCB 0 o="Shenzhen Rui jiali Electronic Technology Co. Ltd." 1 o="SOTHIS CIC TEC (Shanghai) Co., Ltd" @@ -18416,12 +20723,28 @@ FCFEC2 o="Invensys Controls UK Limited" 5 o="B-Scada Inc." 6 o="Wuhan TieChi Detection Technology Co., Ltd." 7 o="Soundtrack Your Brand Sweden AB" - 8 o="Reliatronics Inc." + 8 o="Cleaveland/Price, Inc." 9 o="Dynojet Research" A o="LG CNS" B o="Global Design Solutions Ltd" D o="Liscotech System Co., Ltd." E o="p2-plus inc." +1C5974 + 0 o="Shenzhen Hanshine Technology Co.Ltd." + 1 o="Logical Infrastructure PTY LTD" + 2 o="Chongqing Taishan Cable Co., Ltd" + 3 o="Jiangsu Welm Technology Co.,Ltd" + 4 o="Syntax technology(tianjin)Co.,LTD" + 5 o="Shenzhen Shi Fang Communication Technology Co., Ltd" + 6 o="Square Inc." + 7 o="Lynxi Technologies Co.,Ltd." + 8 o="Topway Global Technology Limited" + 9 o="Shanghai Laisi Information Technology Co.,Ltd" + A o="Viridi Parente, Inc." + B o="Beijing Flintec Electronic Technology Co.,Ltd." + C o="King-On Technology Ltd." + D o="Shenzhen Geshem Technology Co Ltd" + E o="Globe Tracker ApS" 1C8259 0 o="Shandong Luneng Intelligence Technology CO., Ltd" 1 o="3xLOGIC Inc." @@ -18510,6 +20833,7 @@ FCFEC2 o="Invensys Controls UK Limited" 4 o="NPO TELECOM JSC" 5 o="Dynamic Connect (Suzhou) Hi-Tech Electronic Co.,Ltd." 6 o="Intertecno SRL %NISUTA%" + 7 o="U-TX Technologies Ltd" 8 o="Desarrollos y Soluciones Guinea I+D S.L." 9 o="Cirque Audio Technology Co., Ltd" A o="DSM Messtechnik GmbH" @@ -18517,6 +20841,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="LYT inc." D o="ERATO (HK) Corporation Limited" E o="Exicom Tele-Systems Ltd." +1CA0EF + 0 o="Tangshan Liulin Automation Equipment Co., Ltd." + 1 o="Wisnu and Supak Co.,Ltd." + 2 o="Schneider-Electric(China)Co.Ltd,Shenzhen Branch" + 3 o="Sequent AG" + 4 o="Leviathan Solutions Ltd." + 5 o="Nanjing Bilin Intelligent Identification Technology Co.,Ltd" + 6 o="HANJEN.CHIN CO., LTD." + 7 o="tec5AG" + 8 o="Zillnk" + 9 o="Atlas Aerospace" + A o="Henrich Electronics Corporation" + B o="BMK professional electronics GmbH" + C o="LLC %Gagar.In%" + D o="Shenzhen Liandian Communication Technology Co.LTD" + E o="RDA Microelectronics Technologies (Shanghai) Co. , Ltd" +1CAE3E + 0 o="DAO QIN TECHNOLOGY CO.LTD." + 1 o="IPROAD,Inc" + 2 o="LINKWISE TECHNOLOGIES CO., LIMITED" + 3 o="HagerEnergy GmbH" + 4 o="P.H.U. Metering Anna Moder" + 5 o="Netvio Ltd" + 6 o="Annapurna labs" + 7 o="NextDrive Co." + 8 o="JingQi(tianjin) technology Co., Ltd" + 9 o="China Convert Technology Co., Ltd." + A o="Beijing SuperCloud Technology Co., Ltd." + B o="Beijing Boyan-rd Technology Development CO.,LTD" + C o="QuEST Rail LLC" + D o="FORME" + E o="Broachlink Technology Co.,Limited" 1CC0E1 0 o="Shenzhen Highsharp Electronics Ltd." 1 o="Hangzhou Kaierda Electric Welding Machine Co.,Ltd" @@ -18580,6 +20936,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="sehwa" D o="Bently & EL Co. Ltd." E o="HANGZHOU DANGBEI NETWORK TECH.Co.,Ltd" +202BDA + 0 o="IK MULTIMEDIA PRODUCTION SRL" + 1 o="Enovates NV" + 2 o="Thales Nederland BV" + 3 o="CtrlMovie AG" + 4 o="Teletek Electronics JSC" + 5 o="Plato System Development B.V." + 6 o="Shenzhen FeiCheng Technology Co.,Ltd" + 7 o="Chongqing Ruishixing Technology Co., Ltd" + 8 o="BRUSH ELECTRICAL MACHINES LTD" + 9 o="REDMOUSE Inc." + A o="Industrial Connections & Solutions LLC" + B o="Arvind Limited" + C o="EV4 Limited" + D o="Transit Solutions, LLC." + E o="ZhuoYu Technology" 208593 0 o="Hemina Spa" 1 o="Networking Services Corp" @@ -18590,11 +20962,28 @@ FCFEC2 o="Invensys Controls UK Limited" 6 o="Eilersen Electric A/S" 7 o="Great Lite International" 8 o="AASSET SECURITY" + 9 o="Mastodon Design" A o="H3 Industries, Inc." B o="IOG Products LLC" C o="Regloplas AG" D o="Shanghai Kenmyond Industrial Network Equipment Co.,Ltd" E o="Dynaudio" +20CE2A + 0 o="Annapurna labs" + 1 o="Shanghai Digicube Info&Tech Co.,Ltd." + 2 o="Jabil" + 3 o="Cuculus GmbH" + 4 o="Annapurna labs" + 5 o="Zaber Technologies Inc." + 6 o="Radarxense BV" + 7 o="Beijing Huadianzhongxin Tech.Co.,Ltd" + 8 o="Intelligraphics" + 9 o="Rugged Monitoring" + A o="MeshPlusPlus, Inc." + B o="Swarovski Optik KG" + C o="Ariston Thermo s.p.a." + D o="LAUDA DR R WOBSER GMBH & CO KG" + E o="Funkwerk Systems GmbH" 241510 0 o="Safetrust Inc" 1 o="SMaBiT GmbH" @@ -18627,6 +21016,69 @@ FCFEC2 o="Invensys Controls UK Limited" C o="CHUNGHSIN TECHNOLOGY GROUP CO.,LTD" D o="Church & Dwight Co., Inc." E o="WithWin Technology ShenZhen CO.,LTD" +245DFC + 0 o="CompanyDeep" + 1 o="ARTICONA - Bechtle Logistik & Service GmbH" + 2 o="Blue Iris Labs" + 3 o="Shenzhen Hailuck Electronic Technology CO.,LTD" + 4 o="Suzhou Jiangzhi electronic technology co., Ltd" + 5 o="ContactProximity Inc" + 6 o="Guangzhou Lango Electronics Technology Co.,Ltd." + 7 o="LTY LLC" + 8 o="Cosmicnode" + 9 o="TORGOVYY DOM TEHNOLOGIY LLC" + A o="Tata Sky Limited" + B o="ONLY" + C o="Senix" + D o="Hunan Honestone lntelligence Technology Co.,Ltd" + E o="Dodge" +248625 + 0 o="Shanghai Xizhi Technology Co., Ltd." + 1 o="Shenzhen LianwangRuijie Communication Technology Co, Ltd." + 2 o="Emerson Automation FCP Kft." + 3 o="ViewSec Co., Ltd." + 4 o="Codepoint Technologies, Inc." + 5 o="METRO ELECTRONICS" + 6 o="ADTEK" + 7 o="Tianjin Optical Electrical Juneng Communication Co.,Ltd." + 8 o="Ningbo Sigmatek Automation Co., Ltd." + 9 o="Vtron Pty Ltd" + A o="TAS INDIA PVT LTD" + B o="Wynd Labs" + C o="L-LIGHT Co., Ltd." + D o="Chengdu HOLDTECS Co.,Ltd" + E o="Hangzhou UPAI Technology Co., Ltd" +24A10D + 0 o="Lobaro GmbH" + 1 o="Shenzhen Star Instrument Co., Ltd." + 2 o="Sony Honda Mobility Inc." + 3 o="Rhymebus corporation" + 4 o="Dongguan Taijie Electronics Technology Co.,Ltd" + 5 o="Avantel Limited" + 6 o="Goertek Inc." + 7 o="Cyon Drones" + 8 o="Luxvisions lnnovation TechnologyCorp.Limited" + 9 o="Tecnojest SrL" + A o="Detroit Defense Inc." + C o="REVUPTECH PRIVATE LIMITED" + D o="Amina Distribution AS" + E o="Gönnheimer Elektronic GmbH" +24A3F0 + 0 o="Shanghai AYAN Industry System Co.L,td" + 1 o="Hunan Newman Internet of vehicles Co,Ltd" + 2 o="Magna Hong Co., Ltd." + 3 o="Shanghai Weirui Electronic Technology Co., Ltd." + 4 o="Misaka Network, Inc." + 5 o="Phoenix Season LLC" + 6 o="dissecto GmbH" + 7 o="COBAN SRL" + 8 o="Weihai Hualing Opto-electronics Co., Ltd." + 9 o="EONCA Corporation" + A o="TeraNXT Global India Pvt Ltd." + B o="Shenzhen Woody International Trade Co., Ltd" + C o="BEIJING CUNYIN CHENGQI TECHNOLOGY CO., LTD." + D o="Micro Electroninc Products" + E o="P4S" 282C02 0 o="SAKATA DENKI Co., Ltd." 1 o="Astronics AES" @@ -18643,6 +21095,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Epoch International Enterprises, Inc." D o="SHENZHEN DOMENOR TECHNOLOGY LLC" E o="Capintec, Inc." +283613 + 0 o="Shandong SIASUN Industrial Software Research Institute Co., Ltd" + 1 o="Hi-p (Suzhou) Electronics Co,Ltd" + 2 o="Shenzhen HQVT TECHNOLOGY Co.,LTD" + 3 o="Linear Computing Inc." + 4 o="Elytone Electronic Co., Ltd." + 5 o="Turing Video" + 6 o="ESI Ventures, LLC" + 7 o="shenzhen technology limited" + 8 o="Fuzhou Lesi Intelligent Technology Co., Ltd" + 9 o="Qingdao Airpoint Electronics Co.,Ltd." + A o="MAKEEN Energy" + B o="Qorvo, Inc." + C o="midBit Technologies, LLC" + D o="AVYCON" + E o="EGMedical, s.r.o." 283638 0 o="Knowles Electronics LLC" 1 o="Panasonic System Solutions Europe" @@ -18691,6 +21159,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Matricx Singapore Pte Ltd" D o="Skyrockettoys LLC" E o="Performance Motion Devices" +28F8C6 + 0 o="2iC-Care Ltd" + 1 o="Annapurna labs" + 2 o="Intermatic AG" + 3 o="PANASONIC AUTOMOTIVE SYSTEM MALAYSIA" + 4 o="Beijing HengzhengTC Sci-Tech Co., Ltd" + 5 o="Sarco Equipments PVT. LTD." + 6 o="Shenzhen Hongdian technologies corporation." + 7 o="ASES GROUP, s.r.o." + 8 o="Shenzhen Xifanlina Industrial Co.,Ltd" + 9 o="secuever" + A o="Videndum Media Solutions Spa" + B o="3PI Tech Solutions" + C o="Annapurna labs" + D o="ShenZhen Goodtimes Technoogy CO.,LTD" + E o="COMEM SpA" 28FD80 0 o="Millcode" 1 o="Galileo, Inc." @@ -18770,6 +21254,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Santec Corporation" D o="Phasor Solutions Ltd" E o="IROOTECH TECHNOLOGY CO.,LTD" +2C691D + 0 o="Hunan Xiangjiang Kunpeng Information Technology Co., Ltd." + 1 o="KATEK SE" + 2 o="Abode Systems Inc" + 3 o="Sunsa, Inc" + 4 o="SPEEDTECH CORP." + 5 o="LG Electronics Inc." + 6 o="Carnegie Robotics" + 7 o="Shenzhen Gigalight Technology Co., Ltd" + 8 o="IBM" + 9 o="SHENZHEN EX-LINK TECHNOLOGY CO.,LTD" + A o="Panasonic Appliances Marketing Asia Pacific" + B o="Shenzhen Daren HI-Tech Electronics Co., Ltd." + C o="Aparian, Inc." + D o="Ascentac Inc." + E o="Chengdu Qianhong Communication Co., Ltd." 2C6A6F 0 o="Shanghai Shuncom Electronic Technology Co.,Ltd" 1 o="ELKO EP, s.r.o." @@ -18786,6 +21286,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Sensity Systems" D o="Holjeron" E o="EATON FHF Funke + Huster Fernsig GmbH" +2C7AF4 + 0 o="Annapurna labs" + 1 o="Annapurna labs" + 2 o="Delmatic Limited" + 3 o="Shenzhen Yitoa Digital Technology Co., Ltd." + 4 o="Kegao Intelligent Garden Technology(Guangdong) Co.,Ltd." + 5 o="Annapurna labs" + 6 o="ShangYu Auto Technology Co.,Ltd" + 7 o="Jinan LinkCtrl IoT Co., Ltd" + 8 o="Xi'an PESCO Electronic Technology Co., Ltd" + 9 o="4neXt S.r.l.s." + A o="Risuntek Inc" + B o="Arira Platforms, LLC" + C o="Reonel Oy" + D o="Flextronics Automotive USA, Inc" + E o="NYBSYS Inc" +2CC44F + 0 o="Shenzhen Syeconmax Technology Co. Ltd" + 1 o="Joyoful" + 2 o="Vecima Networks Inc." + 3 o="somon" + 4 o="Beijing Siling Robot Technology Co.,Ltd" + 5 o="MOHAN ELECTRONICS AND SYSTEMS (OPTIVISION)" + 6 o="HM Corporation Ltd." + 7 o="NSK Dental Italy" + 8 o="Wuxi Yikesen Intelligent Technology Co., Ltd" + 9 o="Kaspersky Lab Middle-East FZ-LLC" + A o="Shenzhen OneThing Technologies Co.,Ltd." + B o="CAMS New Energy Technology Co., Ltd." + C o="Beijing Xiaoqu Zhipin Technology Co., Ltd" + D o="Shanghai Fanlian Yunduan Electronic Technology Co.,Ltd" + E o="Elcos srl" 2CD141 0 o="iCIRROUND Inc" 1 o="Ezee Systems Limited" @@ -18800,6 +21332,7 @@ FCFEC2 o="Invensys Controls UK Limited" A o="Fiberroad Technology Co., Ltd." B o="Resus Industries" C o="PIN SHANG LED Co., LTD." + D o="Square Inc." E o="CITA SMART SOLUTIONS LTD" 3009F9 0 o="Hurray Cloud Technology Co., Ltd." @@ -18821,6 +21354,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0 o="KAZUtechnica Co.,Ltd." 1 o="Beijing Ruiteng Zhongtian TECH Ltd.,Co" 2 o="Advanced Electronic Designs, Inc." + 3 o="Intergard do Brasil Ind e Com de Eletr e Mec Ltda" 4 o="AVIC JONHON OPTRONIC TECHNOLOGY CO., LTD." 5 o="A9" 6 o="Realtime biometrics India pvt ltd" @@ -18842,16 +21376,49 @@ FCFEC2 o="Invensys Controls UK Limited" 6 o="YiSheng technology co.,LTD" 7 o="Triax A/S" 8 o="FINE TRIUMPH TECHNOLOGY CORP.,LTD." + 9 o="Deep Sentinel" A o="HUNAN CHANGSHA HENGJIAN TECHNOLDGY DEVELPMENT CO.,LTD." B o="Smart Component Technologies LTD" C o="Origami Group Limited" D o="OLIMEX Ltd" E o="Shenzhen Fengliyuan Energy Conservating Technology Co. Ltd" +303D51 + 0 o="Fink Telecom Services GmbH" + 1 o="SHENZHEN WLINK TECHNOLOGY CO., LTD." + 2 o="Harman Connected Services Corporation India Pvt. Ltd." + 3 o="S & A Systems" + 4 o="Dspread Technology (Beijing) Inc." + 5 o="Media Hub Digital Smart Home Pty Ltd." + 6 o="Amber-Link Network Technology Co.,Ltd." + 7 o="Destiny Automate Limited" + 8 o="The Heil Co dba AWTI 3rd Eye Cam" + 9 o="Annapurna labs" + A o="TeraNXT Global India Pvt Ltd." + B o="Labman Automation" + C o="TalkGo, Inc." + D o="XOR UK Corporation Limited" + E o="Percent.com" +3043D7 + 0 o="SYMES SA" + 1 o="Shenzhen juduoping Technology Co.,Ltd" + 2 o="Apollo Infoways Private Limited" + 3 o="Luxshare Electronic Technology (Kunshan) LTD" + 4 o="FIBERME COMMUNICATIONS LLC" + 5 o="Shenzhen Mees Hi-Tech Co., Ltd" + 6 o="Sprocomm Technologies Co., Ltd.Guangming Branch" + 7 o="DIGICITI Technology Co.,Ltd" + 8 o="Kesu (Shanghai) Electronic Technology Co., Ltd" + 9 o="PK Solutions LLC" + A o="Bodhi" + B o="Motec GmbH" + C o="Xiaoniu network technology (Shanghai) Co., Ltd." + D o="Annapurna labs" + E o="Guangdong Hongqin Telecom Technology Co. Ltd." 304950 0 o="Guangzhou Lian-med Technology Co.,Ltd." 1 o="ATLI WORLD LIMITED" 2 o="Sercomm Corporation." - 3 o="Morgan Schaffer Inc." + 3 o="Morgan Schaffer" 4 o="ADVANCED MICROWAVE ENGINEERING SRL" 5 o="IK Elektronik GmbH" 6 o="Curb, Inc." @@ -18861,7 +21428,7 @@ FCFEC2 o="Invensys Controls UK Limited" A o="Ledworks SRL" B o="HANGZHOU EV-TECH CO.,LTD" C o="Anacove LLC" - D o="Xio Research, Inc" + D o="Merlyn Mind, Inc." E o="IoTmaxx GmbH" 34008A 0 o="Angee Technologies Ltd." @@ -18870,7 +21437,7 @@ FCFEC2 o="Invensys Controls UK Limited" 3 o="Globex 99 LTD" 4 o="Fotonic i Norden AB" 5 o="Federal Aviation Administration" - 6 o="Sithon Technologies SAS" + 6 o="Sithon Technologies" 7 o="uberGARD Pte. Ltd." 8 o="Shenzhen Andakai Technologies Co., Ltd." 9 o="Keruyun Technoligies(Beijing) Corporation Limited" @@ -18889,8 +21456,10 @@ FCFEC2 o="Invensys Controls UK Limited" 6 o="Life Interface Co., Ltd." 7 o="Pebble Technology" 8 o="Eclipse Information Technologies" + 9 o="Church & Dwight Co., Inc." A o="i3 International Inc." B o="Eginity, Inc." + C o="ClearCaptions LLC" D o="uikismart" E o="ND SatCom GmbH" 34298F @@ -18909,6 +21478,54 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Albert Handtmann Maschinenfabrik GmbH&Co.KG" D o="Keystone Electronic Solutions" E o="ARC Technology Co., Ltd" +344663 + 0 o="China Drive Electric Co.,Ltd(Zhe Jiang)" + 1 o="Chain Reaction Ltd" + 2 o="Amcrest Technologies" + 3 o="LA Clippers" + 4 o="Luminys Systems Corporation" + 5 o="Wuhan IDXLINK Technology Co., Ltd" + 6 o="China Motor Corporation" + 7 o="SHENZHEN HTFUTURE CO., LTD" + 8 o="Bluesoo Tech (HongKong) Co.,Limited" + 9 o="Shanghai Kanghai Information System CO.,LTD." + A o="Shenzhen Shenhong Communication Technology Co., Ltd" + B o="Grohe AG" + C o="mirle automation corporation" + D o="HANGZHOU TASHI INTERNET OF THINGS TECHNOLOGY CO., LTD" + E o="Shenzhen ELECQ Technology Co.,Ltd" +34B5F3 + 0 o="ADDSOFT TECHNOLOGIES LIMITED" + 1 o="Satco Europe GmbH" + 2 o="Inspired Flight" + 3 o="WEAD GmbH" + 4 o="LAUMAS Elettronica s.r.l." + 5 o="Kyokuto Solutions Inc." + 6 o="JENESIS(SHEN ZHEN)CO.,LTD." + 7 o="Hyatta Digital Technology Co., Ltd." + 8 o="Shanghai Sigen New Energy Technology Co., Ltd" + 9 o="Shenzhen PeakVic Technology Co.,Ltd" + A o="Bethlabs(Tianjin)Technology Co.,Ltd." + B o="Aeterlink Corp." + C o="Shenzhen Mifasuolla Smart Co.,Ltd" + D o="Digicom" + E o="Viettel Manufacturing Corporation One Member Limited Liability Company" +34C8D6 + 0 o="Shenzhen Zhangyue Technology Co., Ltd" + 1 o="Shenzhen Xmitech Electronic Co.,Ltd" + 2 o="Guangzhou Linkpi Technology Co. Ltd" + 3 o="kratos network pte.ltd." + 4 o="Chengdu Decentest technology Co., Ltd." + 5 o="PRIZMA GROUP DISTRIBUTION & CONSULTING D.O.O - RUBISEC" + 6 o="Signalwing Corporation" + 7 o="ZXCLAA Technology(Suzhou) Co.,Ltd" + 8 o="Illumina" + 9 o="Laxton Group Limited" + A o="Shenzhen Jooan Technology Co., Ltd" + B o="Yuanzhou Intelligent (Shenzhen) Co., Ltd." + C o="Huizhou KDT Intelligent Display Technology Co. Ltd" + D o="eight" + E o="Shanghai Kanghai Information System CO.,LTD." 34D0B8 0 o="Captec Ltd" 1 o="Shenzhen Bao Lai Wei Intelligent Technology Co., L" @@ -18935,12 +21552,43 @@ FCFEC2 o="Invensys Controls UK Limited" 6 o="Ningbo Hua Gao Mdt Info Tech Ltd" 7 o="Genius Pros" 8 o="Hubitat Inc." - 9 o="Apart Audio NV" + 9 o="Biamp" A o="OrCam Technologies" B o="APG Cash Drawer, LLC" C o="CREW by True Rowing, Inc." D o="HI-TECH.ORG" E o="Annapurna labs" +380525 + 0 o="Groeneveld-BEKA GmbH" + 1 o="Visitech AS" + 2 o="Huizhou Xunchuang Technology Co.,Ltd" + 3 o="Shenzhen Meigao Electronic Equipment Co.,Ltd" + 4 o="Annapurna labs" + 5 o="Scorbit" + 6 o="Shenzhen Blovedream Technology Co., Ltd" + 7 o="Things Of A Feather LLC" + 8 o="Robotize ApS" + 9 o="Annapurna labs" + A o="nbeings private limited" + B o="CAMMAX OPTRONICS CO., LTD." + C o="Christeyns Engineering Kft." + D o="Halliday Holdings PTE. LTD." +381F26 + 0 o="JAESUNG INFORMATION & COMMUNICATION CO.LTD" + 1 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + 2 o="Synamedia" + 3 o="Bosch Automotive Electronics India Pvt. Ltd." + 4 o="Airmaster A/S" + 5 o="Zhejiang Huazhou Intelligent Equipment Co,. Ltd" + 6 o="NOITAC sp. z o.o. sp.k." + 7 o="RCE systems s.r.o." + 8 o="Avon Protection" + 9 o="SMS Evoko Group AB" + A o="Sercomm Corporation." + B o="Deutronic Elektronik GmbH" + C o="Jade Bird Fire Co., Ltd." + D o="HWACHANG CORPORATION" + E o="Annapurna labs" 383A21 0 o="R3C Information(Shenzhen) Co.,Ltd." 1 o="HOBART GmbH" @@ -18973,6 +21621,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="LG Electronics" D o="Annapurna labs" E o="Shenzhen Jixian Technology Co., Ltd." +38A8CD + 0 o="ACiiST Smart Networks Ltd." + 1 o="Fujica System Co., ltd" + 2 o="Beijing Porient Technology Co., Ltd" + 3 o="Dongguan Fyrnetics Co., Ltd" + 4 o="WHITEvoid GmbH" + 5 o="Revo Infratech USA Ltd" + 6 o="cal4care Pte Ltd" + 7 o="Shanghai Kanghai Information System CO.,LTD." + 8 o="Max Way Electronics Co., Ltd." + 9 o="PT Supertone" + A o="NIC Technologii" + B o="Qingdao Hisense Hitachi Air-conditioning Systems Co.,Ltd." + C o="Beijing Aumiwalker technology CO.,LTD" + D o="Annapurna labs" + E o="OUTFORM" 38B19E 0 o="Triple Jump Medical" 1 o="Freedompro Srl" @@ -18997,13 +21661,14 @@ FCFEC2 o="Invensys Controls UK Limited" 4 o="UMLOGICS" 5 o="Dojo-Labs Ltd" 6 o="MATRIXSTREAM TECHNOLOGIES, INC." + 7 o="Sirin Mobile Technologies" 8 o="CeeNex Inc" 9 o="NHS Sistemas de Energia" A o="SECAD SA" - B o="ExaScaler Inc." + B o="PEZY Computing K.K." C o="Ajax Systems Inc" D o="Yellowbrick Data, Inc." - E o="Wyres SAS" + E o="WT-Consulting SAS" 38F7CD 0 o="Polska Fabryka Wodomierzy i Ciep?omierzy FILA" 1 o="NZIA Connect Inc" @@ -19024,7 +21689,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0 o="Edge I&D Co., Ltd." 1 o="WAYTONE (BEIIJNG) COMMUNICATIONS CO.,LTD" 2 o="Smart Solution Technology, Inc" - 3 o="Siemens AG, PG IE R&D" + 3 o="Siemens AG, DI PA AE" 4 o="New Telecom Solutions LLC" 5 o="CaptiveAire Systems Inc." 6 o="Inspero Inc" @@ -19099,6 +21764,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Eltov System" D o="Xiamen Smarttek CO., Ltd." E o="Beijing Donghua Hongtai Polytron Technologies Inc" +3CDC03 + 0 o="RANCOMMUNICATION SOLUTIONS PRIVATE LIMITED" + 1 o="Zaptec" + 2 o="Guangdong Yada Electronics Co.,Ltd" + 3 o="Shenzhen Xinruizhi Industrial Co., Ltd" + 4 o="Annapurna labs" + 5 o="Zhuhai Means Company Limited" + 6 o="ATANS Technology Inc." + 7 o="LINX Corporation" + 8 o="OCEASOFT SAS" + 9 o="ible Technology Inc." + A o="WENET TECHNOLOGY LIMITED" + B o="pakflow" + C o="Shenzhen Longsight Technology Co., Ltd." + D o="Vieletech" + E o="JP Morgan Chase Bank, N.A." 3CFAD3 0 o="Home Control AS" 1 o="Annapurna labs" @@ -19135,6 +21816,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0 o="Lista AG" 1 o="Shanghai Dahua Scale Factory" 2 o="Annapurna labs" + 3 o="EmbeddedArt AB" 4 o="Beijing Smarot Technology Co., Ltd." 5 o="Baumer Bourdon-Haenni" 6 o="Guangzhou LANGO Electronics Technology Co., Ltd." @@ -19202,7 +21884,7 @@ FCFEC2 o="Invensys Controls UK Limited" 5 o="KATO ENGINEERING INC." 6 o="Lennox International Incorporated" 7 o="PALAZZETTI LELIO SPA" - 8 o="Teleepoch Ltd" + 8 o="Great Talent Technology Limited" 9 o="Fast Precision Technologies Co. Ltd." A o="Creanord" B o="URMET Home & Building Solutions Pty Ltd" @@ -19225,6 +21907,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="BIG Climatic Manufacture, Co. LTD, Zhongshan Branch" D o="OMNISENSE SYSTEMS PRIVATE LIMITED TAIWAN BRANCH" E o="Bolin Technology Co., Ltd" +446FD8 + 0 o="Sichuan subao network technology ltd.co." + 1 o="Shenzhen Furuilian Electronic Co.,Ltd." + 2 o="BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş." + 3 o="Shenzhen Mestechs Technology CO., LTD" + 4 o="lb Lautsprecher gmbH" + 5 o="ZHEJIANG SHIP ELECTRONICS & TECHNOLOGY CO., LTD." + 6 o="Anhui GuDao Tech" + 7 o="ITC" + 8 o="Global Telecom Engineering, Inc" + 9 o="Annapurna labs" + A o="ZHEJIANG HIKAILINK TECHNOLOGY Co., Ltd" + B o="Beijing gpthink technology co.,LTD." + C o="Changzhou Haitu Electronic Technology Co.,Ltd" + D o="SCAIME" + E o="CTE" +44A92C + 0 o="ZHEJIANG HISING TECHNOLOGY CO.,LTD" + 1 o="uimcom" + 2 o="Anhui Zhongxin Electronic Technology Co., Ltd." + 3 o="Luxonis Holding Corporation" + 4 o="NetX Networks a.s." + 5 o="Shenzhen Lianfaxun Electronic Technology Co.,Ltd" + 6 o="Ningbo joyson new energy automotive technology Co.,Ltd" + 7 o="Efficient Building Automation Corp." + 8 o="RT-Systemtechnik GmbH" + 9 o="China Electronics Corporation Greatwall Shengfeifan information system Co.,ltd. Hu'nan computer R.&D. Center" + A o="Digiport OU" + B o="Amethystum Storage Technology Co., Ltd" + C o="Cubitech" + D o="NPP KOMETEH JSC" + E o="Annapurna labs" 44D5F2 0 o="TIBA Research & Development (1986) LTD" 1 o="SIMPLERED TECHNOLOGY LTD." @@ -19241,6 +21955,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="neocontrol soluções em automação" D o="Shenzhen Nation RFID Technology Co.,Ltd." E o="Joint-Stock Company Research and Development Center %ELVEES%" +4808EB + 0 o="ELOC8 SRO" + 1 o="Tianjin Jinmu Intelligent Control Technology Co., Ltd" + 2 o="Guangdong Three Link Technology Co., Ltd" + 3 o="Technological Application And Production One Member Liability Company (Tecapro Company)" + 4 o="Quanta Storage Inc." + 5 o="Hangzhou Jianan Technology Co.,Ltd" + 6 o="Aria Networks, Inc." + 7 o="Shenzhen Electron Technology Co., LTD." + 8 o="Dspread Technology (Beijing) Inc." + 9 o="Guangzhou Chuangsou Network Technology Co., Ltd." + A o="Yeacode (Xiamen) Inkjet Inc." + B o="Eruminc Co.,Ltd." + C o="ZHEJIANG AIKE INTELLIGENTTECHNOLOGY CO.LTD" + D o="Silicon Dynamic Networks" + E o="uniline energy systems pvt ltd" 480BB2 0 o="Ridango AS" 1 o="BAJA ELECTRONICS TECHNOLOGY LIMITED" @@ -19257,6 +21987,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="SHENZHEN TOPWELL TECHNOLOGY CO..LTD" D o="M2Lab Ltd." E o="Beijing MFOX technology Co., Ltd." +485E0E + 0 o="Shanghai Kanghai Information System CO.,LTD." + 1 o="Dongguan YEHUO Technology Co.,LTD" + 2 o="Shenzhen Shouchuang Micro Technology Co., Ltd" + 3 o="Shenzhen Anycon Electronics Technology Co.,Ltd" + 4 o="MHE Electronics" + 5 o="GlobalXtreme" + 6 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + 7 o="Shanghai B&A automation.net" + 8 o="ITFC" + 9 o="Cnergee Technologies Private Limited" + A o="AIGNEP SPA" + B o="Vital Oricraft Flows Technology Co., Ltd." + C o="Transom Post OpCo LLC dba Bose Professional" + D o="Huaqin Technology Co.,Ltd" + E o="ELOOM SYSTEM" 4865EE 0 o="DefPower Ltd" 1 o="Gopod Group Limited" @@ -19273,6 +22019,54 @@ FCFEC2 o="Invensys Controls UK Limited" C o="DNV GL" D o="Winn Technology Co.,Ltd" E o="CNU" +48DA35 + 0 o="RBS LLC" + 1 o="Think Engineering" + 2 o="Annapurna labs" + 3 o="Xiamen Magnetic North Co., Ltd" + 4 o="Sphere Com Services Pvt Ltd" + 5 o="Beijing keshengte communication equipment co., ltd" + 6 o="Shenzhen Sipeed Technology Co., Ltd" + 7 o="ERAESEEDS Co.,Ltd." + 8 o="Shenzhen Qianhong Technology Co.,Ltd." + 9 o="Flextronics International Kft" + A o="Auto Meter Products Inc." + B o="Vivid-Hosting, LLC." + C o="Guangzhou Xinhong Communication Technology Co.,Ltd" + D o="NACON LIMITED (HK) LTD" + E o="Neps Technologies Private Limited" +48E663 + 0 o="Huaqian Beijing Technology Co., Ltd" + 1 o="Nanning Nislight Communication Technology Co.,Ltd.," + 2 o="Beijing Jingdong Qianshi Technology Co.,Ltd." + 3 o="MAKERFABS" + 4 o="Smile Security and Survillence Private Limited" + 5 o="Hoypower Energy Co.,Ltd" + 6 o="Shenzhen Huabao New Energy Co.,Ltd" + 7 o="EARWEISS TECHNOLOGY (SHENZHEN) CO,. LTD" + 8 o="Shenzhen Peicheng Technology Co., LTD." + 9 o="AceZone Aps" + A o="Shenzhen Jointelli Technologies Co.,Ltd" + B o="Nakamura-Tome Precision Industry Co.,Ltd." + C o="BEIJING CUNYIN CHENGQI TECHNOLOGY CO., LTD." + D o="Neureality ltd" + E o="Matribox Intelligent Technology co.Ltd." +48E6C6 + 0 o="Shenzhen Oumeihua Technology Co.,Ltd" + 1 o="DEICO MUH. A.S." + 2 o="Satlab" + 3 o="Varjo Technologies Oy" + 4 o="Shenzhen ZK Technology CO.,LTD." + 5 o="Annapurna labs" + 6 o="Moff Inc." + 7 o="Macriot" + 8 o="SANWA ELECTRONIC INSTRUMENT CO.,LTD" + 9 o="Takiguchi Corporation" + A o="AL HAMI INFORMATION TECHNOLOGY - L.L.C" + B o="Q-PAC" + C o="Odin Solutions, S.L. - B73845893" + D o="Digital Matter Pty Ltd" + E o="BEUPSYS" 4C4BF9 0 o="Multitek Elektronik Sanayi ve Ticaret A.S." 1 o="Jiangsu acrel Co., Ltd." @@ -19305,6 +22099,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Fuse" D o="Qingping Technology (Beijing) Co., Ltd." E o="High Infinity Germany" +4C74A7 + 0 o="Shenzhen Timekettle Technologies Co.,Ltd" + 1 o="Shenzhen Hollyland Technology Co.,Ltd" + 2 o="Cyanview" + 3 o="GoCodeIT Inc" + 4 o="Wuxi Micro Innovation Integrated Circuit Design Co., Ltd" + 5 o="AGILITY ROBOTICS, INC." + 6 o="ABB LV Installation Materials Co., Ltd. Beijing" + 7 o="COREIP TECHNOLOGY PRIVATE LIMITED" + 8 o="Annapurna labs" + 9 o="Suzhou XiongLi Technology Inc." + A o="RAONARK" + B o="traplinked Gmbh" + C o="N3com" + D o="ddcpersia" + E o="KYOCERA CORPORATION" 4C917A 0 o="Shenzhen Dangs Science & Technology CO.,LTD" 1 o="Inster Tecnología y Comunicaciones SAU" @@ -19313,7 +22123,7 @@ FCFEC2 o="Invensys Controls UK Limited" 4 o="LumiGrow Inc." 5 o="mtekvision" 6 o="Openeye" - 7 o="S.I.C.E.S. srl" + 7 o="MECCALTE SPA" 8 o="Camsat Przemysław Gralak" 9 o="Hangzhou Hangtu Technology Co.,Ltd." A o="Erlab DFS SAS" @@ -19326,7 +22136,8 @@ FCFEC2 o="Invensys Controls UK Limited" 1 o="Atrie Technology Fzc" 2 o="Diehl Controls Nanjing Co., Ltd." 3 o="Commsignia, Ltd." - 4 o="4D Sistem Ticaret A.S." + 4 o="4TheWall - 4D Sistem A.S" + 5 o="Fastenal IP Company" 6 o="Shandong Senter Electronic Co., Ltd" 7 o="5Voxel Co., Ltd." 8 o="Sercomm Corporation." @@ -19368,6 +22179,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="REMONDE NETWORK" D o="KTC(K-TEL)" E o="Plus One Japan Limited" +4CEA41 + 0 o="Airflying" + 1 o="HawkEye Technology Co.,Ltd" + 2 o="SHENZHEN ATC Technology Co., Ltd" + 3 o="YENSHOW TECHNOLOGY CO.,LTD" + 4 o="Eltroplan Engineering GmbH" + 5 o="ZICHAN J TECHNOLOGY CO.,LTD" + 6 o="Gopod Group Limited" + 7 o="Atos spa" + 8 o="WUXI LATCOS TECHNOLOGY AUTOMATION Co.Ltd." + 9 o="Annapurna labs" + A o="Vortex Infotech Private Limited" + B o="Hangzhou Hortwork Technology Co.,Ltd." + C o="hogotech" + D o="Jiangsu TSD Electronics Technology Co., Ltd" + E o="Aztech Group DOOEL" 500B91 0 o="Igor, Inc." 1 o="SPD Development Company Ltd" @@ -19384,6 +22211,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Diamond Traffic Products, Inc" D o="Shenzhen Lucky Sonics Co .,Ltd" E o="Shenzhen zhong ju Fiber optical Co.Ltd" +50482C + 0 o="Landatel Comunicaciones SL" + 1 o="Annapurna labs" + 2 o="BBPOS Limited" + 3 o="Immunity Networks and Technologies Pvt Ltd" + 4 o="HY-LINE Technology GmbH" + 5 o="Bluefin International Inc" + 6 o="WIKA Mobile Control GmbH & Co.KG" + 7 o="Oliver IQ, Inc." + 8 o="Dongguan Amdolla Electric & Light Material Manufacture Co., Ltd" + 9 o="Soter Technologies" + A o="JUNG HO" + B o="SL Process" + C o="Telecam Technology Co.,Ltd" + D o="KIDO SPORTS CO., LTD." + E o="Harbin Nosean Tese And Control Technology Co.,Ltd" 506255 0 o="Ufanet SC" 1 o="Hagiwara Solutions Co., Ltd" @@ -19400,6 +22243,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="AED Distribution" D o="COTT Electronics" E o="SHINSOFT CO., LTD." +50A030 + 0 o="Gopod Group Limited" + 1 o="XEPIC Corporation Limited" + 2 o="Annapurna labs" + 3 o="RealWear (Shanghai) Intelligent Technology Co. Ltd" + 4 o="Alert Innovation" + 5 o="Jiangsu Jinshi Legend Technology Co.,Ltd" + 6 o="Abacus Research AG" + 7 o="Shenzhen Hewang Electric Co.,Ltd" + 8 o="GE Medical System China Co. Ltd." + 9 o="DPA Microphones A/S" + A o="Missing-Link Oy" + B o="SHANGHAI ZXELINK Co.,Ltd" + C o="GUANGZHOU UNIPOWER COMPUTER CO.,LTD" + D o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + E o="HANKOOK CTEC CO,. LTD." 50A4D0 0 o="TRAXENS" 1 o="Beijing ANTVR Technology Co., LTD" @@ -19431,9 +22290,26 @@ FCFEC2 o="Invensys Controls UK Limited" B o="BRAINWARE TERAHERTA INFORMATION TECHNOLOGY CO.,LTD." C o="Shenzhen Vipstech Co., Ltd" D o="Penny & Giles Aerospace Ltd" + E o="DTEN Inc." +50FACB + 0 o="todoc" + 1 o="Shenzhen Evertones Quantum Technology Co., Ltd." + 2 o="Kyocera AVX Components (Timisoara) SRL" + 3 o="Huaihua Jiannan Electronic Technology Co.,Ltd." + 4 o="Darveen Technology Limited" + 5 o="Shenzhen Hill Technology Co., LTD." + 6 o="1208815047" + 7 o="ZENOPIX TEKNOLOJI SAN VE TIC LTD STI" + 8 o="VeriFone Systems(China),Inc" + 9 o="Bosch Security Systems" + A o="Varex Imaging Finland" + B o="Combined Public Communications, LLC" + C o="The Scotts Company" + D o="Vortex Infotech Private Limited" + E o="Advant sp. z o.o." 50FF99 0 o="Simicon" - 1 o="Coyote Sytem" + 1 o="COYOTE SYSTEM" 2 o="SHENZHEN KINGVT ELECTRONICS CO.,LTD" 3 o="Yongjing Shanghai Electronic Science and Technology" 4 o="IPC Global" @@ -19447,6 +22323,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Goetting KG" D o="Shenzhen Haipengxin Electronic Co., Ltd." E o="Informa LLC" +54083B + 0 o="Shenzhen Liandian Communication Technology Co.LTD" + 1 o="Annapurna labs" + 2 o="NAVITUS LT" + 3 o="Dhyan Networks and Technologies, Inc" + 4 o="Toray Medical Company Limited" + 5 o="shenzhen HAIOT technology co.,ltd" + 6 o="Vector Atomic" + 7 o="ASCS Sp. z o.o." + 8 o="Update Systems Inc." + 9 o="Unicompute Technology Co.,Ltd." + A o="Silex Ipari Automatizálási Zrt." + B o="Korea Bus Broadcasting" + C o="FairPhone B.V." + D o="BHS Corrugated Maschinen- und Anlagenbau GmbH" + E o="Sinclair Technologies" +5491AF + 0 o="Opal-RT Technologies Inc." + 1 o="4MITech" + 2 o="SHENZHEN SANMI INTELLIGENT CO.,LTD" + 3 o="IronLink" + 4 o="DDPAI Technology Co.,Ltd" + 5 o="Shenzhen IDSTE Information Technology Co., LTD" + 6 o="Star Systems International Limited" + 7 o="Hong Telecom Equipment Service Limited" + 8 o="Hunan Quanying Electronics Co. , Ltd." + 9 o="Asiga Pty Ltd" + A o="Zhuhai SHIXI Technology Co.,Ltd" + B o="Hyperconn Pte. ltd" + C o="DanuTech Europe Kft" + D o="Ningbo Joynext Technology Corporation" + E o="Jiangxi Anbaichuan Electric Co.(ABC),Ltd" 549A11 0 o="Shenzhen Excera Technology Co.,Ltd." 1 o="SpearX Inc." @@ -19468,7 +22376,7 @@ FCFEC2 o="Invensys Controls UK Limited" 1 o="ShenZhen Smart&Aspiration Co.,LTD" 2 o="genua GmbH" 3 o="I-MOON TECHNOLOGY CO., LIMITED" - 4 o="Shenzhen C & D Electronics Co., Ltd." + 4 o="Shanghai Kanghai Information System CO.,LTD." 5 o="AUSOUNDS INTELLIGENCE, LLC" 6 o="Hannto Technology Co., Ltd" 7 o="RED Hydrogen LLC" @@ -19481,6 +22389,7 @@ FCFEC2 o="Invensys Controls UK Limited" E o="Nederman Holding AB" 58208A 0 o="Annapurna labs" + 1 o="BEIJING SENFETECH CORPORATION LTD." 2 o="MARS DIGI TECH CO .,LTD" 3 o="Aggregate Co.,Ltd." 4 o="TRING" @@ -19491,9 +22400,123 @@ FCFEC2 o="Invensys Controls UK Limited" 9 o="Suzhou Ruilisi Technology Ltd." A o="Conductix-Wampfler" B o="Infodev Electronic Designers Intl." + C o="Jiangsu Zhonganzhixin Communication Technology Co." D o="SAMBO HITECH" E o="UPM Technology, Inc" +5823BC + 0 o="Shenzhen Huasifei Technology Co., Ltd" + 1 o="Lens Technology (Xiangtan) Co.,Ltd" + 2 o="Great Wall Power Supply Technology Co., Ltd." + 3 o="SHSYSTEM.Co.,LTD" + 4 o="Shanghai Kanghai Information System CO.,LTD." + 5 o="Shenzhen Zhixuan Network Technology Co., Ltd." + 6 o="NEXT VISION" + 7 o="Shenzhen MinDe Electronics Technology Ltd." + 8 o="Wuhan Rayoptek Co.,Ltd" + 9 o="Annapurna labs" + A o="Hangzhou Xindatong Communication Technology Co.,Ltd." + B o="Annapurna labs" + C o="Yuyao Sunny Optical Intelligence Technology Co., Ltd" + D o="New Energy Technology Co.,Ltd" + E o="BROADRADIO INTERNATIONAL PTE.LTD." +5847CA + 0 o="LITUM BILGI TEKNOLOJILERI SAN. VE TIC. A.S." + 1 o="Hexagon Metrology Services Ltd." + 2 o="ONAWHIM (OAW) INC." + 3 o="Fujian Helios Technologies Co., Ltd." + 4 o="Future Tech Development FZC LLC" + 5 o="Huizhou Jiemeisi Technology Co., Ltd" + 6 o="Shanghai Kanghai Information System CO.,LTD." + 7 o="Shenzhen Meigao Electronic Equipment Co.,Ltd" + 8 o="Birger Engineering, Inc." + 9 o="Kingnuo Intelligent Technology (Jiaxing) Co., Ltd." + A o="Powder Watts, LLC" + B o="Suzhou Laisai Intelligence Technology Co.,Ltd" + C o="SMS ELECTRIC CO., LTD ZHENGZHOU" + D o="PRACTEK Technology Co., Ltd." + E o="AZURE SUMMIT TECHNOLOGY" +584849 + 0 o="Beijing Zhongyuanyishang Technology Co Ltd" + 1 o="SKAARHOJ ApS" + 2 o="X-speed lnformation Technology Co.,Ltd" + 3 o="Viper Design LLC" + 4 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + 5 o="Hubei Shudi Communication Technology Co., Ltd" + 6 o="Shenzhen hongqifu Technology Co., Ltd" + 7 o="Shandong Aotai Electric Co., LTD." + 8 o="STACKFORCE GmbH" + 9 o="Shenzhen Tongye Technology Co.,Ltd" + A o="Waoo" + B o="Daatrics LTD" + C o="Haag-Streit AG" + D o="Telegaertner Elektronik GmbH" + E o="Avadesign Technology Co. Ltd." +587607 + 0 o="HARDWARIO a.s." + 1 o="Shing Chong International Co., Ltd." + 2 o="Controlway(Suzhou) Electric Co., Ltd." + 3 o="Shenzhen HANSWELL Technology Co., Ltd." + 4 o="Beijing FHZX Science and Technology Co., Ltd." + 5 o="RealSense Inc." + 6 o="Shade Innovations" + 7 o="Oceansbio" + 8 o="Olte Climate sp. z o.o." + 9 o="Suprock Technologies" + A o="INP Technologies Ltd" + B o="Rwaytech" + C o="BOE Technology Group Co., Ltd." + D o="Hubcom Techno System LLP" + E o="SHENZHEN GAGO ELECTRONICS CO.,LTD" +5895D8 + 0 o="Shenzhen DOOGEE Hengtong Technology CO.,LTD" + 1 o="shenzhen UDD Technologies,co.,Ltd" + 2 o="Sercomm Corporation." + 3 o="Tonnet Telecommunication International Co., Ltd." + 4 o="Unity Surveillance, Inc." + 5 o="elgris UG" + 6 o="Norgren Manufacturing Co., Ltd." + 7 o="Epiphan Systems Inc" + 8 o="Shanghai Kanghai Information System CO.,LTD." + 9 o="Loftie" + A o="Peak Communications Limited" + B o="SuZhou Ruishengwei Intelligent Technology Co.,Ltd" + C o="LOCTEK ERGONOMIC TECHNOLOGY CORP." + D o="Alunos AG" + E o="Gmv sistemas SAU" +58AD08 + 0 o="NEOiD" + 1 o="AINOS INC. TAIWAN BRANCH" + 2 o="Beijing ShiYan Technology Co., Ltd" + 3 o="Fujian Ruihe Technology Co., Ltd." + 4 o="Shenzhen Yumutek co.,ltd" + 5 o="Vanguard Protex Global" + 6 o="ACKSYS" + 7 o="Jiangsu Delianda Intelligent Technology Co., Ltd." + 8 o="Mobileye Vision Technologies LTD" + 9 o="Wuxi Qinghexiaobei Technology Co., Ltd." + A o="Gateview Technologies" + B o="Triton Sensors" + C o="Also, Inc." + D o="Suzhou Huichuan United Power System Co.,Ltd" + E o="MileOne Technologies Inc" +58C41E + 0 o="Guangzhou TeleStar Communication Consulting Service Co., Ltd" + 1 o="JLZTLink Industry ?Shen Zhen?Co., Ltd." + 2 o="Truesense Srl" + 3 o="Lemco IKE" + 4 o="BEIJING FIBRLINK COMMUNICATIONS CO.,LTD." + 5 o="Zhejiang Cainiao Supply Chain Management Co.,Ltd" + 6 o="NetChain Co.,Ltd." + 7 o="HwaCom Systems Inc." + 8 o="Xiaomi EV Technology Co., Ltd." + 9 o="ShenZhen Heng Yue Industry Co.,Ltd" + A o="GeBE Elektronik und Feinwerktechnik GmbH" + B o="Pulse Structural Monitoring Ltd" + C o="PQTEL Network Technology Co. , Ltd." + D o="Munich Electrification GmbH" + E o="Beijing Qiangyun Innovation Technology Co.,Ltd" 58E876 + 0 o="Zhuhai Raysharp Technology Co.,Ltd" 1 o="Beijing Perabytes IS Technology Co., Ltd" 2 o="Coala Life AB" 3 o="McWong International Inc" @@ -19516,7 +22539,7 @@ FCFEC2 o="Invensys Controls UK Limited" 4 o="Inforce Computing Inc." 5 o="Shenzhen Siecom Communication Technology Development Co.,Ltd." 6 o="Timex Group USA Inc" - 7 o="Open Roads Consulting, Inc." + 7 o="Prometheus Security Group Global, Inc." 8 o="Shanghai Qianjin Electronic Equipment Co. Ltd" 9 o="Hi-Target Surveying Instrument Co., Ltd." A o="Xmodus Systems GmbH" @@ -19524,6 +22547,54 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Excenon Mobile Technology Co., Ltd." D o="XIAMEN LEELEN TECHNOLOGY CO.,LTD" E o="Applied Device Technologies" +5C5A4C + 0 o="Jinchuan Group Co.,Ltd" + 1 o="Orchid Products Limited" + 2 o="ITS Partner (O.B.S) S.L." + 3 o="Ferroamp AB (publ)" + 4 o="YIHUA COMMUNICATIONS(HUIZHOU)CO.,LTD" + 5 o="Annapurna labs" + 6 o="Shenzhen Sunsoont Technology Co.,Ltd" + 7 o="Ace Computers" + 8 o="Spot AI, Inc." + 9 o="Linktech Systerm Technology Co.,Ltd" + A o="Chengdu Skysoft Info&Tech Co.,Ltd." + B o="ESME SOLUTIONS" + C o="tarm AG" + D o="Aeva, Inc." + E o="AI-RIDER CORPORATION" +5C5C75 + 0 o="Elite Link" + 1 o="TECTOY S.A" + 2 o="youyeetoo" + 3 o="O-cubes Shanghai Microelectronics Technology Co., Ltd" + 4 o="Bkeen International Corporated" + 5 o="YingKeSong Pen Industry Technology R&D Center Shenzhen Co Ltd" + 6 o="Ebet Systems" + 7 o="UOI TECHNOLOGY CORPORATION" + 8 o="hassoun Gulf Industrial Company" + 9 o="Spectrum FiftyNine BV" + A o="InoxSmart by Unison Hardware" + B o="Anhui Haima Cloud Technology Co.,Ltd" + C o="Siemens Sensors & Communication Ltd." + D o="Shenzhen Jooan Technology Co., Ltd" + E o="Deuta America" +5C6AEC + 0 o="Acuity Brands Lighting" + 1 o="Shanghai Smilembb Technology Co.,LTD" + 2 o="Shenzhen Mingyue Technology lnnovation Co.,Ltd" + 3 o="Shanghai Yunsilicon Technology Co., Ltd." + 4 o="GeneTouch Corp." + 5 o="Exaterra Ltd." + 6 o="FEMTOCELL" + 7 o="Nippon Pulse Motor Co., Ltd." + 8 o="Optiver Services B.V." + 9 o="Shanghai Alway Information Technology Co., Ltd" + A o="Shenzhen Olax Technology CO.,Ltd" + B o="Shenzhen Anked vision Electronics Co.Ltd" + C o="Suzhou Huaqi Intelligent Technology Co., Ltd." + D o="DarkVision Technologies Inc." + E o="Saab Seaeye Ltd" 5C857E 0 o="28 Gorilla" 1 o="Sichuan C.H Control Technology Co., Ltd." @@ -19540,6 +22611,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Annapurna labs" D o="Nautech Electronics Ltd" E o="Guoyi Liangzi (Hefei) Technology Co., Ltd(CIQTEK)" +5C87D8 + 0 o="Nanjing Shufan Information Technology Co., Ltd." + 1 o="COMET SYSTEM, s.r.o." + 2 o="Freeus LLC" + 3 o="Shenzhen Beiens Import and Export Co.,Ltd" + 4 o="TELFI TECHNOLOGIES PRIVATE LIMITED" + 5 o="Hangzhou Advanced Intelligent Manufacturing Systems Co.,Ltd." + 6 o="Shanghai Jianyi Technology Co., Ltd" + 7 o="Tradewinds Networks Incorporated" + 8 o="fmad engineering" + 9 o="Annapurna labs" + A o="Piscis Networks Private Limited" + B o="Credo Diagnostics Biomedical Pte. Ltd. Taiwan branch(SINGAPORE)" + C o="DRAGONGLASS TECHNOLOGY(SHENZHEN)CO.,LTD." + D o="Zilia Technologies" + E o="Beijing Townsky Technology Co.,Ltd" 5CF286 0 o="Hangzhou Signwei Electronics Technology Co., Ltd" 1 o="iSon Tech" @@ -19556,6 +22643,54 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Sunpet Industries Limited" D o="BrightSky, LLC" E o="Daisen Electronic Industrial Co., Ltd." +5CF838 + 0 o="Hunan Guoke supercomputer Technologu Co.,LTD" + 1 o="Bergische Ingenieure GmbH" + 2 o="The idiot company" + 3 o="Shenzhen Tuozhu Technology Co., Ltd." + 4 o="Shanghai Zenchant Electornics Co.,LTD" + 5 o="DesignA Electronics Limited" + 6 o="Kunshan Baifeng Intelligent Technology Co.,Ltd" + 7 o="T-CHIP INTELLIGENT TECHNOLOGY CO.,LTD." + 8 o="Stonex srl" + 9 o="Benison Tech" + A o="Semsotec GmbH" + B o="trilogik GmbH" + C o="Sichuan Zhongguang Lightning Protection Technologies Co., Ltd." + D o="Watts A\S" + E o="Guangzhou Duge Technology Co.,LTD" +601592 + 0 o="S Labs sp. z o.o." + 1 o="RTDS Technologies Inc." + 2 o="EDA Technology Co.,LTD" + 3 o="OSI TECHNOLOGY CO.,LTD." + 4 o="Zaptec" + 5 o="Comfit HealthCare Devices Limited" + 6 o="BEIJING KUANGSHI TECHNOLOGY CO., LTD" + 7 o="Unipi Technology s.r.o." + 8 o="Yangzhou Wanfang Electronic Technology,CO .,Ltd." + 9 o="JIANGSU SUNFY TECHNOLOGIES HOLDING CO.,LTD." + A o="insensiv GmbH" + B o="Annapurna labs" + C o="PSS Co., Ltd" + D o="REMOWIRELESS COMMUNICATION INTERNATIONAL CO.,LIMITED" + E o="Annapurna labs" +60159F + 0 o="yst" + 1 o="Klaric GmbH & Co. KG" + 2 o="Voxai Technology Co.,Ltd." + 3 o="Hubei HanRui Jing Automotive Intelligent System Co.,Ltd" + 4 o="MICRO-TEX PTE.LTD." + 5 o="Beijing Yillion Deepcompute Technology Co., Ltd" + 6 o="SHENZHEN DAERXIN TECHNOLOGY CO.,LTD" + 7 o="Critical Loop" + 8 o="HUIZHOU BOHUI CONNECTION TECHNOLOGY CO., LTD" + 9 o="Shenzhen NTS Technology Co.,Ltd" + A o="QingDao Hiincom Electronics Co., Ltd" + B o="Lens Technology(Xiangtan) Co.,Ltd" + C o="Terrestar Solutions Inc" + D o="FF Videosistemas SL" + E o="MaiaSpace" 6095CE 0 o="Siema Applications" 1 o="Ponoor Experiments Inc." @@ -19572,6 +22707,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Synamedia" D o="GovComm" E o="VNS Inc." +60A434 + 0 o="UNIQON" + 1 o="EEG Enterprises Inc" + 2 o="Hangzhou Zhongxinghui Intelligent Technology Co., Ltd." + 3 o="Shenzhen lncar Technology Co.,Ltd" + 4 o="Human-life Information Platforms Institute" + 5 o="Hangzhou Lanly Technology Co., Ltd." + 6 o="Lechpol Electronics Leszek Sp.k." + 7 o="Drov Technologies" + 8 o="TIME ENGINEERING CO., LTD." + 9 o="Shenzhen HantangFengyun Technology Co.,Ltd" + A o="Scancom" + B o="Bweetech Electronics Technology (Shanghai) Co.,Ltd" + C o="Annapurna labs" + D o="Kaynes technology India Ltd" + E o="KNVISION" 60D7E3 0 o="Avalun" 1 o="Elap s.r.l." @@ -19598,10 +22749,28 @@ FCFEC2 o="Invensys Controls UK Limited" 6 o="Hunan Voc Acoustics Technology Co., Ltd." 7 o="Dongguan Huili electroacoustic Industrial Co.,ltd" 8 o="Shenzhen Huanyin Electronics Ltd." + 9 o="Honeywell Analytics Ltd" A o="Product Development Associates, Inc." + B o="Alphago GmbH" C o="SHEN ZHEN FUCHANG TECHNOLOGY Co.,Ltd." D o="ZHEJIANG MOORGEN INTELLIGENT TECHNOLOGY CO.,LTD" E o="ATG UV Technology" +6433B5 + 0 o="Duomondi International Development Co., Ltd." + 1 o="Huaqin Telecom Technology Co.,Ltd." + 2 o="Adesso, Inc" + 3 o="Wingtech Mobile Communications Co.,Ltd" + 4 o="Eagle Eye Networks, Inc" + 5 o="Revo Smart Technologies co.,limited" + 6 o="MICROIT SRL" + 7 o="ABB Electrification Smart Power (ELSP)" + 8 o="LACO Technologies" + 9 o="Annapurna labs" + A o="Hometek Eletronics Co., Ltd" + B o="electroCore Inc." + C o="Geksacon" + D o="IIYAMA CORPORATION" + E o="University of Texas at Austin" 646266 0 o="MiiVii Dynamics Technology CO.,LTD" 1 o="Annapurna labs" @@ -19610,7 +22779,7 @@ FCFEC2 o="Invensys Controls UK Limited" 4 o="Redstone Systems, Inc." 5 o="Bühler AG" 6 o="Pass & Seymour, Inc d/b/a Legrand" - 7 o="Shenzhen C & D Electronics Co., Ltd." + 7 o="Shanghai Kanghai Information System CO.,LTD." 8 o="Leontech Limited" 9 o="Chunghwa System Integration Co., Ltd." A o="Sensoro Co., Ltd." @@ -19634,6 +22803,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Bridgeport Instruments, LLC" D o="Dongyang unitech.co.ltd" E o="ChengDu KeChuang LongXin Sci-tech Co.,Ltd" +687912 + 0 o="PCTEL, Inc." + 1 o="Annapurna labs" + 2 o="CNDI CO.,LTD" + 3 o="Stephan Electronics SARL" + 4 o="McDonald's Corporation" + 5 o="Copper Labs, Inc." + 6 o="APPOTRONICS CO., LTD" + 7 o="Babbit and Friends, SIA" + 8 o="ShangHai Aigentoo Information Technology Co., Ltd" + 9 o="LEAPS s.r.o." + A o="Wingtech Mobile Communications Co., Ltd." + B o="Swisscom Broadcast Ltd" + C o="Globus Infocom Limited" + D o="Neurolab" + E o="Ametek Solidstate Controls" 6891D0 0 o="Central Railway Manufacturing" 1 o="Multi Alarm Zrt." @@ -19650,6 +22835,70 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Spraying Systems Co." D o="Fuzhou x-speed information technology Co.,Ltd." E o="Outstanding Technology Co., Ltd." +68DA73 + 0 o="Annapurna labs" + 1 o="DTEN Inc." + 2 o="SHENZHEN ALLDOCUBE SCIENCE AND TECHNOLOGY CO., LTD." + 3 o="Softronics Ltd" + 4 o="Agramkow A/S" + 5 o="Shenzhen Xin hang xian Electronics Co., LTD" + 6 o="Global Networks ZEN-EI Co., Ltd" + 7 o="Haven Lighting" + 8 o="STEL FIBER ELECTRONICS INDIA PRIVATE LIMITED" + 9 o="Nadex Machinery(Shanghai) Co.,Ltd" + A o="Shenzhen Haiyingzhilian Industrial Co., Ltd." + B o="Gamber-Johnson LLC" + C o="Delta Surge Inc." + D o="Sichuan GFS Information Technology Co.Ltd" + E o="Synamedia" +6C1524 + 0 o="DEFA AS" + 1 o="Telsonic AG" + 2 o="Linkplay" + 3 o="Forcite Helmet Systems Pty Ltd" + 4 o="Magicyo Technology CO., LTD." + 5 o="Shenzhen Electron Technology Co., LTD." + 6 o="Kunshan Abram Software Technology Co.,Ltd." + 7 o="Motium Pty Ltd" + 8 o="ShenZhen Chainway Information Technology Co., Ltd." + 9 o="D-HOME SMAART" + A o="STERIS" + B o="Annapurna labs" + C o="CORAL-TAIYI" + D o="SYMLINK CORPORATION" + E o="AEC s.r.l." +6C27C8 + 0 o="Looki Tech Limited" + 1 o="Chongqing Seres Phoenix Intelligent Innovation Technology Co.,Ltd." + 2 o="Reduxi GmbH" + 3 o="IDIS Nederland BV" + 4 o="PickUp Kft." + 5 o="Yuanzhong International Trade Co.,Limited" + 6 o="Jiayuan Technology Co.,Ltd" + 7 o="BEIJING CUNYIN CHENGQI TECHNOLOGY CO., LTD." + 8 o="Wuhan Baoji Electronic Technology Co.,Ltd" + 9 o="Mitsubishi Electric Europe B.V UK Branch" + A o="HICI Digital Power Technology Co.,Ltd." + B o="Sensio AS" + C o="SHENZHEN EVIEW GPS TECHNOLOGY" + D o="BG T&A CO." + E o="ScentedVents" +6C2ADF + 0 o="Ademco Inc. dba ADI Global Distribution" + 1 o="Xi'an Xindian Equipment Engineering Center Co., Ltd" + 2 o="DAIKO ELECTRIC CO.,LTD" + 3 o="Johnson Controls IR, Sabroe Controls" + 4 o="Zhejiang Eternal Automation Sci-Tec Co., Ltd" + 5 o="Xinjiang Ying Sheng Information Technology Co., Ltd." + 6 o="ITI Limited" + 7 o="RootV" + 8 o="Beijing Yisheng Chuanqi Technology Co., Ltd." + 9 o="Simpleway Europe a.s." + A o="JBF" + B o="MOBA Mobile Automation AG" + C o="VNETS INFORMATION TECHNOLOGY LTD." + D o="Sichuan Huidian Qiming Intelligent Technology Co.,Ltd" + E o="WeatherFlow-Tempest, Inc" 6C5C3D 0 o="ShenZhen Hugsun Technology Co.,Ltd." 1 o="Shenzhen Justek Technology Co., Ltd" @@ -19666,6 +22915,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="choyang powertech" D o="Syowatsusinkougyo Co.,Ltd." E o="Clinton Electronics Corporation" +6C9308 + 0 o="Braums" + 1 o="WATERFORD CONSULTANTS LLC" + 2 o="ZHEJIANG XIAN DA Environmental Technology Co., Ltd" + 3 o="LightnTec GmbH" + 4 o="Estelar s.r.o" + 5 o="Shanghai Kanghai Information System CO.,LTD." + 6 o="Uconfree technology(shenzhen)limited" + 7 o="Liberty AV Solutions" + 8 o="Hangzhou Risco System Co.,Ltd" + 9 o="Shenzhen DOOGEE Hengtong Technology CO., LTD" + A o="Shenzhen TOPWAY Technology Co.,LTD" + B o="Shenzhen EZpro Sound & Light Technology Co., Ltd." + C o="Shenzhen haichangxing Technology Co., Ltd." + D o="Annapurna labs" + E o="ANDDORO LLC" 6CDFFB 0 o="Shenzhen HDCVT Technology" 1 o="Chongqing Baoli Yota Technologies Limited" @@ -19682,6 +22947,54 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Toucan Systems Ltd" D o="Nanjing Buruike Electronics Technology Co., Ltd." E o="Beijing Fimi Technology Co., Ltd." +700692 + 0 o="Techology, LLC" + 1 o="Beijing Fortech Microsystems., Co., Ltd." + 2 o="Scud (Fujian) Electronics Co.,Ltd" + 3 o="BOSSCCTV CO., LTD" + 4 o="Fusiostor Technologies Private Limited" + 5 o="CANAAN CREATIVE CO.,LTD." + 6 o="Hangzhou Clounix Technology Limited" + 7 o="DCNET SOLUTIONS INDIA PVT LTD" + 8 o="JMA Wireless" + 9 o="Shenzhen Lingwei Technology Co., Ltd" + A o="Munters" + B o="SWIT Electronics Co.,Ltd" + C o="ScoreBird, LLC" + D o="Skyware Protech Limited" + E o="Ganghsan Guanglian" +7050E7 + 0 o="Shanghai Kanghai Information System CO.,LTD." + 1 o="Annapurna labs" + 2 o="Electronic's Time SRL" + 3 o="Skychers Creations ShenZhen Limited" + 4 o="Quantumdoor Technologies, Inc." + 5 o="Wall Box Chargers, S.L." + 6 o="Nippon Pulse America, Inc." + 7 o="Yoctopuce" + 8 o="Shenzhen Dangs Science and Technology CO.,Ltd." + 9 o="Elastics.cloud" + A o="Guangzhou Tianhe High Tech Industrial Development Zone Zhongsheng Electrical Limited Company" + B o="Beijing Shannoncyber Technology Co.,Ltd" + C o="shenzhen newbridge communication equipment CO.,LTD" + D o="Eta Compute Inc." + E o="KFBIO (KONFOONG BIOINFORMATION TECH CO.,LTD)" +705A6F + 0 o="Thyracont Vacuum Instruments GmbH" + 1 o="BMR s.r.o." + 2 o="Tyromotion GmbH" + 3 o="Wavelab Telecom Equipment (GZ) Ltd." + 4 o="Vaiotik Co., Ltd" + 5 o="Acer Connect" + 6 o="Earfun Technology (HK) Limited" + 7 o="WiBASE Industrial Solutions Inc." + 8 o="LUAN Industry and Commerce Co., Ltd" + 9 o="Annapurna labs" + A o="Annapurna labs" + B o="Callidus trading, spol. s r.o." + C o="CoolR Group Inc" + D o="PICadvanced SA" + E o="Hall Technologies" 706979 0 o="Full Solution Telecom" 1 o="Linksys Telecom Shenzhen CO., LTD" @@ -19714,6 +23027,7 @@ FCFEC2 o="Invensys Controls UK Limited" 001 o="SOREDI touch systems GmbH" 002 o="Gogo BA" 003 o="ANYROAM" + 004 o="LEIDOS" 005 o="CT Company" 006 o="Piranha EMS Inc." 007 o="SENSONEO" @@ -19733,11 +23047,12 @@ FCFEC2 o="Invensys Controls UK Limited" 015 o="EN ElectronicNetwork Hamburg GmbH" 016 o="Guardian Controls International Ltd" 017 o="FTG Corporation" + 018 o="DELITECH GROUP" 019 o="Transit Solutions, LLC." 01A o="Cubro Acronet GesmbH" 01B o="AUDI AG" 01C o="Kumu Networks" - 01D o="Weigl Elektronik & Mediaprojekte" + 01D o="Weigl GmbH & Co KG" 01E o="ePOINT Embedded Computing Limited" 01F o="SPX Flow Technology BV" 020 o="MICRO DEBUG, Y.K." @@ -19752,6 +23067,7 @@ FCFEC2 o="Invensys Controls UK Limited" 029 o="Marimo electronics Co.,Ltd." 02A o="BAE Systems Surface Ships Limited" 02B o="Scorpion Precision Industry (HK)CO. Ltd." + 02C o="Iylus Inc." 02D o="NEXTtec srl" 02E o="Monnit Corporation" 02F o="LEGENDAIRE TECHNOLOGY CO., LTD." @@ -19761,6 +23077,7 @@ FCFEC2 o="Invensys Controls UK Limited" 033 o="Sailmon BV" 034 o="Digital Systems Engineering" 035 o="HKW-Elektronik GmbH" + 036 o="Vema Venturi AB" 037 o="EIFFAGE ENERGIE ELECTRONIQUE" 038 o="DONG IL VISION Co., Ltd." 039 o="DoWoo Digitech" @@ -19785,6 +23102,7 @@ FCFEC2 o="Invensys Controls UK Limited" 04C o="mapna group" 04D o="Sicon srl" 04E o="HUGEL GmbH" + 04F o="EVPU Defence a.s." 050 o="Compusign Systems Pty Ltd" 051 o="JT" 052 o="Sudo Premium Engineering" @@ -19801,11 +23119,12 @@ FCFEC2 o="Invensys Controls UK Limited" 05D o="KOMS Co.,Ltd." 05E o="VITEC" 05F o="UNISOR MULTISYSTEMS LTD" - 060 o="RCH Vietnam Limited Liability Company" + 060 o="RCH SPA" 061 o="IntelliDesign Pty Ltd" 062 o="RM Michaelides Software & Elektronik GmbH" 063 o="PoolDigital GmbH & Co. KG" 064 o="AB PRECISION (POOLE) LTD" + 065 o="EXATEL" 066 o="North Pole Engineering, Inc." 067 o="NEOPATH INTEGRATED SYSTEMS LTDA" 068 o="Onethinx BV" @@ -19822,6 +23141,7 @@ FCFEC2 o="Invensys Controls UK Limited" 073 o="Liteon Technology Corporation" 074 o="Orlaco Products B.V." 075 o="Mo-Sys Engineering Ltd" + 076 o="Private Enterprise %Scientific and Production Private Enterprise%Sparing-Vist Center%%" 077 o="InAccess Networks SA" 078 o="OrbiWise SA" 079 o="CheckBill Co,Ltd." @@ -19842,7 +23162,7 @@ FCFEC2 o="Invensys Controls UK Limited" 088 o="OptiScan Biomedical Corp." 089 o="Kazdream Technologies LLP" 08A o="MB connect line GmbH Fernwartungssysteme" - 08B o="Peter Huber Kaeltemaschinenbau AG" + 08B o="Peter Huber Kaeltemaschinenbau SE" 08C o="Airmar Technology Corp" 08D o="Clover Electronics Technology Co., Ltd." 08E o="Beijing CONvision Technology Co.,Ltd" @@ -19857,8 +23177,9 @@ FCFEC2 o="Invensys Controls UK Limited" 097 o="Avant Technologies" 098 o="Alcodex Technologies Private Limited" 099 o="Schwer+Kopka GmbH" - 09A o="Akse srl" + 09A o="AKSE srl" 09B o="Jacarta Ltd" + 09C o="Cardinal Kinetic" 09D o="PuS GmbH und Co. KG" 09E o="MobiPromo" 09F o="COMTECH Kft." @@ -19892,7 +23213,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0BB o="AnaPico AG" 0BC o="Practical Software Studio LLC" 0BD o="Andium" - 0BE o="ChamSys Ltd" + 0BE o="Chamsys Ltd" 0BF o="Den Automation" 0C0 o="Molu Technology Inc., LTD." 0C1 o="Nexus Technologies Pty Ltd" @@ -19928,7 +23249,9 @@ FCFEC2 o="Invensys Controls UK Limited" 0DF o="B.E.A. sa" 0E0 o="PLCiS" 0E1 o="MiWave Consulting, LLC" + 0E2 o="JESE Ltd" 0E3 o="SinTau SrL" + 0E4 o="Walter Müller AG" 0E5 o="Delta Solutions LLC" 0E6 o="Nasdaq" 0E7 o="Pure Air Filtration" @@ -19953,6 +23276,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0FA o="InsideRF Co., Ltd." 0FB o="Cygnus LLC" 0FC o="vitalcare" + 0FD o="JSC %Ural Factories%" 0FE o="Vocality International Ltd" 0FF o="INTERNET PROTOCOLO LOGICA SL" 100 o="Gupsy GmbH" @@ -19979,11 +23303,15 @@ FCFEC2 o="Invensys Controls UK Limited" 115 o="Welltec Corp." 116 o="Momentum Data Systems" 117 o="SysCom Automationstechnik GmbH" + 118 o="Macromatic Industrial Controls, Inc." + 119 o="YPP Corporation" + 11A o="Mahindra Electric Mobility Limited" 11B o="HoseoTelnet Inc..." 11C o="Samriddi Automations Pvt. Ltd." 11D o="Dakton Microlabs LLC" + 11E o="KBPR LLC" 11F o="Geppetto Electronics" - 120 o="GSP Sprachtechnologie GmbH" + 120 o="Televic Rail GmbH" 121 o="Shenzhen Luxurite Smart Home Ltd" 122 o="Henri Systems Holland bv" 123 o="Amfitech ApS" @@ -19991,6 +23319,7 @@ FCFEC2 o="Invensys Controls UK Limited" 125 o="Securolytics, Inc." 126 o="AddSecure Smart Grids" 127 o="VITEC" + 128 o="AKSE srl" 129 o="OOO %Microlink-Svyaz%" 12A o="Elvys s.r.o" 12B o="RIC Electronics" @@ -20005,6 +23334,7 @@ FCFEC2 o="Invensys Controls UK Limited" 134 o="Conjing Networks Inc." 135 o="DORLET SAU" 136 o="Miguel Corporate Services Pte Ltd" + 137 o="Subject Link Inc" 138 o="SMITEC S.p.A." 139 o="Tunstall A/S" 13A o="DEUTA-WERKE GmbH" @@ -20012,7 +23342,7 @@ FCFEC2 o="Invensys Controls UK Limited" 13C o="Detec Systems Ltd" 13D o="Elsist Srl" 13E o="Stara S/A Indústria de Implementos Agrícolas" - 13F o="Farmobile" + 13F o="Farmobile, LLC" 140 o="Virta Laboratories, Inc." 141 o="M.T. S.R.L." 142 o="DAVE SRL" @@ -20035,15 +23365,17 @@ FCFEC2 o="Invensys Controls UK Limited" 153 o="Schneider Electric Motion USA" 154 o="Walk Horizon Technology (Beijing) Co., Ltd." 155 o="Sanwa New Tec Co.,Ltd" + 156 o="Rivercity Innovations Ltd." 157 o="Shanghai Jupper Technology Co.Ltd" 158 o="EAX Labs s.r.o." - 159 o="RCH Vietnam Limited Liability Company" + 159 o="RCH SPA" 15A o="ENABLER LTD." 15B o="Armstrong International, Inc." 15C o="Woods Hole Oceanographic Institution" 15D o="Vtron Pty Ltd" 15E o="Season Electronics Ltd" 15F o="SAVRONİK ELEKTRONİK" + 160 o="European Synchrotron Radiation Facility" 161 o="MB connect line GmbH Fernwartungssysteme" 162 o="ESPAI DE PRODUCCIÓ I ELECTRÓNI" 163 o="BHARAT HEAVY ELECTRICALS LIMITED" @@ -20056,6 +23388,7 @@ FCFEC2 o="Invensys Controls UK Limited" 16A o="4Jtech s.r.o." 16B o="IOT Engineering" 16C o="OCEAN" + 16D o="BluB0X Security, Inc." 16E o="Jemac Sweden AB" 16F o="NimbeLink Corp" 170 o="Mutelcor GmbH" @@ -20064,6 +23397,7 @@ FCFEC2 o="Invensys Controls UK Limited" 173 o="National TeleConsultants LLC" 174 o="Carlson Wireless Technologies Inc." 175 o="Akribis Systems" + 176 o="Larraioz Elektronika" 177 o="Wired Broadcast Ltd" 178 o="Gamber Johnson-LLC" 179 o="ALTRAN UK" @@ -20095,15 +23429,19 @@ FCFEC2 o="Invensys Controls UK Limited" 193 o="ERA TOYS LIMITED" 194 o="Husty M.Styczen J.Hupert Sp.J." 195 o="Ci4Rail" + 196 o="YUYAMA MFG Co.,Ltd" 197 o="Lattech Systems Pty Ltd" + 198 o="Beijing Muniulinghang Technology Co., Ltd" 199 o="Smart Controls LLC" 19A o="WiSuite USA" 19B o="Global Technical Systems" 19C o="Kubu, Inc." + 19D o="Automata GmbH & Co. KG" 19E o="J-Factor Embedded Technologies" 19F o="Koizumi Lighting Technology Corp." 1A0 o="UFATECH LTD" 1A1 o="HMicro Inc" + 1A2 o="Xirgo Technologies LLC" 1A3 o="Telairity Semiconductor" 1A4 o="DAVEY BICKFORD" 1A5 o="METRONIC APARATURA KONTROLNO - POMIAROWA" @@ -20115,16 +23453,21 @@ FCFEC2 o="Invensys Controls UK Limited" 1AB o="Access Control Systems JSC" 1AC o="SVP Broadcast Microwave S.L." 1AD o="Techworld Industries Ltd" + 1AE o="EcoG" 1AF o="Teenage Engineering AB" + 1B0 o="NAL Research Corporation" 1B1 o="Shanghai Danyan Information Technology Co., Ltd." 1B2 o="Cavagna Group Spa" 1B3 o="Graphcore Ltd" 1B4 o="5nines" 1B5 o="StarBridge, Inc." 1B6 o="DACOM West GmbH" + 1B7 o="ULSee Inc" 1B8 o="OES Inc." 1B9 o="RELISTE Ges.m.b.H." + 1BA o="Guan Show Technologe Co., Ltd." 1BB o="EFENTO T P SZYDŁOWSKI K ZARĘBA SPÓŁKA JAWNA" + 1BC o="Flextronics International Kft" 1BD o="Shenzhen Siera Technology Ltd" 1BE o="Potter Electric Signal Co. LLC" 1BF o="DEUTA-WERKE GmbH" @@ -20134,6 +23477,7 @@ FCFEC2 o="Invensys Controls UK Limited" 1C3 o="Shanghai Tiancheng Communication Technology Corporation" 1C4 o="Smeg S.p.A." 1C5 o="ELSAG" + 1C6 o="Bita-International Co., Ltd." 1C7 o="Hoshin Electronics Co., Ltd." 1C8 o="LDA audio video profesional S.L." 1C9 o="MB connect line GmbH Fernwartungssysteme" @@ -20150,6 +23494,7 @@ FCFEC2 o="Invensys Controls UK Limited" 1D4 o="Brinkmann Audio GmbH" 1D5 o="MIVO Technology AB" 1D6 o="MacGray Services" + 1D7 o="BAE Systems" 1D8 o="Blue Skies Global LLC" 1D9 o="MondeF" 1DA o="Promess Inc." @@ -20170,6 +23515,8 @@ FCFEC2 o="Invensys Controls UK Limited" 1E9 o="comtime GmbH" 1EA o="Sense For Innovation" 1EB o="Xavant" + 1EC o="Cherry Labs, Inc." + 1ED o="SUS Corporation" 1EE o="MEGGITT" 1EF o="ADTEK" 1F0 o="Harmonic Design GmbH" @@ -20178,9 +23525,12 @@ FCFEC2 o="Invensys Controls UK Limited" 1F3 o="Smart Energy Code Company Limited" 1F4 o="Hangzhou Woosiyuan Communication Co.,Ltd." 1F5 o="Martec S.p.A." - 1F7 o="Morgan Schaffer Inc." + 1F6 o="LinkAV Technology Co., Ltd" + 1F7 o="Morgan Schaffer" 1F8 o="Convergent Design" 1F9 o="Automata GmbH & Co. KG" + 1FA o="EBZ SysTec GmbH" + 1FB o="Crane-elec. Co., LTD." 1FC o="Guan Show Technologe Co., Ltd." 1FD o="BRS Sistemas Eletrônicos" 1FE o="MobiPromo" @@ -20196,12 +23546,14 @@ FCFEC2 o="Invensys Controls UK Limited" 208 o="DSP DESIGN LTD" 209 o="SmartNodes" 20A o="Golden Grid Systems" + 20B o="KST technology" 20C o="Siemens Healthcare Diagnostics" 20D o="Engage Technologies" 20E o="Amrehn & Partner EDV-Service GmbH" 20F o="Tieline Research Pty Ltd" 210 o="Eastone Century Technology Co.,Ltd." 211 o="Fracarro srl" + 212 o="Semiconsoft, inc" 213 o="ETON Deutschland Electro Acoustic GmbH" 214 o="signalparser" 215 o="Dataspeed Inc" @@ -20217,9 +23569,10 @@ FCFEC2 o="Invensys Controls UK Limited" 21F o="CHRONOMEDIA" 221 o="LX Design House" 222 o="Marioff Corporation Oy" + 223 o="Research Laboratory of Design Automation, Ltd." 224 o="Urbana Smart Solutions Pte Ltd" 225 o="RCD Radiokomunikace" - 226 o="Yaviar" + 226 o="Yaviar LLC" 227 o="Montalvo" 228 o="HEITEC AG" 229 o="CONTROL SYSTEMS Srl" @@ -20231,6 +23584,7 @@ FCFEC2 o="Invensys Controls UK Limited" 230 o="CT Company" 231 o="DELTA TAU DATA SYSTEMS, INC." 232 o="UCONSYS" + 233 o="RCH SPA" 234 o="EDFelectronics JRMM Sp z o.o. sp.k." 235 o="CAMEON S.A." 236 o="Monnit Corporation" @@ -20240,6 +23594,7 @@ FCFEC2 o="Invensys Controls UK Limited" 23A o="Mesa Labs, Inc." 23B o="Fink Telecom Services" 23C o="Quasonix, LLC" + 23D o="Circle Consult ApS" 23E o="Tornado Modular Systems" 23F o="ETA-USA" 240 o="Orlaco Products B.V." @@ -20249,6 +23604,7 @@ FCFEC2 o="Invensys Controls UK Limited" 244 o="DAT Informatics Pvt Ltd" 245 o="Newtec A/S" 246 o="Saline Lectronics, Inc." + 247 o="Satsky Communication Equipment Co.,Ltd." 248 o="GL TECH CO.,LTD" 249 o="Kospel S.A." 24A o="Unmukti Technology Pvt Ltd" @@ -20258,11 +23614,12 @@ FCFEC2 o="Invensys Controls UK Limited" 24E o="Chengdu Cove Technology CO.,LTD" 24F o="ELBIT SYSTEMS BMD AND LAND EW - ELISRA LTD" 250 o="Datum Electronics Limited" - 251 o="PixelApps s.r.o." + 251 o="Tap Home, s.r.o." 252 o="Sierra Nevada Corporation" 253 o="Wimate Technology Solutions Private Limited" 254 o="Spectrum Brands" 255 o="Asystems Corporation" + 256 o="Telco Antennas Pty Ltd" 257 o="LG Electronics" 258 o="BAYKON Endüstriyel Kontrol Sistemleri San. ve Tic. A.Ş." 259 o="Zebra Elektronik A.S." @@ -20277,6 +23634,7 @@ FCFEC2 o="Invensys Controls UK Limited" 262 o="OOO Research and Production Center %Computer Technologies%" 263 o="AXING AG" 264 o="ifak technology + service GmbH" + 265 o="Rapiot" 266 o="Spectra Displays Ltd" 267 o="Zehntner Testing Instruments" 268 o="Cardinal Scale Mfg Co" @@ -20288,14 +23646,17 @@ FCFEC2 o="Invensys Controls UK Limited" 26E o="HI-TECH SYSTEM Co. Ltd." 26F o="COMPAL ELECTRONICS, INC." 270 o="Amazon Technologies Inc." + 271 o="Code Blue Corporation" 272 o="TELECOM SANTE" 273 o="WeVo Tech" 274 o="Stercom Power Solutions GmbH" 275 o="INTERNET PROTOCOLO LOGICA SL" 276 o="TELL Software Hungaria Kft." 277 o="Voltaware Limited" + 278 o="Medicomp, Inc" 279 o="Medicomp, Inc" 27A o="TD ECOPHISIKA" + 27B o="DAVE SRL" 27C o="MOTION LIB,Inc." 27D o="Telenor Connexion AB" 27E o="Mettler Toledo" @@ -20316,24 +23677,27 @@ FCFEC2 o="Invensys Controls UK Limited" 28D o="Technica Engineering GmbH" 28E o="TEX COMPUTER SRL" 28F o="Overline Systems" + 290 o="GETT Geraetetechnik GmbH" 291 o="Sequent AG" 292 o="Boston Dynamics" 293 o="Solar RIg Technologies" - 294 o="RCH Vietnam Limited Liability Company" + 294 o="RCH SPA" 295 o="Cello Electronics (UK) Ltd" 296 o="Rohde&Schwarz Topex SA" 297 o="Grossenbacher Systeme AG" + 298 o="Reflexion Medical" 299 o="KMtronic ltd" 29A o="Profusion Limited" 29B o="DermaLumics S.L." 29C o="Teko Telecom Srl" 29D o="XTech2 SIA" + 29E o="B2cloud lda" 29F o="Code Hardware SA" 2A0 o="Airthings" 2A1 o="Blink Services AB" 2A2 o="Visualware, Inc." 2A3 o="ATT Nussbaum Prüftechnik GmbH" - 2A4 o="GSP Sprachtechnologie GmbH" + 2A4 o="Televic Rail GmbH" 2A5 o="Taitotekniikka" 2A6 o="GSI Technology" 2A7 o="Plasmability, LLC" @@ -20351,6 +23715,7 @@ FCFEC2 o="Invensys Controls UK Limited" 2B3 o="HAS co.,ltd." 2B4 o="Foerster-Technik GmbH" 2B5 o="Dosepack India LLP" + 2B6 o="HLT Micro" 2B7 o="Matrix Orbital Corporation" 2B8 o="WideNorth AS" 2B9 o="BELECTRIC GmbH" @@ -20365,6 +23730,8 @@ FCFEC2 o="Invensys Controls UK Limited" 2C2 o="Quantum Detectors" 2C3 o="Proterra" 2C4 o="Hodwa Co., Ltd" + 2C5 o="MECT SRL" + 2C6 o="AM General Contractor" 2C7 o="Worldsensing" 2C8 o="SLAT" 2C9 o="SEASON DESIGN TECHNOLOGY" @@ -20388,10 +23755,12 @@ FCFEC2 o="Invensys Controls UK Limited" 2DC o="Bolide Technology Group, Inc." 2DD o="Melissa Climate Jsc" 2DE o="YUYAMA MFG Co.,Ltd" - 2E0 o="Peter Huber" - 2E1 o="hiSky S.C.S LTD" + 2DF o="EASTERN SCIENCE & TECHNOLOGY CO., LTD" + 2E0 o="Peter Huber Kaeltemaschinenbau SE" + 2E1 o="hiSky SCS Ltd" 2E2 o="Spark Lasers" 2E3 o="Meiknologic GmbH" + 2E4 o="Schneider Electric Motion USA" 2E5 o="Fläkt Woods AB" 2E6 o="IPG Photonics Corporation" 2E7 o="Atos spa" @@ -20423,20 +23792,28 @@ FCFEC2 o="Invensys Controls UK Limited" 301 o="WAYNE ANALYTICS LLC" 302 o="DogWatch Inc" 303 o="Fuchu Giken, Inc." - 304 o="Wartsila Voyage Limited" + 304 o="Wartsila Voyage Oy" 305 o="CAITRON Industrial Solutions GmbH" 306 o="LEMZ-T, LLC" 307 o="Energi innovation Aps" 308 o="DSD MICROTECHNOLOGY,INC." + 309 o="ABS Applied Biometric Systems GmbH" 30A o="HongSeok Ltd." 30B o="Ash Technologies" 30C o="Sicon srl" 30D o="Fiberbase" + 30E o="Ecolonum Inc." 30F o="Cardinal Scales Manufacturing Co" 310 o="Conserv Solutions" + 311 o="Günther Spelsberg GmbH + Co. KG" + 312 o="SMITEC S.p.A." 313 o="DIEHL Controls" + 314 o="Grau Elektronik GmbH" + 316 o="Austco Marketing & Service (USA) ltd." 317 o="Iotopia Solutions" + 318 o="Exemplar Medical, LLC" 319 o="ISO/TC 22/SC 31" + 31A o="Terratel Technology s.r.o." 31B o="SilTerra Malaysia Sdn. Bhd." 31C o="FINANCIERE DE L'OMBREE (eolane)" 31D o="AVA Monitoring AB" @@ -20461,12 +23838,14 @@ FCFEC2 o="Invensys Controls UK Limited" 330 o="iOne" 331 o="Firecom, Inc." 332 o="InnoSenT" + 333 o="Orlaco Products B.V." 334 o="Dokuen Co. Ltd." 335 o="Jonsa Australia Pty Ltd" 336 o="Synaccess Networks Inc." 337 o="Laborie" 338 o="Opti-Sciences, Inc." 339 o="Sierra Nevada Corporation" + 33A o="AudioTEC LLC" 33B o="Seal Shield, LLC" 33C o="Videri Inc." 33D o="Schneider Electric Motion USA" @@ -20499,6 +23878,7 @@ FCFEC2 o="Invensys Controls UK Limited" 358 o="Nevotek" 359 o="Boutronic" 35A o="Applied Radar, Inc." + 35B o="Nuance Hearing Ltd." 35C o="ACS electronics srl" 35D o="Fresh Idea Factory BV" 35E o="EIDOS s.p.a." @@ -20514,6 +23894,7 @@ FCFEC2 o="Invensys Controls UK Limited" 368 o="White Matter LLC" 369 o="ALVAT s.r.o." 36A o="Becton Dickinson" + 36B o="Huz Electronics Ltd" 36C o="Sicon srl" 36D o="Cyberteam Sp z o o" 36E o="Electrónica Falcón S.A.U" @@ -20521,6 +23902,7 @@ FCFEC2 o="Invensys Controls UK Limited" 370 o="Inphi Corporation" 371 o="BEDEROV GmbH" 372 o="MATELEX" + 373 o="Hangzhou Weimu Technology Co.,Ltd." 374 o="OOO NPP Mars-Energo" 375 o="Adel System srl" 376 o="Magenta Labs, Inc." @@ -20533,6 +23915,7 @@ FCFEC2 o="Invensys Controls UK Limited" 37D o="The DX Shop Limited" 37E o="ELINKGATE JSC" 37F o="IDS Innomic GmbH" + 380 o="SeaTech Intelligent Technology (Shanghai) Co., LTD" 381 o="CRDE" 382 o="Naval Group" 383 o="LPA Excil Electronics" @@ -20541,29 +23924,36 @@ FCFEC2 o="Invensys Controls UK Limited" 386 o="GPSat Systems" 387 o="GWF MessSysteme AG" 388 o="Xitron" + 389 o="2KLIC inc." 38A o="KSE GmbH" 38B o="Lookman Electroplast Industries Ltd" 38C o="MiraeSignal Co., Ltd" 38D o="IMP-TELEKOMUNIKACIJE DOO" + 38E o="China Telecom Fufu Information Technology CO.,LTD" 38F o="Sorynorydotcom Inc" + 390 o="TEX COMPUTER SRL" 391 o="Changshu Ruite Electric Co.,Ltd." 392 o="Contec Americas Inc." 393 o="Monnit Corporation" 394 o="Romteck Australia" + 395 o="ICsec S.A." 396 o="CTG sp. z o. o." 397 o="Guangxi Hunter Information Industry Co.,Ltd" 398 o="SIPRO s.r.l." + 399 o="SPE Smartico, LLC" 39A o="Videotrend srl" 39B o="IROC AB" 39C o="GD Mission Systems" 39D o="Comark Interactive Solutions" 39E o="Lanmark Controls Inc." + 39F o="CT Company" 3A0 o="chiconypower" 3A1 o="Reckeen HDP Media sp. z o.o. sp. k." 3A2 o="Daifuku CO., Ltd." 3A3 o="CDS Institute of Management Strategy, Inc." 3A4 o="Ascenix Corporation" 3A5 o="KMtronic ltd" + 3A6 o="myenergi Ltd" 3A7 o="Varikorea" 3A8 o="JamHub Corp." 3A9 o="Vivalnk" @@ -20576,8 +23966,10 @@ FCFEC2 o="Invensys Controls UK Limited" 3B0 o="Millennial Net, Inc." 3B1 o="Global Power Products" 3B2 o="Sicon srl" + 3B3 o="Movicom Electric LLC" 3B4 o="YOUSUNG" 3B5 o="Preston Industries dba PolyScience" + 3B6 o="MedRx, Inc" 3B7 o="Paul Scherrer Institut (PSI)" 3B8 o="nVideon, Inc." 3B9 o="BirdDog Australia" @@ -20595,6 +23987,7 @@ FCFEC2 o="Invensys Controls UK Limited" 3C5 o="P4Q ELECTRONICS, S.L." 3C6 o="ACD Elekronik GmbH" 3C7 o="SOFTCREATE CORP." + 3C8 o="ABC Electric Co." 3C9 o="Duerkopp-Adler" 3CA o="TTI Ltd" 3CB o="GeoSpectrum Technologies Inc" @@ -20603,16 +23996,18 @@ FCFEC2 o="Invensys Controls UK Limited" 3CE o="Aditec GmbH" 3CF o="Systems Engineering Arts Pty Ltd" 3D0 o="ORtek Technology, Inc." + 3D1 o="Imenco Ltd" 3D2 o="Imagine Inc." 3D3 o="GS Elektromedizinsiche Geräte G. Stemple GmbH" 3D4 o="Sanmina Israel" 3D5 o="oxynet Solutions" 3D6 o="Ariston Thermo s.p.a." - 3D7 o="Remote Sensing Solutions, Inc." + 3D7 o="Tomorrow Companies Inc" 3D8 o="Abitsoftware, Ltd." 3D9 o="Aplex Technology Inc." 3DA o="Loop Labs, Inc." 3DB o="KST technology" + 3DC o="XIA LLC" 3DD o="Kniggendorf + Kögler Security GmbH" 3DE o="ELOMAC Elektronik GmbH" 3DF o="MultiDyne" @@ -20639,14 +24034,14 @@ FCFEC2 o="Invensys Controls UK Limited" 3F4 o="Wincode Technology Co., Ltd." 3F5 o="DOLBY LABORATORIES, INC." 3F6 o="Sycomp Electronic GmbH" - 3F7 o="Advansid" + 3F7 o="CEFLA SC" 3F8 o="The Fire Horn, Inc." 3F9 o="Herrick Tech Labs" 3FA o="Zaklad Energoelektroniki Twerd" 3FB o="Liberty Reach" 3FC o="TangRen C&S CO., Ltd" 3FD o="NaraControls Inc" - 3FE o="Mentor Graphics" + 3FE o="Siemens Industry Software Inc." 3FF o="Hydra Controls" 400 o="Vtron Pty Ltd" 402 o="AKIS technologies" @@ -20663,7 +24058,8 @@ FCFEC2 o="Invensys Controls UK Limited" 40D o="Grupo Epelsa S.L." 40E o="Liaoyun Information Technology Co., Ltd." 40F o="NEXELEC" - 410 o="Avant Technologies, Inc" + 410 o="Avant Technologies" + 411 o="Mi-Fi Networks Pvt Ltd" 412 o="TATTILE SRL" 413 o="Axess AG" 414 o="Smith Meter, Inc." @@ -20671,14 +24067,17 @@ FCFEC2 o="Invensys Controls UK Limited" 416 o="Antlia Systems" 417 o="Figment Design Laboratories" 418 o="DEV Systemtechnik GmbH& Co KG" - 41A o="HYOSUNG Power & Industrial Systems" + 419 o="Prodata Mobility Brasil SA" + 41A o="HYOSUNG Heavy Industries Corporation" 41B o="SYS TEC electronic GmbH" + 41C o="Twoway Communications, Inc." 41D o="Azmoon Keifiat" 41E o="Redler Computers" 41F o="Orion S.r.l." 420 o="ECOINET" 421 o="North Star Bestech Co.," 422 o="SUS Corporation" + 423 o="Harman Connected Services Corporation India Pvt. Ltd." 424 o="Underground Systems, Inc." 425 o="SinterCast" 426 o="Zehnder Group Nederland" @@ -20699,7 +24098,9 @@ FCFEC2 o="Invensys Controls UK Limited" 435 o="Wuhan Xingtuxinke ELectronic Co.,Ltd" 436 o="Henrich Electronics Corporation" 437 o="Digital Way" + 438 o="HBI Bisscheroux bv" 439 o="TriLED" + 43A o="ARKS Enterprises, Inc." 43B o="Kalycito Infotech Private Limited" 43C o="Scenario Automation" 43D o="Veryx Technologies Private Limited" @@ -20717,11 +24118,17 @@ FCFEC2 o="Invensys Controls UK Limited" 449 o="Edgeware AB" 44A o="CANON ELECTRON TUBES & DEVICES CO., LTD." 44B o="Open System Solutions Limited" + 44C o="ejoin, s.r.o." 44D o="Vessel Technology Ltd" 44E o="Solace Systems Inc." + 44F o="Velvac Incorporated" + 450 o="Apantac LLC" + 451 o="Perform3-D LLC" + 452 o="ITALIANA PONTI RADIO SRL" + 453 o="Foerster-Technik GmbH" 454 o="Golding Audio Ltd" 455 o="Heartlandmicropayments" - 456 o="Technological Application and Production One Member Liability Company (Tecapro company)" + 456 o="Technological Application And Production One Member Liability Company (Tecapro Company)" 457 o="Vivaldi Clima Srl" 458 o="Ongisul Co.,Ltd." 459 o="Protium Technologies, Inc." @@ -20743,12 +24150,14 @@ FCFEC2 o="Invensys Controls UK Limited" 46A o="Shenzhen Vikings Technology Co., Ltd." 46B o="Airborne Engineering Limited" 46C o="SHANGHAI CHENZHU INSTRUMENT CO., LTD." + 46D o="Guan Show Technologe Co., Ltd." 46E o="Zamir Recognition Systems Ltd." 46F o="serva transport systems GmbH" 470 o="KITRON UAB" 471 o="SYSCO Sicherheitssysteme GmbH" 472 o="Quadio Devices Private Limited" 473 o="KeyProd" + 474 o="CTROGERS LLC" 475 o="EWATTCH" 476 o="FR-Team International SA" 477 o="digitrol limited" @@ -20757,11 +24166,13 @@ FCFEC2 o="Invensys Controls UK Limited" 47A o="GlooVir Inc." 47B o="Monixo" 47C o="Par-Tech, Inc." + 47D o="Shenyang TECHE Technology Co.,Ltd" 47E o="Fiber Optika Technologies Pvt. Ltd." 47F o="ASE GmbH" 480 o="Emergency Lighting Products Limited" 481 o="STEP sarl" 482 o="Aeryon Labs Inc" + 483 o="LITUM BILGI TEKNOLOJILERI SAN. VE TIC. A.S." 484 o="Hermann Sewerin GmbH" 485 o="CLARESYS LIMITED" 486 o="ChongQing JianTao Technology Co., Ltd." @@ -20775,6 +24186,7 @@ FCFEC2 o="Invensys Controls UK Limited" 48E o="Allim System Co,.Ltd." 48F o="Seiwa Giken" 490 o="Xiamen Beogold Technology Co. Ltd." + 491 o="VONSCH" 492 o="Jiangsu Jinheng Information Technology Co.,Ltd." 493 o="Impulse Networks Pte Ltd" 494 o="Schildknecht AG" @@ -20824,6 +24236,7 @@ FCFEC2 o="Invensys Controls UK Limited" 4C0 o="Technica Engineering GmbH" 4C1 o="QUERCUS TECHNOLOGIES, S. L." 4C2 o="hera Laborsysteme GmbH" + 4C3 o="EA Elektroautomatik GmbH & Co. KG" 4C4 o="OOO Research and Production Center %Computer Technologies%" 4C5 o="Moving iMage Technologies LLC" 4C6 o="BlueBox Video Limited" @@ -20831,10 +24244,12 @@ FCFEC2 o="Invensys Controls UK Limited" 4C8 o="Hosokawa Micron Powder Systems" 4C9 o="Elsist Srl" 4CA o="PCB Piezotronics" + 4CB o="Cucos Retail Systems GmbH" 4CC o="FRESENIUS MEDICAL CARE" 4CD o="Power Electronics Espana, S.L." 4CE o="Agilack" 4CF o="GREEN HOUSE CO., LTD." + 4D0 o="Codewerk GmbH" 4D1 o="Contraves Advanced Devices Sdn. Bhd." 4D2 o="Biotage Sweden AB" 4D3 o="Hefei STAROT Technology Co.,Ltd" @@ -20843,22 +24258,27 @@ FCFEC2 o="Invensys Controls UK Limited" 4D6 o="Operational Technology Solutions" 4D7 o="Technological Ray GmbH" 4D8 o="Versilis Inc." + 4D9 o="Coda Octopus Products Limited" + 4DA o="RADA Electronics Industries Ltd." 4DB o="Temperature@lert" 4DC o="JK DEVICE CORPORATION" - 4DD o="Road-iQ, LLC" + 4DD o="Velvac Incorporated" 4DE o="Oso Technologies, Inc." 4DF o="Nidec Avtron Automation Corp" 4E0 o="Microvideo" 4E1 o="Grupo Epelsa S.L." + 4E2 o="Transit Solutions, LLC." 4E3 o="adnexo GmbH" 4E4 o="W.A. Benjamin Electric Co." 4E5 o="viZaar industrial imaging AG" + 4E6 o="Santa Barbara Imaging Systems" 4E7 o="Digital Domain" 4E8 o="Copious Imaging LLC" 4E9 o="ADETEC SAS" 4EA o="Vocality international T/A Cubic" 4EB o="INFOSOFT DIGITAL DESIGN & SERVICES PRIVATE LIMITED" 4EC o="Hangzhou Youshi Industry Co., Ltd." + 4ED o="Panoramic Power" 4EE o="NOA Co., Ltd." 4EF o="CMI, Inc." 4F0 o="Li Seng Technology Ltd.," @@ -20869,8 +24289,10 @@ FCFEC2 o="Invensys Controls UK Limited" 4F5 o="Orlaco Products B.V." 4F6 o="DORLET SAU" 4F7 o="Foxtel srl" + 4F8 o="SICPA SA - GSS" 4F9 o="OptoPrecision GmbH" 4FA o="Thruvision Limited" + 4FB o="MAS Elettronica sas di Mascetti Sandro e C." 4FC o="Mettler Toledo" 4FD o="ENLESS WIRELESS" 4FE o="WiTagg, Inc" @@ -20884,7 +24306,9 @@ FCFEC2 o="Invensys Controls UK Limited" 506 o="Tonbo Imaging Pte Ltd" 507 o="Human Oriented Technology, Inc." 508 o="INSEVIS GmbH" + 509 o="Tinkerforge GmbH" 50A o="AMEDTEC Medizintechnik Aue GmbH" + 50B o="Nordson Corporation" 50C o="Hangzhou landesker digital technology co. LTD" 50D o="CT Company" 50E o="Micro Trend Automation Co., LTD" @@ -20904,12 +24328,15 @@ FCFEC2 o="Invensys Controls UK Limited" 51C o="ATX Networks Corp" 51D o="Tecnint HTE SRL" 51E o="Fundación Cardiovascular de Colombia" + 51F o="VALEO CDA" + 520 o="promedias AG" 521 o="Selex ES Inc." 522 o="Syncopated Engineering Inc" 523 o="Tibit Communications" 524 o="Wuxi New Optical Communication Co.,Ltd." 525 o="Plantiga Technologies Inc" 526 o="FlowNet LLC" + 527 o="Procon Electronics Pty Ltd" 528 o="Aplex Technology Inc." 529 o="Inventeq B.V." 52A o="Dataflex International BV" @@ -20934,6 +24361,7 @@ FCFEC2 o="Invensys Controls UK Limited" 53D o="ACCEL CORP" 53E o="Asiga Pty Ltd" 53F o="Abbott Diagnostics Technologies AS" + 540 o="KMtronic ltd" 541 o="Nanjing Pingguang Electronic Technology Co., Ltd" 542 o="RTDS Technologies Inc." 543 o="wallbe GmbH" @@ -20951,6 +24379,7 @@ FCFEC2 o="Invensys Controls UK Limited" 54F o="Assembly Contracts Limited" 550 o="Merten GmbH&CoKG" 551 o="infrachip" + 552 o="ALTIT.CO.,Ltd." 553 o="TAALEX Systemtechnik GmbH" 554 o="Teletypes Manufacturing Plant" 555 o="SoftLab-NSK" @@ -20964,6 +24393,9 @@ FCFEC2 o="Invensys Controls UK Limited" 55D o="LunaNexus Inc" 55E o="BRS Sistemas Eletrônicos" 55F o="Deep BV" + 560 o="DaiShin Information & Communications Co., Ltd" + 561 o="Liberator Pty Ltd" + 562 o="JD Squared, Inc." 563 o="Zhejiang Hao Teng Electronic Technology Co., Ltd." 564 o="christmann informationstechnik + medien GmbH & Co. KG" 565 o="Clecell" @@ -20980,6 +24412,7 @@ FCFEC2 o="Invensys Controls UK Limited" 570 o="Bayern Engineering GmbH & Co. KG" 571 o="Echogear" 572 o="CRDE" + 573 o="GEGA ELECTRONIQUE" 574 o="Cloud Intelligence Pty Ltd" 575 o="Konrad GmbH" 576 o="Shandong Hospot IOT Technology Co.,Ltd." @@ -20992,19 +24425,23 @@ FCFEC2 o="Invensys Controls UK Limited" 57D o="WICOM1 GmbH" 57E o="Ascon Tecnologic S.r.l." 57F o="MBio Diagnostics, Inc." + 581 o="Thermokon Sensortechnik GmbH" 582 o="VAGLER International Sdn Bhd" 583 o="Ducommun Inc." 584 o="Sertone, a division of Opti-Knights Ltd" 585 o="Nefteavtomatika" + 586 o="Aliter Technologies" 587 o="INCAA Computers" 588 o="LLC NPO Svyazkomplektservis" 589 o="Cityntel OU" 58A o="ITK Dr. Kassen GmbH" + 58B o="Williams Sound LLC" 58C o="OPTSYS" 58D o="DORLET SAU" 58E o="VEILUX INC." 58F o="LSL systems" 590 o="812th AITS" + 591 o="Medicomp, Inc" 592 o="CRDE" 593 o="Asis Pro" 594 o="ATE Systems Inc" @@ -21017,14 +24454,17 @@ FCFEC2 o="Invensys Controls UK Limited" 59B o="AUTOMATIZACION Y CONECTIVIDAD SA DE CV" 59C o="DAVE SRL" 59D o="servicios de consultoria independiente S.L." + 59E o="i2-electronics" + 59F o="Megger Germany GmbH" 5A0 o="Ascon Tecnologic S.r.l." 5A1 o="BOE Technology Group Co., Ltd." 5A2 o="Wallner Automation GmbH" 5A3 o="CT Company" + 5A4 o="MB connect line GmbH Fernwartungssysteme" 5A5 o="Rehwork GmbH" 5A6 o="TimeMachines Inc." 5A7 o="ABB S.p.A." - 5A8 o="Farmobile" + 5A8 o="Farmobile, LLC" 5A9 o="Bunka Shutter Co., Ltd." 5AA o="Chugoku Electric Manufacturing Co.,Inc" 5AB o="Sea Air and Land Communications Ltd" @@ -21034,18 +24474,24 @@ FCFEC2 o="Invensys Controls UK Limited" 5AF o="JENG IoT BV" 5B0 o="Qxperts Italia S.r.l." 5B1 o="EPD Electronics" - 5B2 o="Peter Huber Kaeltemaschinenbau AG" + 5B2 o="Peter Huber Kaeltemaschinenbau SE" + 5B3 o="STENTORIUS by ADI" 5B4 o="Systems Technologies" 5B5 o="Lehigh Electric Products Co" 5B6 o="Ethical Lighting and Sensor Solutions Limited" + 5B7 o="on-systems limited" 5B8 o="Hella Gutmann Solutions GmbH" + 5B9 o="EIZO RUGGED SOLUTIONS" 5BA o="INFRASAFE/ ADVANTOR SYSTEMS" 5BB o="Olympus NDT Canada" - 5BC o="LAMTEC Meß- und Regeltechnik für Feuerungen GmbH & Co. KG" + 5BC o="LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG" + 5BD o="nexgenwave" 5BE o="CASWA" 5BF o="Aton srl" 5C0 o="Shenzhen Lianfaxun Electronic Technology Co., Ltd" 5C1 o="Shanghai JaWay Information Technology Co., Ltd." + 5C2 o="Sono-Tek Corporation" + 5C3 o="DIC Corporation" 5C4 o="TATTILE SRL" 5C5 o="Haag-Streit AG" 5C6 o="C4I Systems Ltd" @@ -21054,8 +24500,9 @@ FCFEC2 o="Invensys Controls UK Limited" 5C9 o="ICTK Holdings" 5CA o="ACD Elekronik GmbH" 5CB o="ECoCoMS Ltd." - 5CC o="Akse srl" + 5CC o="AKSE srl" 5CD o="MVT Video Technologies R + H Maedler GbR" + 5CE o="IP Devices" 5CF o="PROEL TSI s.r.l." 5D0 o="InterTalk Critical Information Systems" 5D1 o="Software Motor Corp" @@ -21064,8 +24511,9 @@ FCFEC2 o="Invensys Controls UK Limited" 5D4 o="RCH ITALIA SPA" 5D5 o="CT Company" 5D6 o="BMT Messtechnik Gmbh" + 5D7 o="Clockwork Dog" 5D8 o="LYNX Technik AG" - 5D9 o="olympus-ossa" + 5D9 o="Evident Scientific, Inc." 5DA o="Valk Welding B.V." 5DB o="Movicom LLC" 5DC o="FactoryLab B.V." @@ -21087,12 +24535,13 @@ FCFEC2 o="Invensys Controls UK Limited" 5EC o="Creative Electronics Ltd" 5ED o="EA Elektroautomatik GmbH & Co. KG" 5EE o="Mikrotron Mikrocomputer, Digital- und Analogtechnik GmbH" - 5EF o="Star Systems International" + 5EF o="Star Systems International Limited" 5F0 o="managee GmbH & Co KG" 5F1 o="Fater Rasa Noor" 5F2 o="Invisible Systems Limited" 5F3 o="Rtone" 5F4 o="FDSTiming" + 5F5 o="Microvision" 5F6 o="FreeFlight Systems" 5F7 o="JFA Electronics Industry and Commerce EIRELI" 5F8 o="Forcite Helmet Systems Pty Ltd" @@ -21107,6 +24556,7 @@ FCFEC2 o="Invensys Controls UK Limited" 601 o="Tricom Research Inc." 602 o="Quantum Opus, LLC" 603 o="EGISTECH CO.,LTD." + 604 o="Foxtrot Research Corp" 605 o="Aplex Technology Inc." 606 o="OOO Research and Production Center %Computer Technologies%" 607 o="ATEME" @@ -21127,6 +24577,7 @@ FCFEC2 o="Invensys Controls UK Limited" 616 o="Axxess Identification Ltd" 617 o="Cominfo, Inc." 618 o="Motec Pty Ltd" + 619 o="ZAO ZEO" 61A o="Rocket Lab Ltd." 61B o="Nubewell Networks Pvt Ltd" 61C o="Earth Works" @@ -21134,10 +24585,13 @@ FCFEC2 o="Invensys Controls UK Limited" 61E o="PKE Electronics AG" 61F o="Labotect Labor-Technik-Göttingen GmbH" 620 o="Orlaco Products B.V." + 621 o="SERTEC SRL" 622 o="PCS Inc." 623 o="Beijing HuaLian Technology Co, Ltd." + 624 o="EBE Mobility & Green Energy GmbH" 625 o="VX Instruments GmbH" 626 o="KRONOTECH SRL" + 627 o="EarTex" 628 o="MECT SRL" 629 o="OZRAY" 62A o="DOGA" @@ -21159,6 +24613,7 @@ FCFEC2 o="Invensys Controls UK Limited" 63A o="DAVE SRL" 63B o="Lazer Safe Pty Ltd" 63C o="Pivothead" + 63D o="Topic Embedded Products B.V." 63E o="RIKEN OPTECH CORPORATION" 63F o="DARBS Inc." 640 o="Electronic Equipment Company Pvt. Ltd." @@ -21167,6 +24622,7 @@ FCFEC2 o="Invensys Controls UK Limited" 643 o="Marques,S.A." 644 o="ATX Networks Corp" 645 o="Project Decibel, Inc." + 646 o="Xirgo Technologies LLC" 647 o="KZTA" 648 o="Magnamed Tecnologia Medica S/A" 649 o="swissled technologies AG" @@ -21175,6 +24631,7 @@ FCFEC2 o="Invensys Controls UK Limited" 64C o="ACEMIS FRANCE" 64D o="SANMINA ISRAEL MEDICAL SYSTEMS LTD" 64E o="BigStuff3, Inc." + 64F o="GUNMA ELECTRONICS CO LTD" 650 o="GIFAS-ELECTRIC GmbH" 651 o="Roxford" 652 o="Robert Bosch, LLC" @@ -21194,14 +24651,18 @@ FCFEC2 o="Invensys Controls UK Limited" 660 o="Smart Service Technologies CO., LTD" 661 o="DesignA Electronics Limited" 662 o="Icon Industrial Engineering" + 663 o="Intrinsic Group Limited" 664 o="Sankyo Intec co.,ltd" 665 o="CertUsus GmbH" 666 o="Aplex Technology Inc." 667 o="CT Company" + 668 o="Öresundskraft AB" 669 o="Panoramic Power" + 66A o="Nomadic" 66B o="Innitive B.V." 66C o="KRISTECH Krzysztof Kajstura" 66D o="Sanmina Israel" + 66E o="SIAME" 66F o="Simplified MFG" 670 o="Particle sizing systems" 671 o="Sea Shell Corporation" @@ -21220,9 +24681,11 @@ FCFEC2 o="Invensys Controls UK Limited" 67E o="Season Electronics Ltd" 67F o="IAAN Co., Ltd" 680 o="BASF Corporation" + 681 o="DEUTA-WERKE GmbH" 682 o="Rosslare Enterprises Limited" 683 o="DECYBEN" 684 o="LECO Corporation" + 685 o="LDA Audiotech" 686 o="Access Protocol Pty Ltd" 687 o="Volution Group UK" 688 o="MG s.r.l." @@ -21233,16 +24696,18 @@ FCFEC2 o="Invensys Controls UK Limited" 68D o="%Meta-chrom% Co. Ltd." 68E o="CEA Technologies Pty Ltd" 68F o="PEEK TRAFFIC" + 690 o="Sicon srl" 691 o="PEEK TRAFFIC" 692 o="HOSIN INDUSTRIAL LIMITED" 693 o="Altron, a.s." 694 o="MoviTHERM" - 695 o="GSP Sprachtechnologie GmbH" + 695 o="Televic Rail GmbH" 696 o="Open Grow" 697 o="Alazar Technologies Inc." + 698 o="ZIEHL-ABEGG SE" 699 o="Flextronics International Kft" 69A o="Altaneos" - 69B o="TAIYO SEIKI CO.,LTD." + 69B o="HORIZON.INC" 69C o="Keepen" 69D o="JPEmbedded Mazan Filipek Sp. J." 69E o="PTYPE Co., LTD." @@ -21267,6 +24732,7 @@ FCFEC2 o="Invensys Controls UK Limited" 6B1 o="TTC TELEKOMUNIKACE, s.r.o." 6B2 o="CRDE" 6B3 o="DuraComm Corporation" + 6B4 o="Nudron IoT Solutions LLP" 6B5 o="ART SPA" 6B6 o="INRADIOS GmbH" 6B7 o="Grossenbacher Systeme AG" @@ -21275,24 +24741,30 @@ FCFEC2 o="Invensys Controls UK Limited" 6BA o="Integrotech sp. z o.o." 6BB o="LUCEO" 6BC o="EA Elektroautomatik GmbH & Co. KG" - 6BD o="RCH Vietnam Limited Liability Company" + 6BD o="RCH SPA" 6BE o="VANTAGE INTEGRATED SECURITY SOLUTIONS PVT LTD" 6BF o="Otto Bihler Maschinenfabrik GmbH & Co. KG" - 6C1 o="Labtronik s.r.l." + 6C0 o="LLC %NTZ %Mekhanotronika%" + 6C1 o="R.A.I.T.88 Srl" 6C2 o="TEX COMPUTER SRL" 6C3 o="BEIJING ZGH SECURITY RESEARCH INSTITUTE CO., LTD" + 6C4 o="Veo Robotics, Inc." 6C5 o="CJSC «Russian telecom equipment company» (CJSC RTEC)" 6C6 o="Abbott Diagnostics Technologies AS" 6C7 o="Becton Dickinson" + 6C8 o="Sicon srl" 6C9 o="Redstone Sunshine(Beijing)Technology Co.,Ltd." 6CA o="LINEAGE POWER PVT LTD.," 6CB o="NAJIN automation" + 6CC o="ARINAX" 6CD o="NORTHBOUND NETWORKS PTY. LTD." 6CE o="Eredi Giuseppe Mercuri SPA" 6D0 o="Code Blue Corporation" 6D1 o="Visual Engineering Technologies Ltd" 6D2 o="Ahrens & Birner Company GmbH" 6D3 o="DEUTA-WERKE GmbH" + 6D4 o="Telerob Gesellschaft für Fernhantierungs" + 6D5 o="Potter Electric Signal Co. LLC" 6D6 o="KMtronic ltd" 6D7 o="MB connect line GmbH Fernwartungssysteme" 6D8 o="Shanghai YuanAn Environmental Protection Technology Co.,Ltd" @@ -21305,6 +24777,7 @@ FCFEC2 o="Invensys Controls UK Limited" 6DF o="Mango DSP, Inc." 6E0 o="ABB SPA - DMPC" 6E1 o="Shanghai Holystar Information Technology Co.,Ltd" + 6E2 o="E-Controls" 6E3 o="SHEN ZHEN QLS ELECTRONIC TECHNOLOGY CO.,LTD." 6E4 o="Institute of Power Engineering, Gdansk Division" 6E5 o="DEUTA-WERKE GmbH" @@ -21317,10 +24790,12 @@ FCFEC2 o="Invensys Controls UK Limited" 6EC o="CRDE" 6ED o="Wiingtech International Co. LTD." 6EE o="HANKOOK CTEC CO,. LTD." + 6EF o="Beringar" 6F0 o="iTelaSoft Pvt Ltd" 6F1 o="Discover Battery" 6F2 o="P&C Micro's Pty Ltd" 6F3 o="iungo" + 6F4 o="WDI Wise Device Inc." 6F5 o="Cominfo, Inc." 6F6 o="Acco Brands Europe" 6F7 o="EGICON SRL" @@ -21345,41 +24820,50 @@ FCFEC2 o="Invensys Controls UK Limited" 70A o="PULLNET TECHNOLOGY, SA DE CV SSC1012302S73" 70B o="Alere Technologies AS" 70C o="Potter Electric Signal Co. LLC" + 70D o="OMNISENSING PHOTONICS LLC" 70E o="Wuhan Xingtuxinke ELectronic Co.,Ltd" 70F o="Alion Science & Technology" 710 o="Guardian Controls International Ltd" 711 o="X-Laser LLC" 712 o="APG Cash Drawer, LLC" + 713 o="Coloet S.r.l." 714 o="Alturna Networks" 715 o="RIOT" 716 o="Lode BV" 717 o="Secure Systems & Services" 718 o="PEEK TRAFFIC" 719 o="2M Technology" + 71A o="MB connect line GmbH Fernwartungssysteme" 71B o="elsys" 71C o="Konzept Informationssysteme GmbH" + 71D o="Connido Limited" 71E o="Motec Pty Ltd" + 71F o="Grayshift" + 720 o="Jeio Tech" 721 o="Zoe Medical" 722 o="UMAN" 723 o="LG Electronics" 724 o="Quan International Co., Ltd." + 725 o="Swiss Timing LTD" 726 o="ATGS" 727 o="LP Technologies Inc." 728 o="BCD Audio" 729 o="EMAC, Inc." 72A o="MRC Systems GmbH" + 72B o="Medipense Inc." 72C o="NuRi&G Engineering co,.Ltd." 72D o="Kron Medidores" 72E o="Maharsystem" - 72F o="AVA Technologies Inc." + 72F o="Ava Technologies" 730 o="Videogenix" 731 o="Phoniro Systems AB" 732 o="TOFWERK AG" 733 o="SA Instrumentation Limited" 734 o="MANSION INDUSTRY CO., LTD." 735 o="Swiss Audio" - 736 o="Jabil, Inc." + 736 o="Jabil" 737 o="SD Biosensor" + 738 o="GRYPHON SECURE INC" 739 o="Zigencorp, Inc" 73A o="DOLBY LABORATORIES, INC." 73B o="S-I-C" @@ -21393,6 +24877,7 @@ FCFEC2 o="Invensys Controls UK Limited" 743 o="EA Elektroautomatik GmbH & Co. KG" 744 o="PHYZHON Health Inc" 745 o="TMSI LLC" + 746 o="%Smart Systems% LLC" 747 o="Eva Automation" 748 o="KDT" 749 o="Granite River Labs Inc" @@ -21427,6 +24912,7 @@ FCFEC2 o="Invensys Controls UK Limited" 766 o="Tirasoft Nederland" 767 o="FRANKLIN FRANCE" 768 o="Kazan Networks Corporation" + 769 o="Barber Creations LLC" 76A o="Swiftnet SOC Ltd" 76B o="EMPELOR GmbH" 76C o="Aural Ltd" @@ -21455,7 +24941,7 @@ FCFEC2 o="Invensys Controls UK Limited" 783 o="CHIeru., CO., Ltd." 784 o="Shenzhen bayue software co. LTD" 785 o="Density Inc." - 786 o="RCH Vietnam Limited Liability Company" + 786 o="RCH SPA" 787 o="Den Automation" 788 o="Slan" 789 o="SEMEX-EngCon GmbH" @@ -21467,11 +24953,13 @@ FCFEC2 o="Invensys Controls UK Limited" 78F o="SoFiHa" 790 o="AVI Pty Ltd" 791 o="Romteck Australia" + 792 o="IMMOLAS" 793 o="Gastech Australia Pty Ltd" 794 o="Shadin Avionics" 795 o="TIECHE Engineered Systems" 796 o="GAMPT mbH" 797 o="Mitsubishi Electric India Pvt. Ltd." + 798 o="TIAMA" 799 o="Vitec System Engineering Inc." 79A o="Innerspec Technologies Inc." 79B o="Soniclean Pty Ltd" @@ -21496,9 +24984,11 @@ FCFEC2 o="Invensys Controls UK Limited" 7AE o="Exi Flow Measurement Ltd" 7AF o="Hessware GmbH" 7B0 o="Medisafe International" + 7B1 o="Panamera" 7B2 o="Rail Power Systems GmbH" 7B3 o="BroadSoft Inc" 7B4 o="Zumbach Electronic AG" + 7B5 o="VOCAL Technologies Ltd." 7B6 o="Amada Miyachi America Inc." 7B7 o="LSB - LA SALLE BLANCHE" 7B8 o="SerEnergy A/S" @@ -21506,20 +24996,22 @@ FCFEC2 o="Invensys Controls UK Limited" 7BA o="Decentlab GmbH" 7BB o="Aloxy" 7BC o="FIRST RF Corporation" + 7BD o="TableConnect GmbH" 7BE o="Phytron GmbH" 7BF o="Stone Three" 7C0 o="TORGOVYY DOM TEHNOLOGIY LLC" 7C1 o="Data Sciences International" - 7C2 o="Morgan Schaffer Inc." + 7C2 o="Morgan Schaffer" 7C3 o="Flexim Security Oy" 7C4 o="MECT SRL" 7C5 o="Projects Unlimited Inc." 7C6 o="Utrend Technology (Shanghai) Co., Ltd" 7C7 o="Sicon srl" 7C8 o="CRDE" - 7C9 o="Council Rock" + 7C9 o="Viridi Parente, Inc." 7CA o="Hunan Shengyun Photoelectric Technology Co., Ltd." 7CB o="KeyW Corporation" + 7CC o="MITSUBISHI HEAVY INDUSTRIES THERMAL SYSTEMS, LTD." 7CD o="Molekuler Goruntuleme A.S." 7CE o="Aplex Technology Inc." 7CF o="ORCA Technologies, LLC" @@ -21531,6 +25023,7 @@ FCFEC2 o="Invensys Controls UK Limited" 7D5 o="SICS Swedish ICT" 7D6 o="Yukilab" 7D7 o="Gedomo GmbH" + 7D8 o="Nuand LLC" 7D9 o="ATOM GIKEN Co.,Ltd." 7DA o="Grupo Epelsa S.L." 7DB o="aquila biolabs GmbH" @@ -21544,24 +25037,27 @@ FCFEC2 o="Invensys Controls UK Limited" 7E3 o="RedLeaf Security" 7E4 o="C21 Systems Ltd" 7E5 o="Megaflex Oy" + 7E6 o="11811347 CANADA Inc." 7E7 o="Atessa, Inc." 7E8 o="Mannkind Corporation" 7E9 o="Mecsel Oy" 7EA o="Waterkotte GmbH" 7EB o="Xerox International Partners" - 7EC o="GRIDSMART Technologies" + 7EC o="Cubic ITS, Inc. dba GRIDSMART Technologies" 7ED o="The Things Network Foundation" 7EE o="ADVEEZ" 7EF o="CRAVIS CO., LIMITED" - 7F0 o="Yokogawa Denshikiki Co.,Ltd" + 7F0 o="YDK Technologies Co.,Ltd" 7F1 o="AeroVision Avionics, Inc." 7F2 o="TCI" 7F3 o="Shenzhen Virtual Clusters Information Technology Co.,Ltd." 7F4 o="KST technology" 7F5 o="Incusense" + 7F6 o="IDZ Ltd" 7F7 o="JASCO Applied Sciences Canada Ltd" 7F8 o="Solvera Lynx d.d." 7F9 o="Communication Systems Solutions" + 7FA o="meoENERGY" 7FB o="db Broadcast Products Ltd" 7FC o="Surion (Pty) Ltd" 7FD o="SYS TEC electronic GmbH" @@ -21573,6 +25069,7 @@ FCFEC2 o="Invensys Controls UK Limited" 803 o="Grossenbacher Systeme AG" 804 o="PMT Corporation" 805 o="Eurotronik Kranj d.o.o." + 806 o="International Super Computer Co., Ltd." 807 o="Camsat Przemysław Gralak" 808 o="Becton Dickinson" 809 o="Tecnint HTE SRL" @@ -21580,9 +25077,11 @@ FCFEC2 o="Invensys Controls UK Limited" 80B o="Fischer Block, Inc." 80C o="Algra tec AG" 80D o="Data Physics Corporation" + 80E o="Utopi Ltd" 80F o="Quickware Eng & Des LLC" 810 o="Advice" 811 o="CJSC «INTERSET»" + 812 o="TESCAN Brno, s.r.o." 813 o="Wavemed srl" 814 o="Ingenieurbuero SOMTRONIK" 815 o="Waco Giken Co., Ltd." @@ -21592,8 +25091,10 @@ FCFEC2 o="Invensys Controls UK Limited" 819 o="«Intellect module» LLC" 81A o="Joehl & Koeferli AG" 81B o="bobz GmbH" + 81C o="QIT Co., Ltd." 81D o="DEUTA-WERKE GmbH" 81E o="Novathings" + 81F o="CAR-connect GmbH" 820 o="Becker Nachrichtentechnik GmbH" 821 o="HL2 group" 822 o="Angora Networks" @@ -21603,11 +25104,13 @@ FCFEC2 o="Invensys Controls UK Limited" 826 o="Elbit Systems of America" 827 o="Metromatics Pty Ltd" 828 o="Xacti Corporation" + 829 o="Guan Show Technologe Co., Ltd." 82A o="C W F Hamilton & Co Ltd" 82B o="Shangnuo company" 82C o="NELS Ltd." 82D o="Elektronik Art S.C." 82E o="PlayAlive A/S" + 82F o="SIANA Systems" 830 o="Nordson Corporation" 831 o="Arnouse Digital Devices Corp" 832 o="Potter Electric Signal Co. LLC" @@ -21621,6 +25124,7 @@ FCFEC2 o="Invensys Controls UK Limited" 83A o="EMDEP CENTRO TECNOLOGICO MEXICO" 83B o="Telefonix Incorporated" 83C o="Sinoembed" + 83D o="Gentec" 83E o="The Dini Group, La Jolla inc." 83F o="Lumine Lighting Solutions Oy" 840 o="xm" @@ -21640,7 +25144,7 @@ FCFEC2 o="Invensys Controls UK Limited" 84E o="Chromalox, Inc." 84F o="Mettler Toledo" 850 o="REO AG" - 851 o="EXASCEND (Wuhan) Co., Ltd" + 851 o="Exascend, Inc." 852 o="NetBoxSC, LLC" 853 o="HGH SYSTEMES INFRAROUGES" 854 o="Adimec Advanced Image Systems" @@ -21648,9 +25152,10 @@ FCFEC2 o="Invensys Controls UK Limited" 856 o="Shanghai Westwell Information and Technology Company Ltd" 857 o="RCH ITALIA SPA" 858 o="Hubbell Power Systems" + 859 o="HAN CHANG" 85A o="BRUSHIES" 85B o="TSUBAKIMOTO CHAIN CO." - 85C o="Robot Pub Group" + 85C o="Tabology" 85D o="ATHREYA INC" 85E o="XLOGIC srl" 85F o="YUYAMA MFG Co.,Ltd" @@ -21682,22 +25187,24 @@ FCFEC2 o="Invensys Controls UK Limited" 879 o="ZIGPOS GmbH" 87A o="Accolade Technology Inc" 87B o="Liquid Instruments Pty Ltd" - 87C o="Nautel Limited" + 87C o="Nautel LTD" 87D o="INVIXIUM ACCESS INC." 87E o="Septentrio NV" 87F o="NAC Planning Co., Ltd." 880 o="Skopei B.V." 881 o="TATTILE SRL" 882 o="SIMON TECH, S.L." + 883 o="Contec Americas Inc." 884 o="LG Electronics" 885 o="QuirkLogic" 886 o="MB connect line GmbH Fernwartungssysteme" + 887 o="Entec Solar S.L." 888 o="Zetechtics Ltd" 889 o="Innovative Circuit Technology" 88A o="Perceptics, LLC" 88B o="WUHAN EASYLINKIN TECHNOLOGY co.,LTD" 88D o="LG Electronics" - 88E o="RCH Vietnam Limited Liability Company" + 88E o="RCH SPA" 88F o="Quaesta Instruments, LLC" 890 o="EIDOS s.r.l." 891 o="neocontrol soluções em automação" @@ -21714,7 +25221,7 @@ FCFEC2 o="Invensys Controls UK Limited" 89C o="IHI Rotating Machinery Engineering Co.,Ltd." 89D o="e-Matix Corporation" 89E o="Innovative Control Systems, LP" - 89F o="Levelup Holding, Inc." + 89F o="Level Up Holding Co., Inc." 8A0 o="DM RADIOCOM" 8A1 o="TIAMA" 8A2 o="WINNERS DIGITAL CORPORATION" @@ -21736,6 +25243,8 @@ FCFEC2 o="Invensys Controls UK Limited" 8B2 o="NPF Modem, LLC" 8B3 o="Firefly RFID Solutions" 8B4 o="Scenario Automation" + 8B5 o="xTom GmbH" + 8B6 o="Eldes Ltd" 8B7 o="Contec Americas Inc." 8B8 o="GDI Technology Inc" 8B9 o="Toptech Systems, Inc." @@ -21754,6 +25263,7 @@ FCFEC2 o="Invensys Controls UK Limited" 8C6 o="Onosokki Co.,Ltd" 8C7 o="Henschel-Robotics GmbH" 8C8 o="KRONOTECH SRL" + 8C9 o="Arwin Technology Limited" 8CA o="Allied Data Systems" 8CB o="WELT Corporation" 8CC o="Piranha EMS Inc." @@ -21761,8 +25271,12 @@ FCFEC2 o="Invensys Controls UK Limited" 8CE o="CORES Corporation" 8CF o="Dainichi Denshi Co.,LTD" 8D0 o="Raft Technologies" + 8D1 o="Field Design Inc." + 8D2 o="WIZAPPLY CO.,LTD" 8D3 o="PERFORMANCE CONTROLS, INC." + 8D4 o="Guangdong Transtek Medical Electronics Co., Ltd." 8D5 o="Guangzhou Wanglu" + 8D6 o="Beijing Xiansheng Technology Co., Ltd" 8D7 o="Schneider Electric Motion USA" 8D8 o="VNG Corporation" 8D9 o="MB connect line GmbH Fernwartungssysteme" @@ -21777,8 +25291,11 @@ FCFEC2 o="Invensys Controls UK Limited" 8E2 o="Zhiye Electronics Co., Ltd." 8E3 o="DORLET SAU" 8E4 o="Aplex Technology Inc." + 8E5 o="Shanghai Armour Technology Co., Ltd." 8E6 o="Mothonic AB" 8E7 o="REO AG" + 8E8 o="PREO INDUSTRIES FAR EAST LTD" + 8E9 o="COONTROL Tecnologia em Combustão LTDA EPP" 8EA o="JLCooper Electronics" 8EB o="Procon Electronics Pty Ltd" 8EC o="Rudy Tellert" @@ -21794,11 +25311,15 @@ FCFEC2 o="Invensys Controls UK Limited" 8F6 o="Dofuntech Co.,LTD." 8F7 o="I.E. Sevko A.V." 8F8 o="Wi6labs" + 8F9 o="IWS Global Pty Ltd" 8FA o="DEA SYSTEM SPA" + 8FB o="MB connect line GmbH Fernwartungssysteme" 8FC o="Mianjie Technology" + 8FD o="sonatest" 8FE o="Selmatec AS" 8FF o="IMST GmbH" - 901 o="ATS-CONVERS" + 900 o="DCS Corp" + 901 o="ATS-CONVERS,LLC" 902 o="Unlimiterhear co.,ltd. taiwan branch" 903 o="Cymtec Ltd" 904 o="PHB Eletronica Ltda." @@ -21806,6 +25327,7 @@ FCFEC2 o="Invensys Controls UK Limited" 906 o="Aplex Technology Inc." 907 o="NINGBO CRRC TIMES TRANSDUCER TECHNOLOGY CO., LTD" 908 o="Accusonic" + 909 o="tetronik GmbH AEN" 90A o="Hangzhou SunTown Intelligent Science & Technology Co.,Ltd." 90B o="Matrix Switch Corporation" 90C o="ANTEK GmbH" @@ -21814,11 +25336,14 @@ FCFEC2 o="Invensys Controls UK Limited" 90F o="DTRON Communications (Pty) Ltd" 910 o="Eginity, Inc." 911 o="Equatel" + 912 o="VERTEL DIGITAL PRIVATE LIMITED" 913 o="Shenzhen Riitek Technology Co.,Ltd" 914 o="Contec Americas Inc." + 915 o="DHK Storage, LLC" 916 o="Techno Mathematical Co.,Ltd" 917 o="KSJ Co.Ltd" 918 o="Glova Rail A/S" + 919 o="Thesycon Software Solutions GmbH & Co. KG" 91A o="Fujian Landfone Information Technology Co.,Ltd" 91B o="Dolotron d.o.o." 91C o="Alere Technologies AS" @@ -21826,19 +25351,21 @@ FCFEC2 o="Invensys Controls UK Limited" 91E o="Creotech Instruments S.A." 91F o="JSC %InformInvestGroup%" 920 o="SLAT" + 921 o="QDevil" 922 o="Adcole Space" - 923 o="eumig industrie-tv GmbH" + 923 o="eumig industrie-TV GmbH." 924 o="Meridian Technologies Inc" 925 o="Diamante Lighting Srl" 926 o="Advice" 927 o="LG Electronics" + 928 o="Done Design Inc" 929 o="OutSys" 92A o="Miravue" 92B o="ENTEC Electric & Electronic Co., LTD." 92C o="DISMUNTEL SAL" 92D o="Suzhou Wansong Electric Co.,Ltd" 92E o="Medical Monitoring Center OOD" - 92F o="SiFive" + 92F o="SiFive Inc" 930 o="The Institute of Mine Seismology" 931 o="MARINE INSTRUMENTS, S.A." 932 o="Rohde&Schwarz Topex SA" @@ -21851,6 +25378,7 @@ FCFEC2 o="Invensys Controls UK Limited" 939 o="Invertek Drives Ltd" 93A o="Braemar Manufacturing, LLC" 93B o="Changchun FAW Yanfeng Visteon Automotive Electronics.,Ltd." + 93C o="Televic Rail GmbH" 93D o="Elmeasure India Pvt Ltd" 93E o="Systems With Intelligence Inc." 93F o="Vision Sensing Co., Ltd." @@ -21888,13 +25416,17 @@ FCFEC2 o="Invensys Controls UK Limited" 95F o="WiFi Nation Ltd" 960 o="HORIZON TELECOM" 961 o="TASK SISTEMAS DE COMPUTACAO LTDA" + 962 o="Senquire Pte. Ltd" 963 o="Triax A/S" 964 o="Visility" + 965 o="LINEAGE POWER PVT LTD.," 966 o="dA Tomato Limited" 967 o="TATTILE SRL" 968 o="LGM Ingénierie" 969 o="Emtel System Sp. z o.o." + 96A o="Anello Photonics" 96B o="FOCAL-JMLab" + 96C o="Weble Sàrl" 96D o="MSB Elektronik und Gerätebau GmbH" 96E o="Myostat Motion Control Inc" 96F o="4CAM GmbH" @@ -21911,21 +25443,23 @@ FCFEC2 o="Invensys Controls UK Limited" 97A o="Orion Corporation" 97B o="WIKA Alexander Wiegand SE & Co. KG" 97C o="Nu-Tek Power Controls and Automation" - 97D o="RCH Vietnam Limited Liability Company" + 97D o="RCH SPA" 97E o="Public Joint Stock Company Morion" 97F o="BISTOS.,Co.,Ltd" 980 o="Beijing Yourong Runda Rechnology Development Co.Ltd." 981 o="Zamir Recognition Systems Ltd." 982 o="3S - Sensors, Signal Processing, Systems GmbH" - 983 o="ENS Engineered Network Systems" + 983 o="Havis Inc." 984 o="Sanmina Israel" 985 o="Burk Technology" 986 o="Aplex Technology Inc." 987 o="AXIS CORPORATION" + 988 o="Arris" 989 o="DCNS" 98A o="vision systems safety tech" 98B o="Richard Paul Russell Ltd" 98C o="University of Wisconsin Madison - Department of High Energy Physics" + 98D o="Motohaus Powersports Limited" 98E o="Autocom Diagnostic Partner AB" 98F o="Spaceflight Industries" 990 o="Energy Wall" @@ -21936,6 +25470,7 @@ FCFEC2 o="Invensys Controls UK Limited" 995 o="LayTec AG" 996 o="XpertSea Solutions inc." 997 o="ProTom International" + 998 o="Kita Kirmizi Takim Bilgi Guvenligi Danismanlik ve Egitim A.S." 999 o="LOGICUBE INC" 99A o="KEVIC. inc," 99B o="RCH ITALIA SPA" @@ -21946,8 +25481,10 @@ FCFEC2 o="Invensys Controls UK Limited" 9A0 o="ELDES" 9A1 o="ITS Industrial Turbine Services GmbH" 9A2 o="O-Net Communications(Shenzhen)Limited" + 9A3 o="Shanghai Hourui Technology Co., Ltd." 9A4 o="Nordmann International GmbH" 9A5 o="Softel" + 9A6 o="QUNU LABS PRIVATE LIMITED" 9A7 o="Honeywell" 9A8 o="Egag, LLC" 9A9 o="PABLO AIR Co., LTD" @@ -21968,6 +25505,8 @@ FCFEC2 o="Invensys Controls UK Limited" 9B8 o="Loma Systems s.r.o." 9B9 o="Aethera Technologies" 9BA o="ATIM Radiocommunication" + 9BB o="Jinga-hi, Inc." + 9BC o="Radian Research, Inc." 9BD o="Signal Processing Devices Sweden AB" 9BE o="Izome" 9BF o="Xiris Automation Inc." @@ -21991,10 +25530,11 @@ FCFEC2 o="Invensys Controls UK Limited" 9D1 o="OS42 UG (haftungsbeschraenkt)" 9D2 o="ACS MOTION CONTROL" 9D3 o="Communication Technology Ltd." - 9D4 o="Wartsila Voyage Limited" + 9D4 o="Wartsila Voyage Oy" 9D5 o="Southern Tier Technologies" 9D6 o="Crown Solar Power Fencing Systems" 9D7 o="KM OptoElektronik GmbH" + 9D8 o="JOLANYEE Technology Co., Ltd." 9D9 o="ATX Networks Corp" 9DA o="Blake UK" 9DB o="CAS Medical Systems, Inc" @@ -22016,9 +25556,10 @@ FCFEC2 o="Invensys Controls UK Limited" 9EB o="Preston Industries dba PolyScience" 9EC o="eSoftThings" 9ED o="Benchmark Electronics BV" + 9EE o="Lockheed Martin - THAAD" 9EF o="Cottonwood Creek Technologies, Inc." 9F0 o="FUJICOM Co.,Ltd." - 9F1 o="RFEL Ltd" + 9F1 o="Rheinmetall Electronics UK Ltd" 9F2 o="Acorde Technologies" 9F4 o="Tband srl" 9F5 o="Vickers Electronics Ltd" @@ -22031,31 +25572,38 @@ FCFEC2 o="Invensys Controls UK Limited" 9FC o="Truecom Telesoft Private Limited" 9FD o="amakidenki" 9FE o="SURUGA SEIKI CO., LTD." + 9FF o="Network Integrity Systems" A00 o="ATX NETWORKS LTD" A01 o="FeldTech GmbH" + A02 o="GreenFlux" A03 o="Proemion GmbH" A04 o="Galea Electric S.L." - A05 o="Wartsila Voyage Limited" + A05 o="Wartsila Voyage Oy" A06 o="Kopis Mobile LLC" A07 o="IoTrek Technology Private Limited" A08 o="BioBusiness" A09 o="Smart Embedded Systems" A0A o="CAPSYS" A0B o="ambiHome GmbH" + A0C o="Lumiplan Duhamel" A0D o="Globalcom Engineering SPA" A0E o="Vetaphone A/S" A0F o="OSAKI DATATECH CO., LTD." A10 o="w-tec AG" + A11 o="TRIOPTICS" A12 o="QUERCUS TECHNOLOGIES, S.L." A13 o="Uplevel Systems Inc" + A14 o="aelettronica group srl" A15 o="Intercore GmbH" + A16 o="devAIs s.r.l." A17 o="Tunstall A/S" A18 o="Embedded Systems Lukasz Panasiuk" A19 o="Qualitronix Madrass Pvt Ltd" A1A o="Nueon - The COR" A1B o="Potter Electric Signal Co. LLC" A1C o="MECA SYSTEM" - A1D o="Fluid Components International" + A1D o="Fluid Components Intl" + A1E o="Monnit Corporation" A1F o="GlobalTest LLC" A20 o="Design For Life Systems" A21 o="PPI Inc." @@ -22074,6 +25622,7 @@ FCFEC2 o="Invensys Controls UK Limited" A2E o="Kokam Co., Ltd" A2F o="Botek Systems AB" A30 o="SHEN ZHEN HUAWANG TECHNOLOGY CO; LTD" + A31 o="Wise Ally Holdings Limited" A32 o="Toughdog Security Systems" A33 o="TIAMA" A34 o="RCH ITALIA SPA" @@ -22121,8 +25670,11 @@ FCFEC2 o="Invensys Controls UK Limited" A5E o="ConectaIP Tecnologia S.L." A5F o="Daatrics LTD" A60 o="Pneumax S.p.A." + A61 o="Omsk Manufacturing Association named after A.S. Popov" A62 o="Environexus" + A63 o="DesignA Electronics Limited" A64 o="Newshine" + A65 o="CREATIVE" A66 o="Trapeze Software Group Inc" A67 o="Gstar Creation Co .,Ltd" A68 o="Zhejiang Zhaolong Interconnect Technology Co.,Ltd" @@ -22142,6 +25694,7 @@ FCFEC2 o="Invensys Controls UK Limited" A76 o="Pietro Fiorentini" A77 o="SPX Radiodetection" A78 o="Bionics co.,ltd." + A79 o="NOREYA Technology e.U." A7A o="Fluid Management Technology" A7B o="SmartSafe" A7C o="Transelektronik Messgeräte GmbH" @@ -22152,7 +25705,7 @@ FCFEC2 o="Invensys Controls UK Limited" A81 o="Sienda New Media Technologies GmbH" A82 o="Telefrank GmbH" A83 o="SHENZHEN HUINENGYUAN Technology Co., Ltd" - A84 o="SOREL GmbH Mikroelektronik" + A84 o="SOREL GmbH" A85 o="exceet electronics GesmbH" A86 o="Divigraph (Pty) LTD" A87 o="Tornado Modular Systems" @@ -22163,6 +25716,7 @@ FCFEC2 o="Invensys Controls UK Limited" A8C o="CYG CONTRON CO.LTD" A8D o="Code Blue Corporation" A8E o="OMESH CITY GROUP" + A8F o="VK Integrated Systems" A90 o="ERA a.s." A91 o="IDEAL INDUSTRIES Ltd t/a Casella" A92 o="Grossenbacher Systeme AG" @@ -22178,6 +25732,7 @@ FCFEC2 o="Invensys Controls UK Limited" A9C o="Veo Technologies" A9D o="VITEC MULTIMEDIA" A9E o="Argon ST" + A9F o="Master Meter Inc." AA0 o="Simple Works, Inc." AA1 o="Shenzhen Weema TV Technology Co.,Ltd." AA2 o="eumig industrie-TV GmbH." @@ -22195,6 +25750,7 @@ FCFEC2 o="Invensys Controls UK Limited" AAE o="Nuviz Oy" AAF o="Exi Flow Measurement Ltd" AB0 o="OSR R&D ISRAEL LTD" + AB1 o="ISRV Zrt." AB2 o="Power Electronics Espana, S.L." AB3 o="MICAS AG" AB4 o="SYS TEC electronic GmbH" @@ -22211,6 +25767,7 @@ FCFEC2 o="Invensys Controls UK Limited" ABF o="AGR International" AC0 o="RITEC" AC1 o="AEM Singapore Pte. Ltd." + AC2 o="Wisebox.,Co.Ltd" AC3 o="Novoptel GmbH" AC4 o="Lexi Devices, Inc." AC5 o="ATOM GIKEN Co.,Ltd." @@ -22222,13 +25779,16 @@ FCFEC2 o="Invensys Controls UK Limited" ACB o="TATTILE SRL" ACC o="Schneider Electric Motion USA" ACD o="CRDE" + ACE o="FARHO DOMOTICA SL" ACF o="APG Cash Drawer, LLC" + AD0 o="REO AG" AD1 o="Sensile Technologies SA" AD2 o="Wart-Elektronik" AD3 o="WARECUBE,INC" AD4 o="INVISSYS" AD5 o="Birdland Audio" AD6 o="Lemonade Lab Inc" + AD7 o="Octopus IoT srl" AD8 o="Euklis by GSG International" AD9 o="aelettronica group srl" ADB o="RF Code" @@ -22238,7 +25798,7 @@ FCFEC2 o="Invensys Controls UK Limited" ADF o="Seraphim Optronics Ltd" AE0 o="AnyComm.Co.,Ltd." AE1 o="DimoCore Corporation" - AE2 o="Wartsila Voyage Limited" + AE2 o="Wartsila Voyage Oy" AE3 o="Zhejiang Wellsun Electric Meter Co.,Ltd" AE4 o="Nuance Hearing Ltd." AE5 o="BeatCraft, Inc." @@ -22264,9 +25824,12 @@ FCFEC2 o="Invensys Controls UK Limited" AF9 o="Critical Link LLC" AFA o="Power Security Systems Ltd." AFB o="Shanghai Tianhe Automation Instrumentation Co., Ltd." + AFC o="BAE Systems" + AFD o="dongsheng" AFE o="MESOTECHNIC" AFF o="digital-spice" B00 o="HORIBA ABX SAS" + B01 o="G.S.D GROUP INC." B02 o="Nordic Automation Systems AS" B03 o="Sprintshield d.o.o." B04 o="Herrmann Datensysteme GmbH" @@ -22275,13 +25838,17 @@ FCFEC2 o="Invensys Controls UK Limited" B07 o="Arrowvale Electronics" B08 o="Secuinfo Co. Ltd" B09 o="FIRST LIGHT IMAGING" + B0A o="Mitsubishi Electric India Pvt. Ltd." B0B o="INTERNET PROTOCOLO LOGICA SL" B0C o="Vigilate srl" + B0D o="ALFI" B0E o="Servotronix Motion Control" B0F o="merkur Funksysteme AG" B10 o="Zumbach Electronic AG" B11 o="CAB S.R.L." + B12 o="VTEQ" B13 o="Omwave" + B14 o="Pantherun Technologies Pvt Ltd" B15 o="Eta Beta Srl" B16 o="XI'AN SHENMING ELECTRON TECHNOLOGY CO.,LTD" B17 o="Intesens" @@ -22289,6 +25856,7 @@ FCFEC2 o="Invensys Controls UK Limited" B19 o="Brayden Automation Corp" B1A o="Aaronia AG" B1B o="Technology Link Corporation" + B1C o="Serveron / Qualitrol" B1D o="Safelet BV" B1E o="Fen Systems Ltd" B1F o="TECNOWATT" @@ -22299,15 +25867,18 @@ FCFEC2 o="Invensys Controls UK Limited" B24 o="Datasat Digital Entertainment" B25 o="Hifocus Electronics India Private Limited" B26 o="INTEC International GmbH" + B27 o="Naval Group" B28 o="HUSTY M.Styczen J.Hupert sp.j." B29 o="WiViCom Co., Ltd." B2A o="Myro Control, LLC" B2B o="Vtron Pty Ltd" + B2C o="Elman srl" B2D o="Plexus" B2E o="Green Access Ltd" B2F o="Hermann Automation GmbH" B30 o="Systolé Hardware B.V." B31 o="Qwave Inc" + B32 o="GridBeyond" B33 o="Aplex Technology Inc." B34 o="Medtronic" B35 o="Rexxam Co.,Ltd." @@ -22323,13 +25894,17 @@ FCFEC2 o="Invensys Controls UK Limited" B3F o="Orbit International" B40 o="Wuhan Xingtuxinke ELectronic Co.,Ltd" B41 o="T&M Media Pty Ltd" + B42 o="Samwell International Inc" B43 o="ZAO ZEO" B44 o="ENTEC Electric & Electronic Co., LTD." + B45 o="Hon Hai Precision IND.CO.,LTD" B46 o="FAS Electronics (Fujian) Co.,LTD." B47 o="DSIT Solutions LTD" B48 o="DWQ Informatikai Tanacsado es Vezerlestechnikai KFT" B49 o="ANALOGICS TECH INDIA LTD" B4A o="MEDEX" + B4B o="Network Customizing Technologies Inc" + B4C o="AmericanPharma Technologies" B4D o="Avidbots Corporation" B4F o="AvMap srlu" B50 o="iGrid T&D" @@ -22349,6 +25924,7 @@ FCFEC2 o="Invensys Controls UK Limited" B5E o="Dynics" B5F o="CRDMDEVEOPPEMENTS" B60 o="ZAO ZEO" + B61 o="WuXi anktech Co., Ltd" B62 o="Sakura Seiki Co.,Ltd." B63 o="Ideas srl" B64 o="OSUNG LST CO.,LTD." @@ -22356,12 +25932,15 @@ FCFEC2 o="Invensys Controls UK Limited" B66 o="Silent Gliss International Ltd" B67 o="RedWave Labs Ltd" B68 o="S-Rain Control A/S" + B69 o="Daatrics LTD" B6A o="YUYAMA MFG Co.,Ltd" B6B o="Cambria Corporation" B6C o="GHM-Messtechnik GmbH (Standort IMTRON)" B6D o="Movis" B6E o="Edgeware AB" B6F o="Integra Metering SAS" + B70 o="Torion Plasma Corporation" + B71 o="Optiver Pty Ltd" B72 o="UB330.net d.o.o." B73 o="Cetto Industries" B74 o="OnYield Inc Ltd" @@ -22369,6 +25948,7 @@ FCFEC2 o="Invensys Controls UK Limited" B76 o="ATL-SD" B77 o="Motec Pty Ltd" B78 o="HOERMANN GmbH" + B79 o="Dadacon GmbH" B7A o="MAHLE" B7B o="Doosan Digital Innovation America" B7C o="Electronic Navigation Ltd" @@ -22378,6 +25958,7 @@ FCFEC2 o="Invensys Controls UK Limited" B80 o="BIGHOUSE.,INC." B81 o="Instro Precision Limited" B82 o="Lookout Portable Security" + B83 o="Matrix Telematics Limited" B84 o="OOO Research and Production Center %Computer Technologies%" B85 o="Fenotech Inc." B86 o="Hilo" @@ -22392,8 +25973,10 @@ FCFEC2 o="Invensys Controls UK Limited" B8F o="Assembly Contracts Ltd" B90 o="Amico Corporation" B91 o="Dynetics, Inc." + B92 o="N A Communications LLC" B93 o="INTERNET PROTOCOLO LOGICA SL" B94 o="Cygnetic Technologies (Pty) Ltd" + B95 o="EPIImaging" B96 o="Oculii" B97 o="Canam Technology, Inc." B98 o="GSF Corporation Pte Ltd" @@ -22404,6 +25987,7 @@ FCFEC2 o="Invensys Controls UK Limited" B9D o="Conclusive Engineering" B9E o="POLSYSTEM SI SP. Z O.O., S.K.A." B9F o="Yuksek Kapasite Radyolink Sistemleri San. ve Tic. A.S." + BA0 o="Season Electronics Ltd" BA1 o="Cathwell AS" BA2 o="MAMAC Systems, Inc." BA3 o="TIAMA" @@ -22431,6 +26015,7 @@ FCFEC2 o="Invensys Controls UK Limited" BB9 o="KOSMEK.Ltd" BBA o="Samriddi Automations Pvt. Ltd." BBB o="YUYAMA MFG Co.,Ltd" + BBC o="Boundary Technologies Ltd" BBD o="Providius Corp" BBE o="Sunrise Systems Electronics Co. Inc." BBF o="Ensys srl" @@ -22442,6 +26027,7 @@ FCFEC2 o="Invensys Controls UK Limited" BC5 o="U&R GmbH Hardware- und Systemdesign" BC6 o="Hatteland Display AS" BC7 o="Autonomic Controls, Inc." + BC8 o="Loma Systems s.r.o." BC9 o="Yite technology" BCA o="Deymed Diagnostic" BCB o="Smart Vision Lights" @@ -22456,9 +26042,12 @@ FCFEC2 o="Invensys Controls UK Limited" BD4 o="YUYAMA MFG Co.,Ltd" BD5 o="Synics AG" BD6 o="Consarc Corporation" + BD7 o="TT Group SRL" BD8 o="MB connect line GmbH Fernwartungssysteme" BD9 o="SolwayTech" BDA o="5-D Systems, Inc." + BDB o="Power Electronics Espana, S.L." + BDC o="EDF Lab" BDD o="CDR SRL" BDE o="CAST Group of Companies Inc." BDF o="H2O-YUG LLC" @@ -22473,15 +26062,19 @@ FCFEC2 o="Invensys Controls UK Limited" BE8 o="AndFun Co.,Ltd." BE9 o="Telecast Inc." BEA o="Virtuosys Ltd" + BEB o="Potter Electric Signal Co. LLC" BEC o="Tokyo Communication Equipment MFG Co.,ltd." BED o="Itrinegy Ltd." BEE o="Sicon srl" BEF o="Sensortech Systems Inc." + BF0 o="Alfa Elettronica srl" BF1 o="Flashnet SRL" BF2 o="TWIN DEVELOPMENT" BF3 o="CG-WIRELESS" + BF4 o="CreevX" BF5 o="Acacia Research" BF6 o="comtac AG" + BF7 o="Fischer Connectors" BF8 o="RCH ITALIA SPA" BF9 o="Okolab Srl" BFA o="NESA SRL" @@ -22499,7 +26092,7 @@ FCFEC2 o="Invensys Controls UK Limited" C06 o="XotonicsMED GmbH" C07 o="ARECO" C08 o="Talleres de Escoriaza SA" - C09 o="RCH Vietnam Limited Liability Company" + C09 o="RCH SPA" C0A o="Infosocket Co., Ltd." C0B o="FSTUDIO CO LTD" C0C o="Tech4Race" @@ -22509,15 +26102,17 @@ FCFEC2 o="Invensys Controls UK Limited" C10 o="Scanvaegt Systems A/S" C11 o="Ariston Thermo s.p.a." C12 o="Beijing Wisetone Information Technology Co.,Ltd." + C13 o="Guangzhou Xianhe Technology Engineering Co., Ltd" C14 o="Grupo Epelsa S.L." C15 o="Sensobox GmbH" C16 o="Southern Innovation" C17 o="Potter Electric Signal Co. LLC" C18 o="Sanmina Israel" + C19 o="Zumbach Electronic AG" C1A o="Xylon" C1B o="Labinvent JSC" C1C o="D.E.M. SPA" - C1D o="Kranze Technology Solutions" + C1D o="Kranze Technology Solutions, Inc." C1E o="Kron Medidores" C1F o="Behr Technologies Inc" C20 o="Mipot S.p.a." @@ -22528,6 +26123,7 @@ FCFEC2 o="Invensys Controls UK Limited" C25 o="speedsignal GmbH" C26 o="Triple Play Communications" C27 o="GD Mission Systems" + C28 o="Mitech Integrated Systems Inc." C29 o="SOFTLAND INDIA LTD" C2A o="Array Telepresence" C2B o="YUYAMA MFG Co.,Ltd" @@ -22535,6 +26131,7 @@ FCFEC2 o="Invensys Controls UK Limited" C2D o="Ensotech Limited" C2E o="Triax A/S" C2F o="ATBiS Co.,Ltd" + C30 o="Polskie Sady Nowe Podole Sp. z o.o." C31 o="German Power GmbH" C32 o="INFRASAFE/ ADVANTOR SYSTEMS" C33 o="Dandong Dongfang Measurement & Control Technology Co., Ltd." @@ -22555,7 +26152,9 @@ FCFEC2 o="Invensys Controls UK Limited" C42 o="CRDE" C43 o="Future Skies" C44 o="Franz Kessler GmbH" - C45 o="Stiebel Eltron GmbH" + C45 o="STIEBEL ELTRON GMBH & CO. KG" + C46 o="eumig industrie-TV GmbH." + C47 o="ABB" C48 o="Weltek Technologies Co. Ltd." C49 o="BTG Instruments AB" C4A o="TIAMA" @@ -22571,6 +26170,7 @@ FCFEC2 o="Invensys Controls UK Limited" C54 o="Flexsolution APS" C55 o="Intelligent Energy Ltd" C56 o="TELETASK" + C57 o="eBZ GmbH" C58 o="RMI Laser LLC" C59 o="R Cubed Engineering, LLC" C5A o="Commsignia Ltd." @@ -22589,15 +26189,17 @@ FCFEC2 o="Invensys Controls UK Limited" C67 o="Collini Dienstleistungs GmbH" C68 o="Mini Solution Co. Ltd." C69 o="AZ-TECHNOLOGY SDN BHD" + C6B o="Herholdt Controls srl" C6C o="McQ Inc" C6D o="Cyviz AS" C6E o="Orion Technologies, LLC" C6F o="nyantec GmbH" C70 o="Magnetek" + C71 o="The Engineerix Group" C72 o="Scharco Elektronik GmbH" C73 o="C.D.N.CORPORATION" C74 o="Qtechnology A/S" - C75 o="BIT Group USA, Inc." + C75 o="Planet Innovation Products Inc." C76 o="ELA INNOVATION" C77 o="Yönnet Akıllı Bina ve Otomasyon Sistemleri" C78 o="NETA Elektronik AS" @@ -22640,17 +26242,20 @@ FCFEC2 o="Invensys Controls UK Limited" C9D o="APG Cash Drawer, LLC" C9E o="FUKUDA SANGYO CO., LTD." C9F o="Triax A/S" + CA0 o="Xirgo Technologies LLC" CA1 o="Waldo System" CA2 o="De Haardt bv" CA3 o="Saankhya Labs Private Limited" CA4 o="Netemera Sp. z o.o." CA5 o="PTS Technologies Pte Ltd" + CA6 o="AXING AG" CA7 o="i-View Communication Inc." CA8 o="Grupo Epelsa S.L." CA9 o="Nxcontrol system Co., Ltd." CAA o="Bel Power Solutions GmbH" CAB o="NOTICE Co., Ltd." CAC o="CRDE" + CAD o="YUYAMA MFG Co.,Ltd" CAE o="THEMA" CAF o="DAVE SRL" CB0 o="Ossiaco" @@ -22658,52 +26263,64 @@ FCFEC2 o="Invensys Controls UK Limited" CB2 o="SECLAB" CB3 o="KST technology" CB4 o="Planewave Instruments" + CB5 o="Atlas Lighting Products" CB6 o="Kuebrich Ingeniergesellschaft mbh & Co. KG" - CB7 o="HKC Limited" + CB7 o="HKC Security Ltd." CB8 o="Verti Tecnologia" CB9 o="JSC «SATIS-TL-94»" CBA o="YUYAMA MFG Co.,Ltd" CBB o="Postmark Incorporated" CBC o="Procon Electronics Pty Ltd" - CBD o="Preo Industries Far East Limited" + CBD o="PREO INDUSTRIES FAR EAST LTD" CBE o="Ensura Solutions BV" + CBF o="Cubic ITS, Inc. dba GRIDSMART Technologies" + CC0 o="Avionica" CC1 o="BEEcube Inc." CC2 o="LSC Lighting Systems (Aust) Pty Ltd" CC3 o="Fidalia Networks Inc" CC4 o="Benchmark Electronics BV" CC5 o="Intecom" CC6 o="MB connect line GmbH Fernwartungssysteme" + CC7 o="SOtM" CC8 o="PROFEN COMMUNICATIONS" CC9 o="Rapiscan Systems" CCA o="SIEMENS AS" - CCB o="RealD" + CCB o="RealD, Inc." CCC o="AEC s.r.l." CCD o="Suzhou PowerCore Technology Co.,Ltd." CCE o="Proconex 2010 Inc." CCF o="Netberg" CD0 o="Ellenex Pty Ltd" CD1 o="Cannex Technology Inc." - CD2 o="HBH Microwave GmbH" + CD2 o="TRUMPF Huttinger GmbH + Co. KG," CD3 o="Controlrad" CD4 o="Southern Ground Audio LLC" CD5 o="Apantac LLC" CD6 o="VideoRay LLC" CD7 o="AutomationX GmbH" - CD9 o="Peter Huber Kaeltemaschinenbau GmbH" + CD8 o="Nexus Electric S.A." + CD9 o="Peter Huber Kaeltemaschinenbau SE" CDA o="VITEC" CDB o="Wuhan Xingtuxinke ELectronic Co.,Ltd" CDC o="Dat-Con d.o.o." + CDD o="Teneo IoT B.V." CDE o="Multipure International" CDF o="3D Printing Specialists" + CE0 o="M.S. CONTROL" CE1 o="EA Elektroautomatik GmbH & Co. KG" CE2 o="Centero" CE3 o="Dalcnet srl" CE4 o="WAVES SYSTEM" CE5 o="GridBridge Inc" + CE6 o="Dynim Oy" CE7 o="June Automation Singapore Pte. Ltd." + CE8 o="Grossenbacher Systeme AG" CE9 o="KINEMETRICS" CEA o="Computerwise, Inc." + CEB o="Xirgo Technologies LLC" + CEC o="Deltronic Security AB" CED o="Advanced Products Corporation Pte Ltd" + CEE o="ACRIOS Systems s.r.o." CEF o="Ellego Powertec Oy" CF0 o="SHENZHEN WITLINK CO.,LTD." CF1 o="LightDec GmbH & Co. KG" @@ -22714,6 +26331,8 @@ FCFEC2 o="Invensys Controls UK Limited" CF6 o="Tornado Modular Systems" CF7 o="GENTEC ELECTRO-OPTICS" CF8 o="Idneo Technologies S.A.U." + CF9 o="Breas Medical AB" + CFA o="SCHEIBER" CFB o="Screen Innovations" CFC o="VEILUX INC." CFD o="iLOQ Oy" @@ -22722,11 +26341,14 @@ FCFEC2 o="Invensys Controls UK Limited" D00 o="DKI Technology Co., Ltd" D01 o="Vision4ce Ltd" D02 o="Arctos Showlasertechnik GmbH" + D03 o="Digitella Inc." + D04 o="Plenty Unlimited Inc" D05 o="Colmek" D06 o="YUYAMA MFG Co.,Ltd" D07 o="Waversa Systems" D08 o="Veeco Instruments" D09 o="Rishaad Brown" + D0B o="Vendanor AS" D0C o="Connor Winfield LTD" D0D o="Logiwaste AB" D0E o="Beijing Aumiwalker technology CO.,LTD" @@ -22734,17 +26356,21 @@ FCFEC2 o="Invensys Controls UK Limited" D10 o="Contec Americas Inc." D11 o="EREE Electronique" D12 o="FIDELTRONIK POLAND SP. Z O.O." + D13 o="IRT Technologies" D14 o="LIGPT" D15 o="3DGence sp. z o.o." D16 o="Monnit Corporation" + D17 o="Power Element" D18 o="MetCom Solutions GmbH" D19 o="Senior Group LLC" D1A o="Monnit Corporation" D1B o="Grupo Epelsa S.L." D1C o="Specialised Imaging Limited" + D1D o="Stuyts Engineering Haarlem BV" D1E o="Houston Radar LLC" D1F o="Embsec AB" D20 o="Rheonics GmbH" + D21 o="biosilver .co.,ltd" D22 o="DEK Technologies" D23 o="COTT Electronics" D24 o="Microtronics Engineering GmbH" @@ -22755,6 +26381,7 @@ FCFEC2 o="Invensys Controls UK Limited" D29 o="Sportzcast" D2A o="ITsynergy Ltd" D2B o="StreamPlay Oy Ltd" + D2C o="microWerk GmbH" D2D o="Evolute Systems Private Limited" D2E o="Coheros Oy" D2F o="L.I.F.E. Corporation SA" @@ -22772,12 +26399,14 @@ FCFEC2 o="Invensys Controls UK Limited" D3B o="NimbeLink Corp" D3C o="HRT" D3D o="Netzikon GmbH" + D3E o="enders GmbH" D3F o="GLOBALCOM ENGINEERING SPA" D40 o="CRDE" D41 o="KSE GmbH" D42 o="DSP DESIGN" D43 o="EZSYS Co., Ltd." D44 o="ic-automation GmbH" + D45 o="Vemco Sp. z o. o." D46 o="Contineo s.r.o." D47 o="YotaScope Technologies Co., Ltd." D48 o="HEADROOM Broadcast GmbH" @@ -22788,8 +26417,9 @@ FCFEC2 o="Invensys Controls UK Limited" D4D o="The Morey Corporation" D4E o="FLSmidth" D4F o="C-COM Satellite Systems Inc." - D50 o="GRIDSMART Technologies" + D50 o="Cubic ITS, Inc. dba GRIDSMART Technologies" D51 o="Azcom Technology S.r.l." + D52 o="Sensoronic Co.,Ltd" D53 o="BeiLi eTek (Zhangjiagang) Co., Ltd." D54 o="JL World Corporation Limited" D55 o="WM Design s.r.o" @@ -22800,6 +26430,8 @@ FCFEC2 o="Invensys Controls UK Limited" D5A o="WyreStorm Technologies Ltd" D5B o="WyreStorm Technologies Ltd" D5C o="Critical Link LLC" + D5D o="SEASONS 4 INC" + D5E o="Barcelona Smart Technologies" D5F o="Core Balance Co., Ltd." D60 o="Flintab AB" D61 o="VITEC" @@ -22809,11 +26441,12 @@ FCFEC2 o="Invensys Controls UK Limited" D65 o="CRDE" D66 o="Ascendent Technology Group" D67 o="ALPHA Corporation" - D68 o="Tobi Tribe Inc" + D68 o="Tobi Tribe Inc." D69 o="Thermo Fisher Scientific" D6A o="KnowRoaming" D6B o="Uwinloc" D6C o="GP Systems GmbH" + D6D o="ACD Elekronik GmbH" D6E o="ard sa" D6F o="X-SPEX GmbH" D70 o="Rational Production srl Unipersonale" @@ -22824,16 +26457,20 @@ FCFEC2 o="Invensys Controls UK Limited" D75 o="Hyundai MNSOFT" D76 o="attocube systems AG" D77 o="Portrait Displays, Inc." + D78 o="Nxvi Microelectronics Technology (Jinan) Co., Ltd." D79 o="GOMA ELETTRONICA SpA" D7A o="Speedifi Inc" - D7B o="Peter Huber Kaeltemaschinenbau AG" + D7B o="Peter Huber Kaeltemaschinenbau SE" D7C o="D.T.S Illuminazione Srl" D7D o="BESO sp. z o.o." D7E o="Triax A/S" D7F o="ConectaIP Tecnologia S.L." D80 o="AMMT GmbH" D81 o="PDD Group Ltd" + D82 o="SUN ELECTRONICS CO.,LTD." + D83 o="AKASAKATEC INC." D84 o="Sentry360" + D85 o="BTG Instruments AB" D86 o="WPGSYS Pte Ltd" D87 o="Zigen Corp" D88 o="Nidec asi spa" @@ -22860,6 +26497,7 @@ FCFEC2 o="Invensys Controls UK Limited" D9D o="Electroimpact, Inc." D9E o="Grupo Epelsa S.L." D9F o="%Digital Solutions% JSC" + DA0 o="Jiangsu Etern Compamy Limited" DA1 o="Qprel srl" DA2 o="ACD Elekronik GmbH" DA3 o="Voleatech GmbH" @@ -22868,7 +26506,7 @@ FCFEC2 o="Invensys Controls UK Limited" DA6 o="Redfish Group Pty Ltd" DA7 o="Network Innovations" DA8 o="Tagarno AS" - DA9 o="RCH Vietnam Limited Liability Company" + DA9 o="RCH SPA" DAA o="AmTote Australasia" DAB o="SET Power Systems GmbH" DAC o="Dalian Laike Technology Development Co., Ltd" @@ -22884,6 +26522,7 @@ FCFEC2 o="Invensys Controls UK Limited" DB6 o="csintech" DB7 o="Pengo Technology Co., Ltd" DB8 o="SISTEM SA" + DB9 o="PULOON Tech" DBA o="KODENSHI CORP." DBB o="Fuhr GmbH Filtertechnik" DBC o="Gamber Johnson-LLC" @@ -22894,17 +26533,19 @@ FCFEC2 o="Invensys Controls UK Limited" DC1 o="Metralight, Inc." DC2 o="SwineTech, Inc." DC3 o="Fath Mechatronics" - DC4 o="Peter Huber Kaeltemaschinenbau AG" + DC4 o="Peter Huber Kaeltemaschinenbau SE" DC5 o="Excel Medical Electronics LLC" DC6 o="IDEM INC." DC7 o="NUBURU Inc." DC8 o="Enertex Bayern GmbH" DC9 o="Sensoterra BV" DCA o="DSan Corporation" + DCB o="MIJIENETRTECH CO.,LTD" DCC o="Eutron SPA" - DCD o="C Tech Bilişim Teknolojileri San. ve Tic. AŞ" + DCD o="C TECH BILISIM TEKNOLOJILERI SAN. VE TIC. A.S." DCE o="Stahl GmbH" DCF o="KLS Netherlands B.V." + DD0 o="Deep Secure Limited" DD1 o="em-tec GmbH" DD2 o="Insitu, Inc" DD3 o="VITEC" @@ -22914,6 +26555,7 @@ FCFEC2 o="Invensys Controls UK Limited" DD7 o="DETECT Australia" DD8 o="EMSCAN Corp." DD9 o="MaNima Technologies BV" + DDA o="Hubbell Power Systems" DDB o="Intra Corporation" DDC o="Syscom Instruments SA" DDD o="BIO RAD LABORATORIES" @@ -22928,10 +26570,13 @@ FCFEC2 o="Invensys Controls UK Limited" DE6 o="MB connect line GmbH Fernwartungssysteme" DE7 o="Innominds Software Private Limited" DE8 o="Nation-E Ltd." + DE9 o="EkspertStroyProekt LLC" DEA o="Advanced Ventilation Applications, Inc." + DEB o="DORLET SAU" DEC o="Condev-Automation GmbH" DED o="Simpulse" DEE o="CRDE" + DEF o="ISG Nordic AB" DF0 o="astozi consulting Tomasz Zieba" DF1 o="CoXlab Inc." DF2 o="AML" @@ -22939,7 +26584,7 @@ FCFEC2 o="Invensys Controls UK Limited" DF4 o="Heim- & Bürokommunikation Ilmert e.K." DF5 o="Beijing Huanyu Zhilian Science &Technology Co., Ltd." DF6 o="Tiab Limited" - DF7 o="Refecor Oy" + DF7 o="ScopeSensor Oy" DF8 o="RMA Mess- und Regeltechnik GmbH & Co.KG" DF9 o="Korea Plant Maintenance" DFA o="Newtouch Electronics (Shanghai) Co.,Ltd." @@ -22951,7 +26596,9 @@ FCFEC2 o="Invensys Controls UK Limited" E00 o="Jeaway CCTV Security Ltd,." E01 o="EarTex" E02 o="YEHL & JORDAN LLC" + E03 o="MBJ" E04 o="Combilent" + E05 o="Lobaro GmbH" E06 o="System West dba ICS Electronics" E07 o="Baader Planetarium GmbH" E08 o="Olssen" @@ -22960,18 +26607,22 @@ FCFEC2 o="Invensys Controls UK Limited" E0B o="ENTEC Electric & Electronic Co., LTD." E0C o="Communication Systems Solutions" E0D o="Sigma Connectivity AB" + E0E o="VulcanForms" E0F o="Vtron Pty Ltd" E10 o="Leidos" E11 o="Engage Technologies" E12 o="SNK, Inc." + E13 o="Suzhou ZhiCai Co.,Ltd." E14 o="Automata Spa" E15 o="Benetel" E16 o="China Entropy Co., Ltd." E17 o="SA Photonics" E18 o="Plasmapp Co.,Ltd." + E19 o="BAB TECHNOLOGIE GmbH" E1A o="BIZERBA LUCEO" E1B o="Neuron GmbH" E1C o="RoomMate AS" + E1D o="Galaxy Next Generation, Inc." E1E o="Umano Medical Inc." E1F o="THETA432" E20 o="Signature Control Systems, LLC." @@ -22987,8 +26638,9 @@ FCFEC2 o="Invensys Controls UK Limited" E2A o="CONTES, spol. s r.o." E2B o="Guan Show Technologe Co., Ltd." E2C o="Fourth Frontier Technologies Private Limited" + E2D o="BAE Systems" E2E o="Merz s.r.o." - E2F o="Flextronics International Kft." + E2F o="Flextronics International Kft" E30 o="QUISS AG" E31 o="NEUROPHET, Inc." E32 o="HERUTU ELECTRONICS CORPORATION" @@ -23006,7 +26658,10 @@ FCFEC2 o="Invensys Controls UK Limited" E3E o="Sol Welding srl" E3F o="BESTCODE LLC" E40 o="Siemens Mobility GmbH - MO TI SPA" + E41 o="4neXt S.r.l.s." + E42 o="Neusoft Reach Automotive Technology (Shenyang) Co.,Ltd" E43 o="SL Audio A/S" + E44 o="BrainboxAI Inc" E45 o="Momentum Data Systems" E46 o="7thSense Design Limited" E47 o="DEUTA-WERKE GmbH" @@ -23033,12 +26688,19 @@ FCFEC2 o="Invensys Controls UK Limited" E5C o="Walton Hi-Tech Industries Ltd." E5D o="Boffins Technologies AB" E5E o="Critical Link LLC" + E5F o="CesiumAstro Inc." + E60 o="Davitor AB" E61 o="Adeli" + E62 o="Eon" E63 o="Potomac Electric Corporation" E64 o="HONG JIANG ELECTRONICS CO., LTD." + E65 o="BIRTECH TECHNOLOGY" + E66 o="Eneon sp. z o.o." E67 o="APPLIED PROCESSING" + E68 o="Transit Solutions, LLC." E69 o="Fire4 Systems UK Ltd" E6A o="MAC Solutions (UK) Ltd" + E6B o="Shenzhen Shi Fang Communication Technology Co., Ltd" E6C o="Fusar Technologies inc" E6D o="Domus S.C." E6E o="Lieron BVBA" @@ -23048,8 +26710,8 @@ FCFEC2 o="Invensys Controls UK Limited" E72 o="KDT Corp." E73 o="Zeus Control Systems Ltd" E74 o="Exfrontier Co., Ltd." - E75 o="Nke" - E76 o="Dorsett Technologies, Inc." + E75 o="Watteco" + E76 o="Dorsett Technologies Inc" E77 o="OPTIX JSC" E78 o="Camwell India LLP" E79 o="Acrodea, Inc." @@ -23066,6 +26728,7 @@ FCFEC2 o="Invensys Controls UK Limited" E84 o="ENTEC Electric & Electronic Co., LTD." E85 o="Explorer Inc." E86 o="YUYAMA MFG Co.,Ltd" + E87 o="STACKFORCE GmbH" E88 o="Breas Medical AB" E89 o="JSC Kaluga Astral" E8A o="Melecs EWS GmbH" @@ -23089,6 +26752,7 @@ FCFEC2 o="Invensys Controls UK Limited" E9C o="ATG UV Technology" E9D o="INTECH" E9E o="MSB Elektronik und Gerätebau GmbH" + E9F o="Gigaband IP LLC" EA0 o="PARK24" EA1 o="Qntra Technology" EA2 o="Transportal Solutions Ltd" @@ -23096,15 +26760,16 @@ FCFEC2 o="Invensys Controls UK Limited" EA4 o="Grupo Epelsa S.L." EA5 o="LOTES TM OOO" EA6 o="Galios" - EA7 o="S.I.C.E.S. srl" + EA7 o="MECCALTE SPA" EA8 o="Dia-Stron Limited" EA9 o="Zhuhai Lonl electric Co.,Ltd." + EAA o="Druck Ltd." EAB o="APEN GROUP SpA (VAT IT08767740155)" EAC o="Kentech Instruments Limited" EAD o="Cobo, Inc." EAE o="Orlaco Products B.V." EAF o="Sicon srl" - EB0 o="Nautel Limted" + EB0 o="Nautel LTD" EB1 o="CP contech electronic GmbH" EB2 o="Shooter Detection Systems" EB3 o="KWS-Electronic GmbH" @@ -23120,13 +26785,16 @@ FCFEC2 o="Invensys Controls UK Limited" EBD o="midBit Technologies, LLC" EBE o="Sierra Pacific Innovations Corp" EBF o="AUTOMATICA Y REGULACION S.A." + EC0 o="ProtoConvert Pty Ltd" EC1 o="Xafax Nederland bv" + EC2 o="Lightside Instruments AS" EC3 o="Virtual Control Systems Ltd" EC4 o="hmt telematik GmbH" EC5 o="TATTILE SRL" EC6 o="ESII" EC7 o="Neoptix Inc." - EC8 o="Viko Elektrik-Elektronik A.Ş." + EC8 o="PANASONIC LIFE SOLUTIONS ELEKTR?K SANAY? VE T?CARE" + EC9 o="Qlinx Technologies" ECA o="Transtronic AB" ECB o="Re spa - Controlli Industriali - IT01782300154" ECC o="Digifocus Technology Inc." @@ -23135,17 +26803,21 @@ FCFEC2 o="Invensys Controls UK Limited" ECF o="Ipitek" ED0 o="shanghai qiaoqi zhinengkeji" ED1 o="Przemyslowy Instytut Automatyki i Pomiarow" - ED2 o="PCTEL" + ED2 o="PCTEL, Inc." ED3 o="Beijing Lihong Create Co., Ltd." + ED4 o="WILMORE ELECTRONICS COMPANY" ED5 o="hangzhou battle link technology Co.,Ltd" + ED6 o="Metrasens Limited" ED7 o="WAVE" - ED8 o="Wartsila Voyage Limited" + ED8 o="Wartsila Voyage Oy" + ED9 o="AADONA Communication Pvt Ltd" EDA o="Breas Medical AB" EDB o="Netfort Solutions" EDC o="J.D. Koftinoff Software, Ltd." EDD o="Solar Network & Partners" EDE o="Agrident GmbH" EDF o="GridNavigator" + EE0 o="Stecomp" EE1 o="allora Factory BVBA" EE2 o="MONTRADE SPA" EE3 o="Lithe Technology, LLC" @@ -23161,6 +26833,7 @@ FCFEC2 o="Invensys Controls UK Limited" EED o="COMM-connect A/S" EEE o="SOCIEDAD IBERICA DE CONSTRUCCIONES ELECTRICAS, S.A. (SICE)" EEF o="TATTILE SRL" + EF0 o="PNETWORKS" EF1 o="Nanotok LLC" EF2 o="Kongsberg Intergrated Tactical Systems" EF3 o="octoScope" @@ -23203,15 +26876,18 @@ FCFEC2 o="Invensys Controls UK Limited" F18 o="HD Vision Systems GmbH" F19 o="Vitro Technology Corporation" F1A o="Sator Controls s.r.o." + F1B o="IndiNatus (IndiNatus India Private Limited)" F1C o="Bavaria Digital Technik GmbH" F1D o="Critical Link LLC" F1E o="ATX NETWORKS LTD" - F1F o="HKC Limited" + F1F o="HKC Security Ltd." + F20 o="Ibercomp SA" F21 o="dds" - F22 o="Shengli Financial Software Development" + F22 o="Shengli Technologies" F23 o="Lyse AS" F24 o="Daavlin" F25 o="JSC “Scientific Industrial Enterprise %Rubin%" + F26 o="XJ ELECTRIC CO., LTD." F27 o="NIRIT- Xinwei Telecom Technology Co., Ltd." F28 o="Yi An Electronics Co., Ltd" F29 o="SamabaNova Systems" @@ -23222,6 +26898,7 @@ FCFEC2 o="Invensys Controls UK Limited" F2E o="Shanghai JCY Technology Company" F2F o="TELEPLATFORMS" F30 o="ADE Technology Inc." + F31 o="The-Box Development" F32 o="Elektronik Art" F33 o="Beijing Vizum Technology Co.,Ltd." F34 o="MacGray Services" @@ -23236,6 +26913,7 @@ FCFEC2 o="Invensys Controls UK Limited" F3D o="KAYA Instruments" F3E o="ООО %РОНЕКС%" F3F o="comtac AG" + F40 o="HORIZON.INC" F41 o="DUEVI SRL" F42 o="Matsuhisa Corporation" F43 o="Divelbiss Corporation" @@ -23244,6 +26922,7 @@ FCFEC2 o="Invensys Controls UK Limited" F46 o="Season Electronics Ltd" F47 o="TXMission Ltd." F48 o="HEITEC AG" + F49 o="ZMBIZI APP LLC" F4A o="LACS SRL" F4B o="Chengdu Lingya Technology Co., Ltd." F4C o="PolyTech A/S" @@ -23286,6 +26965,7 @@ FCFEC2 o="Invensys Controls UK Limited" F71 o="Sonel S.A." F72 o="Hanshin Electronics" F73 o="ASL Holdings" + F74 o="TESSA AGRITECH SRL" F75 o="Enlaps" F76 o="Thermo Fisher Scientific" F77 o="Satcube AB" @@ -23293,6 +26973,7 @@ FCFEC2 o="Invensys Controls UK Limited" F79 o="Firehose Labs, Inc." F7A o="SENSO2ME" F7B o="KST technology" + F7C o="Medicomp, Inc" F7D o="2M Technology" F7E o="Alpha Elettronica s.r.l." F7F o="ABL Space Systems" @@ -23302,7 +26983,7 @@ FCFEC2 o="Invensys Controls UK Limited" F83 o="Tata Communications Ltd." F84 o="DEUTA-WERKE GmbH" F85 o="Solystic" - F86 o="Wireless Systems Solutions LLC" + F86 o="NxGen Comm LLC" F87 o="SHINWA INDUSTRIES, INC." F88 o="ODAWARAKIKI AUTO-MACHINE MFG.CO.,LTD" F89 o="Soehnle Industrial Solutions GmbH" @@ -23312,6 +26993,7 @@ FCFEC2 o="Invensys Controls UK Limited" F8D o="Flextronics Canafa Design Services" F8E o="Isabellenhütte Heusler Gmbh &Co KG" F8F o="DIMASTEC GESTAO DE PONTO E ACESSO EIRELI-ME" + F90 o="Atman Tecnologia Ltda" F91 o="Solid State Disks Ltd" F92 o="TechOne" F93 o="Hella Gutmann Solutions GmbH" @@ -23324,6 +27006,7 @@ FCFEC2 o="Invensys Controls UK Limited" F9A o="Krabbenhøft og Ingolfsson" F9B o="EvoLogics GmbH" F9C o="SureFlap Ltd" + F9D o="Teledyne API" F9E o="International Center for Elementary Particle Physics, The University of Tokyo" F9F o="M.A.C. Solutions (UK) Ltd" FA0 o="TIAMA" @@ -23338,6 +27021,7 @@ FCFEC2 o="Invensys Controls UK Limited" FA9 o="CorDes, LLC" FAA o="LogiM GmbH Software und Entwicklung" FAB o="Open System Solutions Limited" + FAC o="Integrated Protein Technologies, Inc." FAD o="ARC Technology Solutions, LLC" FAE o="Silixa Ltd" FAF o="Radig Hard & Software" @@ -23345,6 +27029,7 @@ FCFEC2 o="Invensys Controls UK Limited" FB1 o="TOMEI TSUSHIN KOGYO CO,.LTD" FB2 o="KJ3 Elektronik AB" FB3 o="3PS Inc" + FB4 o="Array Technologies Inc." FB5 o="Orange Tree Technologies Ltd" FB6 o="KRONOTECH SRL" FB7 o="SAICE" @@ -23388,6 +27073,8 @@ FCFEC2 o="Invensys Controls UK Limited" FDD o="Laser Imagineering Vertriebs GmbH" FDE o="AERONAUTICAL & GENERAL INSTRUMENTS LTD." FDF o="NARA CONTROLS INC." + FE0 o="Blueprint Lab" + FE1 o="Shenzhen Zhiting Technology Co.,Ltd" FE2 o="Galileo Tıp Teknolojileri San. ve Tic. A.S." FE3 o="CSM MACHINERY srl" FE4 o="CARE PVT LTD" @@ -23413,7 +27100,9 @@ FCFEC2 o="Invensys Controls UK Limited" FF8 o="Dutile, Glines and Higgins Corporation" FF9 o="InOut Communication Systems" FFA o="Barracuda Measurement Solutions" + FFB o="QUERCUS TECHNOLOGIES, S.L." FFC o="Symetrics Industries d.b.a. Extant Aerospace" + FFD o="i2Systems" 70F8E7 0 o="SHENZHEN Xin JiuNing Electronics Co Ltd" 1 o="System Level Solutions (India) Pvt." @@ -23461,6 +27150,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="bistos.co.ltd" D o="Voltaware Services Limited" E o="ITS Partner (O.B.S) S.L." +742584 + 0 o="Alcon Wireless Private Limited" + 1 o="Creative Synergy Ventures Pty. Ltd." + 2 o="Suzhou Surinno Photonics Technology Co.Ltd." + 3 o="alt digital s.r.o." + 4 o="Hive Media Control" + 5 o="Dexter Laundry Inc." + 6 o="EZECONET" + 7 o="Annapurna labs" + 8 o="Annapurna labs" + 9 o="Sercomm Japan Corporation" + A o="Annapurna labs" + B o="International Technology And Telecomminication FZC" + C o="HSPTEK JSC" + D o="Shenzhen smart-core technology co.,ltd." + E o="WDJ Hi-Tech Inc." +743336 + 0 o="Huzhou Luxshare Precision Industry Co.LTD" + 1 o="Shengzhen Gongjin Electronics" + 2 o="Zoller + Fröhlich GmbH" + 3 o="Shenzhen DBG Innovation Tech Limited" + 4 o="Elide Interfaces Inc" + 5 o="SECLAB FR" + 6 o="Baumer Inspection GmbH" + 7 o="Venture International Pte Ltd" + 8 o="Moultrie Mobile" + 9 o="Lyno Dynamics LLC" + A o="Shenzhen Jooan Technology Co., Ltd" + B o="Annapurna labs" + C o="Shenzhen Handheld-Wireless Technology Co., Ltd." + D o="ACTECK TECHNOLOGY Co., Ltd" + E o="Ramon Space" 745BC5 0 o="IRS Systementwicklung GmbH" 1 o="Beijing Inspiry Technology Co., Ltd." @@ -23497,7 +27218,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0 o="Enercon Technologies" 1 o="GHL Advanced Technology GmbH & Co. KG" 2 o="Shenzhen Ruishi Information Technology Co.,Ltd." - 3 o="InnoTrans Communications" + 3 o="ATX" 4 o="WiFi Hotspots, SL" 5 o="Provision-ISR" 6 o="Shenzhen Melon Electronics Co.,Ltd" @@ -23509,6 +27230,86 @@ FCFEC2 o="Invensys Controls UK Limited" C o="TBM CO., LTD." D o="Simon Electric (China) Co.,ltd" E o="Bernard Krone Holding GmbH & Co. KG" +781305 + 0 o="InnoSenT" + 1 o="Global Media Streaming LLC" + 2 o="LEAFF ENGINEERING SRL" + 3 o="microtec Sicherheitstechnik GmbH" + 4 o="Jiangxi Winsky Intelligence Technology Co., Ltd" + 5 o="ATS-CONVERS,LLC" + 6 o="CRRC Nangjing Puzhen Haitai Brake Equipment Co., LTD" + 7 o="E-Stone Electronics Co., Ltd" + 8 o="Shenzhen AV-Display Co.,Ltd" + 9 o="Shanghai Kanghai Information System CO.,LTD." + A o="Leonardo SpA - Montevarchi" + B o="Bithouse Oy" + C o="Brigates Microelectronics Co., Ltd." + D o="Shanghai Siminics Optoelectronic Technology Co., Ltd" + E o="Dongguan zhenxing electronic technology co.,limited" +78392D + 0 o="Neuron GmbH" + 1 o="LivEye GmbH" + 2 o="Chengdu Shiketong Technology Co.,Ltd" + 3 o="Zeta Alarms Limited" + 4 o="Annapurna labs" + 5 o="IO Master Technology" + 6 o="Annapurna labs" + 7 o="Shanghai Kanghai Information System CO.,LTD." + 8 o="Dreamtek" + 9 o="AVATR Co., LTD." + A o="Edgenectar Inc." + B o="MedRx, Inc" + C o="Jiangsu Yibang New Energy Technology Co., LTD" + D o="Avantree Corporation" + E o="Planeta Informática Ltda" +785EE8 + 0 o="Youtransactor" + 1 o="RIKEN KEIKI NARA MFG. Co., Ltd." + 2 o="Vega-Absolute" + 3 o="Incontrol LLC" + 4 o="beijing Areospace Hongda optoelectronics technology co.,ltd" + 5 o="INFOMOBILITY S.R.L." + 6 o="Guangdong COROS Sports Technology Co., Ltd" + 7 o="MT B?LG? TEKNOLOJ?LER? VE DI? T?C. A.?." + 8 o="Jiangxi guoxuan radio and television technology Co.,Ltd" + 9 o="TOPDON TECHNOLOGY Co.,Ltd." + A o="Yake (Tianjin) Technology Co.,Ltd." + B o="Lantern Engineering (Pty) Ltd" + C o="FINETOOLING TECHNOLOGY(HONG KONG)CO.,LIMITED" + D o="Tachyon Networks" + E o="Suzhou Tianping Advanced Digital Technologies Co.Ltd" +787264 + 0 o="SmartMore Co.,ltd." + 1 o="Zhengzhou Reform Intelligent Device Co., Ltd" + 2 o="BZBGEAR" + 3 o="Guangdong Hongqin Telecom Technology Co.,Ltd." + 4 o="Asustor Inc." + 5 o="CALTTA TECHNOLOGIES CO.,LTD." + 6 o="Shenzhen C-DIGI Technology Co.,Ltd." + 7 o="Conjing Networks Inc." + 8 o="Gsou Technology(Shenzhen)Co.,Ltd" + 9 o="SHENZHEN FANGZHICHENG TECHNOLOGY CO., LTD." + A o="Typhoon HIL, Inc." + B o="digades GmbH" + C o="Comcast-SRL" + D o="QT systems ab" + E o="Heltec Automation" +787835 + 0 o="ATsens" + 1 o="ENQT GmbH" + 2 o="EHTech (Beijing)Co., Ltd." + 3 o="SHENZHEN CHUANGWEI ELECTRONIC APPLIANCE TECH CO., LTD." + 4 o="Jiaxing Cyber Sensor Intelligent Technology Co., Ltd." + 5 o="IRISS Inc." + 6 o="MAICUN Information Technology(Shanghai)Co.,Ltd" + 7 o="Ambient Life Inc." + 8 o="Shandong Xintong Electronics Co., Ltd" + 9 o="BLOOM VIEW LIMITED" + A o="Skylight" + B o="Shanghai Intchains Technology Co., Ltd." + C o="DBG Communications Technology Co.,Ltd." + D o="Suzhou Chena Information Technology Co., Ltd." + E o="NEOARK Corporation" 78C2C0 0 o="Shenzhen ELI Technology co.,ltd" 1 o="XRONOS-INC" @@ -23516,7 +27317,7 @@ FCFEC2 o="Invensys Controls UK Limited" 3 o="Ningbo Sanxing Electric Co., Ltd." 4 o="Ory Laboratory Co., Ltd." 5 o="ShenZhen TuLing Robot CO.,LTD" - 6 o="SICHUAN TIANYI COMHEART TELECOMCO.,LTD" + 6 o="Sichuan Tianyi Comheart Telecom Co.,LTD" 7 o="Guangzhou Hongcai Stage Equipment co.,ltd" 8 o="Beijing Coilabs technology co.,ltd" 9 o="SES" @@ -23541,6 +27342,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Elanview Technology Co.,Ltd" D o="Hubei Boyuan Zhijia Network Media Co. Ltd." E o="Konecranes" +78D4F1 + 0 o="Burisch Elektronik Bauteile GmbH" + 1 o="Silla Industries" + 2 o="Lyngsoe Systems" + 3 o="Ekoenergetyka - Polska S.A." + 4 o="BYD Auto lndustry Co.,Ltd" + 5 o="Huaqin Telecom Technology Co.,Ltd." + 6 o="Guangzhou Kingray information technology Co.,Ltd." + 7 o="Famar Fueguina S.A." + 8 o="Xiamen Cheerzing IOT Technology Co.,Ltd." + 9 o="shanghai baudcom communication device co.,ltd" + A o="BONENG TRANSMISSION(SUZHOU)CO.,LTD" + B o="Jiangsu byzoro intelligent technology Co.,Ltd" + C o="TNB" + D o="Quidel Corporation" + E o="Blue Sparq, Inc." 78D800 0 o="Kverneland Group Mechatronics" 1 o="Shenzhen Envicool Information Technology Co., Ltd" @@ -23557,6 +27374,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Shenzhen Chenzhuo Technology Co., Ltd." D o="Korea Micro Wireless Co.,Ltd." E o="CL International" +78E996 + 0 o="SHENZHEN EEGUARD TECHNOLOGY CO.,LIMITED" + 1 o="COGITO TECH COMPANY LIMITED" + 2 o="STIEBEL ELTRON GMBH & CO. KG" + 3 o="ACL Co.,Ltd." + 4 o="Shenzhen Jin Hao Mi Technology Co., LTD" + 5 o="Chuangming Futre Technology Co., Ltd." + 6 o="Kilews" + 7 o="Beisit Electric Tech(Hangzhou)Co.,Ltd." + 8 o="Shenzhen Zhiting Technology Co.,Ltd" + 9 o="ATM SOLUTIONS" + A o="Shenzhen Farben lnformation Technology CO.,Ltd." + B o="CelAudio (Beijing) Technology Inc" + C o="GARANTIR TECHNOLOGIES PRIVATE LIMITED" + D o="Lorch Schweisstechnik GmbH" + E o="Bita-International Co.,Ltd" +7C45F9 + 0 o="SENSeOR" + 1 o="Hunan Shengyun Photoelectric Technology Co., LTD" + 2 o="Dongguan Boyye Industrial Co., Ltd" + 3 o="Hangzhou LUXAR Technologies Co., Ltd" + 4 o="SPECS Surface Nano Analysis GmbH" + 5 o="Interactive Technologies, Inc." + 6 o="HANK ELECTRONICS CO., LTD" + 7 o="Georg Fischer Piping Systems Ltd." + 8 o="Feller AG" + 9 o="MIJ CO LTD" + A o="qiio AG" + B o="IngDan China-chip Electronic Technology(Wuxi) Co.,Ltd." + C o="Xemex NV" + D o="Mobilaris Industrial Solutions" + E o="Scania CV AB" 7C477C 0 o="BungBungame Inc" 1 o="Photosynth Inc." @@ -23584,11 +27433,27 @@ FCFEC2 o="Invensys Controls UK Limited" 7 o="Nomad Digital Ltd." 8 o="Mennekes Elektrotechnik GmbH & Co. KG" 9 o="dogtra" - A o="Ametek VIS" + A o="Motec GmbH" B o="Tohan Engineering Corporation" C o="Lukup Media" D o="mk-messtechnik GmbH" E o="HOPERUN MMAX DIGITAL PTE. LTD." +7C8334 + 0 o="Thermalimage" + 1 o="Linear Logic LLC" + 2 o="PEMtronics LLC" + 3 o="Beijing Changkun Technology Co., Ltd." + 4 o="Fusus" + 5 o="PRO BRAND TECHNOLOGY (TW)" + 6 o="Wojinxin Beijing Technology Co., LTD" + 7 o="ChengDU Yi Gong Intelligence Technology Co., Ltd." + 8 o="Silicon Xpandas Electronics Co., Ltd." + 9 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + A o="ENGINETECH (TIANJIN) COMPUTER CO.,LTD." + B o="Shenzhen AZW Technology Co., Ltd." + C o="Hunan Datang Xianyi Technology Co.,Ltd" + D o="MSV elektronika s.r.o." + E o="Balter GmbH" 7CBACC 0 o="TGT Limited" 1 o="Changsha SUNYE Electric Co., Ltd." @@ -23610,7 +27475,7 @@ FCFEC2 o="Invensys Controls UK Limited" 1 o="Xiamen Mage Information Technology Co.,Ltd." 2 o="3S Technology Co., Ltd." 3 o="Shanghai Yitu Technology Co. Ltd" - 4 o="CONTINENTAL" + 4 o="AUMOVIO France S.A.S." 5 o="Nanning auto digital technology co.,LTD" 6 o="Société de Transport de Montréal" 7 o="Xuji Changnan Communication Equipment Co., Ltd." @@ -23637,6 +27502,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="mirakonta s.l." D o="optilink networks pvt ltd" E o="Aplex Technology Inc." +8002F4 + 0 o="BK Networks Co,. Ltd." + 1 o="Sichuan lookout environment protection technology co.,Ltd" + 2 o="Beijing Cybercore" + 3 o="Shenzhen Suanzi Technology Co., Ltd" + 4 o="Infors AG" + 5 o="Sichuan Fanyi Technology Co. Ltd." + 6 o="Mech-Mind Robotics Technologies Ltd." + 7 o="Lazer Safe Pty Ltd" + 8 o="Annapurna labs" + 9 o="XUNDI(XIAMEN) ELECTRONIC TECHNOLOGY CO.,LTD." + A o="PassiveLogic" + B o="Baicells Technologies Co., Ltd" + C o="Wuhan Glory Road Intelligent Technology Co., Ltd." + D o="Jiangsu Vedkang Medicl Sclence and Technology Co.,Ltd" + E o="Alfred Systems Inc" 800A80 0 o="Golana Technology (Shenzhen) Co., Ltd." 1 o="Dongguan I-Chime electrinics Co.,Ltd" @@ -23645,6 +27526,11 @@ FCFEC2 o="Invensys Controls UK Limited" 4 o="LLVISION TECHNOLOGY CO.,LTD" 5 o="Shenzhen Zidoo Technology Co., Ltd." 6 o="Beijing Gooagoo Technical Service Co.,Ltd." +807786 + 1 o="Raycon" + 2 o="Wintec Co., Ltd" + 3 o="Demeas" + 4 o="Realtime Biometrics India (P) limited" 807B85 0 o="Shiroshita Industrial Co., Ltd." 1 o="Hangzhou Synway Information Engineering Co., Ltd" @@ -23658,9 +27544,25 @@ FCFEC2 o="Invensys Controls UK Limited" 9 o="SMART ELECTRONICS NZ LIMITED" A o="Interplan Co., Ltd." B o="Oliotalo Oy" - C o="Ningbo Plus and Popscreens electronic Technology Co.,LTD" + C o="SCALA Digital Technology(Ningbo) CO, LTD" D o="Kaynes Technology India Pvt Ltd" E o="Mersen" +80A579 + 0 o="Benano Inc." + 1 o="Zhe Jiang EV-Tech Co.,Ltd" + 2 o="Jiangsu wonder-working electric co., LTD" + 3 o="Tool-Temp AG" + 4 o="Hardened Networks" + 5 o="Potron Technology Co.,Ltd.," + 6 o="Xiamen Pinnacle Electrical Co., Ltd" + 7 o="Siemens Energy Global GmbH & Co. KG" + 8 o="DI3 INFOTECH LLP" + 9 o="Yovil Ltd." + A o="ViewSonic Corp" + B o="Ground Control Technologies UK Ltd." + C o="BluArmor" + D o="Guangdong Province Ivsuan technology co., ltd" + E o="Unplugged Technologies Ltd." 80E4DA 0 o="Wheatstone Corporation" 1 o="Guangzhou Pinzhong Electronic Technology CO., LTD" @@ -23677,6 +27579,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="EVER Sp. z o.o." D o="Dalian Roiland Technology Co.,Ltd" E o="Akenori PTE LTD" +8411C2 + 0 o="Kazdream Technologies LLP" + 1 o="Beijing Dayu Technology Co., Ltd." + 2 o="Futurecom Systems Group" + 3 o="FUJIFILM Healthcare Corporation" + 4 o="LLC STC MZTA" + 5 o="AIBIoT GmbH" + 6 o="KESSEL AG" + 7 o="Ei3 Corporation" + 8 o="Leybold GmbH" + 9 o="C TECH BILISIM TEKNOLOJILERI SAN. VE TIC. A.S." + A o="igus GmbH" + B o="Guangdong Creator&Flyaudio Electronic Technology Co.,LTD" + C o="Provision-ISR" + D o="Goldmund Switzerland" + E o="Dangerous Music Group, LLC" 8439BE 0 o="HINO ENGINEERING, INC" 1 o="Guangzhou Heygears Technology Ltd" @@ -23723,6 +27641,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="WORMIT" D o="ENGISAT LDA" E o="Emotiv Inc" +84B386 + 0 o="Nan Jing WZX Technology Limited" + 1 o="Sichuan Huakun Zhenyu Intelligent Technology Co., Ltd" + 2 o="Annapurna labs" + 3 o="Phonesuite" + 4 o="COBHAM" + 5 o="Fusus" + 6 o="ALPHA Corporation" + 7 o="FOTILE GROUP NINGBO FOTILE KITCHENWARE Co.,Ltd" + 8 o="NetworX" + 9 o="Weiss Robotics GmbH & Co. KG" + A o="Velocio Networks, Inc." + B o="Sineng electric CO., Ltd" + C o="Palomar Products Inc" + D o="Dongguan Amsamotion Automation Technology Co., Ltd" + E o="NINGBO XINSUAN TECHNOLOGY CO.,LTD" 84E0F4 0 o="ShenZhen Panrich Technology Limited" 1 o="MedicusTek Inc." @@ -23739,6 +27673,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="AIMTRON CORPORATION" D o="Logos01 Srl" E o="Scale-Tec Ltd." +883CC5 + 0 o="Chengdu Data Sky Technology Co., Ltd." + 1 o="Hanwei Electronics Group Corporation" + 2 o="NETGEN HITECH SOLUTIONS LLP" + 3 o="shenzhen Feng Jing Sheng Electronics Technology Co.,Ltd" + 4 o="Swabian Instruments GmbH" + 5 o="Shanghai Ucan Automation Equipment Co., Ltd." + 6 o="mfJebsen Electronics Ltd." + 7 o="KMtronic ltd" + 8 o="Wuhan Guangying Intelligence Technology Co., Ltd" + 9 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + A o="Corigine,Inc." + B o="Shenzhen shijia chuangxin Technology Co., Ltd" + C o="HDL da Amazônia Industria Eletrônica Ltda" + D o="Lenard Enterprises Inc" + E o="myUpTech AB" 885D90 0 o="FOSHAN HUAGUO OPTICAL CO.,LTD" 1 o="ShenZhen Yuyangsheng technology company LTD" @@ -23771,6 +27721,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Inor Process AB" D o="zhejiang yuanwang communication technolgy co.,ltd" E o="Unicom Global, Inc." +88A6EF + 0 o="Energet LLC" + 1 o="Shenzhen YAKO Automation Technology Co.,Ltd." + 2 o="METRO ELECTRONICS" + 3 o="Enlaps" + 4 o="PT communication Systems Pvt LTD" + 5 o="Labpano Technology (Changzhou) Co., Ltd." + 6 o="ShenZhen KZIot Technology LLC." + 7 o="TRUWIN" + 8 o="TechPLEX Inc." + 9 o="Kii Audio GmbH" + A o="Draper, Inc." + B o="Beijing ThinRedline Technology Co.,Ltd." + C o="Shanghai Kanghai Information System CO.,LTD." + D o="Hash Mining s.r.o." + E o="IONA Tech" 88A9A7 0 o="Shenzhenshi kechuangzhixian technology Co.LTD" 1 o="Solaredge LTD." @@ -23787,6 +27753,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="AndroVideo Inc." D o="AVLINK INDUSTRIAL CO., LTD" E o="Impact Distribution" +88C9B3 + 0 o="ADOPT NETTECH PVT LTD" + 1 o="Cervoz Technology Co; Ltd." + 2 o="shenzhen franklin ESS technology CO.,Ltd" + 3 o="Fortive Setra-ICG(Tianjin)Co.,Ltd" + 4 o="Hasbro Inc" + 5 o="Brabender Technologie GmbH & Co, KG" + 6 o="Hugo Techno" + 7 o="Robert Bosch JuP1" + 8 o="Divelbiss Corporation" + 9 o="Richbeam (Beijing) Technology Co., Ltd." + A o="WEG AUTOMATION EUROPE S.R.L." + B o="Shenzhen MMUI Co.,Ltd" + C o="Shenzhen Viewsmart Technology Co.,Ltd" + D o="Origins Technology Limited" + E o="Sercomm Corporation." 8C147D 0 o="Nio" 2 o="Agilent S.p.A" @@ -23834,6 +27816,2583 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Alcidae Inc" D o="Riegl Laser Measurement Systems GmbH" E o="Electronic Controlled Systems, Inc." +8C1F64 + 000 o="Suzhou Xingxiangyi Precision Manufacturing Co.,Ltd." + 001 o="HYFIX Spatial Intelligence" + 003 o="Brighten Controls LLP" + 006 o="DUNASYS INGENIERIE" + 009 o="Converging Systems Inc." + 00A o="TaskUnite Inc. (dba AMPAworks)" + 00C o="Guan Show Technologe Co., Ltd." + 00D o="T4I Sp. z o.o." + 011 o="DEUTA-WERKE GmbH" + 014 o="Cristal Controles Ltee" + 016 o="Signtel Communications Pvt Ltd" + 017 o="Farmote Limited" + 018 o="Rax-Tech International" + 01A o="Paragraf" + 01D o="Nordson Corporation" + 01E o="SCIREQ Scientific Respiratory Equipment Inc" + 01F o="Dualcomm Technology, Inc." + 020 o="Utthunga Techologies Pvt Ltd" + 021 o="Savant Group" + 022 o="Telica Telecom Private Limited" + 023 o="Omnilink Tecnologia S/A" + 024 o="Shin Nihon Denshi Co., Ltd." + 025 o="SMITEC S.p.A." + 028 o="eyrise B.V." + 029 o="Hunan Shengyun Photoelectric Technology Co.,LTD" + 02A o="DEUTA Werke GmbH" + 02D o="Shenzhen Tezesk Energy Technology Co.,LTD" + 02F o="SOLIDpower SpA" + 031 o="EKTOS A/S" + 033 o="IQ Home Kft." + 035 o="RealWear" + 03A o="ORION COMPUTERS" + 03B o="Orion Power Systems, Inc." + 03C o="Sona Business B.V." + 03D o="HORIZON.INC" + 042 o="HEITEC AG" + 043 o="AperNet, LLC" + 045 o="VEILUX INC." + 046 o="American Fullway Corp." + 048 o="FieldLine Medical" + 049 o="NUANCES ORG" + 04A o="GS Elektromedizinsiche Geräte G. Stemple GmbH" + 04C o="Gamber-Johnson LLC" + 04E o="Auditdata" + 04F o="ISILINE srl" + 051 o="CP contech electronic GmbH" + 053 o="HS.com Kft" + 054 o="WATTER" + 055 o="Intercreate" + 056 o="DONG GUAN YUNG FU ELECTRONICS LTD." + 057 o="Shenzhen Broadradio RFID Technology Co., Ltd" + 058 o="MECT SRL" + 059 o="MB connect line GmbH Fernwartungssysteme" + 05C o="tickIoT Inc." + 05F o="ESCAD AUTOMATION GmbH" + 060 o="Zadar Labs Inc" + 061 o="Micron Systems" + 062 o="ATON GREEN STORAGE SPA" + 063 o="Efftronics Systems (P) Ltd" + 066 o="Siemens Energy Global GmbH & Co. KG" + 067 o="Genius Vision Digital Private Limited" + 068 o="Shenzhen ROLSTONE Technology Co., Ltd" + 06A o="Intellisense Systems Inc." + 06B o="Sanwa Supply Inc." + 06C o="COBES GmbH" + 06D o="Monnit Corporation" + 071 o="DORLET SAU" + 072 o="Eyecloud, Inc" + 073 o="Potter Electric Signal Co. LLC" + 076 o="PACK'R" + 077 o="Engage Technologies" + 078 o="Salience Labs" + 07A o="Flextronics International Kft" + 07D o="Talleres de Escoriaza SAU" + 07E o="FLOYD inc." + 07F o="G.S.D GROUP INC." + 080 o="Twinleaf LLC" + 081 o="Harmony Fire Ltd" + 082 o="Zhongcheng Technology Co.,Ltd" + 083 o="Avionica" + 085 o="SORB ENGINEERING LLC" + 086 o="WEPTECH elektronik GmbH" + 089 o="ANSER-NET CO ., LTD" + 08B o="Shanghai Shenxu Technology Co., Ltd" + 08C o="eviateg GmbH" + 08D o="NEETRA SRL SB" + 08E o="qiio AG" + 08F o="AixControl GmbH" + 090 o="kousyuhaneturen" + 091 o="Limitless Electromechanical Works LLC" + 092 o="Gogo BA" + 093 o="MAG Audio LLC" + 094 o="EL.EN. SPA" + 096 o="IPCOMM GmbH" + 097 o="FoMa Systems GmbH" + 098 o="Agvolution GmbH" + 099 o="Pantherun Technologies Pvt Ltd" + 09A o="SHINETECH ELECTRONICS CO., LTD." + 09B o="Taiv" + 09D o="Flextronics International Kft" + 09E o="IWS Global Pty Ltd" + 09F o="MB connect line GmbH Fernwartungssysteme" + 0A0 o="TECHNIWAVE" + 0A2 o="BEST" + 0A4 o="Dynamic Research, Inc." + 0A5 o="Gomero Nordic AB" + 0A8 o="SamabaNova Systems" + 0AA o="DI3 INFOTECH LLP" + 0AB o="Norbit ODM AS" + 0AC o="Patch Technologies, Inc." + 0AD o="E2 Nova Corporation" + 0AF o="FORSEE POWER" + 0B0 o="Bunka Shutter Co., Ltd." + 0B5 o="SMC Gateway" + 0B6 o="Luke Granger-Brown" + 0B7 o="TIAMA" + 0B8 o="Signatrol Ltd" + 0B9 o="Newin Tech" + 0BB o="InfraChen Technology Co., Ltd." + 0BD o="Solace Systems Inc." + 0BE o="BNB" + 0BF o="Aurora Communication Technologies Corp." + 0C0 o="Active Research Limited" + 0C1 o="Opal Camera Inc." + 0C3 o="Eurek srl" + 0C5 o="TechnipFMC" + 0C8 o="EA Elektro-Automatik GmbH" + 0CA o="CLOUD TELECOM Inc." + 0CC o="Smart I Electronics Systems Pvt. Ltd." + 0CD o="DEUTA Werke GmbH" + 0CE o="Digitella Inc." + 0D0 o="Lumiplan-Duhamel" + 0D2 o="biosilver .co.,ltd" + 0D3 o="erfi Ernst Fischer GmbH+Co.KG" + 0D4 o="Dalcnet srl" + 0D5 o="RealD, Inc." + 0D6 o="AVD INNOVATION LIMITED" + 0D8 o="Power Electronics Espana, S.L." + 0DF o="Leidos" + 0E0 o="Autopharma" + 0E3 o="JISEONGENG Co,.LTD" + 0E5 o="Rugged Science" + 0E6 o="Cleanwatts Digital, S.A." + 0EA o="SmartSky Networks LLC" + 0ED o="Saskatchewan Research Council" + 0EE o="Rich Source Precision IND., Co., LTD." + 0EF o="DAVE SRL" + 0F0 o="Xylon" + 0F1 o="ideaForge Technology Limited" + 0F2 o="Graphimecc Group SRL" + 0F3 o="LSI" + 0F4 o="AW-SOM Technologies LLC" + 0F5 o="Vishay Nobel AB" + 0F7 o="Combilent" + 0F9 o="ikan International LLC" + 0FA o="Nautel LTD" + 0FD o="CEI Ptd Ltd" + 0FE o="Indra Heera Technology LLP" + 0FF o="Pneumax Spa" + 100 o="Beijing Zhenlong Technology Co.,Ltd." + 101 o="ASW-ATI Srl" + 103 o="KRONOTECH SRL" + 104 o="Timebeat.app Ltd" + 105 o="AixControl GmbH" + 106 o="Wuhan Xingtuxinke ELectronic Co.,Ltd" + 107 o="SCI Technology, Inc." + 10A o="Sicon srl" + 10B o="Red Lion Europe GmbH" + 10F o="Scenario Automation" + 110 o="Xian Linking Backhaul Telecom Technology Co.,Ltd" + 111 o="ISAC SRL" + 113 o="Timberline Manufacturing" + 114 o="Sanmina SCI Medical" + 115 o="Neuralog LP" + 116 o="Sicon srl" + 117 o="Grossenbacher Systeme AG" + 118 o="Automata GmbH & Co. KG" + 119 o="Foxconn Technology Co., Ltd." + 11B o="Power Electronics Espana, S.L." + 11E o="Infosoft Digital Design and Services P L" + 11F o="NodeUDesign" + 121 o="Hefei EverACQ Technology Co., LTD" + 123 o="GeneSys Elektronik GmbH" + 125 o="Hangzhou Sciener Smart Technology Co., Ltd." + 126 o="Harvest Technology Pty Ltd" + 127 o="Retronix Technology Inc." + 128 o="YULISTA INTEGRATED SOLUTION" + 129 o="Navtech Radar Ltd." + 12B o="Beijing Tongtech Technology Co., Ltd." + 12D o="YUYAMA MFG Co.,Ltd" + 12E o="inomatic GmbH" + 133 o="Vtron Pty Ltd" + 135 o="Yuval Fichman" + 138 o="Vissavi sp. z o.o." + 13B o="SDELcc" + 13C o="SiFive Inc" + 13E o="BTEC INDUSTRIAL INSTRUMENT SDN. BHD." + 13F o="Elsist Srl" + 140 o="RF-Tuote Oy" + 141 o="Code Blue Corporation" + 144 o="Langfang ENN lntelligent Technology Co.,Ltd." + 145 o="Spectrum FiftyNine BV" + 146 o="Zhongrun Xinchan (Beijing) Technology Co., Ltd" + 148 o="CAREHAWK" + 149 o="Clock-O-Matic" + 14A o="Richie Ltd" + 14B o="Potter Electric Signal Co. LLC" + 14D o="Vertesz Elektronika Kft." + 14F o="NSM" + 151 o="Gogo Business Aviation" + 154 o="Flextronics International Kft" + 155 o="SLAT" + 156 o="Grinn Sp. z o.o." + 159 o="Mediana Co., Ltd." + 15A o="ASHIDA Electronics Pvt. Ltd" + 15C o="TRON FUTURE TECH INC." + 15D o="Nhoa Energy Srl" + 15E o="Dynomotion, Inc" + 164 o="Revo - Tec GmbH" + 166 o="Hikari Alphax Inc." + 169 o="Creative Telecom Pvt. Ltd." + 16A o="KEYLINE S.P.A." + 16B o="TKR Spezialwerkzeuge GmbH" + 16D o="Xiamen Rgblink Science & Technology Co., Ltd." + 16E o="Benchmark Electronics BV" + 16F o="Codasip s.r.o." + 170 o="Fracarro Radioindustrie Srl" + 174 o="KST technology" + 175 o="Wuhan YiValley Opto-electric technology Co.,Ltd" + 176 o="Leidos Inc" + 177 o="Emcom Systems" + 178 o="Attack do Brasil Ind Com Apar de Som LTDA" + 179 o="Agrowtek Inc." + 17A o="Sichuan ZhikongLingxin Technology Co., Ltd." + 17B o="Bavaria Digital Technik GmbH" + 17C o="Zelp Ltd" + 17E o="MI Inc." + 180 o="Structural Integrity Services" + 183 o="NICE Total Cash Management Co., Ltd." + 185 o="BIOTAGE GB LTD" + 186 o="Breas Medical AB" + 187 o="Sicon srl" + 18A o="Network Rail" + 18B o="M-Pulse GmbH & Co.KG" + 18E o="J1-LED Intelligent Transport Systems Pty Ltd" + 193 o="Sicon srl" + 194 o="TIFLEX" + 195 o="VERIDAS Digital Authentication Solutions S.L" + 196 o="Secuinfo Co.Ltd" + 197 o="TEKVOX, Inc" + 198 o="REO AG" + 199 o="Shenzhen Arctec Innovation Technology Co.,Ltd" + 19B o="FeedFlo" + 19C o="Aton srl" + 1A0 o="Engage Technologies" + 1A5 o="DIALTRONICS SYSTEMS PVT LTD" + 1A7 o="aelettronica group srl" + 1AC o="Unitron Systems b.v." + 1AD o="Nexxto Servicos Em Tecnologia da Informacao SA" + 1AE o="Bounce Imaging" + 1AF o="EnviroNode IoT Solutions" + 1B1 o="person-AIz AS" + 1B2 o="Rapid-e-Engineering Steffen Kramer" + 1B5 o="Xicato" + 1B6 o="Red Sensors Limited" + 1B7 o="Rax-Tech International" + 1B9 o="D.T.S Illuminazione Srl" + 1BA o="Innovative Signal Analysis" + 1BB o="Renwei Electronics Technology (Shenzhen) Co.,LTD." + 1BC o="Transit Solutions, LLC." + 1BD o="DORLET SAU" + 1BE o="MIDEUM ENG" + 1BF o="Ossia Inc" + 1C0 o="INVENTIA Sp. z o.o." + 1C2 o="Solid Invent Ltda." + 1C4 o="EDGX bv" + 1C9 o="Pneumax Spa" + 1CA o="Power Electronics Espana, S.L." + 1CB o="SASYS e.K." + 1CE o="Eiden Co.,Ltd." + 1D0 o="MB connect line GmbH Fernwartungssysteme" + 1D1 o="AS Strömungstechnik GmbH" + 1D3 o="Opus-Two ICS" + 1D4 o="Integer.pl S.A." + 1D5 o="Beijing Diwei Shuangxing Communication Technology Co., Ltd." + 1D6 o="ZHEJIANG QIAN INFORMATION & TECHNOLOGIES" + 1D7 o="Beanair Sensors" + 1D8 o="Mesomat inc." + 1DA o="Chongqing Huaxiu Technology Co.,Ltd" + 1DB o="Cycle GmbH" + 1DD o="Beijing Shengtongnaan Technology Development Co ., Ltd" + 1DE o="Power Electronics Espana, S.L." + 1E1 o="VAF Co." + 1E2 o="Potter Electric Signal Co. LLC" + 1E3 o="WBNet" + 1E6 o="Radian Research, Inc." + 1E7 o="CANON ELECTRON TUBES & DEVICES CO., LTD." + 1E8 o="Haptech Defense Systems" + 1E9 o="RC Systems" + 1EA o="Asteelflash Design Solutions Hamburg GmbH" + 1ED o="Lichtwart GmbH" + 1EE o="Kneron (Taiwan) Co., Ltd." + 1EF o="Tantronic AG" + 1F0 o="AVCOMM Technologies Inc" + 1F4 o="EIFFAGE ENERGIE ELECTRONIQUE" + 1F5 o="NanoThings Inc." + 1F7 o="Sicon srl" + 1F9 o="TelecomWadi" + 1FA o="YDIIT Co., Ltd." + 1FC o="Yu Heng Electric CO. TD" + 1FE o="Burk Technology" + 1FF o="ReCar LLC DBA Slate Auto" + 201 o="Hiwin Mikrosystem Corp." + 203 o="ENTOSS Co.,Ltd" + 204 o="castcore" + 206 o="KRYFS TECHNOLOGIES PRIVATE LIMITED" + 208 o="Sichuan AnSphere Technology Co. Ltd." + 20A o="Oriux" + 20C o="Shanghai Stairmed Technology Co.,ltd" + 20D o="Grossenbacher Systeme AG" + 20E o="Alpha Bridge Technologies Private Limited" + 211 o="Bipom Electronics, Inc." + 215 o="XLOGIC srl" + 219 o="Guangzhou Desam Audio Co.,Ltd" + 21A o="Exicom Technologies India Pvt. Ltd." + 21C o="LLC %EMS-Expert%" + 21E o="The Bionetics Corporation" + 221 o="YUANSIANG OPTOELECTRONICS CO.,LTD." + 224 o="PHB Eletronica Ltda." + 226 o="Colossus Computing, Inc." + 227 o="Digilens" + 228 o="Shenzhen Chuanxin Micro Technology Co., Ltd" + 22D o="KAYSONS ELECTRICALS PRIVATE LIMITED" + 22E o="Jide Car Rastreamento e Monitoramento LTDA" + 231 o="Shenzhen zhushida Technology lnformation Co.,Ltd" + 232 o="Monnit Corporation" + 233 o="TCL OPERATIONS POLSKA SP. Z O.O." + 235 o="Marson Technology Co., Ltd." + 237 o="MB connect line GmbH" + 239 o="SHEKEL SCALES 2008 LTD" + 23D o="Mokila Networks Pvt Ltd" + 23E o="Quantum Blockchains Sp. z o.o." + 240 o="HuiTong intelligence Company" + 242 o="GIORDANO CONTROLS SPA" + 244 o="Hutchison Drei Austria Gmbh" + 246 o="Oriux" + 247 o="Dadhwal Weighing Instrument Repairing Works" + 249 o="TEX COMPUTER SRL" + 24C o="Shenzhen Link-All Technolgy Co., Ltd" + 24D o="XI'AN JIAODA KAIDA NEW TECHNOLOGY CO.LTD" + 24E o="YUYAMA MFG Co.,Ltd" + 250 o="ACCURATE OPTOELECTRONICS PVT. LTD." + 251 o="Watchdog Systems" + 252 o="TYT Electronics CO., LTD" + 254 o="Zhuhai Yunzhou Intelligence Technology Ltd." + 256 o="Landinger" + 257 o="Four Bars Design" + 25A o="Wuhan Xingtuxinke ELectronic Co.,Ltd" + 25C o="TimeMachines Inc." + 25E o="R2Sonic, LLC" + 25F o="Acuris Inc" + 260 o="E-alarms" + 261 o="TargaSystem S.r.L." + 263 o="EPC Power Corporation" + 264 o="BR. Voss Ingenjörsfirma AB" + 266 o="Guardian Controls International Ltd" + 267 o="Karl DUNGS GmbH & Co. KG" + 268 o="Astro Machine Corporation" + 269 o="Sicon srl" + 26B o="Profcon AB" + 26E o="Koizumi Lighting Technology Corp." + 26F o="QUISS GmbH" + 270 o="Xi‘an Hangguang Satellite and Control Technology Co.,Ltd" + 271 o="Wuhan YiValley Opto-electric technology Co.,Ltd" + 272 o="Comminent Pvt Ltd" + 273 o="Distran AG" + 274 o="INVIXIUM ACCESS INC" + 275 o="IDA North America Inc." + 277 o="Shenzhen Angstrom Excellence Technology Co., Ltd" + 27B o="Oriux" + 27C o="Tactical Blue Space Ventures LLC" + 27D o="Pneumax Spa" + 27F o="Whizz Systems Inc." + 280 o="HEITEC AG" + 281 o="NVP TECO LTD" + 285 o="Smart Tech Inc" + 286 o="i2s" + 288 o="Vision Systems Safety Tech" + 289 o="Craft4 Digital GmbH" + 28A o="Arcopie" + 28B o="Power Electronics Espana, S.L." + 28C o="Sakura Seiki Co.,Ltd." + 28D o="AVA Monitoring AB" + 290 o="UBIQ TECHNOLOGIES INTERNATIONAL LTD" + 291 o="Jiangsu Ruidong Electric Power Technology Co.,Ltd" + 292 o="Gogo Business Aviation" + 293 o="Landis+Gyr Equipamentos de Medição Ltda" + 294 o="nanoTRONIX Computing Inc." + 295 o="Ophir Manufacturing Solutions Pte Ltd" + 296 o="Roog zhi tong Technology(Beijing) Co.,Ltd" + 297 o="IGEMA GmbH" + 298 o="Megger Germany GmbH" + 299 o="Integer.pl S.A." + 29A o="Power Electronics Espana, S.L." + 29B o="TT electronics integrated manufacturing services (Suzhou) Limited" + 29C o="Thales Nederland BV" + 29D o="Automata GmbH & Co. KG" + 29E o="AD Parts, S.L." + 29F o="NAGTECH LLC" + 2A0 o="Connected Development" + 2A1 o="Pantherun Technologies Pvt Ltd" + 2A2 o="SERAP" + 2A3 o="NSK Co.,Ltd." + 2A4 o="YUYAMA MFG Co.,Ltd" + 2A5 o="Nonet Inc" + 2A6 o="Radiation Solutions Inc." + 2A7 o="aelettronica group srl" + 2A8 o="SHALARM SECURITY Co.,LTD" + 2A9 o="Elbit Systems of America, LLC" + 2AC o="DCO SYSTEMS LTD" + 2AF o="A-Best Co.,Lid." + 2B1 o="U -MEI-DAH INT'L ENTERPRISE CO.,LTD." + 2B4 o="Sonel S.A." + 2B6 o="Stercom Power Solutions GmbH" + 2B8 o="Veinland GmbH" + 2BB o="Chakra Technology Ltd" + 2BC o="DEUTA Werke GmbH" + 2BF o="Gogo Business Aviation" + 2C0 o="Tieline Research Pty Ltd" + 2C2 o="TEX COMPUTER SRL" + 2C3 o="TeraDiode / Panasonic" + 2C4 o="Xylon" + 2C5 o="SYSN" + 2C6 o="YUYAMA MFG Co.,Ltd" + 2C7 o="CONTRALTO AUDIO SRL" + 2C8 o="BRS Sistemas Eletrônicos" + 2CB o="Smart Component Technologies Ltd" + 2CC o="SBS SpA" + 2CD o="Taiwan Vtron" + 2CE o="E2 Nova Corporation" + 2D0 o="Cambridge Research Systems Ltd" + 2D5 o="J&J Philippines Corporation" + 2D6 o="TECHTUIT CO.,LTD." + 2D8 o="CONTROL SYSTEMS Srl" + 2DC o="TimeMachines Inc." + 2DD o="Flextronics International Kft" + 2DE o="Polar Bear Design" + 2DF o="Ubotica Technologies" + 2E2 o="Mark Roberts Motion Control" + 2E3 o="Erba Lachema s.r.o." + 2E4 o="Vision Systems Safety Tech" + 2E5 o="GS Elektromedizinsiche Geräte G. Stemple GmbH" + 2E8 o="Sonora Network Solutions" + 2EC o="HD Vision Systems GmbH" + 2EE o="Qualitrol LLC" + 2EF o="Invisense AB" + 2F0 o="Switch Science, Inc." + 2F1 o="DEUTA Werke GmbH" + 2F2 o="ENLESS WIRELESS" + 2F4 o="Scame Sistemi srl" + 2F5 o="Florida R&D Associates LLC" + 2F9 o="TSS COMPANY s.r.o." + 2FA o="RFENGINE CO., LTD." + 2FB o="MB connect line GmbH Fernwartungssysteme" + 2FC o="Unimar, Inc." + 2FD o="Enestone Corporation" + 2FE o="VERSITRON, Inc." + 300 o="Abbott Diagnostics Technologies AS" + 301 o="Agar Corporation Inc." + 303 o="IntelliPlanner Software System India Pvt Ltd" + 304 o="Jemac Sweden AB" + 305 o="VivoKey Technologies Inc." + 306 o="Corigine,Inc." + 309 o="MECT SRL" + 30A o="XCOM Labs" + 30C o="Narnix Edge Pvt. Ltd." + 30D o="Flextronics International Kft" + 30E o="Tangent Design Engineering" + 30F o="EAST PHOTONICS" + 313 o="SB-GROUP LTD" + 314 o="Cedel BV" + 316 o="Potter Electric Signal Co. LLC" + 317 o="Bacancy Systems LLP" + 319 o="Exato Company" + 31A o="Asiga Pty Ltd" + 31B o="joint analytical systems GmbH" + 31C o="Accumetrics" + 31D o="Tech Mobility Aps" + 31F o="STV Electronic GmbH" + 324 o="Kinetic Technologies" + 327 o="Deutescher Wetterdienst" + 328 o="Com Video Security Systems Co., Ltd." + 329 o="YUYAMA MFG Co.,Ltd" + 32A o="ABB" + 32B o="Shenyang Taihua Technology Co., Ltd." + 32C o="Taiko Audio B.V." + 32E o="Trineo Systems Sp. z o.o." + 32F o="DEUTA Controls GmbH" + 330 o="Vision Systems Safety Tech" + 332 o="NEXET LLC" + 334 o="OutdoorLink" + 338 o="Rheingold Heavy LLC" + 33C o="HUBRIS TECHNOLOGIES PRIVATE LIMITED" + 33D o="ARROW (CHINA) ELECTRONICS TRADING CO., LTD." + 340 o="BRS Sistemas Eletrônicos" + 342 o="TimeMachines Inc." + 345 o="Kreafeuer AG, Swiss finsh" + 347 o="Plut d.o.o." + 348 o="Breas Medical AB" + 349 o="WAVES SYSTEM" + 34A o="Raspberry Pi (Trading) Ltd" + 34B o="Infrared Inspection Systems" + 34C o="Kyushu Keisokki Co.,Ltd." + 34D o="biosilver .co.,ltd" + 34F o="Systec Designs BV" + 350 o="biosilver .co.,ltd" + 352 o="Mediashare Ltd" + 354 o="Paul Tagliamonte" + 357 o="YUYAMA MFG Co.,Ltd" + 358 o="Denso Manufacturing Tennessee" + 35C o="Opgal Optronic Industries ltd" + 35D o="Security&Best" + 35E o="Test21 Taiwan Corp" + 362 o="Power Electronics Espana, S.L." + 363 o="Grossenbacher Systeme AG" + 364 o="TILAK INTERNATIONAL" + 365 o="VECTOR TECHNOLOGIES, LLC" + 366 o="MB connect line GmbH Fernwartungssysteme" + 367 o="LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG" + 368 o="Crosstek Co., Ltd" + 369 o="Orbital Astronautics Ltd" + 36A o="INVENTIS S.r.l." + 36B o="ViewSonic Corp" + 36E o="Abbott Diagnostics Technologies AS" + 36F o="SP MANUFACTURING PTE LTD" + 370 o="WOLF Advanced Technology" + 371 o="LIMAB AB" + 372 o="WINK Streaming" + 374 o="Accord Communications Ltd" + 375 o="DUEVI SRL" + 376 o="DIAS Infrared GmbH" + 377 o="Solotech" + 378 o="spar Power Technologies Inc." + 37A o="GETQCALL" + 37B o="MITSUBISHI ELECTRIC INDIA PVT. LTD." + 37C o="MOIZ" + 37D o="Season Electronics Ltd" + 37E o="SIDUS Solutions, LLC" + 37F o="Scarlet Tech Co., Ltd." + 380 o="YSLAB" + 382 o="Shenzhen ROLSTONE Technology Co., Ltd" + 384 o="Tango Tango" + 385 o="Multilane Inc" + 387 o="OMNIVISION" + 388 o="MB connect line GmbH Fernwartungssysteme" + 38A o="All Points Broadband" + 38B o="Borrell USA Corp" + 38C o="XIAMEN ZHIXIAOJIN INTELLIGENT TECHNOLOGY CO., LTD" + 38D o="Wilson Electronics" + 38E o="Wartsila Voyage Oy" + 38F o="Unabiz" + 390 o="SkyLabs d.o.o." + 391 o="CPC (UK)" + 392 o="mmc kommunikationstechnologie gmbh" + 393 o="GRE SYSTEM INC." + 394 o="Ceranext Ltd" + 395 o="Beijing Ceresdata Technology Co., LTD" + 396 o="MixWave, Inc." + 397 o="Intel Corporate" + 398 o="Software Systems Plus" + 39A o="Golding Audio Ltd" + 39B o="Deviceworx Technologies Inc." + 39E o="Abbott Diagnostics Technologies AS" + 39F o="Guangzhou Beizeng Information Technology Co.,Ltd" + 3A2 o="Kron Medidores" + 3A3 o="Lumentum" + 3A4 o="QLM Technology Ltd" + 3AC o="Benison Tech" + 3AD o="TowerIQ" + 3AF o="PSA Technology Ltda." + 3B0 o="Flextronics International Kft" + 3B1 o="Panoramic Power" + 3B2 o="Real Digital" + 3B5 o="SVMS" + 3B6 o="TEX COMPUTER SRL" + 3B7 o="AI-BLOX" + 3B8 o="HUBRIS TECHNOLOGIES PRIVATE LIMITED" + 3BA o="MITSUBISHI ELECTRIC INDIA PVT. LTD." + 3BB o="Clausal Computing Oy" + 3BD o="Oriux" + 3C0 o="SNEK" + 3C1 o="Suzhou Lianshichuangzhi Technology Co., Ltd" + 3C2 o="Samuel Cosgrove" + 3C4 o="NavSys Technology Inc." + 3C5 o="Stratis IOT" + 3C6 o="Wavestream Corp" + 3C7 o="RESMED PTY LTD" + 3C8 o="BTG Instruments AB" + 3C9 o="TECHPLUS-LINK Technology Co.,Ltd" + 3CD o="Sejong security system Cor." + 3CE o="MAHINDR & MAHINDRA" + 3D0 o="TRIPLTEK" + 3D1 o="EMIT GmbH" + 3D2 o="UVIRCO Technologies" + 3D4 o="e.p.g. Elettronica s.r.l." + 3D5 o="FRAKO Kondensatoren- und Anlagenbau GmbH" + 3D6 o="Kyowakiden Industry Co.,Ltd." + 3D7 o="Eiden Co.,Ltd." + 3D9 o="Unlimited Bandwidth LLC" + 3DB o="BRS Sistemas Eletrônicos" + 3DD o="DORLET SAU" + 3DF o="LimeSoft Co., Ltd." + 3E0 o="YPP Corporation" + 3E2 o="Agrico" + 3E3 o="FMTec GmbH - Future Management Technologies" + 3E5 o="Systems Mechanics" + 3E6 o="elbe informatik GmbH" + 3E8 o="Ruichuangte" + 3E9 o="HEITEC AG" + 3EA o="CHIPSCAPE SECURITY SYSTEMS" + 3EB o="Samwell International Inc" + 3ED o="The Exploration Company" + 3EE o="BnB Information Technology" + 3F2 o="SURYA ELECTRONICS" + 3F3 o="Cambrian Works, Inc." + 3F4 o="ACTELSER S.L." + 3F6 o="ANTARA TECHNOLOGIES" + 3F7 o="Mitsubishi Electric India Pvt. Ltd." + 3F9 o="YU YAN SYSTEM TECHNOLOGY CO., LTD." + 3FC o="STV Electronic GmbH" + 3FE o="Plum sp. z.o.o." + 3FF o="UISEE(SHANGHAI) AUTOMOTIVE TECHNOLOGIES LTD." + 402 o="Integer.pl S.A." + 406 o="ANDA TELECOM PVT LTD" + 407 o="broadtek" + 408 o="techone system" + 40A o="Enki Multimedia" + 40C o="Sichuan Aiyijan Technology Company Ltd." + 40D o="PROFITT Ltd" + 40E o="Baker Hughes EMEA" + 410 o="Roboteq" + 412 o="Comercial Electronica Studio-2 s.l." + 414 o="INSEVIS GmbH" + 415 o="OnAsset Intelligence" + 417 o="Fracarro srl" + 419 o="Naval Group" + 41B o="ENERGY POWER PRODUCTS LIMITED" + 41C o="KSE GmbH" + 41D o="Aspen Spectra Sdn Bhd" + 41E o="Linxpeed Limited" + 41F o="Gigalane" + 421 o="J B Electronics Corp" + 423 o="Hiwin Mikrosystem Corp." + 426 o="eumig industrie-TV GmbH." + 427 o="MB connect line GmbH Fernwartungssysteme" + 429 o="Abbott Diagnostics Technologies AS" + 42A o="Atonarp Inc." + 42B o="Gamber Johnson-LLC" + 42D o="Jemac Sweden AB" + 42F o="Tomorrow Companies Inc" + 432 o="Rebel Systems" + 437 o="Gogo BA" + 438 o="Integer.pl S.A." + 439 o="BORNICO" + 43A o="Spacelite Inc" + 43D o="Solid State Supplies Ltd" + 43E o="Syrma SGS Technology" + 43F o="beespace Technologies Limited" + 440 o="MB connect line GmbH Fernwartungssysteme" + 441 o="Novanta IMS" + 442 o="Potter Electric Signal Co. LLC" + 444 o="Contrive Srl" + 445 o="Figment Design Laboratories" + 447 o="MARVAUS TECHNOLOGIES PRIVATE LIMITED" + 448 o="Förster-Technik GmbH" + 44A o="Onbitel" + 44D o="Design and Manufacturing Vista Electronics Pvt.Ltd." + 44E o="GVA Lighting, Inc." + 44F o="RealD, Inc." + 451 o="Guan Show Technologe Co., Ltd." + 454 o="KJ Klimateknik A/S" + 455 o="Weigl GmbH & Co KG" + 457 o="SHANGHAI ANGWEI INFORMATION TECHNOLOGY CO.,LTD." + 458 o="AooGee Controls Co., LTD." + 459 o="GreenTally LLC" + 45A o="Inspur Digital Enterprise Technology Co., Ltd." + 45B o="Beijing Aoxing Technology Co.,Ltd" + 45D o="Fuzhou Tucsen Photonics Co.,Ltd" + 45E o="Hangzhou Zhongchuan Digital Equipment Co., Ltd." + 45F o="Toshniwal Security Solutions Pvt Ltd" + 460 o="Solace Systems Inc." + 461 o="Kara Partners LLC" + 462 o="REO AG" + 465 o="IXORIGUE TECHNOLOGIES SL" + 466 o="Intamsys Technology Co.Ltd" + 46A o="Pharsighted LLC" + 46D o="MB connect line GmbH" + 470 o="Canfield Scientific Inc" + 472 o="Surge Networks, Inc." + 473 o="Plum sp. z.o.o." + 474 o="AUDIOBYTE S.R.L." + 475 o="Alpine Quantum Technologies GmbH" + 476 o="Clair Global Corporation" + 477 o="Blaucomm Ltd" + 479 o="AKSE srl" + 47A o="Missing Link Electronics, Inc." + 47B o="Fluid Components Intl" + 47D o="EB NEURO SPA" + 47E o="Novanta IMS" + 480 o="SOCA TECHNOLOGY CO., LTD." + 481 o="VirtualV Trading Limited" + 482 o="Vismes sarl" + 486 o="Longhorn lntelligent Tech Co.,Ltd." + 487 o="TECHKON GmbH" + 489 o="HUPI" + 48B o="Monnit Corporation" + 48C o="Electronic Equipment Company Pvt. Ltd." + 48F o="Mecos AG" + 490 o="SAMSON CO.,LTD." + 491 o="Phospec Industries Inc." + 493 o="Security Products International, LLC" + 495 o="DAVE SRL" + 496 o="QUALSEN(GUANGZHOU)TECHNOLOGIES CO.,LTD" + 497 o="Primalucelab S.p.A." + 498 o="YUYAMA MFG Co.,Ltd" + 499 o="TIAMA" + 49A o="Sigmann Elektronik GmbH" + 49B o="Wartsila Voyage Oy" + 49C o="Red Lion Europe GmbH" + 49F o="Shenzhen Dongman Technology Co.,Ltd" + 4A0 o="Tantec A/S" + 4A1 o="Breas Medical AB" + 4A2 o="Bludigit SpA" + 4A3 o="ID Quantique SA" + 4A4 o="Potter Electric Signal Co. LLC" + 4A6 o="Alaire Technologies Inc" + 4A7 o="Potter Electric Signal Co. LLC" + 4A8 o="Exact Sciences" + 4A9 o="Martec Marine S.p.a." + 4AA o="GigaIO Networks, Inc." + 4AC o="Vekto" + 4AE o="KCS Co., Ltd." + 4AF o="miniDSP" + 4B0 o="U -MEI-DAH INT'L ENTERPRISE CO.,LTD." + 4B2 o="GV Technology Co.,Ltd." + 4B3 o="XYZ Digital Private Limited" + 4B4 o="Point One Navigation" + 4B8 o="astTECS Communications Private Limited" + 4BB o="IWS Global Pty Ltd" + 4BF o="Smart Monitoring Innovations Private Limited" + 4C1 o="Clock-O-Matic" + 4C2 o="Laser Imagineering Vertriebs GmbH" + 4C4 o="Innovative Industries" + 4C7 o="SBS SpA" + 4C9 o="Apantac LLC" + 4CA o="North Building Technologies Limited" + 4CC o="Carestream Healthcare International Company Limited" + 4CD o="Guan Show Technologe Co., Ltd." + 4CF o="Sicon srl" + 4D0 o="SunSonic LLC" + 4D6 o="Dan Smith LLC" + 4D7 o="Flextronics International Kft" + 4D9 o="SECURICO ELECTRONICS INDIA LTD" + 4DA o="DTDS Technology Pte Ltd" + 4DC o="BESO sp. z o.o." + 4DD o="Griffyn Robotech Private Limited" + 4DF o="EMRI" + 4E0 o="PuS GmbH und Co. KG" + 4E3 o="Exi Flow Measurement Ltd" + 4E4 o="Nuvation Energy" + 4E5 o="Renukas Castle Hard- and Software" + 4E6 o="Schippers Europe BV" + 4E7 o="Circuit Solutions" + 4E9 o="EERS GLOBAL TECHNOLOGIES INC." + 4EB o="flsystem" + 4EC o="XOR UK Corporation Limited" + 4ED o="VENTIONEX INNOVATIONS SDN BHD" + 4F0 o="Tieline Research Pty Ltd" + 4F1 o="Abbott Diagnostics Technologies AS" + 4F2 o="Automation Displays Inc." + 4F4 o="Staco Energy Products" + 4F5 o="BSTsecurity" + 4F7 o="SmartD Technologies Inc" + 4F9 o="Photonic Science and Engineering Ltd" + 4FA o="Sanskruti" + 4FB o="MESA TECHNOLOGIES LLC" + 500 o="Nepean Networks Pty Ltd" + 501 o="QUISS GmbH" + 502 o="Samwell International Inc" + 503 o="TUALCOM ELEKTRONIK A.S." + 504 o="EA Elektroautomatik GmbH & Co. KG" + 506 o="UrbanChain Group Co., Ltd" + 507 o="IDNEO TECHNOLOGIES,S.A.U." + 508 o="Kite Rise Technologies GmbH" + 509 o="Season Electronics Ltd" + 50A o="BELLCO TRADING COMPANY (PVT) LTD" + 50B o="Beijing Entian Technology Development Co., Ltd" + 50C o="Automata GmbH & Co. KG" + 50D o="Shenzhen Guanxin Information Technology Co.,Ltd" + 50E o="Panoramic Power" + 510 o="Novanta IMS" + 511 o="Control Aut Tecnologia em Automação LTDA" + 512 o="Blik Sensing B.V." + 514 o="iOpt" + 515 o="Daniele Saladino" + 516 o="TCL OPERATIONS POLSKA SP. Z O.O." + 517 o="Smart Radar System, Inc" + 518 o="Wagner Group GmbH" + 519 o="SHENZHEN GW TECHNOLOGY CO.,LTD" + 51A o="TELE Haase Steuergeräte Ges.m.b.H" + 521 o="MP-SENSOR GmbH" + 523 o="SPEKTRA Schwingungstechnik und Akustik GmbH Dresden" + 524 o="Aski Industrie Elektronik GmbH" + 525 o="United States Technologies Inc." + 526 o="CAITRON GmbH" + 527 o="PDW" + 528 o="Luxshare Electronic Technology (KunShan) Ltd" + 52A o="Hiwin Mikrosystem Corp." + 52D o="Cubic ITS, Inc. dba GRIDSMART Technologies" + 52E o="CLOUD TELECOM Inc." + 530 o="SIPazon AB" + 533 o="Boeing India Private Limited" + 534 o="SURYA ELECTRONICS" + 535 o="Columbus McKinnon" + 536 o="BEIJING LXTV TECHNOLOGY CO.,LTD" + 53A o="TPVision Europe B.V" + 53B o="REFU Storage System GmbH" + 53C o="Filgis Elektronik" + 53D o="NEXCONTECH" + 53F o="Velvac Incorporated" + 540 o="Enclavamientos y Señalización Ferroviaria Enyse S.A." + 542 o="Landis+Gyr Equipamentos de Medição Ltda" + 544 o="Tinkerbee Innovations Private Limited" + 546 o="DEUTA Werke GmbH" + 548 o="Beijing Congyun Technology Co.,Ltd" + 549 o="Brad Technology" + 54A o="Belden India Private Limited" + 54B o="MECT SRL" + 54C o="Gemini Electronics B.V." + 54F o="Toolplanet Co., Ltd." + 550 o="ard sa" + 552 o="Proterra, Inc" + 553 o="ENIGMA SOI Sp. z o.o." + 554 o="Herholdt Controls srl" + 556 o="BAE Systems" + 557 o="In-lite Design BV" + 558 o="Scitel" + 559 o="Intozi Tech Pvt Ltd" + 55B o="Sheetal Wireless Technologies Pvt Ltd" + 55C o="Schildknecht AG" + 55E o="HANATEKSYSTEM" + 560 o="Dexter Laundry Inc." + 561 o="Deep Detection / ESB01736990" + 566 o="Ultiroam" + 568 o="Integer.pl S.A." + 56A o="Radaz Indústria e Comércio de Produtos Eletronicos S/A" + 56B o="Avida, Inc." + 56C o="ELTEK SpA" + 56D o="ACOD" + 56E o="Euklis srl" + 56F o="ADETEC SAS" + 572 o="ZMBIZI APP LLC" + 573 o="Ingenious Technology LLC" + 574 o="Flock Audio Inc." + 575 o="Yu Heng Electric CO. TD" + 57A o="NPO ECO-INTECH Ltd." + 57B o="Potter Electric Signal Co. LLC" + 57D o="ISDI Ltd" + 57E o="Guoqing (shangdong) Information Technology Co.,Ltd" + 580 o="SAKURA SEIKI Co., Ltd." + 581 o="SpectraDynamics, Inc." + 583 o="3Egreen tech. Co. Ltd." + 585 o="Shanghai DIDON Industry Co,. Ltd." + 589 o="HVRND" + 58B o="Quectel Wireless Solutions Co.,Ltd." + 58C o="Ear Micro LLC" + 58E o="Novanta IMS" + 591 o="MB connect line GmbH Fernwartungssysteme" + 593 o="Brillian Network & Automation Integrated System Co., Ltd." + 595 o="Inspinia Technology s.r.o." + 596 o="RF Code" + 598 o="TIRASOFT TECHNOLOGY" + 59A o="Primalucelab isrl" + 59D o="CommBox Pty Ltd" + 59F o="Delta Computers LLC." + 5A0 o="SEONGWON ENG CO.,LTD" + 5A1 o="Breas Medical AB" + 5A4 o="DAVE SRL" + 5A6 o="Kinney Industries, Inc" + 5A7 o="RCH SPA" + 5A9 o="Aktiebolag Solask Energi" + 5AA o="Landis+Gyr Equipamentos de Medição Ltda" + 5AC o="YUYAMA MFG Co.,Ltd" + 5AE o="Suzhou Motorcomm Electronic Technology Co., Ltd" + 5AF o="Teq Diligent Product Solutions Pvt. Ltd." + 5B0 o="Sonel S.A." + 5B3 o="eumig industrie-TV GmbH." + 5B4 o="Axion Lighting" + 5B5 o="HUBRIS TECHNOLOGIES PRIVATE LIMITED" + 5B6 o="ShenZhen melevet medical Inc.,Ltd." + 5B7 o="Vortex Sp. z o.o." + 5B9 o="ViewSonic Corp" + 5BA o="Connectcom System Co., Ltd" + 5BC o="HEITEC AG" + 5BD o="MPT-Service project" + 5BE o="Benchmark Electronics BV" + 5BF o="SUS Corporation" + 5C3 o="R3Vox Ltd" + 5C4 o="Cooltera Limited" + 5C5 o="Active Research Limited" + 5C6 o="Systems With Intelligence Inc." + 5C9 o="Abbott Diagnostics Technologies AS" + 5CB o="dinosys" + 5CC o="Alpes recherche et développement" + 5CD o="MAHINDR & MAHINDRA" + 5CE o="Packetalk LLC" + 5CF o="YUYAMA MFG Co.,Ltd" + 5D0 o="Image Engineering" + 5D1 o="TWIN DEVELOPMENT" + 5D3 o="Eloy Water" + 5D6 o="Portrait Displays, Inc." + 5D9 o="Opdi-tex GmbH" + 5DA o="White2net srl" + 5DB o="GlobalInvacom" + 5DE o="SekureTrak Inc. dba TraknProtect" + 5DF o="Roesch Walter Industrie-Elektronik GmbH" + 5E1 o="Power Electronics Espana, S.L." + 5E3 o="Nixer Ltd" + 5E4 o="Wuxi Zetai Microelectronics Co., LTD" + 5E5 o="Telemetrics Inc." + 5E6 o="ODYSSEE-SYSTEMES" + 5E7 o="HOSCH Gebäude Automation Neue Produkte GmbH" + 5E8 o="Sterna Security Devices Pvt Ltd" + 5EA o="BTG Instruments AB" + 5EB o="TIAMA" + 5EC o="NV BEKAERT SA" + 5ED o="DEUTA Werke GmbH" + 5F1 o="HD Link Co., Ltd." + 5F2 o="CMC Applied Technology institute" + 5F5 o="HongSeok Ltd." + 5F6 o="Forward Edge.AI" + 5F7 o="Eagle Harbor Technologies, Inc." + 5F9 o="KRONOTECH SRL" + 5FA o="PolCam Systems Sp. z o.o." + 5FB o="RECOM LLC." + 5FC o="Lance Design LLC" + 5FF o="DAVE SRL" + 600 o="Anhui Chaokun Testing Equipment Co., Ltd" + 601 o="Camius" + 603 o="Fuku Energy Technology Co., Ltd." + 605 o="Xacti Corporation" + 606 o="NodOn SAS" + 607 o="Nanjing Aotong Intelligent Technology Co.,Ltd" + 608 o="CONG TY CO PHAN KY THUAT MOI TRUONG VIET AN" + 60A o="RFENGINE CO., LTD." + 60B o="eumig industrie-TV GmbH." + 60E o="ICT International" + 60F o="SAEL SRL" + 610 o="Beijing Zhongzhi Huida Technology Co., Ltd" + 611 o="Siemens Industry Software Inc." + 616 o="DEUTA Werke GmbH" + 618 o="Foshan YiFeng Electric Industrial Co., ltd" + 619 o="Labtrino AB" + 61C o="Automata GmbH & Co. KG" + 61D o="Lewitt GmbH" + 61F o="Lightworks GmbH" + 620 o="Solace Systems Inc." + 621 o="JTL Systems Ltd." + 622 o="Logical Product" + 623 o="Ryoyu-GC Co.,Ltd" + 624 o="Canastra AG" + 625 o="Stresstech OY" + 626 o="CSIRO" + 627 o="ibg Prüfcomputer GmbH" + 62C o="Hangzhou EasyXR Advanced Technology Co., Ltd." + 62D o="Embeddded Plus Plus" + 62E o="ViewSonic Corp" + 62F o="Pro Design Electronic GmbH" + 631 o="HAIYANG OLIX CO.,LTD." + 634 o="AML" + 636 o="Europe Trade" + 638 o="THUNDER DATA TAIWAN CO., LTD." + 63B o="TIAMA" + 63C o="GALIOS" + 63D o="Rax-Tech International" + 63E o="Monnit Corporation" + 63F o="PREO INDUSTRIES FAR EAST LTD" + 641 o="biosilver .co.,ltd" + 644 o="DAVE SRL" + 647 o="Senior Group LLC" + 648 o="Gridpulse c.o.o." + 64D o="NEWONE CO.,LTD." + 64E o="Nilfisk Food" + 64F o="INVIXIUM ACCESS INC" + 650 o="L tec Co.,Ltd" + 651 o="Teledyne Cetac" + 652 o="TOKYO INTERPHONE CO.,LTD." + 653 o="P5" + 655 o="S.E.I. CO.,LTD." + 656 o="Optotune Switzerland AG" + 657 o="Bright Solutions PTE LTD" + 65A o="YUYAMA MFG Co.,Ltd" + 65B o="SUS Corporation" + 65D o="Action Streamer LLC" + 65F o="Astrometric Instruments, Inc." + 660 o="LLC NTPC" + 661 o="Spyder Controls Corp." + 662 o="Suzhou Leamore Optronics Co., Ltd." + 663 o="mal-tech Technological Solutions Ltd/CRISP" + 664 o="Thermoeye Inc" + 66C o="LINEAGE POWER PVT LTD.," + 66D o="VT100 SRL" + 66E o="Monnit Corporation" + 66F o="Elix Systems SA" + 672 o="Farmobile LLC" + 673 o="MEDIASCOPE Inc." + 675 o="Transit Solutions, LLC." + 676 o="sdt.net AG" + 677 o="FREY S.J." + 67A o="MG s.r.l." + 67B o="Wi-DAS LLC" + 67C o="Ensto Protrol AB" + 67D o="Ravi Teleinfomatics" + 67E o="LDA Audiotech" + 67F o="Hamamatsu Photonics K.K." + 680 o="MITROL S.R.L." + 681 o="wayfiwireless.com" + 683 o="SLAT" + 684 o="Potter Electric Signal Co. LLC" + 685 o="Sanchar Wireless Communications Ltd" + 686 o="Pazzk" + 687 o="Lamontec" + 689 o="AUREKA SMART LIVING W.L.L" + 68C o="GuangZhou HOKO Electric CO.,LTD" + 68E o="Oriental Electronics, Inc." + 690 o="Potter Electric Signal Co. LLC" + 691 o="Wende Tan" + 692 o="Nexilis Electronics India Pvt Ltd (PICSYS)" + 693 o="Adaptiv LTD" + 694 o="Hubbell Power Systems" + 695 o="aeroLiFi GmbH" + 696 o="Emerson Rosemount Analytical" + 697 o="Sontay Ltd." + 698 o="Arcus-EDS GmbH" + 699 o="FIDICA GmbH & Co. KG" + 69D o="Bots Unlimited LLC" + 69E o="AT-Automation Technology GmbH" + 69F o="Insightec" + 6A0 o="Avionica" + 6A3 o="Becton Dickinson" + 6A4 o="Automata Spa" + 6A6 o="Q (Cue), Inc." + 6A7 o="MobileMustHave" + 6A8 o="Bulwark" + 6AB o="Toho System Co., Ltd." + 6AD o="Potter Electric Signal Co. LLC" + 6AE o="Bray International" + 6B0 o="O-Net Technologies(Shenzhen)Group Co.,Ltd." + 6B1 o="Specialist Mechanical Engineers (PTY)LTD" + 6B3 o="Feritech Ltd." + 6B5 o="O-Net Communications(Shenzhen)Limited" + 6B6 o="Engelmann Sensor GmbH" + 6B7 o="Alpha-Omega Technology GmbH & Co. KG" + 6B8 o="Larraioz Elektronika" + 6B9 o="GS Industrie-Elektronik GmbH" + 6BB o="Season Electronics Ltd" + 6BD o="IoT Water Analytics S.L." + 6BF o="Automata GmbH & Co. KG" + 6C1 o="Gogo BA" + 6C4 o="inmediQ GmbH" + 6C6 o="FIT" + 6C8 o="Taiko Audio B.V." + 6CA o="Melissa Climate Jsc" + 6CB o="GJD Manufacturing" + 6CC o="Newtouch Electronics (Shanghai) Co., LTD." + 6CD o="Wuhan Xingtuxinke ELectronic Co.,Ltd" + 6CE o="Potter Electric Signal Co. LLC" + 6CF o="Italora" + 6D0 o="ABB" + 6D1 o="Smith meter Inc" + 6D2 o="VectorNav Technologies" + 6D4 o="Hitachi Energy Poland sp. Z o o" + 6D5 o="HTK Hamburg GmbH" + 6D6 o="Argosdyne Co., Ltd" + 6D7 o="Leopard Imaging Inc" + 6D9 o="Khimo" + 6DA o="浙江红谱科技有限公司" + 6DC o="Intrinsic Innovation, LLC" + 6DD o="ViewSonic Corp" + 6DE o="SUN・TECTRO,Ltd." + 6DF o="ALPHI Technology Corporation" + 6E0 o="KMtronic LTD" + 6E2 o="SCU Co., Ltd." + 6E3 o="ViewSonic International Corporation" + 6E4 o="RAB Microfluidics R&D Company Ltd" + 6E7 o="WiTricity Corporation" + 6E9 o="SHENZHEN sunforest Co.LTD" + 6EA o="KMtronic ltd" + 6EB o="ENLESS WIRELESS" + 6EC o="Bit Trade One, Ltd." + 6ED o="Elbit Systems of America" + 6EE o="Cortical Labs Pte Ltd" + 6F4 o="Elsist Srl" + 6F7 o="EddyWorks Co.,Ltd" + 6F8 o="PROIKER TECHNOLOGY SL" + 6F9 o="ANDDORO LLC" + 6FB o="Exatron Servers Manufacturing Pvt Ltd" + 6FC o="HM Systems A/S" + 700 o="QUANTAFLOW" + 702 o="AIDirections" + 703 o="Calnex Solutions plc" + 707 o="OAS AG" + 708 o="ZUUM" + 70A o="YUYAMA MFG Co.,Ltd" + 70B o="ONICON" + 70C o="Broyce Control Ltd" + 70E o="OvercomTech" + 710 o="Zengar Institute Inc" + 712 o="Nexion Data Systems P/L" + 713 o="NSTEK CO., LTD." + 715 o="INTERNET PROTOCOLO LOGICA SL" + 718 o="ABB" + 719 o="delResearch, LLC" + 71A o="Chell Instruments Ltd" + 71B o="Adasky Ltd." + 71D o="Epigon spol. s r.o." + 720 o="Hangzhou Huasu Technology CO., LTD." + 721 o="M/S MILIND RAMACHANDRA RAJWADE" + 722 o="Artome Oy" + 723 o="Celestica Inc." + 724 o="HEITEC AG" + 726 o="DAVE SRL" + 729 o="ZER01CHI Corporation" + 72A o="DORLET SAU" + 72B o="Abbott Diagnostics Technologies AS" + 72C o="Antai technology Co.,Ltd" + 72D o="Hills Health Solutions" + 72F o="GMV Aerospace and Defence SAU" + 731 o="ehoosys Co.,LTD." + 733 o="Video Network Security" + 734 o="ZKTECO EUROPE" + 737 o="Vytahy-Vymyslicky s.r.o." + 738 o="ssolgrid" + 739 o="Monnit Corporation" + 73B o="Fink Zeitsysteme GmbH" + 73C o="REO AG" + 73D o="NewAgeMicro" + 73E o="Beijing LJ Technology Co., Ltd." + 73F o="UBISCALE" + 740 o="Norvento Tecnología, S.L." + 741 o="TRATON AB" + 743 o="Rosenxt Technology USA" + 744 o="CHASEO CONNECTOME" + 745 o="R2D AUTOMATION" + 746 o="Sensus Healthcare" + 747 o="VisionTIR Multispectral Technology" + 749 o="TIAMA" + 74B o="AR Modular RF" + 74E o="OpenPark Technologies Kft" + 750 o="Coral Infratel Pvt Ltd" + 751 o="CITSA Technologies Private Limited" + 754 o="DevRay IT Solutions Private Limited" + 755 o="Flextronics International Kft" + 756 o="Star Systems International Limited" + 759 o="Systel Inc" + 75B o="Meiji Electric Industry" + 75C o="American Energy Storage Innovations" + 75E o="YONNET BILISIM YAZ. EGT. VE DAN. HIZ. TIC. A.S." + 75F o="ASTRACOM Co. Ltd" + 760 o="Q-Light AS" + 761 o="BOE Smart IoT Technology Co.,Ltd" + 762 o="Support Professionals B.V." + 763 o="Anduril Imaging" + 764 o="nanoTRONIX Computing Inc." + 765 o="Micro Electroninc Products" + 767 o="CAES Systems LLC" + 768 o="mapna group" + 769 o="Vonamic GmbH" + 76A o="DORLET SAU" + 76B o="Wherible GPS, Inc." + 76C o="Guan Show Technologe Co., Ltd." + 76E o="develogic GmbH" + 76F o="INVENTIA Sp. z o.o." + 771 o="AUTOMATIZACION Y CONECTIVIDAD" + 774 o="navXperience GmbH" + 775 o="Becton Dickinson" + 776 o="Visiosoft Pty Ltd" + 777 o="Sicon srl" + 778 o="ERS Elektronik GmbH" + 779 o="INVENTIO DI NICOLO' BORDOLI" + 77A o="Datacomm Networks" + 77B o="DB SAS" + 77C o="Orange Tree Technologies Ltd" + 77E o="Institute of geophysics, China earthquake administration" + 77F o="TargaSystem S.r.L." + 780 o="HME Co.,ltd" + 781 o="Druck Ltd." + 782 o="ATM LLC" + 783 o="VMA GmbH" + 784 o="MAYSUN CORPORATION" + 787 o="Tabology" + 789 o="DEUTA Werke GmbH" + 78B o="SENSO2ME NV" + 78F o="Connection Systems" + 791 o="Otis Technology and Development(Shanghai) Co., Ltd." + 793 o="Aditec GmbH" + 797 o="Alban Giacomo S.p.a." + 79B o="Foerster-Technik GmbH" + 79D o="Murata Manufacturing Co., Ltd." + 79E o="Accemic Technologies GmbH" + 79F o="Hiwin Mikrosystem Corp." + 7A0 o="Potter Electric Signal Co. LLC" + 7A1 o="Guardian Controls International Ltd" + 7A3 o="Ibercomp SA" + 7A4 o="Hirotech inc." + 7A5 o="Potter Electric Signal Co. LLC" + 7A6 o="OTMetric" + 7A7 o="Timegate Instruments Ltd." + 7A9 o="FemtoTools AG" + 7AA o="XSENSOR Technology Corp." + 7AB o="DEUTA Werke GmbH" + 7AE o="D-E-K GmbH & Co.KG" + 7AF o="E VISION INDIA PVT LTD" + 7B0 o="AXID SYSTEM" + 7B1 o="EA Elektro-Automatik GmbH" + 7B5 o="Guan Show Technologe Co., Ltd." + 7B6 o="KEYLINE S.P.A." + 7B7 o="James G. Biddle dba Megger" + 7B8 o="TimeMachines Inc." + 7B9 o="Deviceroy" + 7BB o="Kotsu Dengyosha Co., Ltd." + 7BC o="GO development GmbH" + 7BE o="inomatic GmbH" + 7C1 o="Rail Telematics Corp" + 7C2 o="CTI Intl Solutions" + 7C4 o="MB connect line GmbH" + 7C6 o="Flextronics International Kft" + 7C7 o="Ascon Tecnologic S.r.l." + 7C8 o="Jacquet Dechaume" + 7CC o="Kuntu Technology Limited Liability Compant" + 7CD o="Fugro Technology B.V." + 7CE o="Shanghai smartlogic technology Co.,Ltd." + 7CF o="Transdigital Pty Ltd" + 7D0 o="Tecsys do Brasil Industrial Ltda" + 7D2 o="Enlaps" + 7D3 o="Suntech Engineering" + 7D4 o="Penteon Corporation" + 7D6 o="Algodue Elettronica Srl" + 7D7 o="Metronic AKP sp.j." + 7D8 o="HIROSAWA ELECTRIC Co.,Ltd." + 7D9 o="Noisewave Corporation" + 7DA o="Xpti Tecnologias em Segurança Ltda" + 7DB o="Raco Universal Technology Co., Ltd." + 7DC o="LINEAGE POWER PVT LTD.," + 7DD o="TAKASAKI KYODO COMPUTING CENTER Co.,LTD." + 7DE o="SOCNOC AI Inc" + 7DF o="Secury360" + 7E0 o="Colombo Sales & Engineering, Inc." + 7E1 o="HEITEC AG" + 7E2 o="Aaronn Electronic GmbH" + 7E3 o="UNE SRL" + 7E7 o="robert juliat" + 7E8 o="EA Elektro-Automatik GmbH" + 7EC o="Methods2Business B.V." + 7ED o="Eding CNC bv" + 7EE o="Orange Precision Measurement LLC" + 7EF o="SAXOGY POWER ELECTRONICS GmbH" + 7F1 o="AEM Singapore Pte Ltd" + 7F2 o="AT-Automation Technology GmbH" + 7F3 o="Videosys Broadcast Ltd" + 7F4 o="G.M. International srl" + 7F6 o="Abbott Diagnostics Technologies AS" + 7F8 o="FleetSafe India Private Limited" + 7F9 o="COPELION INTERNATIONAL INC" + 7FC o="Mitsubishi Electric Klimat Transportation Systems S.p.A." + 7FE o="Shenzhen Konvison Technology Co.,Ltd." + 800 o="Shenzhen SDG Telecom Equipment Co.,Ltd." + 801 o="Zhejiang Laolan Information Technology Co., Ltd" + 802 o="Daiichi Electric Industry Co., Ltd" + 803 o="MOSCA Elektronik und Antriebstechnik GmbH" + 804 o="EA Elektro-Automatik GmbH" + 806 o="Matrixspace" + 807 o="GIORDANO CONTROLS SPA" + 80C o="Thermify Holdings Ltd" + 80D o="jooyon electronics Service co.LTD" + 80E o="TxWireless Limited" + 80F o="ASYS Corporation" + 810 o="Kymata Srl" + 811 o="Panoramic Power" + 813 o="Pribusin Inc." + 814 o="DTI SRL" + 816 o="PalmSens BV" + 817 o="nke marine electronics" + 819 o="WARECUBE, INC." + 81A o="Gemini Electronics B.V." + 81B o="Potter Electric Signal Co. LLC" + 81D o="Gogo BA" + 81E o="37130" + 81F o="ViewSonic Corp" + 820 o="TIAMA" + 822 o="IP Devices" + 824 o="LOGICUBE INC" + 825 o="MTU Aero Engines AG" + 828 o="AURCORE TECHNOLOGY INC." + 82B o="Flow Power" + 82C o="Power Electronics Espana, S.L." + 82F o="AnySignal" + 830 o="Vtron Pty Ltd" + 835 o="ADETEC SAS" + 837 o="runZero, Inc" + 838 o="DRIMAES INC." + 839 o="CEDAR Audio Ltd" + 83A o="Grossenbacher Systeme AG" + 83B o="Starview Asia Company" + 83C o="Xtend Technologies Pvt Ltd" + 83D o="L-signature" + 83E o="Sicon srl" + 840 o="InfoMac Sp. z o.o. Sp.k." + 842 o="Potter Electric Signal Co. LLC" + 843 o="Image Soft Oy" + 846 o="Fo Xie Optoelectronics Technology Co., Ltd" + 848 o="Jena-Optronik GmbH" + 849 o="Talleres de Escoriaza SAU" + 84A o="Bitmapper Integration Technologies Private Limited" + 84C o="AvMap srlu" + 84D o="DAVE SRL" + 84E o="West Pharmaceutical Services, Inc." + 852 o="ABB" + 855 o="e.kundenservice Netz GmbH" + 856 o="Garten Automation" + 857 o="roda computer GmbH" + 858 o="SFERA srl" + 859 o="Invader Technologies Pvt Ltd" + 85A o="ENBIK Technology Co., Ltd" + 85B o="Atlantic Pumps Ltd" + 85C o="Zing 5g Communications Canada Inc." + 85E o="Apen Group S.p.A. (VAT IT08767740155)" + 85F o="NEC Asia Pacific Pte Ltd" + 861 o="AvioNova (Chengdu) Technology Company Limited" + 863 o="EngiNe srl" + 864 o="IMI Thomson Valves" + 866 o="Unitron Systems b.v." + 867 o="Forever Engineering Systems Pvt. Ltd." + 868 o="SHENZHEN PEAKE TECHNOLOGY CO.,LTD." + 86A o="VisionTools Bildanalyse Systeme GmbH" + 86B o="NYIEN-YI TECHNOLOGY(ZHUHAI)CO.,LTD." + 86C o="Abbott Diagnostics Technologies AS" + 86F o="NewEdge Signal Solutions LLC" + 870 o="Chengdu Xiuwei TechnologyDevelopment Co., Ltd" + 871 o="ENTE Sp. z o.o." + 875 o="EPC Power Corporation" + 876 o="fmad engineering" + 878 o="Green Access Ltd" + 879 o="ASHIDA Electronics Pvt. Ltd" + 87B o="JSE s.r.o." + 87C o="ENA Solution" + 880 o="MB connect line GmbH Fernwartungssysteme" + 881 o="Flextronics International Kft" + 882 o="TMY TECHNOLOGY INC." + 883 o="DEUTA-WERKE GmbH" + 888 o="NARI TECH Co., Ltd" + 88A o="Longoo Limited" + 88B o="Taiwan Aulisa Medical Devices Technologies, Inc" + 88C o="SAL Navigation AB" + 88D o="Pantherun Technologies Pvt Ltd" + 88E o="CubeWorks, Inc." + 890 o="WonATech Co., Ltd." + 891 o="Brocere electronics corp. ltd." + 892 o="MDI Industrial" + 895 o="Dacom West GmbH" + 898 o="Copper Connections Ltd" + 899 o="American Edge IP" + 89E o="Cinetix Srl" + 8A0 o="H&abyz" + 8A4 o="Genesis Technologies AG" + 8A8 o="Massachusetts Institute of Technology" + 8A9 o="Guan Show Technologe Co., Ltd." + 8AA o="Forever Engineering Systems Pvt. Ltd." + 8AB o="ASML US, LP" + 8AC o="BOZHON Precision Industry Technology Co.,Ltd" + 8AD o="Gateview Technologies" + 8AE o="Shenzhen Qunfang Technology Co., LTD." + 8AF o="Ibeos" + 8B1 o="Viewpixel Pvt. Ltd." + 8B2 o="Abbott Diagnostics Technologies AS" + 8B3 o="Hubbell Power Systems" + 8B5 o="Ashton Bentley Collaboration Spaces" + 8B6 o="AXIS Sp z o.o." + 8B7 o="DA-Design Oy" + 8B8 o="Wien Energie GmbH" + 8B9 o="Zynex Monitoring Solutions" + 8BC o="Peter Huber Kaeltemaschinenbau SE" + 8BE o="YUYAMA MFG Co.,Ltd" + 8C2 o="Cirrus Systems, Inc." + 8C4 o="Hermes Network Inc" + 8C5 o="NextT Microwave Inc" + 8C8 o="Potter Electric Signal Co. LLC" + 8CA o="YUYAMA MFG Co.,Ltd" + 8CB o="CHROMAVISO A/S" + 8CD o="Guan Show Technologe Co., Ltd." + 8CE o="Sanmina SCI Medical" + 8CF o="Diffraction Limited" + 8D0 o="Enerthing GmbH" + 8D1 o="Orlaco Products B.V." + 8D2 o="Sonic Italia" + 8D4 o="Recab Sweden AB" + 8D5 o="Agramkow A/S" + 8D6 o="ADC Global Technology Sdn Bhd" + 8D8 o="MBV AG" + 8D9 o="Pietro Fiorentini Spa" + 8DA o="Dart Systems Ltd" + 8DB o="Taesung Media" + 8DE o="Iconet Services" + 8DF o="Grossenbacher Systeme AG" + 8E0 o="Reivax S/A Automação e Controle" + 8E2 o="ALPHA Corporation" + 8E3 o="UniTik Technology Co., Limited" + 8E4 o="Cominfo, Inc." + 8E5 o="Druck Ltd." + 8E8 o="Cominfo, Inc." + 8E9 o="Vesperix Corporation" + 8EB o="Numa Products LLC" + 8EC o="LMS Services GmbH & Co. KG" + 8EE o="Abbott Diagnostics Technologies AS" + 8F0 o="IGL" + 8F4 o="Loadrite (Auckland) Limited" + 8F5 o="DAVE SRL" + 8F6 o="Idneo Technologies S.A.U." + 8F7 o="BORMANN EDV und Zubehoer" + 8F8 o="HIGHVOLT Prüftechnik" + 8FB o="Televic Rail GmbH" + 8FE o="Potter Electric Signal Co. LLC" + 8FF o="Kruger DB Series Indústria Eletrônica ltda" + 901 o="Comrex" + 902 o="TimeMachines Inc." + 903 o="Portrait Displays, Inc." + 904 o="Hensoldt Sensors GmbH" + 905 o="Qualitrol LLC" + 907 o="Sicon srl" + 909 o="MATELEX" + 90C o="Cool Air Incorporated" + 90D o="Algodue Elettronica Srl" + 90E o="Xacti Corporation" + 90F o="BELIMO Automation AG" + 910 o="Vortex IoT Ltd" + 911 o="EOLANE" + 912 o="MARIAN GmbH" + 913 o="Zeus Product Design Ltd" + 914 o="MITOMI GIKEN CO.,LTD" + 916 o="Sept-S" + 918 o="Abbott Diagnostics Technologies AS" + 91A o="Profcon AB" + 91B o="Potter Electric Signal Co. LLC" + 91C o="Cospowers Changsha Branch" + 91D o="enlighten" + 920 o="VuWall Technology Europe GmbH" + 921 o="Abbott Diagnostics Technologies AS" + 923 o="MB connect line GmbH Fernwartungssysteme" + 924 o="Magics Technologies" + 926 o="MJK Automation AB" + 927 o="BTG Instruments AB" + 928 o="ITG Co.Ltd" + 92A o="Thermo Onix Ltd" + 92D o="IVOR Intelligent Electrical Appliance Co., Ltd" + 931 o="Noptel Oy" + 935 o="Breas Medical AB" + 936 o="Jiangsu Eman Electronic Technology Co., Ltd" + 937 o="H2Ok Innovations" + 939 o="SPIT Technology, Inc" + 93A o="Rejås of Sweden AB" + 93F o="TEMCOLINE" + 941 o="Lorenz GmbH & Co. KG" + 943 o="Autark GmbH" + 944 o="BRS Sistemas Eletrônicos" + 945 o="Deqin Showcase" + 946 o="UniJet Co., Ltd." + 947 o="LLC %TC %Vympel%" + 949 o="tickIoT Inc." + 94A o="Vision Systems Safety Tech" + 94C o="BCMTECH" + 94E o="Monnit Corporation" + 94F o="Förster Technik GmbH" + 953 o="VAF Instruments BV" + 956 o="Paulmann Licht GmbH" + 958 o="Sanchar Telesystems limited" + 95A o="Shenzhen Longyun Lighting Electric Appliances Co., Ltd" + 95B o="Qualitel Corporation" + 95C o="Fasetto, Inc." + 95E o="Landis+Gyr Equipamentos de Medição Ltda" + 961 o="JMV BHARAT PRIVATE LIMITED" + 962 o="Umano Medical Inc." + 963 o="Gogo Business Aviation" + 964 o="Power Electronics Espana, S.L." + 965 o="Potter Electric Signal Co. LLC" + 966 o="Raster Images Pvt. Ltd" + 967 o="DAVE SRL" + 968 o="IAV ENGINEERING SARL" + 96A o="EA Elektro-Automatik GmbH" + 96B o="Vantageo Private Limited" + 96F o="VORTIX NETWORKS" + 970 o="Potter Electric Signal Co. LLC" + 971 o="INFRASAFE/ ADVANTOR SYSTEMS" + 973 o="Dorsett Technologies Inc" + 978 o="Planet Innovation Products Inc." + 979 o="Arktis Radiation Detectors" + 97C o="MB connect line GmbH Fernwartungssysteme" + 97D o="KSE GmbH" + 97E o="SONA NETWORKS PRIVATE LIMITED" + 97F o="Talleres de Escoriaza SA" + 983 o="Baker Hughes EMEA" + 984 o="Abacus Peripherals Pvt Ltd" + 987 o="Peter Huber Kaeltemaschinenbau SE" + 988 o="Nortek(QingDao) Measuring Equipment Co., Ltd" + 989 o="Phe-nX B.V." + 98A o="LIGPT" + 98B o="Syscom Instruments SA" + 98C o="PAN Business & Consulting (ANYOS]" + 98D o="Aksel sp. z o.o." + 98F o="Breas Medical AB" + 991 o="DB Systel GmbH" + 993 o="Applied Electro Magnetics Pvt. Ltd." + 994 o="uHave Control, Inc" + 998 o="EVLO Stockage Énergie" + 999 o="Advanced Techne" + 99C o="i2A Systems Co., Ltd." + 99E o="EIDOS s.r.l." + 9A1 o="Pacific Software Development Co., Ltd." + 9A2 o="LadyBug Technologies, LLC" + 9A3 o="Fortus" + 9A4 o="LabLogic Systems" + 9A5 o="Xi‘an Shengxin Science& Technology Development Co.?Ltd." + 9A6 o="INSTITUTO DE GESTÃO, REDES TECNOLÓGICAS E NERGIAS" + 9A7 o="Nihon Bouhan Camera Inc" + 9A9 o="TIAMA" + 9AB o="DAVE SRL" + 9AC o="Hangzhou Jingtang Communication Technology Co.,Ltd." + 9AD o="Potter Electric Signal Co. LLC" + 9B2 o="Emerson Rosemount Analytical" + 9B3 o="Böckelt GmbH" + 9B5 o="BERKELEY NUCLEONICS CORP" + 9B6 o="GS Elektromedizinsiche Geräte G. Stemple GmbH" + 9B7 o="Stercom Power Soltions GmbH" + 9B8 o="Makel Elektrik Malzemeleri A.Ş." + 9B9 o="QUERCUS TECHNOLOGIES, S.L." + 9BA o="WINTUS SYSTEM" + 9BD o="ATM SOLUTIONS" + 9BF o="ArgusEye TECH. INC" + 9C0 o="Header Rhyme" + 9C1 o="RealWear" + 9C3 o="Camozzi Automation SpA" + 9C4 o="Indra Heera Network Private Limited" + 9C5 o="Pacton Technologies Pty Ltd" + 9C6 o="Golding Audio Ltd" + 9CA o="EDC Acoustics" + 9CB o="Shanghai Sizhong Information Technology Co., Ltd" + 9CD o="JiangYu Innovative Medical Technology" + 9CE o="Exi Flow Measurement Ltd" + 9CF o="ASAP Electronics GmbH" + 9D0 o="Saline Lectronics, Inc." + 9D1 o="Televic Rail GmbH" + 9D3 o="EA Elektro-Automatik GmbH" + 9D4 o="Wolfspyre Labs" + 9D8 o="Integer.pl S.A." + 9D9 o="EPC Power Corporation" + 9DB o="HD Renewable Energy Co.,Ltd" + 9DF o="astTECS Communications Private Limited" + 9E0 o="Druck Ltd." + 9E2 o="Technology for Energy Corp" + 9E4 o="RMDS innovation inc." + 9E5 o="Schunk Sonosystems GmbH" + 9E6 o="MB connect line GmbH Fernwartungssysteme" + 9E7 o="MicroPilot Inc." + 9E8 o="GHM Messtechnik GmbH" + 9EA o="MSolutions" + 9EC o="Specialized Communications Corp." + 9F0 o="ePlant, Inc." + 9F1 o="Skymira" + 9F2 o="MB connect line GmbH Fernwartungssysteme" + 9F4 o="Grossenbacher Systeme AG" + 9F5 o="YUYAMA MFG Co.,Ltd" + 9F6 o="Vision Systems Safety Tech" + 9F8 o="Exypnos - Creative Solutions LTD" + 9FA o="METRONA-Union GmbH" + 9FB o="CI SYSTEMS ISRAEL LTD" + 9FD o="Vishay Nobel AB" + 9FE o="Metroval Controle de Fluidos Ltda" + 9FF o="Satelles Inc" + A00 o="BITECHNIK GmbH" + A01 o="Guan Show Technologe Co., Ltd." + A06 o="secutech Co.,Ltd." + A07 o="GJD Manufacturing" + A08 o="Statcon Electronics India Ltd." + A09 o="Raycon" + A0A o="Shanghai Wise-Tech Intelligent Technology Co.,Ltd." + A0B o="Channel Master LLC" + A0C o="Produkcija studio C.P.G d.o.o." + A0D o="Lumiplan Duhamel" + A0E o="Elac Americas Inc." + A0F o="DORLET SAU" + A10 o="ZJU-Hangzhou Global Scientific and Technological Innovation Center" + A12 o="FUJIHENSOKUKI Co., Ltd." + A13 o="INVENTIA Sp. z o.o." + A14 o="UPLUSIT" + A15 o="See All AI Inc." + A17 o="Pneumax Spa" + A1B o="Zilica Limited" + A1C o="manageon" + A1D o="MYIR Electronics Limited" + A1F o="Hitachi Energy India Limited" + A20 o="Intenseye Inc." + A26 o="Automatic Pty Ltd" + A27 o="NAPINO CONTINENTAL VEHICLE ELCTRONICS PRIVATE LIMITED" + A28 o="Monnit Corporation" + A29 o="Ringtail Security" + A2B o="WENet Vietnam Joint Stock company" + A2D o="ACSL Ltd." + A2E o="EA Elektro-Automatik GmbH" + A2F o="AMC Europe Kft." + A30 o="TMP Srl" + A31 o="Zing Communications Inc" + A32 o="Nautel LTD" + A33 o="RT Vision Technologies PVT LTD" + A34 o="Potter Electric Signal Co. LLC" + A35 o="Joust Security Inc." + A36 o="DONGGUAN GAGO ELECTRONICS CO.,LTD" + A38 o="NuGrid Power" + A39 o="MG s.r.l." + A3B o="Fujian Satlink Electronics Co., Ltd" + A3C o="Talleres de Escoriaza SAU" + A3E o="Hiwin Mikrosystem Corp." + A3F o="ViewSonic Corp" + A42 o="Rodgers Instruments US LLC" + A44 o="Rapidev Pvt Ltd" + A45 o="U -MEI-DAH INT'L ENTERPRISE CO.,LTD." + A47 o="Saarni Cloud Oy" + A48 o="Wallenius Water Innovation AB" + A49 o="Integer.pl S.A." + A4A o="YUYAMA MFG Co.,Ltd" + A4C o="Flextronics International Kft" + A4E o="Syscom Instruments SA" + A4F o="Ascon Tecnologic S.r.l." + A51 o="BABTEL" + A56 o="Flextronics International Kft" + A57 o="EkspertStroyProekt" + A5A o="UniPOS EOOD" + A5C o="Prosys" + A5D o="Shenzhen zhushida Technology lnformation Co.,Ltd" + A5E o="XTIA Ltd." + A5F o="Wattson Audio SA" + A60 o="Active Optical Systems, LLC" + A61 o="Breas Medical AB" + A64 o="Vigor Electric Corp." + A67 o="Electrovymir LLC" + A6A o="Sphere Com Services Pvt Ltd" + A6D o="CyberneX Co., Ltd" + A6E o="shenzhen beswave co.,ltd" + A6F o="Cardinal Scales Manufacturing Co" + A70 o="V-teknik Elektronik AB" + A71 o="Martec S.p.A." + A72 o="First Design System Inc." + A74 o="Hiwin Mikrosystem Corp." + A75 o="Procon Electronics Pty Ltd" + A76 o="DEUTA-WERKE GmbH" + A77 o="Rax-Tech International" + A7B o="CPAT Flex Inc." + A7C o="Proprietary Controls Systems Corporation" + A80 o="NEXTtec srl" + A81 o="3D perception AS" + A83 o="EkspertStroyProekt" + A84 o="Beijing Wenrise Technology Co., Ltd." + A86 o="Global Design Tech(ZS) Co.,Ltd" + A87 o="Morgen Technology" + A89 o="Mitsubishi Electric India Pvt. Ltd." + A8C o="Elektronik Art" + A90 o="DSGio Global Pte Ltd" + A91 o="Infinitive Group Limited" + A92 o="Agrology, PBC" + A94 o="Future wave ultra tech Company" + A95 o="Sentek Pty Ltd" + A97 o="Integer.pl S.A." + A98 o="Jacobs Technology, Inc." + A9A o="Signasystems Elektronik San. ve Tic. Ltd. Sti." + A9B o="Ovide Maudet SL" + A9C o="Upstart Power" + A9D o="Aegex Technologies LLC Magyarországi Fióktelepe" + A9E o="Optimum Instruments Inc." + AA0 o="Flextronics International Kft" + AA1 o="Tech Fass s.r.o." + AA3 o="Peter Huber Kaeltemaschinenbau SE" + AA4 o="HEINEN ELEKTRONIK GmbH" + AA6 o="Data Conversion Systems Ltd" + AA7 o="SHENZHEN ANLIJI ELECTRONICS CO.,LTD" + AA8 o="axelife" + AAA o="Leder Elektronik Design GmbH" + AAB o="BlueSword Intelligent Technology Co., Ltd." + AAC o="CDR SRL" + AB0 o="ETM CO LTD" + AB3 o="VELVU TECHNOLOGIES PRIVATE LIMITED" + AB4 o="Beijing Zhongchen Microelectronics Co.,Ltd" + AB5 o="JUSTMORPH PTE. LTD." + AB6 o="EMIT GmbH" + AB7 o="MClavis Co.,Ltd." + ABE o="TAIYO DENON Corporation" + ABF o="STACKIOT TECHNOLOGIES PRIVATE LIMITED" + AC0 o="AIQuatro" + AC1 o="KA Imaging Inc." + AC3 o="WAVES SYSTEM" + AC4 o="comelec" + AC5 o="Forever Engineering Systems Pvt. Ltd." + AC8 o="Teledatics Incorporated" + AC9 o="ShenYang LeShun Technology Co.,Ltd" + ACB o="Villari B.V." + ACD o="Escape Velocity Technologies" + ACE o="Rayhaan Networks" + AD0 o="Elektrotechnik & Elektronik Oltmann GmbH" + AD2 o="YUYAMA MFG Co.,Ltd" + AD3 o="Working Set Software Solutions" + AD4 o="Flextronics International Kft" + AD6 o="INTERNATIONAL SECURITY SYSTEMS W.L.L." + AD7 o="Monnit Corporation" + AD8 o="Novanta IMS" + ADB o="Hebei Weiji Electric Co.,Ltd" + ADC o="Motor Protection Electronics" + AE1 o="YUYAMA MFG Co.,Ltd" + AE2 o="Jiangsu Yi Rong Mstar Technology Ltd." + AE5 o="Ltec Co.,Ltd" + AE8 o="ADETEC SAS" + AE9 o="ENNPLE" + AEA o="INHEMETER Co.,Ltd" + AEC o="Pixel Design & Manufacturing Sdn. Bhd." + AED o="MB connect line GmbH Fernwartungssysteme" + AEF o="Scenario Automation" + AF0 o="MinebeaMitsumi Inc." + AF1 o="E-S-Tel" + AF3 o="HY smart" + AF4 o="Nokia Bell Labs" + AF5 o="SANMINA ISRAEL MEDICAL SYSTEMS LTD" + AF7 o="ard sa" + AF8 o="Power Electronics Espana, S.L." + AF9 o="Grossenbacher Systeme AG" + AFA o="DATA ELECTRONIC DEVICES, INC" + AFD o="Universal Robots A/S" + AFE o="Motec USA, Inc." + AFF o="Qtechnology A/S" + B00 o="Gets MSS" + B01 o="Blue Ocean UG" + B03 o="Shenzhen Pisoftware Technology Co.,Ltd." + B08 o="Cronus Electronics" + B0C o="Barkodes Bilgisayar Sistemleri Bilgi Iletisim ve Y" + B0F o="HKC Security Ltd." + B10 o="MTU Aero Engines AG" + B13 o="Abode Systems Inc" + B14 o="Murata Manufacturing CO., Ltd." + B15 o="Pneumax Spa" + B17 o="DAT Informatics Pvt Ltd" + B18 o="Grossenbacher Systeme AG" + B19 o="DITRON S.r.l." + B1A o="Panoramic Power" + B1B o="Nov'in" + B1D o="Tocho Marking Systems America, Inc" + B1E o="Aidhom" + B1F o="wincker international enterprise co., ltd" + B20 o="Lechpol Electronics Spółka z o.o. Sp.k." + B22 o="BLIGHTER SURVEILLANCE SYSTEMS LTD" + B24 o="ABB" + B25 o="Thermo Fisher Scientific (Asheville) LLC" + B26 o="AVL DiTEST GmbH" + B27 o="InHandPlus Inc." + B28 o="Season Electronics Ltd" + B2A o="Lumiplan Duhamel" + B2B o="Rhombus Europe" + B2C o="SANMINA ISRAEL MEDICAL SYSTEMS LTD" + B2D o="wonder meditec" + B2F o="Mtechnology - Gamma Commerciale Srl" + B30 o="Fujian ONETHING Technology Co.,Ltd." + B31 o="RSC" + B32 o="Plug Power" + B35 o="RADA Electronics Industries Ltd." + B36 o="Pneumax Spa" + B37 o="Flextronics International Kft" + B3A o="dream DNS" + B3B o="Sicon srl" + B3C o="Safepro AI Video Research Labs Pvt Ltd" + B3D o="RealD, Inc." + B3F o="Fell Technology AS" + B41 o="STATE GRID INTELLIGENCE TECHNOLOGY CO.,LTD." + B44 o="Samkyung MS" + B46 o="PHYGITALL SOLUÇÕES EM INTERNET DAS COISAS" + B47 o="LINEAGE POWER PVT LTD.," + B4C o="Picocom Technology Ltd" + B4F o="Vaunix Technology Corporation" + B50 o="Kinemetrics, Inc." + B54 o="Framatome Inc." + B55 o="Sanchar Telesystems limited" + B56 o="Arcvideo" + B59 o="Vision Systems Safety Tech" + B5A o="YUYAMA MFG Co.,Ltd" + B5B o="Tri-light Wuhan Electronics Technology Co.,Ltd" + B5F o="Code Blue Corporation" + B61 o="Breas Medical AB" + B64 o="Televic Rail GmbH" + B65 o="HomyHub SL" + B67 o="M2M craft Co., Ltd." + B68 o="All-Systems Electronics Pty Ltd" + B69 o="Quanxing Tech Co.,LTD" + B6A o="Mobileye Vision Technologies LTD" + B6B o="KELC Electronics System Co., LTD." + B6C o="Laser Mechanisms, Inc." + B6D o="Andy-L Ltd" + B6E o="Loop Technologies" + B6F o="PROSECURE FZCO" + B71 o="Sichuan Youke Communication Technology Co., Ltd" + B73 o="Comm-ence, Inc." + B77 o="Carestream Dental LLC" + B79 o="AddSecure Smart Grids" + B7A o="MG s.r.l." + B7B o="Gateview Technologies" + B7C o="EVERNET CO,.LTD TAIWAN" + B7D o="Scheurich GmbH" + B7E o="Maven Pet Inc" + B81 o="Prolife Equipamentos Médicos Ltda." + B82 o="Seed Core Co., LTD." + B83 o="ShenZhen Australis Electronic Technology Co.,Ltd." + B84 o="SPX Flow Technology" + B85 o="Candela Technologies Inc" + B86 o="Elektronik & Modellprodukter Gävle AB" + B88 o="INTRONIK GmbH" + B8B o="DogWatch Inc" + B8C o="Chipset Communication Co.,Ltd." + B8D o="Tongye lnnovation Science and Technology (Shenzhen) Co.,Ltd" + B8E o="Revert Technologies" + B91 o="CLEALINK TECHNOLOGY" + B92 o="Neurable" + B93 o="Modern Server Solutions LLP" + B96 o="Observable Space" + B97 o="Gemini Electronics B.V." + B98 o="Calamity, Inc." + B99 o="iLifeX" + B9A o="QUERCUS TECHNOLOGIES, S.L." + B9B o="Kromek Limited" + B9E o="Power Electronics Espana, S.L." + B9F o="Lithion Battery Inc" + BA0 o="JMV LPS LTD" + BA2 o="BESO sp. z o.o." + BA3 o="DEUTA-WERKE GmbH" + BA4 o="Buckeye Mountain" + BA6 o="FMC Technologies Measurement Solutions Inc" + BA7 o="iLensys Technologies PVT LTD" + BA8 o="AvMap srlu" + BA9 o="Beijing Fuzheng Transportation Technology Co., Ltd" + BAA o="Mine Vision Systems" + BAB o="YCN" + BAD o="Jemac Sweden AB" + BAE o="Tieline Research Pty Ltd" + BAF o="ELKA - Torantriebe GmbH u. Co. Betriebs KG" + BB0 o="Shanghai Sansi Electronic Engineering Co., Ltd." + BB1 o="Transit Solutions, LLC." + BB2 o="Grupo Epelsa S.L." + BB3 o="Zaruc Tecnologia LTDA" + BB4 o="HIGH RIGHT CO.,Ltd" + BB6 o="NEOiD" + BB7 o="JIANGXI LV C-CHONG CHARGING TECHNOLOGY CO.LTD" + BB8 o="ezDOOR, LLC" + BB9 o="SmartD Technologies Inc" + BBA o="elysia GmbH" + BBC o="Liberator Pty Ltd" + BBE o="AirScan, Inc. dba HemaTechnologies" + BBF o="Retency" + BC0 o="GS Elektromedizinsiche Geräte G. Stemple GmbH" + BC1 o="CominTech, LLC" + BC2 o="Huz Electronics Ltd" + BC3 o="FoxIoT OÜ" + BC4 o="EasyNet Industry (Shenzhen) Co., Ltd" + BC6 o="Chengdu ZiChen Time&Frequency Technology Co.,Ltd" + BC7 o="UGUARD NETWORKS TECHNOLOGY Co.,LTD" + BC9 o="GL TECH CO.,LTD" + BCA o="OPTOKON, a.s." + BCB o="A&T Corporation" + BCC o="Sound Health Systems" + BCD o="A.L.S.E." + BCE o="BESO sp. z o.o." + BD0 o="Mesa Labs, Inc." + BD2 o="attocube systems AG" + BD3 o="IO Master Technology" + BD5 o="Pro-Custom Group" + BD6 o="NOVA Products GmbH" + BD7 o="Union Electronic." + BD9 o="WATTS" + BDB o="Cardinal Scales Manufacturing Co" + BDF o="MAS TECHNOLOGY" + BE1 o="Geolux" + BE3 o="REO AG" + BE8 o="TECHNOLOGIES BACMOVE INC." + BEA o="Microchip Technologies Inc" + BED o="Genius Sports SS LLC" + BEE o="Sirius LLC" + BEF o="Triumph SEC" + BF0 o="Newtec A/S" + BF1 o="Soha Jin" + BF2 o="YUJUN ELECTRICITY INDUSTRY CO., LTD" + BF3 o="Alphatek AS" + BF4 o="Fluid Components Intl" + BF5 o="The Urban Jungle Project" + BF6 o="Panoramic Power" + BF7 o="Intellicon Private Limited" + BF8 o="CDSI" + BFB o="TechArgos" + BFC o="ASiS Technologies Pte Ltd" + BFD o="INNOS TECHNOLOGIES" + BFE o="PuS GmbH und Co. KG" + BFF o="Evolution Ventures LLC" + C01 o="HORIBA ABX SAS" + C03 o="Abiman Engineering" + C04 o="SANWA CORPORATION" + C05 o="SkyCell AG" + C06 o="Tardis Technology" + C07 o="HYOSUNG Heavy Industries Corporation" + C08 o="Triamec Motion AG" + C09 o="S.E.I. CO.,LTD." + C0A o="ACROLABS,INC" + C0C o="GIORDANO CONTROLS SPA" + C0D o="Abbott Diagnostics Technologies AS" + C0E o="Goodtech AS dep Fredrikstad" + C12 o="PHYSEC GmbH" + C13 o="Glucoloop AG" + C16 o="ALISONIC SRL" + C17 o="Metreg Technologies GmbH" + C19 o="OOO %Mig Trading%" + C1A o="ViewSonic Corp" + C1B o="hiSky SCS Ltd" + C1C o="Vektrex Electronics Systems, Inc." + C1E o="VA SYD" + C1F o="Esys Srl" + C22 o="Pulcro.io LLC" + C24 o="Alifax S.r.l." + C26 o="IRONWOOD ELECTRONICS" + C27 o="Lift Ventures, Inc" + C28 o="Tornado Spectral Systems Inc." + C29 o="BRS Sistemas Eletrônicos" + C2B o="Wuhan Xingtuxinke ELectronic Co.,Ltd" + C2D o="iENSO Inc." + C2F o="Power Electronics Espana, S.L." + C31 o="Ambarella Inc." + C34 o="Chengdu Xinyuandi Technology Co., Ltd." + C35 o="Peter Huber Kaeltemaschinenbau SE" + C36 o="ODTech Co., Ltd." + C38 o="ECO-ADAPT" + C3A o="YUSUR Technology Co., Ltd." + C3E o="ISMA Microsolutions INC" + C3F o="SONIC CORPORATION" + C40 o="Sciospec Scientific Instruments GmbH" + C41 o="Katronic AG & Co. KG" + C42 o="SD OPTICS" + C43 o="SHENZHEN SMARTLOG TECHNOLOGIES CO.,LTD" + C44 o="Sypris Electronics" + C45 o="Flextroincs International (Taiwain Ltd" + C46 o="Inex Technologies" + C4A o="SGi Technology Group Ltd." + C4C o="Lumiplan Duhamel" + C4E o="iCE-Intelligent Controlled Environments" + C50 o="Spacee" + C51 o="EPC Energy Inc" + C52 o="Invendis Technologies India Pvt Ltd" + C53 o="Clockwork Dog" + C54 o="First Mode" + C56 o="Eridan" + C57 o="Strategic Robotic Systems" + C58 o="Kitagawa Corporation" + C59 o="Tunstall A/S" + C5D o="Alfa Proxima d.o.o." + C5E o="YUYAMA MFG Co.,Ltd" + C60 o="Intelligent Security Systems (ISS)" + C61 o="Beijing Ceresdate Technology Co.,LTD" + C62 o="GMI Ltd" + C64 o="Ajeco Oy" + C67 o="Oriux" + C68 o="FIBERME COMMUNICATIONS LLC" + C6A o="Red Phase Technologies Limited" + C6B o="Mediana" + C6D o="EA Elektro-Automatik GmbH" + C6E o="SAFE INSTRUMENTS" + C6F o="LUNEAU TECHNOLOGY OPERATIONS" + C70 o="INVIXIUM ACCESS INC" + C71 o="Yaviar LLC" + C74 o="Nippon Techno Lab Inc" + C75 o="Abbott Diagnostics Technologies AS" + C78 o="POLON-ALFA S.A." + C79 o="P3LAB" + C7B o="Freedom Atlantic" + C7C o="MERKLE Schweissanlagen-Technik GmbH" + C7D o="Glasson Electronics Ltd" + C80 o="VECOS Europe B.V." + C81 o="Taolink Technologies Corporation" + C83 o="Power Electronics Espana, S.L." + C84 o="Luceor" + C85 o="Potter Electric Signal Co. LLC" + C8D o="Aeronautics Ltd." + C8F o="JW Froehlich Maschinenfabrik GmbH" + C91 o="Soehnle Industrial Solutions GmbH" + C92 o="EQ Earthquake Ltd." + C96 o="Smart Data (Shenzhen) Intelligent System Co., Ltd." + C97 o="Magnet-Physik Dr. Steingroever GmbH" + C99 o="Vinfast Trading and Production JSC" + C9A o="Infosoft Digital Design and Services P L" + C9B o="J.M. Voith SE & Co. KG" + C9D o="Creating Cloud Technology Co.,Ltd.,CT-CLOUD" + C9E o="CytoTronics" + C9F o="PeachCreek" + CA0 o="SARV WEBS PRIVATE LIMITED" + CA1 o="Pantherun Technologies Pvt Ltd" + CA2 o="eumig industrie-TV GmbH." + CA4 o="Bit Part LLC" + CA6 o="ReliaSpeak Information Technology Co., Ltd." + CA7 o="eumig industrie-TV GmbH." + CA9 o="Avant Technologies" + CAB o="Spyder Controls Corp." + CAD o="General Motors" + CAE o="Ophir Manufacturing Solutions Pte Ltd" + CAF o="BRS Sistemas Eletrônicos" + CB1 o="Xi’an Sunway Communication Co., Ltd." + CB2 o="Dyncir Soluções Tecnológicas Ltda" + CB3 o="DELO Industrie Klebstoffe GmbH & Co. KGaA" + CB5 o="Gamber-Johnson LLC" + CB6 o="ROWAN ELETTRONICA SRL" + CB7 o="ARKRAY,Inc.Kyoto Laboratory" + CB9 o="iC-Haus GmbH" + CBA o="hiSky SCS Ltd" + CBB o="Maris Tech Ltd." + CBE o="Circa Enterprises Inc" + CC1 o="VITREA Smart Home Technologies Ltd." + CC2 o="TOYOGIKEN CO.,LTD." + CC5 o="Potter Electric Signal Co. LLC" + CC6 o="Genius Vision Digital Private Limited" + CC8 o="Sicon srl" + CC9 o="Benchmark Electronics BV" + CCB o="suzhou yuecrown Electronic Technology Co.,LTD" + CCE o="Tesollo" + CCF o="Tiptop Platform P. Ltd" + CD0 o="REO AG" + CD1 o="Flextronics International Kft" + CD3 o="Pionierkraft GmbH" + CD4 o="Shengli Technologies" + CD6 o="USM Pty Ltd" + CD7 o="Embedded Designs Services India Pvt Ltd" + CD8 o="Gogo Business Aviation" + CD9 o="Fingoti Limited" + CDA o="SPX Flow Technology BV" + CDB o="EUROPEAN TELECOMMUNICATION INTERNATIONAL KFT" + CDD o="The Signalling Company" + CDF o="Canway Technology GmbH" + CE0 o="Potter Electric Signal Co. LLC" + CE3 o="Pixel Design & Manufacturing Sdn. Bhd." + CE4 o="SL USA, LLC" + CE9 o="Landis+Gyr Equipamentos de Medição Ltda" + CEB o="EUREKA FOR SMART PROPERTIES CO. W.L.L" + CEC o="Zhuhai Huaya machinery Technology Co., LTD" + CED o="NHA TRANG HITECH COMPANY, LTD" + CEE o="DISPLAX S.A." + CEF o="Goertek Robotics Co.,Ltd." + CF1 o="ROBOfiber, Inc." + CF3 o="ABB S.p.A." + CF4 o="NT" + CF6 o="NYBSYS Inc" + CF7 o="BusPas" + CF9 o="VeoTech" + CFA o="YUYAMA MFG Co.,Ltd" + CFB o="YUYAMA MFG Co.,Ltd" + CFC o="Abbott Diagnostics Technologies AS" + CFD o="Smart-VOD Pty Ltd" + CFE o="Instrument Development Group (IDG) at Johns Hopkins University" + D00 o="POLAK CZ s.r.o." + D02 o="Flextronics International Kft" + D07 o="Talleres de Escoriaza SAU" + D08 o="Power Electronics Espana, S.L." + D09 o="Minartime(Beijing)Science &Technology Development Co.,Ltd" + D0A o="BOTEVO Building Solutions GmbH" + D0C o="KS Beschallungstechnik GmbH" + D0E o="Labforge Inc." + D0F o="Mecco LLC" + D11 o="Benetel" + D12 o="QUANZHOU RADIOBOSS TECHNOLOGY CO., LTD" + D13 o="EYatsko Individual" + D14 o="ANADOLU TRAFİK KONTROL SİS.TAŞ.SAN.VE TİC. LTD.ŞTİ" + D15 o="MB connect line GmbH" + D17 o="I.S.A. - Altanova group srl" + D18 o="Wuxi Tongxin Hengtong Technology Co., Ltd." + D19 o="YNM SYSTEMS INC." + D1A o="Monnit Corporation" + D1B o="Audiodo International AB" + D1C o="Vesper Technologies" + D1E o="Tycon Systems Inc" + D1F o="Free Talk Engineering Co., Ltd" + D20 o="NAS Engineering PRO" + D21 o="AMETEK CTS GMBH" + D22 o="Nine Fives LLC" + D23 o="PLX Inc." + D24 o="R3 IoT Ltd." + D27 o="Taiv Inc" + D28 o="MapleCloud Technologies" + D29 o="Secure Bits" + D2A o="Anteus Kft." + D2D o="Eskomar Ltd." + D2F o="Ltec Co.,Ltd" + D30 o="FMC Technologies Measurement Solutions Inc" + D34 o="KRONOTECH SRL" + D38 o="CUU LONG TECHNOLOGY AND TRADING COMPANY LIMITED" + D3A o="Applied Materials" + D3B o="Gogo BA" + D3C o="%KIB Energo% LLC" + D3F o="Schnoor Industrieelektronik GmbH" + D40 o="Breas Medical AB" + D42 o="YUYAMA MFG Co.,Ltd" + D44 o="Monarch Instrument" + D46 o="End 2 End Technologies" + D49 o="FUTURE LIFE TECHNOLOGY" + D4A o="Caproc Oy" + D4D o="Liburdi Dimetrics Corp." + D4E o="Magnatek ApS" + D4F o="Henan Creatbot Technology Limited" + D51 o="ZIGEN Lighting Solution co., ltd." + D52 o="Critical Software SA" + D53 o="Gridnt" + D54 o="Grupo Epelsa S.L." + D55 o="Fairwinds Technologies" + D56 o="Wisdom Audio" + D58 o="Zumbach Electronic AG" + D5A o="Realtek Semiconductor Corp." + D5B o="Local Security" + D5D o="Genius Vision Digital Private Limited" + D5E o="Integer.pl S.A." + D60 o="Potter Electric Signal Co. LLC" + D61 o="Advent Diamond" + D62 o="Alpes recherche et développement" + D63 o="Mobileye" + D64 o="Potter Electric Signal Co. LLC" + D69 o="ADiCo Corporation" + D6C o="Packetalk LLC" + D71 o="Computech International" + D73 o="BRS Sistemas Eletrônicos" + D74 o="TEX COMPUTER SRL" + D78 o="Hunan Oushi Electronic Technology Co.,Ltd" + D7B o="Global Design Solutions Korea" + D7C o="QUERCUS TECHNOLOGIES, S.L." + D7E o="Thales Belgium" + D7F o="Fiberstory communications Pvt Ltd" + D80 o="AZTEK SA" + D81 o="Mitsubishi Electric India Pvt. Ltd." + D88 o="University of Geneva - Department of Particle Physics" + D8A o="Boon Arthur Engineering Pte Ltd" + D8C o="SMRI" + D8D o="Wi-Tronix, LLC" + D8E o="Potter Electric Signal Co. LLC" + D8F o="DEUTA-WERKE GmbH" + D90 o="SMITEC S.p.A." + D91 o="Zhejiang Healnoc Technology Co., Ltd." + D92 o="Mitsubishi Electric India Pvt. Ltd." + D93 o="Algodue Elettronica Srl" + D95 o="TECZZ LLC" + D96 o="Smart Cabling & Transmission Corp." + D98 o="Gnewtek photoelectric technology Ltd." + D99 o="INVIXIUM ACCESS INC" + D9A o="Beijing Redlink Information Technology Co., Ltd." + D9B o="GiS mbH" + D9C o="Relcom, Inc." + D9D o="MITSUBISHI HEAVY INDUSTRIES THERMAL SYSTEMS, LTD." + D9E o="Wagner Group GmbH" + DA1 o="Hangteng (HK) Technology Co., Limited" + DA4 o="Foenix Coding Ltd" + DA5 o="DAOM" + DA6 o="Power Electronics Espana, S.L." + DAA o="Davetech Limited" + DAE o="Mainco automotion s.l." + DAF o="Zhuhai Lonl electric Co.,Ltd" + DB1 o="Shanghai Yamato Scale Co., Ltd" + DB4 o="MB connect line GmbH" + DB5 o="victtron" + DB7 o="Lambda Systems Inc." + DB8 o="Beijing Dangong Technology Co., Ltd" + DB9 o="Ermes Elettronica s.r.l." + DBA o="Electronic Equipment Company Pvt. Ltd." + DBB o="Würth Elektronik ICS GmbH & Co. KG" + DBD o="GIORDANO CONTROLS SPA" + DBF o="Rugged Controls" + DC0 o="Pigs Can Fly Labs LLC" + DC1 o="SEGRON Automation, s.r.o." + DC2 o="Procon Electronics Pty Ltd" + DC3 o="Packet Digital, LLC" + DC4 o="Amazon Robotics MTAC Matrix NPI" + DC6 o="R&K" + DC7 o="Wide Swath Research, LLC" + DC8 o="DWDM.RU LLC" + DC9 o="Peter Huber Kaeltemaschinenbau SE" + DCA o="Porsche engineering" + DCB o="Beijing Ceresdata Technology Co., LTD" + DCF o="REO AG" + DD2 o="SHIELD-CCTV CO.,LTD." + DD3 o="CHUGOKU ELECTRICAL INSTRUMENTS Co.,LTD." + DD4 o="Midlands Technical Co., Ltd." + DD5 o="Cardinal Scales Manufacturing Co" + DD7 o="KST technology" + DD9 o="Abbott Diagnostics Technologies AS" + DDB o="Efficient Residential Heating GmbH" + DDD o="Irmos Technologies AG" + DDE o="Jemac Sweden AB" + DE0 o="BorgWarner Engineering Services AG" + DE1 o="Franke Aquarotter GmbH" + DE2 o="Softgent sp. z o.o." + DE5 o="Gogo Business Aviation" + DE6 o="IHI Inspection & Instrumentation Co.,Ltd." + DE9 o="EON Technology, Corp" + DEA o="Natron Energy" + DEB o="PXM Marek Zupnik spolka komandytowa" + DED o="PhotonPath" + DF5 o="Concept Pro Surveillance" + DF6 o="Micronova srl" + DF8 o="Wittra Networks AB" + DF9 o="VuWall Technology Europe GmbH" + DFA o="ATSE LLC" + DFB o="Bobeesc Co." + DFC o="Meiko Electronics Co.,Ltd." + DFD o="Novanta IMS" + DFE o="Nuvation Energy" + DFF o="VINGLOOP TECHNOLOGY LTD" + E00 o="DVB-TECH S.R.L." + E02 o="ITS Teknik A/S" + E04 o="新川センサテクノロジ株式会社" + E05 o="Mitsubishi Electric System & Service Co., Ltd." + E08 o="Imagenet Co.,Ltd" + E09 o="ENLESS WIRELESS" + E0B o="Laurel Electronics LLC" + E0C o="TELESTRIDER SA" + E0E o="Nokeval Oy" + E10 o="Scenario Automation" + E11 o="C-Octopus" + E12 o="Pixus Technologies Inc." + E14 o="Proserv" + E15 o="Panascais ehf." + E1A o="DAccess Security Systems P Ltd" + E1C o="CLOUD TELECOM Inc." + E1D o="Xworks NZ Limited" + E1E o="Flextronics International Kft" + E21 o="LG-LHT Aircraft Solutions GmbH" + E23 o="Chemito Infotech PVT LTD" + E24 o="COMETA SAS" + E26 o="HyperSilicon Co.,Ltd" + E27 o="Eurotronic Technology GmbH" + E2A o="WHITEBOX TECHNOLOGY HONG KONG LTD" + E2B o="Glotech Exim Private Limited" + E2D o="RADA Electronics Industries Ltd." + E2E o="RADA Electronics Industries Ltd." + E2F o="Breas Medical AB" + E30 o="VMukti Solutions Private Limited" + E32 o="SeAIoT Solutions Ltda" + E33 o="Amiad Water Systems" + E35 o="Horcery LLC" + E36 o="METABUILD" + E37 o="RADA Electronics Industries Ltd." + E3A o="AITEC Corporation" + E3B o="Neways Technologies B.V." + E3C o="Finotex Electronic Solutions PVT LTD" + E3F o="TELETECH SERVICES" + E40 o="ThermoG Limited" + E41 o="Grossenbacher Systeme AG" + E42 o="Shenzhen Forddok Technology Co., Ltd" + E43 o="Daedalean AG" + E45 o="Integer.pl S.A." + E46 o="Nautel LTD" + E47 o="BRS Sistemas Eletrônicos" + E49 o="Samwell International Inc" + E4B o="ALGAZIRA TELECOM SOLUTIONS" + E4C o="TTC TELEKOMUNIKACE, s.r.o." + E4D o="San Telequip (P) Ltd.," + E4E o="Trivedi Advanced Technologies LLC" + E4F o="Sabl Systems Pty Ltd" + E50 o="INVENTIA Sp. z o.o." + E52 o="LcmVeloci ApS" + E53 o="T PROJE MUHENDISLIK DIS TIC. LTD. STI." + E58 o="HEITEC AG" + E5B o="ComVetia AG" + E5C o="Scientific Lightning Solutions" + E5D o="JinYuan International Corporation" + E5E o="BRICKMAKERS GmbH" + E61 o="Stange Elektronik GmbH" + E62 o="Axcend" + E63 o="Infosoft Digital Design and Services P L" + E64 o="Indefac company" + E66 o="ENLESS WIRELESS" + E68 o="LHA Systems (Pty) Ltd" + E6E o="HUMAN DGM. CO., LTD." + E6F o="Vision Systems Safety Tech" + E70 o="TELFI TECHNOLOGIES PRIVATE LIMITED" + E71 o="Alma" + E73 o="GTR Industries" + E74 o="Magosys Systems LTD" + E75 o="Stercom Power Soltions GmbH" + E76 o="HEITEC AG" + E77 o="GY-FX SAS" + E78 o="ELETTRONICA ADRIATICA SRL" + E79 o="SHENZHEN GUANGWEN INDUSTRIAL CO.,LTD" + E7B o="Dongguan Pengchen Earth Instrument CO. LT" + E7C o="Ashinne Technology Co., Ltd" + E7D o="AUDIO VISUAL DIGITAL SYSTEMS" + E80 o="Power Electronics Espana, S.L." + E86 o="ComVetia AG" + E87 o="CHEMI-CON" + E88 o="SiFive Inc" + E89 o="PADL Software Pty Ltd" + E8A o="Changzhou MITO electronics Technology Co;LTD" + E8B o="Televic Rail GmbH" + E8D o="Plura" + E8F o="JieChuang HeYi(Beijing) Technology Co., Ltd." + E90 o="MHE Electronics" + E91 o="RADIC Technologies, Inc." + E92 o="EA Elektro-Automatik GmbH" + E94 o="ZIN TECHNOLOGIES" + E98 o="Luxshare Electronic Technology (Kunshan) LTD" + E99 o="Pantherun Technologies Pvt Ltd" + E9A o="SiFive Inc" + E9B o="Discover Energy Systems Corp." + E9D o="Zhuhai Lonl electric Co., Ltd." + E9F o="Lumiplan Duhamel" + EA6 o="Dial Plan Limited" + EA8 o="Zumbach Electronic AG" + EAA o="%KB %Modul%, LLC" + EAC o="Miracle Healthcare, Inc." + EAD o="Messung Systems Pvt Ltd" + EAE o="Traffic Polska sp. z o. o." + EB0 o="Exyte Technology GmbH" + EB2 o="Aqua Broadcast Ltd" + EB4 o="1Finity Inc." + EB5 o="Meiryo Denshi Corp." + EB7 o="Delta Solutions LLC" + EB8 o="Power Electronics Espana, S.L." + EB9 o="KxS Technologies Oy" + EBA o="Hyve Solutions" + EBB o="Potter Electric Signal Co. LLC" + EBC o="Project92.com" + EBD o="Esprit Digital Ltd" + EBE o="Trafag Italia S.r.l." + EBF o="STEAMIQ, Inc." + EC0 o="VOOST analytics" + EC1 o="Actronika SAS" + EC2 o="HARBIN DIGITAL ECONOMY DEVELOPMENT CO.,LTD" + ECC o="Baldwin Jimek AB" + ECF o="Monnit Corporation" + ED0 o="Shanghai Jupper Technology Co.Ltd" + ED3 o="SENSO2ME NV" + ED4 o="ZHEJIANG CHITIC-SAFEWAY NEW ENERGY TECHNICAL CO.,LTD." + ED5 o="Smart Data (Shenzhen) Intelligent System Co., Ltd." + ED6 o="PowTechnology Limited" + ED7 o="CS-Tech s.r.o." + ED8 o="MCS INNOVATION PVT LTD" + ED9 o="NETGEN HITECH SOLUTIONS LLP" + EDA o="DEUTA-WERKE GmbH" + EDC o="Infosoft Digital Design and Services P L" + EDD o="OnDis Solutions Ltd" + EDF o="Xlera Solutions, LLC" + EE1 o="PuS GmbH und Co. KG" + EE3 o="SICHUAN HUACUN ZHIGU TECHNOLOGY CO.,LTD" + EE6 o="LYNKX" + EE8 o="Global Organ Group B.V." + EEA o="AMESS" + EED o="Viziontech UK" + EEF o="AiUnion Co.,Ltd" + EF0 o="Sonendo Inc" + EF1 o="BIOTAGE GB LTD" + EF4 o="Mediaport Systems Ltd" + EF5 o="Sigma Defense Systems LLC" + EF8 o="Northwest Central Indiana Community Partnerships Inc dba Wabash Heartland Innovation Network (WHIN)" + EFB o="WARECUBE,INC" + EFD o="Novatera(Shenzhen)Technologies Co.,Ltd." + F03 o="Faust ApS" + F04 o="IoTSecure, LLC" + F05 o="Preston Industries dba PolyScience" + F08 o="ADVANTOR CORPORATION" + F09 o="Texi AS" + F0A o="HORIZON.INC" + F0B o="Nagy Márton Jozsef e.v." + F10 o="Televic Rail GmbH" + F11 o="Ottronic GmbH" + F12 o="CAITRON GmbH" + F13 o="ACS Motion Control" + F14 o="Elektrosil GmbH" + F18 o="Northern Design (Electronics) Ltd" + F19 o="Hurry-tech" + F1B o="Nextep Co.,Ltd." + F1C o="Rigel Engineering, LLC" + F1D o="MB connect line GmbH Fernwartungssysteme" + F1E o="Engage Technologies" + F20 o="Thermaco Incorporated" + F21 o="nanoTRONIX Computing Inc." + F22 o="Voyage Audio LLC" + F23 o="IDEX India Pvt Ltd" + F24 o="Albotronic" + F25 o="Misaka Network, Inc." + F27 o="Tesat-Spacecom GmbH & Co. KG" + F28 o="DEUTA Werke GmbH" + F2C o="Tunstall A/S" + F2D o="HUERNER Schweisstechnik GmbH" + F2F o="Quantum Technologies Inc" + F31 o="International Water Treatment Maritime AS" + F32 o="Shenzhen INVT Electric Co.,Ltd" + F33 o="Sicon srl" + F37 o="Polarity Inc" + F39 o="Weinan Wins Future Technology Co.,Ltd" + F3A o="intersaar GmbH" + F3B o="Beijing REMANG Technology Co., Ltd." + F3C o="Microlynx Systems Ltd" + F3D o="Byte Lab Grupa d.o.o." + F3F o="Industrial Laser Machines, LLC" + F41 o="AUTOMATIZACION Y CONECTIVIDAD SA DE CV" + F43 o="wtec GmbH" + F45 o="JBF" + F46 o="Broadcast Tools, Inc." + F48 o="FIBERNET LTD" + F49 o="CenterClick LLC" + F4A o="In-lite Design BV" + F4B o="JOREX LOREX INDIA PRIVATE LIMITED" + F4C o="inomatic GmbH" + F4E o="ADAMCZEWSKI elektronische Messtechnik GmbH" + F4F o="Leonardo Germany GmbH" + F50 o="Vigor Electric Corp." + F52 o="AMF Medical SA" + F53 o="Beckman Coulter Inc" + F54 o="Rowan Tools Office" + F56 o="KC5 International Sdn Bhd" + F57 o="EA Elektro-Automatik GmbH" + F59 o="Inovonics Inc." + F5A o="Telco Antennas Pty Ltd" + F5B o="SemaConnect, Inc" + F5C o="Flextronics International Kft" + F5F o="TR7 Siber Savunma A.S." + F60 o="Portrait Displays, Inc." + F63 o="Quantum Media Systems" + F65 o="Talleres de Escoriaza SA" + F67 o="DISTRON S.L." + F68 o="YUYAMA MFG Co.,Ltd" + F69 o="SUS Corporation" + F6C o="Sonatronic" + F6D o="Ophir Manufacturing Solutions Pte Ltd" + F6E o="ITG Co.Ltd" + F6F o="Motion Impossible Ltd" + F70 o="Vision Systems Safety Tech" + F72 o="Contrader" + F74 o="GE AVIC Civil Avionics Systems Company Limited" + F77 o="Invertek Drives Ltd" + F78 o="Ternary Research Corporation" + F79 o="YUYAMA MFG Co.,Ltd" + F7A o="SiEngine Technology Co., Ltd." + F7C o="General Dynamics IT" + F7D o="RPG INFORMATICA, S.A." + F7F o="Vision Systems Safety Tech" + F80 o="Vinfast Trading and Production JSC" + F83 o="Vishay Nobel AB" + F84 o="KST technology" + F86 o="INFOSTECH Co., Ltd." + F87 o="Fly Electronic (Shang Hai) Technology Co.,Ltd" + F88 o="LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG" + F8C o="BK LAB" + F90 o="Enfabrica" + F91 o="Consonance" + F92 o="Vision Systems Safety Tech" + F93 o="Gigawave LLC" + F94 o="EA Elektroautomatik GmbH & Co. KG" + F96 o="SACO Controls Inc." + F97 o="Dentalhitec" + F98 o="XPS ELETRONICA LTDA" + F99 o="Sysinno Technology Inc." + F9B o="Elsist Srl" + F9C o="Beijing Tong Cybsec Technology Co.,LTD" + F9E o="DREAMSWELL Technology CO.,Ltd" + FA0 o="Pneumax Spa" + FA2 o="AZD Praha s.r.o., ZOZ Olomouc" + FA4 o="China Information Technology Designing &Consulting Institute Co.,Ltd." + FA5 o="Frazer-Nash Consultancy" + FA6 o="SurveyorLabs LLC" + FA8 o="Unitron Systems b.v." + FA9 o="FaceLabs.AI DBA PropTech.AI" + FAA o="Massar Networks" + FAB o="LIAN Corporation" + FAC o="Showa Electric Laboratory co.,ltd." + FB0 o="MARIAN GmbH" + FB1 o="ABB" + FB4 o="Thales Nederland BV" + FB5 o="Bavaria Digital Technik GmbH" + FB6 o="Racelogic Ltd" + FB7 o="Grace Design/Lunatec LLC" + FB9 o="IWS Global Pty Ltd" + FBA o="Onto Innovation" + FBD o="SAN-AI Electronic Industries Co.,Ltd." + FC1 o="Nidec asi spa" + FC2 o="I/O Controls" + FC3 o="Cyclops Technology Group" + FC4 o="DORLET SAU" + FC5 o="SUMICO" + FC6 o="Invertek Drives Ltd" + FCA o="Elektrotechnik & Elektronik Oltmann GmbH" + FCC o="GREDMANN TAIWAN LTD." + FCD o="elbit systems - EW and sigint - Elisra" + FD0 o="Near Earth Autonomy" + FD1 o="Edgeware AB" + FD2 o="Guo He Xing Ke (ShenZhen) Technology Co.,Ltd." + FD3 o="SMILICS TECHNOLOGIES, S.L." + FD4 o="EMBSYS SISTEMAS EMBARCADOS" + FD5 o="THE WHY HOW DO COMPANY, Inc." + FD7 o="Beijing Yahong Century Technology Co., Ltd" + FDA o="Arkham Technology" + FDB o="DeepSenXe International ltd." + FDC o="Nuphoton Technologies" + FDF o="Potter Electric Signal Co. LLC" + FE0 o="Potter Electric Signal Co. LLC" + FE1 o="SOREL GmbH" + FE2 o="VUV Analytics, Inc." + FE3 o="Power Electronics Espana, S.L." + FE5 o="Truenorth" + FE9 o="ALZAJEL MODERN TELECOMMUNICATION" + FEA o="AKON Co.,Ltd." + FEB o="Zhejiang Saijin Semiiconductor Technology Co., Ltd." + FEC o="Newtec A/S" + FED o="Televic Rail GmbH" + FEE o="Leap Info Systems Pvt. Ltd." + FF3 o="Fuzhou Tucsen Photonics Co.,Ltd" + FF4 o="SMS group GmbH" + FF5 o="IQ Tools LLC" + FF6 o="Ascon Tecnologic S.r.l." + FF8 o="Chamsys Ltd" + FF9 o="Vtron Pty Ltd" + FFB o="Taicang T&W Electronics" + FFC o="Invendis Technologies India Pvt Ltd" +8C476E + 0 o="Chipsafer Pte. Ltd." + 1 o="TelWare Corporation" + 2 o="HuiZhou MIKI Communication Equipment Co.,LTD" + 3 o="Shanghai Satellite Communication Technology Co.,Ltd" + 4 o="Shenzhen Juding Electronics Co., Ltd." + 5 o="Square Inc." + 6 o="Oxford Nanopore Technologies Ltd." + 7 o="Syng, Inc." + 8 o="IntelliVIX Co. Ltd." + 9 o="Xertified AB" + A o="AU Optronics Corporation" + B o="Faravid Communication&Data Analysis" + C o="Edge Networks Inc" + D o="innolectric AG" + E o="Annapurna labs" +8C5109 + 0 o="TianJin JointOptic Technology Co., LTD." + 1 o="Amzetta Technologies, LLC" + 2 o="PROCET Technology Co., Ltd(HK)" + 3 o="SHENZHEN LDROBOT CO., LTD." + 4 o="Shenzhen WOWOTO Technology Co., Ltd." + 5 o="Heliox Automotive B.V." + 6 o="Avxav Electronic Trading LLC" + 7 o="ENPLUG Co., Ltd." + 8 o="nerospec" + 9 o="Frontmatec" + A o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + B o="Beijing Superhexa Century Technology Co., Ltd." + C o="SpotterRF LLC" + D o="Surpedia Technologies Co., Ltd." + E o="IROOTELLUCKY Corp." +8C5570 + 0 o="AST International GmbH" + 1 o="LLC Katusha Print" + 2 o="Microvision Inc" + 3 o="ScandiNova Systems" + 4 o="Next Vision Tech(Ningbo)Co.,LTD" + 6 o="Joule Group Limites" + 7 o="Eideal Company Limited" + 8 o="Nayax LTD" + 9 o="Neptronic Ltd" + A o="Fortune Brands Innovations, Inc." + B o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + C o="Antronix Inc.," + D o="EPSa Elektronik & Präzisionsbau Saalfeld GmbH" + E o="Johnson Health Tech. (Shanghai) Co.,Ltd." 8C593C 0 o="Fujian Chaozhi Group Co., Ltd." 1 o="Future Robot Technology Co., Limited" @@ -23850,6 +30409,54 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Dantherm Cooling Inc." D o="IDRO-ELETTRICA S.P.A." E o="Shenzhen Tian-Power Technology Co.,Ltd." +8C5DB2 + 0 o="NPP NTT LLC" + 1 o="DAYOUPLUS" + 2 o="F+ Networks" + 3 o="Yuzhou Zhongnan lnformation Technology Co.,Ltd" + 4 o="CoreTigo" + 5 o="Unite Audio" + 6 o="SmartMore Corporation Limited" + 7 o="Cleartex s.r.o." + 8 o="Guangzhou Phimax Electronic Technology Co.,Ltd" + 9 o="ISSENDORFF KG" + A o="Beijing Scistor Technologies Co., Ltd" + B o="NADDOD" + C o="HEXIN Technologies Co., Ltd." + D o="Guandong Yuhang Automation Technology Co.,Ltd" + E o="Surbhi Satcom Pvt Ltd" +8CA682 + 0 o="AI SECURITY Co.Ltd." + 1 o="FightCamp" + 2 o="Lion Energy" + 3 o="Royal Way General Trading LLC" + 4 o="China Information Technology Designing&Consulting Institute Co., Ltd." + 5 o="Qstar Technology Co,Ltd" + 6 o="ShangHai Huijue Network Communication Equipment CO., Ltd." + 7 o="Anhui seeker electronic technology Co.,LTD" + 8 o="Schok LLC" + 9 o="Barkodes Bilgisayar Sistemleri Bilgi Iletisim ve Y" + A o="Schok LLC" + B o="POCKETALK CORP." + C o="Netskope" + D o="EFit partners" + E o="Texys International" +8CAE49 + 0 o="Ouman Oy" + 1 o="H3 Platform" + 2 o="SEVERIN Elektrogeräte GmbH" + 3 o="BERTIN TECHNOLOGIES" + 4 o="Jiangsu Sixingda Information Technology Co., Ltd." + 5 o="Gati Information Technolog(Kunshan)Co.,Ltd." + 6 o="Chengdu BillDTE Technology Co., Ltd" + 7 o="Precitec Optronik GmbH" + 8 o="LLC Taipit - Measuring Equipment" + 9 o="TTR Corporation" + A o="Gigawave" + B o="Suzhou Guowang Electronics Technology Co., Ltd." + C o="Parametric GmbH" + D o="Larch Networks" + E o="Shanghai Kanghai Information System CO.,LTD." 8CC8F4 0 o="Guardtec,Inc" 1 o="Lanhomex Technology(Shen Zhen)Co.,Ltd." @@ -23858,6 +30465,7 @@ FCFEC2 o="Invensys Controls UK Limited" 4 o="ITECH Electronic Co.,ltd." 5 o="Beijing KXWELL Technology CO., LTD" 6 o="SHENZHEN D-light Technolgy Limited" + 7 o="TableSafe" 8 o="Strongbyte Solutions Limited" 9 o="Swift Navigation Inc" A o="Trilux Group Management GmbH" @@ -23865,13 +30473,28 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Shenzhen KSTAR Science and Technology Co., Ltd" D o="Beijing Xinxunxintong Eletronics Co.,Ltd" E o="Evaporcool Solutions" +901564 + 0 o="Fengzhushou Co., Ltd." + 2 o="PIN GENIE, INC.DBA LOCKLY" + 3 o="Clinton Electronics Corporation" + 4 o="Kontakt Micro-Location Sp z o.o." + 5 o="Relectrify Pty Ltd" + 6 o="final Inc." + 7 o="Hangzhou System Technology Co.,Ltd" + 8 o="Heliogen" + 9 o="Annapurna labs" + A o="Bunka Shutter Co., Ltd." + B o="Shanghai AMP&MOONS'Automation Co.,Ltd." + C o="LINAK A/S" + D o="Jiangsu Kangjie Data Co., Ltd." + E o="Guiyag Electrlcal Control Equipment Co.,Ltd" 904E91 0 o="Spirtech" 1 o="Apollo Video Technology" 2 o="North Pole Engineering, Inc." - 3 o="Teleepoch Ltd" + 3 o="Great Talent Technology Limited" 4 o="Wrtnode technology Inc." - 5 o="mcf88 SRL" + 5 o="ENGINKO SRL" 6 o="Nuwa Robotics (HK) Limited Taiwan Branch" 7 o="IBM" 8 o="CommandScape, Inc." @@ -23881,6 +30504,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Showtacle s.r.o." D o="SKODA ELECTRIC a.s." E o="Shenzhen Cloudynamo Internet Technologies Co.,LTD." +9088A9 + 0 o="shenzhen zovoton electronic co.,ltd" + 1 o="Akarui Networks Pvt Ltd" + 2 o="合肥乾盾智能科技有限公司" + 3 o="Hangzhou Hollysys Automation Co., Ltd" + 4 o="asmote ltd." + 5 o="Shortcut Labs AB" + 6 o="Skysolid Information Security Systems(Shenzhen) Co., Ltd" + 7 o="Wingtech Mobile Communications Co.,Ltd." + 8 o="Samway Electronic SRL" + 9 o="Nanjing Boswell Industrial Communication Technology Co., Ltd" + A o="Yi Tunnel(beijing) Technology Co.,Ltd" + B o="UXV Technologies ApS" + C o="Rikom Technologies Sdn Bhd" + D o="REMOWIRELESS COMMUNICATION INTERNATIONAL CO.,LIMITED" + E o="TeeJet Technologies" +90A9F7 + 0 o="Versta" + 1 o="Shenzhen Chainway Information Technology Co., Ltd" + 2 o="Suzhou Lingchen Acquisition Computer" + 3 o="Suzhou Etag-Technology Corporation" + 4 o="LAB-EL ELEKTRONIKA LABORATORYJNA" + 5 o="Shenzhen DOOGEE Hengtong Technology CO.,LTD" + 6 o="Shenzhen Eevin Technology Co.,Ltd" + 7 o="GUANGDONG KERUIDE ELECTRICAL TECHNOLOGY CO., LTD." + 8 o="BAODING FORLINX EMBEDDEDTECHNOLOGY CO., LTD" + 9 o="Zekler Safety AB" + A o="Chi Geng Technology Co., Ltd" + B o="Kranze Technology Solutions, Inc." + C o="SkyLine Limited Technologies Co., Ltd" + D o="Shanghai Jiehezhi Technology Co., Ltd." + E o="The Engineerix Group" 90C682 0 o="Shenzhen Lencotion Technology Co.,Ltd" 1 o="Shenzhen Photon Broadband Technology CO., LTD" @@ -23898,7 +30553,7 @@ FCFEC2 o="Invensys Controls UK Limited" D o="PowerShield Limited" E o="Shanghai HuRong Communication Technology Development Co., Ltd." 90E2FC - 0 o="Pars Ertebat Afzar Co." + 0 o="PEA (DBT-Technology)" 1 o="Yite technology" 2 o="ShenZhen Temwey Innovation Technology Co.,Ltd." 3 o="Shenzhen Hisource Technology Development CO.,Ltd." @@ -23913,15 +30568,31 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Stanley Security" D o="Beijing Lanxum Computer Technology CO.,LTD." E o="DevCom spol. s r.o." +90F421 + 0 o="Gemstone Lights" + 1 o="BeEnergy SG GmbH" + 2 o="Catvision Ltd." + 3 o="Sinpeng(Guangzhou)Technology Co.,Ltd" + 4 o="Sansap Technology Pvt. Ltd." + 5 o="DESKO GmbH" + 6 o="Wuxi Sunning Smart Devices Co.,Ltd" + 7 o="Senstar Corporation" + 8 o="Mi-Jack Products" + 9 o="Twunicom Life Tech. Co., Ltd." + A o="Proqualit Telecom LTDA" + B o="Jiangsu MSInfo Technology Co.,Ltd." + C o="ACOBA" + D o="Taichitel Technology Shanghai Co.,Ltd." + E o="Velan Studios Inc." 9405BB 0 o="Qingdao Maotran Electronics co., ltd" 1 o="Dongguan Kingtron Electronics Tech Co., Ltd" 2 o="Dongguan CXWE Technology Co.,Ltd." - 3 o="Neurik AG" + 3 o="Neutrik AG" 4 o="Shenzhen Baolijie Technology Co., Ltd." 5 o="Chengdu Zhongheng Network Co.,Ltd." 6 o="ZIGPOS GmbH" - 7 o="LTE-X, Inc" + 7 o="closip Inc." 8 o="iungo" 9 o="Zimmer GmbH" A o="SolarEdge Technologies" @@ -23929,6 +30600,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="LAO INDUSTRIA LTDA" D o="Sunthink S&T Development Co.,Ltd" E o="BAE Systems" +943EFD + 0 o="Brooks Instrument" + 1 o="ShenZhen Chino-e Communication Co., Ltd." + 2 o="YUNZHI IOT TECHNOLOGY CO,.LIMITED" + 3 o="Bertin GmbH" + 4 o="Vantive Manufacturing Pte Ltd" + 5 o="AM General LLC" + 6 o="Shenzhen Gigaopto Technology Co., Ltd." + 7 o="BEIJING CUNYIN CHENGQI TECHNOLOGY CO., LTD." + 8 o="LUIS Technology GmbH" + 9 o="Lecoo Technology Co.,Ltd." + A o="Gebr. Kemper GmbH + Co. KG" + B o="Shenzhen Celltel Communication Technology Co.,Ltd" + C o="Annapurna labs" + D o="KulpLights LLC" + E o="Annapurna labs" +94C9B7 + 0 o="Fairy Devices Inc." + 1 o="C-Mer Rainsoptics Limited" + 2 o="Annapurna labs" + 3 o="Sitronics JSC" + 4 o="Zhejiang Hengjie Communication Technology Co,. Ltd." + 5 o="Beijing Anyunshiji Technology Co., Ltd." + 6 o="Realtimes Beijing Technology Co., Ltd." + 7 o="MAMMOTHTEK CLOUD(DONG GUAN)TECHNOLOGY CO., LTD" + 8 o="OSOM Products Inc" + 9 o="Titanium union(shenzhen)technology co.,ltd" + A o="ShenZhen Beide Technology Co.,LTD" + B o="3D Biomedicine Science & Technology Co., Limited" + C o="Jinjin Technology (Shenzhen) Co., Ltd" + D o="Dspread Technology (Beijing) Inc." + E o="shenzhen UDD Technologies,co.,Ltd" 94CC04 0 o="Hangzhou Yongkong Technology Co., Ltd." 1 o="GOCOAX, INC" @@ -23992,6 +30695,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="HwaCom Systems Inc." D o="VR Technology(Shenzhen) Limited" E o="Shanghai Jinnian information technology Co. Ltd" +982782 + 0 o="SHENZHEN HEROFUN BIO-TECH CO., LTD" + 1 o="INFODAS GmbH" + 2 o="Anhui Shengren Electronic Technology Co., Ltd" + 3 o="Danfoss Power Solutions" + 4 o="Dspread Technology (Beijing) Inc." + 5 o="Guangzhou Wuzhou Technology Co, Ltd." + 6 o="WESTERN SECURITY SOLUTIONS" + 7 o="KORTEK CORPORATION" + 8 o="CATS Power design" + 9 o="Wuxi GuoYiHaiJu Technology Co.,Ltd." + A o="Nanjing BianYu Future Home Technology Co.Ltd" + B o="RayTron, INC." + C o="KRISTECH Krzysztof Kajstura" + D o="Thorlabs GmbH" + E o="SureFlap Ltd" 986D35 0 o="Shenzhen MALATA Mobile Communication Co.,LTD" 1 o="Shenzhen cositea electronics technology co.,LTD" @@ -24002,11 +30721,59 @@ FCFEC2 o="Invensys Controls UK Limited" 6 o="Vitronic Dr.-Ing. Stein Bildverarbeitungssysteme GmbH" 7 o="Zhejiang Hanshow Technology Co., Ltd." 8 o="Beijing 3CAVI Tech Co.,Ltd" + 9 o="Advanced Diagnostics LTD" A o="iWave Japan, Inc." B o="INTECH" C o="my-PV GmbH" D o="Praesideo B.V." E o="BAYCOM OPTO-ELECTRONICS TECHNOLGY CO., LTD." +986EE8 + 0 o="Sbarco Technology CO., Ltd." + 1 o="Shanghai Pixsur Smart Technology Co.,Ltd" + 2 o="Ugreen Group Limited" + 3 o="ReeR SpA" + 4 o="Fujitsu component limited" + 5 o="SUZHOU AUDITORYWORKS CO., LTD." + 6 o="Blair Companies" + 7 o="Centro de Pesquisas Av Wernher Von Braun" + 8 o="Sisgeo Srl" + 9 o="Span.IO, Inc." + A o="Logos Payment Solutions A/S" + C o="Sercomm Corporation." + D o="Changzhou Jiahao Radio&TV device CO.,LTD" + E o="First Design System Inc." +9880BB + 0 o="RYEEX Technology Co.,Ltd." + 1 o="GreatWall Information Co.,Ltd" + 2 o="Shanghai ECone Technology Co.,Ltd." + 3 o="Annapurna labs" + 4 o="Shenzhen Ginto E-commerce CO.,LTD" + 5 o="Melexis Technologies NV" + 6 o="Neusoft Reach Automotive Technology (Shenyang) Co.,Ltd" + 7 o="Guangdong-Hong Kong-Macao Greater Bay Area Research Innovation Institute for Nanotechnology" + 8 o="Jyh Eng Technology Co., Ltd" + 9 o="Shenzhen Hebang Electronic Co., Ltd" + A o="Guangzhou Shortcut Technology Co.,Ltd." + B o="Hilo" + C o="Shenzhen Xin Kingbrand Enterprises Co., Ltd" + D o="Wyebot, Inc." + E o="D.Med Technical Products GmbH" +988FE0 + 0 o="Valinso B.V." + 1 o="GUANGZHOU HERYSTORM TECHNOLOGY CO.,LTD." + 2 o="vhf elektronik GmbH" + 3 o="Empowerment Technologies Inc." + 4 o="Schmid AG, energy solutions" + 5 o="KuaiZhu SmartTechnology?Suzhou?CO.,Ltd" + 6 o="Huaqin Technology Co.,Ltd." + 7 o="China Huaxin Post and Telecom Technologies Co., Ltd." + 8 o="Changzhou Perceptime Technology Co.,Ltd." + 9 o="Nawon Machinery" + A o="Pavana Technologies JSC." + B o="Dongguan Synst Electronics Co., LTD." + C o="Shenzhen Micro&Nano Perception Computing Technology Co.,Ltd" + D o="Shenzhen Vitalitim Technology Co., Ltd" + E o="CEL Terminus (Shanghai) Information Technologies Co.,Ltd." 98AAFC 0 o="Dalian Eastern Display Co., Ltd." 1 o="SURTEC" @@ -24043,7 +30810,7 @@ FCFEC2 o="Invensys Controls UK Limited" 0 o="Leia, Inc" 1 o="go-e GmbH" 2 o="Juketek Co., Ltd." - 3 o="Shanghai ZeXin Information Technologies Co. Ltd." + 3 o="ZeXin (Shanghai) Information Technologies Co.,Ltd" 4 o="Sferrum GmbH" 5 o="Zymbit" 6 o="ZERONE CO., LTD." @@ -24070,7 +30837,7 @@ FCFEC2 o="Invensys Controls UK Limited" B o="JNL Technologies Inc" C o="SuZhou Jinruiyang Information Technology CO.,LTD" D o="HK ELEPHONE Communication Tech Co.,Limited" - E o="Phoenix Audio Technologies" + E o="SHURE INCORPORATED" 9C69B4 0 o="Suzhou Fitcan Technology Co.,LTD" 1 o="EA Technology Ltd" @@ -24087,6 +30854,38 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Guangdong Hanwei intergration Co.,Ltd" D o="%Intellect module% LLC" E o="NINGBO SHEN LINK COMMUNICATION TECHNOLOGY CO., LTD" +9CE450 + 0 o="Shenzhen Chengzhao Technology Co., Ltd." + 1 o="AIO SYSTEMS" + 2 o="Shenzhen Lixun Technology Co., Ltd." + 3 o="Marelli AL&S ALIT-TZ" + 4 o="Strato Automation Inc." + 5 o="Neways Advanced Applications" + 6 o="Shenzhen GW Technology Co., LTD" + 7 o="BEIJING TRANSTREAMS TECHNOLOGY CO.,LTD" + 8 o="ROHOTEK(shenzhen) Technology co., LTD" + 9 o="Shenzhen HQVT TECHNOLOGY Co.,LTD" + A o="AUO DISPLAY PLUS CORPORATION" + B o="Shenzhen Coslight Technology Co.,Ltd." + C o="XTX Markets Technologies Limited" + D o="BCD SRL" + E o="Shenzhen Kuki Electric Co., Ltd." +9CE549 + 0 o="SPEEDTECH CORP." + 1 o="Lightmatter, Inc." + 2 o="Volumatic Limited" + 3 o="Shenzhen Jooan Technology Co., Ltd" + 4 o="Beijing Lingji Innovations technology Co,LTD." + 5 o="WETEK ELECTRONICS LIMITED" + 6 o="shenzhen Huaxufeng Technology Development Co.,Ltd" + 7 o="ecodata solutions GmbH" + 8 o="Hemla Group AB" + 9 o="Hangzhou Xieneng Technology Co., Ltd." + A o="Arcteq Relays Ltd." + B o="SHENZHEN LINGDU AUTO ELECTRONICS CO.,LTD" + C o="INNODEP INC." + D o="Annapurna labs" + E o="Amoi Mobile Co.,Ltd." 9CF6DD 0 o="Annapurna labs" 1 o="Ithor IT Co.,Ltd." @@ -24103,6 +30902,22 @@ FCFEC2 o="Invensys Controls UK Limited" C o="Lighting New Energy Technology Co., Ltd." D o="Foshan Synwit Technology Co.,Ltd." E o="Shanxi ZhuoZhi fei High Electronic Technology Co. Ltd." +A0024A + 0 o="Zhejiang Hechuan Technology Co.,Ltd" + 1 o="Videndum Media Solutions Spa" + 2 o="Danriver Technologies Corp." + 3 o="SomaDetect Inc" + 4 o="Argos Solutions AS" + 5 o="Dongguan Amsamotion Automation Technology Co., Ltd" + 6 o="Xiaojie Technology (Shenzhen) Co., Ltd" + 7 o="ENNEBI ELETTRONICA SRL" + 8 o="Beijing Lyratone Technology Co., Ltd" + 9 o="Kontakt Micro-Location Sp z o.o." + A o="Guangdong Jinpeng Technology Co. LTD" + B o="Xi'an Yingsheng Electric Technology Co.,Ltd." + C o="Encroute AB" + D o="bitbee Inc" + E o="IoTecha Corp" A019B2 0 o="Vast Production Services" 1 o="El Sewedy Electrometer Egypt S.A.E." @@ -24121,10 +30936,10 @@ A019B2 E o="Ahgora Sistemas SA" A0224E 0 o="Kyung In Electronics" - 1 o="rNET Controls" + 1 o="PoE Texas" 2 o="Closed Joint-Stock Company %NORSI-TRANS%" 3 o="ProPhotonix" - 4 o="TMGcore LLC" + 4 o="TMGcore, Inc." 5 o="Zhuhai Cheer Technology Co., LTD." 6 o="MESIT asd, s.r.o." 7 o="Applied Information, Inc." @@ -24247,6 +31062,22 @@ A44F29 C o="Shenzhen Huadoo Bright Group Limitied" D o="HALLIBURTON" E o="Neotech Systems Pvt. Ltd." +A453EE + 0 o="MAHLE ELECTRONICS, SLU" + 1 o="Stellamore" + 2 o="Ubisafe Smart Devices" + 3 o="Larva.io OÜ" + 4 o="Williamson Corporation" + 5 o="Foshan Yisihang Electrical Technology Co., Ltd." + 6 o="Shenzhen Xunqi Interconnet Technology Co., Ltd" + 7 o="Beijing Lanke Science and Technology Co.,LTd." + 8 o="T-Touching Co., Ltd." + 9 o="Dongguan HuaFuu industrial co., LTD" + A o="shanggong technology Ltd" + B o="Viper Design, LLC" + C o="SOS LAB Co., Ltd." + D o="SSK CORPORATION" + E o="MEGACOUNT" A4580F 0 o="INNOPRO" 1 o="Stone Lock Global, Inc." @@ -24263,6 +31094,22 @@ A4580F C o="Homebeaver" D o="EYE IO, LLC" E o="Finetree Communications Inc" +A459D3 + 0 o="VTECH Technology Corportion" + 1 o="Rheinmetall Electronics UK Ltd" + 2 o="Shenzhen Welltech Cable Co., Ltd" + 3 o="SoftEnergy Controls Inc." + 4 o="GRE SYSTEM INC." + 5 o="Bettear - Accessibility Technologies Development Ltd" + 6 o="FrontAct Co., Ltd." + 7 o="DONG GUAN FU QIANG ELECTRONIC CO.,LTD" + 8 o="GOT CO.,LTD" + 9 o="Vivi International Pty Ltd" + A o="OREX SAI Inc." + B o="HANSHIN YUSOKI Co,Ltd" + C o="Safebase AS" + D o="SEAVAN TECHNOLOGY LIMITED" + E o="Ngen d.o.o." A4DA22 0 o="General Electric Company" 1 o="T2T System" @@ -24311,6 +31158,22 @@ A83FA1 C o="Laonz Co.,Ltd" D o="Shenzhen BIO I/E Co.,Ltd" E o="Guangzhou Navigateworx Technologies Co., Limited" +A85B36 + 0 o="Bluesoo Tech (HongKong) Co.,Limited" + 1 o="PARMA LLC" + 2 o="Loomanet Inc." + 3 o="Shenzhen Dandelion Intelligent Cloud Technology Development Co., LTD" + 4 o="Luoxian (Guandong) Technology Co., Ltd" + 5 o="JUGANU LTD" + 6 o="Versuni" + 7 o="Louis Vuitton Malletier" + 8 o="ShangHai SnowLake Technology Co.,LTD." + 9 o="Avista Edge" + A o="TAIDEN INDUSTRIAL CO.,LTD" + B o="%Lampyris Plant% LLC" + C o="ATER Technologies Co Ltd" + D o="Adam Hall GmbH" + E o="ORBITVU Sp. z o. o." AC1DDF 0 o="PiOctave Solutions Pvt Ltd" 1 o="HellaStorm, Inc." @@ -24343,6 +31206,38 @@ AC64DD C o="Beijing Hamigua Technology Co., Ltd." D o="HMicro Inc" E o="DIGIBIRD TECHNOLOGY CO., LTD." +AC86D1 + 0 o="Advanced Rugged System Co., LTD" + 1 o="Beijing Fantasy Mofang Technology Co.,Ltd" + 2 o="Hamsa India" + 3 o="Inovaxe Corporation" + 4 o="RayThink Technology Co.,Ltd" + 5 o="Hangzhou Lingban Technology Co., Ltd" + 6 o="Adveco Technology Co., Ltd" + 7 o="Quantum-Systems GmbH" + 8 o="PK Sound" + 9 o="Annapurna labs" + A o="EMIT GmbH" + B o="shenzhen ceita communications technology co.,ltd" + C o="MOTUSTECHS(Wuhan)Co.,Ltd." + D o="Krixe Pte. Ltd." + E o="Retina Development B.V." +ACEF92 + 0 o="CEER NATIONAL AUTOMOTIVE COMPANY" + 1 o="Dongguan Sunhans Technology Co., Ltd." + 2 o="EVA Precision Industrial Holdings Limited" + 3 o="JiZhiKang (Beijing) Technology Co., Ltd" + 4 o="LIFT CONTROLS PRIVATE LIMITED" + 5 o="PROGNOST Systems GmbH" + 6 o="shenzhen Microlumin Electronic Technology Co., Ltd." + 7 o="ABC OPTIC SOLUTION SRL" + 8 o="Hangzhou Lifesmart Technology Co., Ltd." + 9 o="DKK North America" + A o="Techyauld Co.,Ltd" + B o="Hunan ciwei intelligent Technology Co., LTD" + C o="GANZHOU DEHUIDA TECHNOLOGY CO., LTD" + D o="Robotic Assistance Devices Residential Inc" + E o="JET OPTOELECTRONICS CO., LTD." B01F81 0 o="Dalian GigaTec Electronics Co.,Ltd" 1 o="Uvax Concepts" @@ -24358,6 +31253,22 @@ B01F81 C o="Access Device Integrated Communications Corp." D o="TAIWAN Anjie Electronics Co.,Ltd." E o="Advanced & Wise Technology Corp." +B0475E + 0 o="Shanghai Kanghai Information System CO.,LTD." + 1 o="tintech" + 2 o="Lanmus Networks Ltd" + 3 o="Qsic Pty Ltd" + 4 o="Annapurna labs" + 5 o="Omnitech Security" + 6 o="DRS Sustainment Systems, Inc." + 7 o="MK Vision Joint Stock Company" + 8 o="SHRI MOHAN JI INTERNATIONAL" + 9 o="MIVO Technology AB" + A o="Shenzhen Jointelli Technologies Co.,Ltd" + B o="Bright Oceans Inter-Telecom Corporation" + C o="ikegawa co., Ltd" + D o="Netitest" + E o="NEO.NET Jakub Koperski" B0B353 0 o="Blake UK" 1 o="Sprocomm Technologies CO.,LTD." @@ -24389,6 +31300,22 @@ B0C5CA B o="RISECOMM (HK) TECHNOLOGY CO. LIMITED" C o="XMetrics" E o="Audio Elektronik İthalat İhracat San ve Tic A.Ş." +B0CCCE + 0 o="Steelco SpA" + 1 o="Agrisys A/S" + 2 o="4MOD Technology" + 3 o="Gateview Technologies" + 4 o="Shenzhen Xtooltech Intelligent Co.,Ltd." + 5 o="Beijing Viazijing Technology Co., Ltd." + 6 o="MULTI-FIELD LOW TEMPERATURE TECHNOLOGY(BEIJING) CO., LTD." + 7 o="EBI Patient Care, Inc." + 8 o="Shanghai CloudPrime.ai Technology Co, Ltd" + 9 o="Taiv Inc" + A o="Shenzhen Dangs Science and Technology CO.,Ltd." + B o="Watermark Systems (India) Private Limited" + C o="Faaftech" + D o="Xiaomi EV Technology Co., Ltd." + E o="MICROTEST" B0FD0B 0 o="TAE HYUNG Industrial Electronics Co., Ltd." 1 o="IDspire Corporation Ltd." @@ -24403,8 +31330,24 @@ B0FD0B A o="TEMCO JAPAN CO., LTD." B o="MartinLogan, Ltd." C o="Haltian Products Oy" - D o="Habana Labs LTD" + D o="Habana Labs LTD." E o="Shenzhen FEIBIT Electronic Technology Co.,LTD" +B0FF72 + 0 o="ShenYang LeShun Technology Co.,Ltd" + 1 o="Guangzhou Senguang Communication Technology Co., Ltd" + 2 o="MVT Elektrik Sanayi ve Ticaret Limited Sirketi" + 3 o="Hammerhead Navigation Inc." + 4 o="Jiangxi Xingchi Electronic Technology Co.,Ltd." + 5 o="Shenzhen Ruilian Electronic Technology Co.,Ltd" + 6 o="Tachyon Energy" + 7 o="BL Innovare" + 8 o="ERA RF Technologies" + 9 o="JIUYEE?shenzhen) Medical Technology Co.,Ltd" + A o="Simple Things" + B o="Launch Tech Co., Ltd." + C o="Hopewheel info.Co.,Ltd." + D o="TBB Renewable (Xiamen) Co Ltd" + E o="HANNING & KAHL GmbH & Co. KG" B437D1 0 o="Lezyne INC USA" 1 o="Alturna Networks" @@ -24431,16 +31374,31 @@ B44BD6 6 o="Perspicace Intellegince Technology" 7 o="Taizhou convergence Information technology Co.,LTD" 8 o="Arnouse Digital Devices Corp" - 9 o="Qstar Technology Co,Ltd" A o="Shenzhen Huabai Intelligent Technology Co., Ltd." B o="DongYoung media" C o="Impakt S.A." D o="ELLETA SOLUTIONS LTD" E o="CHUNGHSIN INTERNATIONAL ELECTRONICS CO.,LTD." +B44D43 + 0 o="Mihoyo" + 1 o="iLine Microsystems S.L. (B20956751)" + 2 o="RG SOLUTIONS LTD" + 3 o="ETSME Technologies C0., Ltd." + 4 o="ALL.SPACE Networks Ltd" + 5 o="halstrup-walcher GmbH" + 6 o="Spot AI, Inc." + 7 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + 8 o="ShenZhen Launch-Wonder Technology co., LTD" + 9 o="AD HOC DEVELOPMENTS S.L" + A o="UAV Navigation" + B o="Paulmann Licht GmbH" + C o="SHENZHEN KOSKY TECHNOLOGY CO.,LTD." + D o="Shenzhen CreatLentem Technology Co.,Ltd" + E o="GearUP Portal Pte. Ltd." B4A2EB 0 o="QKM Technology(Dongguan)Co.,Ltd" 1 o="DCI International, LLC." - 2 o="Katerra Inc" + 2 o="ONX Inc." 3 o="Canaan Creative Co.,Ltd." 4 o="Softel SA de CV" 5 o="Annapurna labs" @@ -24453,6 +31411,37 @@ B4A2EB C o="Shanghai Shenou Communication Equipment Co., Ltd." D o="SALZBRENNER media GmbH" E o="Dongguan Finslink Communication Technology Co.,Ltd." +B4ABF3 + 0 o="VOOMAX TECHNOLOGY LIMITED" + 1 o="NTR-RRL LLC" + 2 o="Shenzhen Unicair Communication Technology Co., Ltd." + 3 o="NubiCubi" + 4 o="Shenyang Tianwei Technology Co., Ltd" + 5 o="Shenzhen Quanzhixin Information Technology Co.,Ltd" + 6 o="SNSYS" + 7 o="FrontGrade Technologies" + 8 o="Stravik Technologies LLC" + 9 o="Rugged Video LLC" + A o="Shenzhen zhuomi SmartHome Technology Co., Ltd." + B o="Vissonic Electronics Limited" + C o="Annapurna labs" + D o="Atlas Tech Inc" + E o="RANG DONG LIGHT SOURCE & VACUUM FLASK J.S.C" +B84C87 + 0 o="Annapurna labs" + 1 o="em-trak" + 2 o="Shenzhen Huixiangfeng Electronic Technology Co., Ltd." + 3 o="Shenzhen Link-all Technology Co., Ltd" + 4 o="Blum Novotest GmbH" + 5 o="Psync Labs, Inc." + 6 o="HORIBA Precision Instruments (Beijing) Co.,Ltd" + 7 o="Beijing Jiyuan Automation Technology CO.,LTD" + 8 o="Fujian Morefun Electronic Technology Co., Ltd." + 9 o="Airgain Inc." + A o="Altronix , Corp" + B o="Beijing Yunji Technology Co., Ltd." + C o="SOND" + D o="DFUN (ZHUHAI) CO,. LTD." B8D812 0 o="Glamo Inc." 1 o="VOTEM" @@ -24469,6 +31458,22 @@ B8D812 C o="Yuwei Info&Tech Development Co.,Ltd" D o="Lam Research" E o="ZheJiang FangTai Electirc Co., Ltd" +BC3198 + 0 o="THINKCAR TECH CO.,LTD." + 1 o="swiss-sonic Ultraschall AG" + 2 o="JSC Megapolis-telecom region" + 3 o="Shenzhen Qichang Intelligent Technology Co., Ltd." + 4 o="Chongqing e-skybest ELECT CO.,LIMITED" + 5 o="Hunan Gukam Railway Equipment Co.,Ltd" + 6 o="ntc mekhanotronnika" + 7 o="Zhejiang Delixi Electric Appliance Co., Ltd" + 8 o="Temposonics,LLC" + 9 o="Baisstar (Shenzhen) Intelligence Co., Ltd." + A o="FCL COMPONENTS LIMITED" + B o="Suzhou Anchi Control system.,Co.Ltd" + C o="Innoflight, Inc." + D o="Shanghai Sigen New Energy Technology Co., Ltd" + E o="RADAR" BC3400 0 o="Redvision CCTV" 1 o="IPLINK Technology Corp" @@ -24517,6 +31522,54 @@ BC9740 C o="LISTEC GmbH" D o="Rollock Oy" E o="B4ComTechnologies LLC" +BCDFE1 + 0 o="Shenzhen Galaxy Century Information Technology Co.,Ltd" + 1 o="Shenzhen Valley Ventures Co.,Ltd." + 2 o="Shanghai Zhuoyu Communication Technology Co., Ltd" + 3 o="System Industrie Electronic GmbH" + 4 o="Ochno AB" + 5 o="Enli Inc." + 6 o="D3 Technical Partners, LLC" + 7 o="Databridge Dynamic" + 8 o="Cortex Systems" + 9 o="Annapurna labs" + A o="Building Automation Products Inc." + B o="HI-TARGET SURVEYING INSTRUMENT CO.,LTD" + C o="XY Sense, Inc." + D o="UGPA LLC" + E o="Clairvoyant Technology Inc." +C022F1 + 0 o="RCT Power GmbH" + 1 o="COMMUP WUHAN NETWORK TECHNOLOGY CO.,LTD" + 2 o="TSURUGA Electric Corporation" + 3 o="Spectra Technologies India Private Limited" + 4 o="Andritz AB" + 5 o="Canon Electronic Business Machines (H.K.) Co., Ltd." + 6 o="Pony.AI, INC." + 7 o="Shenzhen Chengfenghao Electronics Co.;LTD." + 8 o="UtopiaTech Private Limited" + 9 o="MAHINDR & MAHINDRA" + A o="Bosch Automotive Products (Suzhou) Co., Ltd." + B o="Lafayette AB" + C o="Accelsius LLC" + D o="Envent Engineering" + E o="Masimo Corporation" +C0482F + 0 o="PROTECT A/S" + 1 o="Sichuan Xutai communication equipment Co., LTD" + 2 o="AISWEI Technology Co." + 3 o="Qingdao Xijiao Ruihang Rail Equipment Co., Ltd." + 4 o="Altice Labs India" + 5 o="Shenzhen Thinkercu Electronic Technology Co., Ltd" + 6 o="Chengdu Dingfeng Huizhi Technology Co., Ltd" + 7 o="Megawin Switchgear Pvt. Ltd." + 8 o="Beijing D&S Fieldbus Technology co.,Ltd" + 9 o="Hystrone Technology (HongKong) Co., Limited" + A o="Willstrong Solutions Private Limited" + B o="Shanghai Kanghai Information System CO.,LTD." + C o="Lunar USA Inc." + D o="SECURICO ELECTRONICS INDIA LTD" + E o="Shenzhen Guan Chen Electronic Co.,LTD" C0619A 0 o="Paragon Robotics LLC" 1 o="KidKraft" @@ -24538,16 +31591,16 @@ C08359 1 o="Gemvax Technology ,. Co.Ltd" 2 o="Huaxin SM Optics Co. LTD." 3 o="PCH Engineering A/S" - 4 o="ANTS" + 4 o="UNA Digital Inc." 5 o="Viper Design, LLC" 6 o="Beijing Cloud Fly Technology Development Co.Ltd" 7 o="Fuzhou Fdlinker Technology Co.,LTD" - 8 o="ista International GmbH" + 8 o="Ista SE" 9 o="Shenzhen Pay Device Technology Co., Ltd." A o="SHANGHAI CHARMHOPE INFORMATION TECHNOLOGY CO.,LTD." B o="Suzhou Siheng Science and Technology Ltd." D o="Gardner Denver Thomas GmbH" - E o="Cyber Sciences, Inc." + E o="Trystar, LLC" C09BF4 0 o="Annapurna labs" 1 o="Connected Space Management" @@ -24563,7 +31616,7 @@ C09BF4 B o="NUCTECH COMPANY LIMITED" C o="Pinpark Inc." D o="The Professional Monitor Company Ltd" - E o="Continental Automotive Component Malaysia Sdn.Bhd." + E o="AUMOVIO Components Malaysia Sdn.Bhd." C0D391 0 o="Fuzhou Jinshi Technology Co.,Ltd." 1 o="B9Creations" @@ -24576,9 +31629,42 @@ C0D391 8 o="XENA SECURITY LIMITED" 9 o="xxter bv" A o="Alpha Audiotronics, Inc." + B o="Celliber Technologies Pvt Limited" C o="Zhinengguo technology company limited" D o="REGULUS CO.,LTD." E o="SAMSARA NETWORKS INC" +C0EAC3 + 0 o="Anhui Shengjiaruiduo Electronic Technology Co., Ltd." + 1 o="Dongguan Wecxw CO.,Ltd." + 2 o="NEXSEC Incorporated" + 3 o="Hangzhou Qixun Technology Co., Ltd" + 4 o="Tokoz a.s." + 5 o="Techem Energy Services GmbH" + 6 o="Worldpass industrial Company Limited" + 7 o="Annapurna labs" + 8 o="CDSTech" + 9 o="OLEDCOMM" + A o="VOLT EQUIPAMENTOS ELETRONICOS LTDA" + B o="SeongHo Information and Communication Corp." + C o="Trumeter" + D o="Kontron Asia Technology Inc." + E o="Beijing Zhongyuanyishang Technology Co Ltd" +C0FBF9 + 0 o="Xerox Corporation" + 1 o="LIXIL Corporation" + 2 o="Dongguan Chuan OptoElectronics Limited" + 3 o="SHENZHEN HEQIANG ELECTRONICS LIMITED" + 4 o="Minato Advanced Technologies inc" + 5 o="HAGUENET" + 6 o="IVT corporation" + 7 o="LongSung Technology (Shanghai) Co.,Ltd." + 8 o="Dongmengling" + 9 o="zxsolution" + A o="Tiandi(Changzhou) Automation Co., Ltd." + B o="SHENZHEN COMIX HST CLOUD COMPUTING CO., LTD." + C o="SHENZHEN ELSKY TECHNOLOGY CO., LTD" + D o="Dropbeats Technology Co., Ltd." + E o="Navitas Digital Safety Ltd" C47C8D 0 o="ATI" 1 o="LYNX INNOVATION LITIMED" @@ -24595,6 +31681,22 @@ C47C8D C o="INOTEC Sicherheitstechnik GmbH" D o="Anhui GuangXing Linked-Video Communication Technology Co, Ltd." E o="Labor Strauss Sicherungsanlagenbau GmbH" +C48372 + 0 o="Compumedics Germany GmbH" + 1 o="Shenzhen King Will Technology Co., LTD" + 2 o="AI-RIDER CORPORATION" + 3 o="NextSilicon" + 4 o="Transact Technologies Inc" + 5 o="Wuhan Da Ta Technologies Co.,Ltd." + 6 o="Netplus Co., Ltd." + 7 o="clk2.inc" + 8 o="ACCELECOM LTD." + 9 o="Biwave Technologies, Inc." + A o="VIE STYLE,INC," + B o="care.ai" + C o="Acenew technology(shenzhen) limited company" + D o="Annapurna labs" + E o="Suzhou LZY technology Co.,Ltd" C4954D 0 o="BA International Electronics Co. Ltd." 1 o="Teletronik AG" @@ -24611,6 +31713,86 @@ C4954D C o="SolidGear Corporation" D o="Newland Era Edu Hi-Tech(BeiJing)Co.,Ltd" E o="Canare Electric Co., Ltd." +C49894 + 0 o="Shenzhen Megmeet Drive Technology Co.,Ltd." + 1 o="SEAVIEW TELECOM" + 2 o="Metasphere Ltd" + 3 o="BTL Industries JSC" + 4 o="Alpine Electronics Marketing, Inc." + 5 o="shenzhen lanodo technology Co., Ltd" + 6 o="Aetina Corporation" + 7 o="Shanghai Kanghai Information System CO.,LTD." + 8 o="Pliem (Shanghai) Intelligent Technology Co., Ltd" + 9 o="Shenzhen Hexin Automation Technology Co.,Ltd." + A o="Neron Informatics Pvt Ltd" + B o="Shanghai YVR Technology Co., Ltd." + C o="Zhejiang Rexense loT Technology Co., Ltd" + D o="Jiangsu AIDriving Co.,Ltd." + E o="Hans Sasserath GmbH & Co. KG" +C4A10E + 0 o="HYOSUNG Heavy Industries Corporation" + 1 o="BARTEC PIXAVI AS" + 2 o="Wistron InfoComn (Kunshan) Co., Ltd." + 3 o="Consolinno Energy GmbH" + 4 o="Harbour Cross Technology Ltd" + 5 o="O-NET Industrial Technologies (Shenzhen) Limited" + 6 o="Hainan World Electronic Science and Techology Co.,Ltd" + 7 o="Guangzhou South Satellite Navigation Instrument Co., Ltd." + 8 o="Ayla Networks (Shenzhen) Co., Ltd." + 9 o="XI'AN YEP TELECOM TECHNOLOGY CO.,LTD" + A o="Jiangsu Perceive World Technology Co.,Ltd." + B o="Clinton Electronics Corporation" + C o="Focus-on" + D o="Connectlab SRL" + E o="Alio, Inc" +C4A559 + 0 o="Archermind Japan Co.,Ltd." + 1 o="Motive Technologies, Inc." + 2 o="SHENZHEN ORFA TECH CO., LTD" + 3 o="X-speed lnformation Technology Co.,Ltd" + 4 o="National Company of Telecommunication and Information Security" + 5 o="Moultrie Mobile" + 6 o="Annapurna labs" + 7 o="Aviron Interactive Inc." + 8 o="METICS" + 9 o="Shenzhen Meishifu Technology Co.,Ltd." + A o="Hebei Far-East Communication System Engineerning Co.,Ltd." + B o="SMH Technologies SRL" + C o="ALTAM SYSTEMS SL" + D o="MINOLTA SECURITY" + E o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" +C4CC37 + 0 o="KAIS Co.,Ltd." + 1 o="Taiwan Inpro International Co.Ltd" + 2 o="CIX TECHNOLOGY INC." + 3 o="Qingdao Goertek Intelligent Sensor Co.,Ltd" + 4 o="Pineberry Pi" + 5 o="Changzhou runningtech industrial technology Co., Ltd." + 6 o="Safety System Product GmbH & Co. KG" + 7 o="Vicinity Technologies Limited" + 8 o="SmartLicht systems co., ltd" + 9 o="Skychers Creations ShenZhen Limited" + A o="INPAQ Technology Co., Ltd" + B o="DRS Naval Power Systems, Inc." + C o="CHAINTECH Technology Corp." + D o="Netavo Global Data Services Ltd" + E o="Joby Aviation, Inc." +C4FF84 + 0 o="ZHUHAI NINESTAR INFORMATION TECHNOLOGY CO., LTD." + 1 o="Turing Machines Inc." + 2 o="ShenZhen BoQiao Technologies CO.,LTD." + 3 o="Cloudhop Inc" + 4 o="MALHOTRA ELECTRONICS PRIVATE LIMITED" + 5 o="Eastern Acoustic Works" + 6 o="Lens Technology (Xiangtan) Co.,Ltd" + 7 o="NEKMA M.Mesek P.Mesek B.Mesek" + 8 o="IBM" + 9 o="Atlas Copco" + A o="Openeye" + B o="Elaraby Company For Engineering Industries" + C o="KSB SE & Co. KGaA" + D o="AOSAISHI (HONG KONG) CO.,LIMITED" + E o="Elbit system EW and SIGINT Elisra ltd" C4FFBC 0 o="Danego BV" 1 o="VISATECH C0., LTD." @@ -24618,7 +31800,7 @@ C4FFBC 3 o="SHENZHEN KALIF ELECTRONICS CO.,LTD" 4 o="iMageTech CO.,LTD." 5 o="comtime GmbH" - 6 o="Shenzhen C & D Electronics Co., Ltd." + 6 o="Shanghai Kanghai Information System CO.,LTD." 7 o="Critical Link" 8 o="ShenZhen ZYT Technology co., Ltd" 9 o="GSM Innovations Pty Ltd" @@ -24643,6 +31825,22 @@ C82C2B C o="Smart Wires Inc" D o="UBITRON Co.,LTD" E o="Fränkische Rohrwerke Gebr. Kirchner GmbH & Co. KG" +C85CE2 + 0 o="Fela Management AG" + 1 o="Annapurna labs" + 2 o="SamabaNova Systems" + 3 o="ECOCHIP Communication Technology(shenzhen)Co.Ltd." + 4 o="Jector Digital Corporation" + 5 o="Cranns Limited" + 6 o="brinfotec" + 7 o="SYNERGY SYSTEMS AND SOLUTIONS" + 8 o="LYNX Technik AG" + 9 o="Quthc Limited" + A o="San Telequip (P) Ltd.," + B o="AloT Tech" + C o="Shanghai Gaviota Intelligent Technology Co.,Ltd." + D o="UNILUMIN GROUP CO., LTD." + E o="Wonder Education Tech Limited" C86314 0 o="Western Reserve Controls, Inc." 1 o="Autonics Co., Ltd." @@ -24659,6 +31857,22 @@ C86314 C o="Freeus LLC" D o="Telematix AG" E o="Taylor Dynamometer" +C86BBC + 0 o="SafelyYou" + 1 o="WeLink Solutions, Inc." + 2 o="Vipaks + Ltd" + 3 o="Antevia Networks" + 4 o="Liuzhou Zuo You Trade Co., Ltd." + 5 o="Shenzhen Hebang Electronic Co., Ltd" + 6 o="Drowsy Digital Inc" + 7 o="Shenzhen smart-core technology co.,ltd." + 8 o="Sinsegye Beijing Technology Co., Ltd" + 9 o="Osee Technology LTD." + A o="Alpha Bridge Technologies Private Limited" + B o="HAI ROBOTICS Co.,Ltd." + C o="ZEUS" + D o="SCANTECH(HANGZHOU)CO.,LTD" + E o="Waterkotte GmbH" C88ED1 0 o="AISWORLD PRIVATE LIMITED" 1 o="German Pipe GmbH" @@ -24675,6 +31889,53 @@ C88ED1 C o="Shanghai Bwave Technology Co.,Ltd" D o="PHOENIX ENGINEERING CORP." E o="Aventics GmbH" +C898DB + 0 o="Unicore Communications Inc." + 1 o="Block, Inc." + 2 o="freecle Inc." + 3 o="Shenzhen Kedakeda Technology Co., Ltd." + 4 o="Shenzhen IBD Intelligence Technology Co,.Ltd." + 6 o="Quantum Co., Ltd." + 7 o="J&R Technology Limited" + 8 o="Voleatech GmbH" + 9 o="MINDTEC" + A o="CHAMPIN" + B o="Shenzhen Hooolink Technology Co., LTD" + C o="Smartrend Manufacturing Group" + D o="Quilt Systems, Inc" + E o="qihangzhitong" +C8F5D6 + 0 o="MEIRYO TECHNICA CORPORATION" + 1 o="Valeo Interior Controls (Shenzhen) Co.,Ltd" + 2 o="Qbic Technology Co., Ltd" + 3 o="BBPOS Limited" + 4 o="EVOTOR LLC" + 5 o="Pinmicro K K" + 6 o="Jabil" + 7 o="Oscars Pro" + 8 o="Yarward Electronics Co., Ltd." + 9 o="Shanghai Mo xiang Network Technology CO.,ltd" + A o="HENAN FOXSTAR DIGITAL DISPLAY Co.,Ltd." + B o="United Barcode Systems" + C o="Eltako GmbH" + D o="Volansys technologies pvt ltd" + E o="HEITEC AG" +C8FFBF + 0 o="Shenzhen HC Electronic Technology Co.,LTD" + 1 o="robert juliat" + 2 o="Cognizant Mobility GmbH" + 3 o="TECTOY S.A" + 4 o="Beijing Jingyibeifang Instrument Co.,Ltd." + 5 o="Chongqing Zhizhu Huaxin Technology Co.,Ltd" + 6 o="Accuphy Technologies Beijing Ltd" + 7 o="Indra Renewable Technologies" + 8 o="Shenzhen Fengrunda Technology Co.,Ltd" + 9 o="Shandong Wanshuo Optoelectronic Equipment Co.,Ltd" + A o="Maestro Food Co." + B o="PubliBike SA" + C o="Density.IO" + D o="ALDES DomNexX" + E o="HT ITALIA SRL" CC1BE0 0 o="Microtech System,Inc" 1 o="Beijing Daotongtianxia Co.Ltd." @@ -24708,13 +31969,21 @@ CC2237 D o="SHENZHEN HOOENERGY TECHNOLOGY CO.,LTD" E o="MANUFACTURAS Y TRANSFORMADOS AB, S.L." CC4F5C + 0 o="Chengdu Ren Heng Mei Guang Technology Co.,Ltd." + 1 o="lesswire GmbH" 2 o="MatchX GmbH" + 3 o="Shanghai Zenchant Electornics Co.,LTD" + 4 o="Spark Biomedical" 5 o="Kymati GmbH" + 6 o="Watertech S.p.A." 7 o="Smiths US Innovation LLC" 8 o="Feelmore Labs" + 9 o="Dtrovision" A o="AZ-TECHNOLOGY SDN BHD" B o="Ontex BV" C o="Beijing Cotytech Technology Co.,LTD." + D o="Beijing Neutron Technology CO.,LTD." + E o="Beijing Techao Weijia Technology Limited" CCC261 0 o="Ebiologic Technology Co., Ltd." 1 o="NWL Inc." @@ -24724,6 +31993,7 @@ CCC261 5 o="Viper Design, LLC" 6 o="Guardiar USA" 7 o="Ability Enterprise Co., Ltd" + 8 o="RoomMate AS" 9 o="BYTERG LLC" A o="Shenzhen Uyesee Technology Co.,Ltd" B o="Winterthur Gas & Diesel Ltd." @@ -24737,7 +32007,7 @@ CCD31E 3 o="KEN A/S" 4 o="PJG Systementwicklung GmbH" 5 o="NTmore.Co.,Ltd" - 6 o="BBPOS International Limited" + 6 o="BBPOS Limited" 7 o="Shenzhen Decnta Technology Co.,LTD." 8 o="inoage GmbH" 9 o="Siemens AG, MO MLT BG" @@ -24764,9 +32034,11 @@ CCD39D E o="Shanghai tongli information technology co. LTD" D01411 0 o="EkkoSense Ltd" + 1 o="P.B. Elettronica srl" 2 o="Evoco Labs CO., LTD" 3 o="iLOQ Oy" 4 o="powerall" + 5 o="Superlead" 6 o="Ahnnet" 7 o="Realwave Inc." 8 o="Video Security, Inc." @@ -24776,6 +32048,38 @@ D01411 C o="Shen Zhen HaiHe Hi-Tech Co., Ltd" D o="Guangdong Shiqi Manufacture Co., Ltd." E o="Tecnosoft srl" +D015BB + 0 o="FORTUNE MARKETING PRIVATE LIMITED" + 1 o="Jiangsu Eastone Technology Co.,Ltd" + 2 o="Beijing Guangshu Zhiying Technology Development Co., Ltd." + 3 o="TePS'EG" + 4 o="Esders GmbH" + 5 o="Listen Technologies" + 6 o="ShenZhen Zhongke GuanJie Data Technology Co.,Ltd." + 7 o="New Tech IoT" + 8 o="ALEKTO-SYSTEMS LTD" + 9 o="Stellar Blu Solutions" + A o="HONG KONG COHONEST TECHNOLOGY LIMITED" + B o="EdgeDX" + C o="Shenzhen Waystar Communication Technology Co. Ltd." + D o="Bluewaves Mobility Innovation Inc" + E o="PHYTEC EMBEDDED PVT LTD" +D016F0 + 0 o="Shenzhen Lesingle Technology CO., LTD." + 1 o="QBIC COMMUNICATIONS DMCC" + 2 o="RYSE Inc." + 3 o="Sofinet LLC" + 4 o="BEIJING XIAOYUAN WENHUA CULTURE COMMUNICATION CO., LTD." + 5 o="wuxi high information Security Technolog" + 6 o="Tornado Modular Systems" + 7 o="Hydac Electronic" + 8 o="Shenzhen DOOGEE Hengtong Technology CO.,LTD" + 9 o="Crystal Alarm AB" + A o="OPTITERA GLOBAL NETWORKS PRIVATE LIMITED" + B o="worldcns inc." + C o="Peralex Electronics (Pty) Ltd" + D o="Top Guard Technologies" + E o="BBPOS Limited" D02212 0 o="Spirit IT B.V." 1 o="AIM" @@ -24822,6 +32126,85 @@ D07650 C o="Electro-Motive Diesel" D o="tecnotron elekronik gmbh" E o="Revox Inc." +D09395 + 0 o="Zhejiang Ruiyi lntelligent Technology Co. Ltd" + 1 o="Hefei Siqiang Electronic Technology Co.,Ltd" + 2 o="AT&T" + 3 o="Nesecure Telecom Pvt Ltd" + 4 o="DAESUNG CELTIC ENERSYS" + 5 o="FungHwa i-Link Technology CO., LTD" + 6 o="Annapurna labs" + 7 o="iSolution Technologies Co.,Ltd." + 8 o="Annapurna labs" + 9 o="NINGBO SUNNY OPOTECH CO.,LTD" + A o="Automatic Devices" + B o="Invendis Technologies India Pvt Ltd" + C o="BRICK4U GmbH" + D o="T-COM LLC" + E o="Shenzhen Hotack Technology Co.,Ltd" +D09686 + 0 o="SERNET (SUZHOU) TECHNOLOGIES CORPORATION" + 1 o="PROVCOM LTD" + 2 o="TMLake Technology Ltd.," + 3 o="EPHI B.V." + 4 o="Houston Radar LLC" + 5 o="Annapurna labs" + 6 o="Shenzhen Ntmer Technology Co., Ltd." + 8 o="Energiekonzepte Deutschland GmbH" + 9 o="Camfil" + A o="Hero Health Inc." + B o="Changsha keruijie lnformation Technology Co.,Ltd" + C o="ECS s.r.l." + D o="CertusNet Information Technology Co.,LTD" + E o="withnetworks" +D09FD9 + 0 o="Lemei Intelligent IOT (Shenzhen) Co., Ltd" + 1 o="elecgator bvba" + 2 o="Westar Display Technologies" + 3 o="GS Yuasa International Ltd." + 4 o="Poten (Shanghai) Technology Co.,Ltd." + 5 o="Carbon Mobile GmbH" + 6 o="Elevoc Technology Co., Ltd." + 7 o="Raymax Technology Ltd." + 8 o="Queclink Wireless Solutions Co., Ltd." + 9 o="ENTTEC Pty Ltd." + A o="Eurolan Ltd" + B o="Cablewireless Laboratory Co., Ltd" + C o="Fujian Newland Auto-ID Tech. Co,.Ltd." + D o="Shenzhen eloT Technology Co.,Ltd" + E o="Minibems Ltd" +D0A011 + 0 o="SIONYX, LLC" + 1 o="Shanghai Railway Communication Co. Ltd." + 2 o="Shanghai Hongqia Industry and Trade Co., LTD" + 3 o="V-Count Teknoloji A.Ş." + 4 o="SUMICO" + 5 o="Shenzhen DOOGEE Hengtong Technology CO.,LTD" + 6 o="OCEM Energy Technology" + 7 o="Shenzhen Liandian Communication Technology Co.LTD" + 8 o="Annapurna labs" + 9 o="Vastai Technologies(Shanghai)Inc" + A o="Wuhan Tabebuia Technology Co.Ltd" + B o="TYRI Sweden AB" + C o="TASKA Prosthetics" + D o="REMOWIRELESS COMMUNICATION INTERNATIONAL CO.,LIMITED" + E o="Annapurna labs" +D0AA5F + 0 o="Hangzhou Jingtang Communication Technology Co.,Ltd." + 1 o="Xiaomi EV Technology Co., Ltd." + 2 o="ACCEL LAB ltd." + 3 o="Shenzhen Liandian Communication Technology Co.LTD" + 4 o="KOMER" + 5 o="深圳麦源实业有限公司" + 6 o="SORDIN AB" + 7 o="GD Midea Heating & Ventilating Equipment Co., Ltd" + 8 o="WeBank Co., Ltd." + 9 o="HONGCI MONITOR INTERNATIONAL CO., LTD." + A o="Indra Air Traffic Inc" + B o="WARNER ELECTRONICS (I) PVT. LTD." + C o="Pacific Electronics" + D o="Level Up Holding Co., Inc." + E o="MBX International Ltd." D0C857 0 o="YUAN High-Tech Development Co., Ltd." 1 o="DALI A/S" @@ -24854,6 +32237,22 @@ D0D94F C o="ARROWAVE TECHNOLOGIES LIMITED" D o="DUKSANMECASYS CO., LTD." E o="APPOTRONICS CO., LTD" +D42000 + 0 o="Wattsense" + 1 o="Zelus(HuangZhou) Technology Ltd." + 2 o="Shenzhen AI Develop & Manufacture Co.,LTD." + 3 o="Arbe Robotics Ltd." + 4 o="EVOC VIN Technology Co.,Ltd" + 5 o="Monolith Electric?Changzhou?Co.,Ltd." + 6 o="HiAR Information Technology Co.,Ltd" + 7 o="Annapurna labs" + 8 o="Dalian Baishengyuan Technology Co.,Ltd" + 9 o="WEATHEX CO., LTD." + A o="BirdDog Australia" + B o="Shenzhen Volt IoT technology co.,ltd." + C o="Gentec Systems Co." + D o="ZUUM" + E o="RPUSI Communication Technology Co.,Ltd." D425CC 0 o="NORDI TELEKOMMUNIKATSIOONI OÜ" 1 o="Eware Information Technology com.,Ltd" @@ -24870,6 +32269,22 @@ D425CC C o="POSNET Polska S.A." D o="Combined Energy Technologies Pty Ltd" E o="Coperion" +D46137 + 0 o="Wistron Corporation" + 1 o="Shenzhen smart-core technology co.,ltd." + 2 o="Robert Bosch Elektronikai Kft." + 3 o="APPOTRONICS CO., LTD" + 4 o="Beijing TAIXINYUN Technology Co.,Ltd" + 5 o="Estelle AB" + 6 o="Securus CCTV India" + 7 o="Beijing Shudun Information Technology Co., Ltd" + 8 o="Beijing Digital China Yunke Technology Limited" + 9 o="Mavenir Systems, Inc." + A o="Shenzhen Xunjie International Trade Co., LTD" + B o="KunPeng Instrument (Dalian)Co.,Ltd." + C o="MUSASHI ENGINEERING,INC." + D o="IPTECHVIEW" + E o="UAB Brolis sensor technology" D47C44 0 o="Exafore Oy" 1 o="Innoviz Technologies LTD" @@ -24886,6 +32301,38 @@ D47C44 C o="STRIVE ORTHOPEDICS INC" D o="Huaqin Telecom Technology Co.,Ltd." E o="SHENZHEN ANYSEC TECHNOLOGY CO. LTD" +D4A0FB + 0 o="M2MD Technologies, Inc." + 1 o="Intersvyaz IT" + 2 o="Beijing Lingji Innovations technology Co,LTD." + 3 o="NEXXUS NETWORKS INDIA PRIVATE LIMITED" + 4 o="Shenzhen Dijiean Technology Co., Ltd" + 5 o="Corelase Oy" + 6 o="Huizhou Jiemeisi Technology Co.,Ltd." + 7 o="Skyfri Corp" + 8 o="Parpro System Corporation" + 9 o="Hangteng (HK) Technology Co., Limited" + A o="IMPULSE CCTV NETWORKS INDIA PVT. LTD." + B o="Spatial Hover Inc" + C o="Snap-on Tools" + D o="FASTWEL ELECTRONICS INDIA PRIVATE LIMITED" + E o="GTEK GLOBAL CO.,LTD" +D4BABA + 0 o="SHENZHEN ACTION TECHNOLOGIES CO., LTD." + 1 o="Annapurna labs" + 2 o="GuangZhou Ostec Electronic Technology Co.,Limited" + 3 o="Shenzhen Pu Ying Innovation Technology Corporation Limited" + 4 o="Beijing Yuanxin Junsheng Technology Co.,ltd" + 5 o="ReeR SpA" + 6 o="Shenzhen Yueer Innovation Technology Co., Ltd" + 7 o="Shenzhen Double Better Technology Co., Ltd" + 8 o="Chengdu Ba SAN SI YI Information Technology Co., LTD" + 9 o="Shenzhen Chuangyou Acoustic Technology Co., Ltd." + A o="Actiontec Electronics Inc." + B o="Qingdao Vzense Technology Co., Ltd." + C o="Rusatom Automated Control Systems, Joint-Stock Company" + D o="AADONA Communication Pvt Ltd" + E o="Camozzi Automation SpA" D8860B 0 o="Inspur Group Co., Ltd." 1 o="Krspace" @@ -24902,6 +32349,22 @@ D8860B C o="YUSAN INDUSTRIES LIMITED" D o="ComNav Technology Ltd." E o="Shenzhen Yidong Technology Co.,Ltd" +DC3643 + 0 o="Meier Tobler AG" + 1 o="Dongguan Pengchen Earth Instrument CO. LT" + 2 o="Wuhan Linptech Co. ,Ltd." + 3 o="WIS Networks" + 4 o="Fresenius Medical Care R&D (Shanghai) Co.,Ltd." + 5 o="Hangzhou Chingan Tech Co., Ltd." + 6 o="Shenzhen smart-core technology co.,ltd." + 7 o="UKG" + 8 o="OAK INFORMATION SYSTEM CO." + 9 o="Hefei EA Excelsior Information Security Co., Ltd." + A o="KUANTECH (CAMBODIA) CORPORATION LIMITED" + B o="nami.ai" + C o="Orlaco Products B.V." + D o="Hangzhou Huanyu Vision Technology Co., Ltd" + E o="Beijing L&S Lancom Platform Tech. Co., Ltd." DC4427 0 o="Suritel" 1 o="Tesla,Inc." @@ -24918,6 +32381,38 @@ DC4427 C o="Pyrexx Technologies GmbH" D o="Rohde&Schwarz Topex SA" E o="VerifEye Technologies" +DC4A9E + 0 o="Dongguan Huili electroacoustic Industrial Co.,ltd" + 1 o="Advanced Electronics Ltd" + 2 o="Annapurna labs" + 3 o="LEACH INTERNATIONAL EUROPE" + 4 o="ADIAL" + 5 o="Nuove Tecnologie srl" + 6 o="TATTILE SRL" + 7 o="Astrogate Inc." + 8 o="Methodex Systems Pvt. Ltd." + 9 o="AiSight GmbH" + A o="LongSung Technology (Shanghai) Co.,Ltd." + B o="Maxvision Technology Corp." + C o="HEFEI DATANG STORAGE TECHNOLOGY CO.,LTD" + D o="HAPPIEST BABY INC." + E o="SES-imagotag Deutschland GmbH" +DC76C3 + 0 o="Genius Vision Digital Private Limited" + 1 o="Bangyan Technology Co., Ltd" + 2 o="IRE SOLUTION" + 3 o="Shanghai Kanghai Information System CO.,LTD." + 4 o="seadee" + 5 o="heinrich corporation India private limited" + 6 o="ShangHai Zhousheng Intelligent Technology Co., Ltd" + 7 o="NANJING LOYST INDUSTRIAL NETWORKS CO.,LTD." + 8 o="J&J Philippines Corporation" + 9 o="Hunan Zhizhou Technology Co., Ltd" + A o="Annapurna labs" + B o="NCE Network Consulting Engineering srl" + C o="Kunshan QTech Smart-Forward Limited" + D o="Chen Uei Precision Industry Co., Ltd" + E o="MORELINK" DCE533 0 o="FLYHT Aerospace" 1 o="Ambi Labs Limited" @@ -24929,10 +32424,59 @@ DCE533 7 o="SAN Engineering" 8 o="JB-Lighting Lichtanlagen GmbH" 9 o="Tiertime Corporation" + A o="Amazinglayer Network Co., Ltd." B o="Tintel Hongkong Co.Ltd" C o="BRCK" D o="Suzhou ATES electronic technology co.LTD" E o="Giant Power Technology Biomedical Corporation" +E0233B + 0 o="Quality Pay Systems S.L." + 1 o="Elvys s.r.o" + 2 o="PluralFusion INC" + 3 o="356 Productions" + 4 o="The KIE" + 5 o="IOFAC" + 6 o="Kiwimoore(Shanghai) Semiconductor Co.,Ltd" + 7 o="Rehear Audiology Company LTD." + 8 o="Suzhou Visrgb Technology Co., Ltd" + 9 o="HANET TECHNOLOGY" + A o="ShenZhen Chainway Information Technology Co., Ltd." + B o="Shanghai Kanghai Information System CO.,LTD." + C o="Chengdu ChengFeng Technology co,. Ltd." + D o="Magosys Systems LTD" + E o="Ugreen Group Limited" +E0382D + 0 o="Beijing Cgprintech Technology Co.,Ltd" + 1 o="Annapurna labs" + 2 o="Xi'an Xiangxun Technology Co., Ltd." + 3 o="Annapurna labs" + 4 o="Qingdao Unovo Technologies Co., Ltd" + 5 o="Weishi Intelligent Information Technology (Guangzhou) Co., LTD" + 6 o="iTracxing" + 7 o="Famar Fueguina S.A." + 8 o="Shenzhen iTest Technology Co.,Ltd" + 9 o="Velvac Incorporated" + A o="4D Photonics GmbH" + B o="SERCOMM PHILIPPINES INC" + C o="SiLAND Chengdu Technology Co., Ltd" + D o="KEPLER COMMUNICATIONS INC." + E o="Anysafe" +E03C1C + 0 o="Scangrip" + 1 o="Shikino High-Tech Co., Ltd." + 2 o="Hoplite Industries, Inc." + 3 o="Dewetron GmbH" + 4 o="Earable Inc." + 5 o="Semic Inc." + 6 o="GhinF Digital information technology (hangzhou) Co., Ltd" + 7 o="Tap Home, s.r.o." + 8 o="Jiangsu Riying Electronics Co.,Ltd." + 9 o="Ocamar Technologies (Shanghai) Co.,Ltd." + A o="MELAG Medizintechnik GmbH & Co. KG" + B o="Hangzhou Uni-Ubi Co.,Ltd." + C o="Meferi Technologies Co.,Ltd." + D o="Sprintshield d.o.o." + E o="Annapurna labs" E05A9F 0 o="Annapurna labs" 1 o="AITEC SYSTEM CO., LTD." @@ -24942,7 +32486,7 @@ E05A9F 5 o="TRYEN" 6 o="Fibrain" 7 o="OMB Guitars LLC" - 8 o="Fujian Newland Auto-ID Tech. Co.,Ltd." + 8 o="Fujian Newland Auto-ID Tech. Co,.Ltd." 9 o="Gemalto %Document Readers%" A o="Contemporary Amperex Technology Co., Limited" B o="Shenzhen Rongan Networks Technology Co.,Ltd" @@ -25003,7 +32547,7 @@ E4956E 2 o="Shanghai Hoping Technology Co., Ltd." 3 o="Shanghai DGE Co., Ltd" 4 o="Guang Lian Zhi Tong Technology Limited" - 5 o="ELAN SYSTEMS" + 5 o="Bucher Automation Budapest" 6 o="SHENZHEN JOYETECH ELECTRONICS CO., LTD." 7 o="NationalchipKorea" 8 o="PT.MLWTelecom" @@ -25028,6 +32572,38 @@ E81863 C o="Shenzhen Hipad Telecommunication Technology Co.,Ltd" D o="DIGITAL DYNAMICS, INC." E o="Acopian Technical Company" +E86CC7 + 0 o="Trapeze Switzerland GmbH" + 1 o="ASSA ABLOY(GuangZhou) Smart Technology Co., Ltd" + 2 o="Xirgo Technologies LLC" + 3 o="Shenzhen Yibaifen Industrial Co.,Ltd." + 4 o="Koal Software Co., Ltd" + 5 o="Shenzhen Rongda Computer Co.,Ltd" + 6 o="KLAB" + 7 o="Huaqin Technology Co.,Ltd." + 8 o="Lighthouse EIP" + 9 o="Hangzhou Lanxum Security Technology Co., Ltd" + A o="CoxSpace" + B o="MORNSUN Guangzhou Science & Technology Co., Ltd." + C o="Limited Liability Company M.S.Korp" + D o="z-max mediasolution" + E o="Annapurna labs" +E87829 + 0 o="Tanz Security Technology Ltd." + 1 o="Shenzhen Jointelli Technologies Co.,Ltd" + 2 o="Galcon" + 3 o="Electronic Controlled Systems, Inc." + 4 o="Annapurna labs" + 5 o="SHEN ZHEN SKYSI WISDOM TECHNOLOGY CO.,LTD." + 6 o="AXING AG" + 7 o="FAIOT Co., LTD" + 8 o="JVISMall CO.,LTD" + 9 o="Ryu Tech. LTD" + A o="METZ CONNECT GmbH" + B o="Ampner Ltd" + C o="FairPhone B.V." + D o="Bernd Walter Computer Technology" + E o="Solos Technology Limited" E8B470 0 o="DongGuan Ramaxel Memory Technology" 1 o="Autocom Diagnostic Partner AB" @@ -25044,6 +32620,85 @@ E8B470 C o="Anduril Industries" D o="Medica Corporation" E o="UNICACCES GROUPE" +E8F6D7 + 0 o="Mono Technologies Inc." + 1 o="PRECISION FUKUHARA WORKS,LTD." + 2 o="Jinan Ruolin Video Technology Co., Ltd" + 3 o="ZIEHL-ABEGG SE" + 4 o="Xiphos Systems Corp." + 5 o="emicrotec" + 6 o="Massive Beams GmbH" + 7 o="CowManager" + 8 o="INTEGRA Metering AG" + 9 o="Hefei BOE Vision-electronic Technology Co.,Ltd." + A o="Ivostud GmbH" + B o="GUANGZHOU PANYU JUDA CAR AUDIO EQUIPMENT CO.,LTD" + C o="clover Co,.Ltd" + D o="ZhuoPuCheng (Shenzhen) Technology.Co.,Ltd." + E o="Emergent Solutions Inc." +E8FF1E + 1 o="hard & softWERK GmbH" + 2 o="Minami Medical Technology (Guangdong) Co.,Ltd" + 3 o="LLP %NIC %FORS%" + 4 o="HMN Technologies Co., Ltd" + 5 o="CARVE VIET NAM TECHNOLOGY COMPANY LIMITED" + 6 o="Partizan Security s.r.o." + 7 o="NRT Technology Taiwan Co., Ltd." + 8 o="Annapurna labs" + 9 o="Shenzhen Justinfo Technology Co.,Ltd" + A o="Geotab Inc." + B o="Melisono AB" + C o="Fracarro Radioindustrie Srl" + D o="Shenzhen AZW Technology Co., Ltd." + E o="Shenzhen kstar Science & Technology Co., Ltd" +EC5BCD + 0 o="DONG GUAN YUNG FU ELECTRONICS LTD." + 1 o="Ingersoll Rand" + 2 o="Sfera Labs S.r.l." + 3 o="Hefei BOE Vision-electronic Technology Co.,Ltd." + 4 o="Green Solutions (Chengdu) Co., Ltd" + 5 o="Shenzhen Qunfang Technology Co., LTD." + 6 o="Jiangsu Fushi Electronic Technology Co., Ltd" + 7 o="Annapurna labs" + 8 o="Doosan Bobcat North America" + 9 o="C&D Technologies" + A o="CareSix Inc." + B o="StepOver GmbH" + C o="Quicklert Inc" + D o="ASHIDA Electronics Pvt. Ltd" + E o="Autel Robotics USA LLC" +EC74CD + 0 o="Nexxus Networks Pte Ltd" + 1 o="Shanghai Kanghai Information System CO.,LTD." + 2 o="L.T.H. Electronics Limited" + 3 o="iSolution Technologies Co.,Ltd." + 4 o="Vialis BV" + 5 o="Standard Backhaul Communications" + 6 o="Platypus" + 7 o="KONČAR - Electrical Engineering Institute Ltd." + 8 o="TRANS AUDIO VIDEO SRL" + 9 o="Sound Health Systems" + A o="Bosch (zhuhai) Security Systems Company, Ltd." + B o="Hitachi Rail GTS Austria GmbH" + C o="Smart Data (Shenzhen) Intelligent System Co., Ltd." + D o="Shenzhen Ting-Shine Technology Co., Ltd." + E o="Shenzhen Eweat Technology Co.,Ltd" +EC9A0C + 0 o="SHENZHEN HEXINDA SUPPLY CHAIN MANAGEMENT CO.LTD" + 1 o="Shenzhen Naxiang Technology Co., Ltd" + 2 o="Shenzhen Yitoa Digital Technology Co., Ltd." + 3 o="Protect Animals with Satellites LLC" + 4 o="Hangzhou Saicom Communication Technology Co., LTD" + 5 o="SmartRay GmbH" + 6 o="Seek Thermal" + 7 o="Jiangsu Maodu Yunke Medical Technology Co., Ltd" + 8 o="NXC Systems LLC" + 9 o="TIANJIN MEITENG TECHNOLOGY CO.,LTD" + A o="Fancom" + B o="ReVibe Energy AB" + C o="Fujian Zhongliang Zhihui Technology Co., Ltd" + D o="ViGEM GmbH" + E o="Risuntek Inc" EC9F0D 0 o="Hesai Photonics Technology Co., Ltd" 1 o="Simula Technology Inc." @@ -25060,6 +32715,54 @@ EC9F0D C o="Sarcos Corp" D o="SKS Control Oy" E o="MAX Technologies" +ECA7B1 + 0 o="Nanjing Xinyun Technology Co., Ltd" + 1 o="AKOM Technologies Private Limited" + 2 o="Annapurna labs" + 3 o="Strongbyte Solutions Limited" + 4 o="Sichuan Ruiting Zhihui Technology Co., Ltd" + 5 o="CHICONY POWER TECHNOLOGY (DONGGUAN) CO,. LTD." + 6 o="Digital Audio Labs" + 7 o="Shenzhen Lanroot Technology Co., Ltd" + 8 o="Shenzhen zhst video technology co.,ltd" + 9 o="Print International Limited" + A o="Annapurna labs" + B o="Shenzhen Adreamer Elite Co.,Ltd" + C o="Hiromokuten Co.,Ltd." + D o="USU TELECOM INDIA PRIVATE LIMITED" + E o="Artisight, Inc." +F01204 + 0 o="Annapurna labs" + 1 o="MetaX" + 2 o="WiSig Networks Private Limited" + 3 o="APCON, Inc." + 4 o="Dongguan Onyx Electronics Co., Ltd" + 5 o="Maple Systems. Inc." + 6 o="Shenzhen FENVI Technology co.,ltd" + 7 o="Autani LLC" + 8 o="Annapurna labs" + 9 o="FLEXTRONICS TECH I PVT LTD" + A o="Astrome Technoogies Pvt Ltd" + B o="HoneyComm IoT Technology(Shenzhen)Co.,Ltd." + C o="FairPhone B.V." + D o="LightShark" + E o="Tianjin Tianchuan Electric Drive Co.,Ltd." +F0221D + 0 o="THANHBINH COMPANY - E111 FACTORY" + 1 o="Dr. Eberl MBE Komponenten GmbH" + 2 o="Chonel Industry?shanghai?Co., Ltd." + 3 o="ShenZhen Shizao Electronic Technology" + 4 o="Synergies Intelligent Systems Inc." + 5 o="Shenzhen SuyuVisonTechnology Co.,Ltd" + 6 o="Vcognition Technologies Inc." + 7 o="Bulat Co., Limited" + 8 o="Shenzhen Glazero Technology Co., Ltd." + 9 o="Shanghai Gfanxvision Intelligent Technology Co.Ltd" + A o="Hangzhou Gold Electronic Equipment Co., Ltd" + B o="LK Systems AB" + C o="Estone Technology LTD" + D o="Schleissheimer Soft- und Hardwareentwicklung GmbH" + E o="oToBrite Electronics, Inc." F023B9 0 o="Aquametro AG" 1 o="Ubiant" @@ -25074,7 +32777,40 @@ F023B9 A o="Annapurna labs" B o="Q Core Medical Ltd" C o="Shenzhen Lachesis Mhealth Co., Ltd." + D o="Shenyang Ali Technology Company Limited" E o="Domotz Ltd" +F02A2B + 0 o="Merlin Security Inc." + 1 o="Tobi Tribe Inc." + 2 o="Shanghai Armour Technology Co., Ltd." + 3 o="Frigotel SRL" + 4 o="Onclave Networks" + 5 o="Agile Sports Technologies, dba Hudl" + 6 o="Shenzhen ORVIBO Technology Co., Ltd." + 7 o="Protronix s.r.o." + 8 o="Tenways Engineering Service Ltd" + 9 o="ZiGong Pengcheng Technology Co.,Ltd" + A o="Navigil Ltd" + B o="EL.MO. spa" + C o="Comexio GmbH" + D o="Definitely Win Corp.,Ltd." + E o="Shenzhen CUCO Technology Co., Ltd" +F040AF + 0 o="Colorlight Cloud Tech Ltd" + 1 o="Nuro.ai" + 2 o="Actia Nordic AB" + 3 o="Flextronics Technologies India Private Limited" + 4 o="ROBOX SG PTE. LTD." + 5 o="Smart Gadgets Global LLC" + 6 o="Nepean Networks Pty Ltd" + 7 o="Unionbell Technologies Limited" + 8 o="TargaSystem S.r.L." + 9 o="Raspberry Pi (Trading) Ltd" + A o="SIEMENS AG" + B o="Shenzhen BitFantasy Technology Co., Ltd" + C o="Rayve Innovation Corp" + D o="Proemion GmbH" + E o="Shanghai Kanghai Information System CO.,LTD." F041C8 0 o="LINPA ACOUSTIC TECHNOLOGY CO.,LTD" 1 o="DongGuan Siyoto Electronics Co., Ltd" @@ -25139,6 +32875,53 @@ F40E11 C o="NIHON MEGA LOGIC CO.,LTD." D o="DXG Technology Corp." E o="Elektronika Naglic d.o.o." +F41A79 + 0 o="MetCom Solutions GmbH" + 1 o="Jide Car Rastreamento e Monitoramento LTDA" + 2 o="HCTEK Co.,Ltd." + 3 o="SHENZHEN XIANXIN ELECTRONICS CO., LTD." + 4 o="Guangdong Sygole Intelligent Technology Co.,Ltd" + 5 o="Meta-Bounds Inc." + 6 o="eddylab GmbH" + 7 o="Avedis Zildjian Company" + 8 o="Annapurna labs" + 9 o="TERZ Industrial Electronics GmbH" + A o="BIRTECH TECHNOLOGY" + B o="Shenzhen High Speed Technology Co., Ltd" + C o="TA Technology (Shanghai) Co., Ltd" + D o="Directed Electronics OE Pty Ltd" + E o="Shenzhen Yizhao Innovation Technology Co., Ltd." +F42055 + 0 o="AsicFlag" + 1 o="Sichuan Gengyuan Technology Co.,Ltd" + 2 o="Elehear inc." + 3 o="Annapurna labs" + 4 o="Pulsotronic-Anlagentechnik GmbH" + 5 o="Proqualit Telecom LTDA" + 6 o="Shenzhen GuangXu Electronic Technology Co.,Ltd." + 7 o="Beyond Laser Systems LLC" + 8 o="Huzhou Luxshare Precision Industry Co.LTD" + 9 o="Lens Technology (Xiangtan) Co.,Ltd" + A o="Shanghai Kanghai Information System CO.,LTD." + B o="Synaps Technology S.r.l." + C o="Shenzhen Guangjian Technology Co.,Ltd" + D o="Wuxi Sunning Smart Devices Co.,Ltd" + E o="Shenzhen Keyking Technology Limited" +F43AFA + 0 o="AugustDevices India Private limited" + 1 o="Dspread Technology (Beijing) Inc." + 3 o="Jiaxing Haishijiaan Smartcity Technology CO., LTD." + 4 o="Aifrutech Co.,LTD" + 5 o="Grayeye IT Systems Private Limited" + 6 o="sungshinsolution" + 7 o="Valeo Schalter und Sensoren GmbH" + 8 o="Metrasens Limited" + 9 o="Hemant Electronics" + A o="Annapurna labs" + B o="CETC Suntai Information Technology Co., Ltd." + C o="Lenovo India Private Limited" + D o="Houngfu Technology" + E o="WAKARI SOLUTIONS,S.L." F469D5 0 o="Mossman Limited" 1 o="Junchuang (Xiamen) Automation Technology Co.,Ltd" @@ -25148,12 +32931,29 @@ F469D5 5 o="Hefei STAROT Technology Co.,Ltd" 6 o="TianJin KCHT Information Technology Co., Ltd." 7 o="Rosco, Inc" + 8 o="WiFi Nation Ltd" 9 o="Terminus (Shanghai) Technology Co.,Ltd." A o="ShenZhenShi EVADA technology Co.,Ltd" B o="Konntek Inc" C o="Huaqin Telecom Technology Co.,Ltd." D o="Nantong ZYDZ Electronic.,Co.Ltd" E o="ORtek Technology, Inc." +F4700C + 0 o="HYUNSUNG CONVERGENCE" + 1 o="Shenzhen Excelland Technology Co., Ltd." + 2 o="Beijing ASU Tech Co., Ltd." + 3 o="Union Source Technology(HK)LTD" + 4 o="Shenzhen Anycon Electronics Technology Co.,Ltd" + 5 o="Shenzhen Lidaxun Digital Technology Co., LTD" + 6 o="Jinan USR IOT Technology Limited" + 7 o="Changde xsound lnnovation technologies co;ltd." + 8 o="Shenzhen Focuscom Communication Technology Co.,Ltd." + 9 o="Annapurna labs" + A o="Jinan Huake Electrical Device Co., Ltd." + B o="Shanghai Risingpo Electronics CO.,LTD" + C o="G.S.D GROUP INC." + D o="Freeus LLC" + E o="Shenzhen WeProTalk Technology Co., Ltd." F490CB 0 o="Epitel, Inc." 1 o="DELEM BV" @@ -25165,10 +32965,43 @@ F490CB 7 o="TEQ SA" 8 o="Beijing Penslink Co., Ltd." 9 o="Fractyl Labs" + A o="Fend Incorporated" B o="A-dec Inc." C o="Cheetah Medical" D o="Simavita (Aust) Pty Ltd" E o="RSAE Labs Inc" +F4979D + 0 o="Tardis Technology" + 1 o="Frame the space" + 2 o="Infinite X Co., Ltd." + 3 o="Equinox Power" + 4 o="MERRY ELECTRONICS CO., LTD." + 5 o="Warner Technology Corp" + 6 o="camnex innovation pvt ltd" + 7 o="LUXSHARE - ICT(NGHE AN) LIMITED" + 8 o="Smart Access Designs, LLC" + 9 o="Beijing Jiaxin Technology Co., Ltd" + A o="MARKT Co., Ltd" + B o="Kaiware (Shenzhen) Technologies Co.,Ltd" + C o="Lab241 Co.,Ltd." + D o="Huitec printer solution co.," + E o="Teenage Engineering AB" +F4A454 + 0 o="NKT Photonics A/S" + 1 o="PT Telkom Indonesia" + 2 o="TRI WORKS" + 3 o="Chongqing Hengxun Liansheng Industrial Co.,Ltd" + 4 o="Earshots" + 5 o="Denshijiki Industry Co.,Ltd" + 6 o="Introl Design" + 7 o="Advanced Mechanical Technology, Inc. d/b/a AMTI" + 8 o="Shenzhen Cudy Technology Co., Ltd." + 9 o="Lonton infomation tech Ltd., Co" + A o="Annapurna labs" + B o="Graco Inc." + C o="Integrated Dynamics Engineering GmbH" + D o="SAEL SRL" + E o="Care Bloom, LLC" F80278 0 o="Digatron Power Electronics GmbH" 1 o="Reason Tecnologia SA" @@ -25201,6 +33034,38 @@ F81D78 C o="SHENZHUOYUE TECHNOLOGY.,LTD" D o="Tofino" E o="GUANGDONG ENOK COMMUNICATION CO., LTD." +F82BE6 + 0 o="ViewSonic Corp" + 1 o="Coastal Source" + 2 o="Flextronics Computing(SuZhou)Co.,LTD." + 3 o="Brinno Incorporated" + 4 o="Wistron Corporation" + 5 o="VNT electronics s.r.o." + 6 o="Wayren OÜ" + 7 o="S-BOND TECHNOLOGY CORP." + 8 o="Hitek Electronics Co.,Ltd" + 9 o="Annapurna labs" + A o="TECHWIN SOLUTIONS PVT LTD" + B o="Shanghai Kanghai Information System CO.,LTD." + C o="MaiaEdge, Inc." + D o="ATHEER CONNECTIVITY" + E o="Suzhou Etag-Technology Corporation" +F87A39 + 0 o="HANGZHOU YONGXIE TECHNOLOGY CO., LTD" + 1 o="Hangzhou Jiemu Electronic Technology Co.,Ltd" + 2 o="Total-one TECHNOLOGY CO., LTD." + 3 o="Overview Limited" + 4 o="Zsystem technology co.," + 5 o="tatwah SA" + 6 o="Annapurna labs" + 7 o="Shenzhen Electron Technology Co., LTD." + 8 o="Beijing Zhongyuan Yishang Technology Co.,LTD" + 9 o="Shenzhenshilemaikejiyouxiangongsi" + A o="FELTRIN INDUSTRIA E COMERCIO" + B o="FuyanshengElectronicFujian Co.ltd" + C o="Flextronics International Kft" + D o="Xiamen Tonmind Technology Co.,Ltd" + E o="Cognosos, Inc." F88A3C 0 o="ART SPA" 1 o="Carefree of Colorado" @@ -25233,6 +33098,38 @@ F8B568 C o="3SI Security Systems, Inc" D o="Solarius" E o="ZAO "RADIUS Avtomatika"" +FC6179 + 0 o="Zhuhai Anjubao Electronics Technology Co., Ltd." + 1 o="Signalinks Communication Technology Co., Ltd" + 2 o="Shenzhen Shenshui Electronic Commerce Co.,Ltd" + 3 o="EchoStar Mobile" + 4 o="CHOEUNENG" + 5 o="Qisda Corporation" + 6 o="Hangzhou LiDe Communication Co.,Ltd" + 7 o="Kvaliteta Systems and Solutions Private Limited" + 8 o="Annapurna labs" + 9 o="MACH SYSTEMS s.r.o." + A o="Shenzhen Dptek Technology Co., Ltd." + B o="Fulian Precision Electronics(Tianjin) Co., Ltd" + C o="Shenzhen Xmitech Electronic Co.,Ltd" + D o="Int'Act Pty Ltd" + E o="ACCO Brands USA LLC" +FCA2DF + 0 o="Solink Corporation" + 1 o="SpacemiT" + 2 o="PDI COMMUNICATION SYSTEMS INC." + 3 o="PAVONE SISTEMI SRL" + 4 o="Hangzhou Laizhi Technology Co.,Ltd" + 5 o="Annapurna labs" + 6 o="shenzhen zovoton electronic co.,ltd" + 7 o="Flexmedia ind e com" + 8 o="boger electronics gmbh" + 9 o="Beijing KSL Electromechanical Technology Development Co.,Ltd" + A o="BPL MEDICAL TECHNOLOGIES PRIVATE LIMITED" + B o="Lumentum" + C o="TiGHT AV" + D o="MBio Diagnostics, Inc." + E o="Orion Power Systems, Inc." FCA47A 0 o="Broadcom Inc." 1 o="Shenzhen VMAX New Energy Co., Ltd." @@ -25249,6 +33146,22 @@ FCA47A C o="Shenzhen ALFEYE Technology CO.,Ltd" D o="SHENZHEN KUKU TECHNOLOGY CO.,LTD" E o="Hefei Feier Smart Science&Technology Co. Ltd" +FCCD2F + 0 o="Ningbo Bull Digital Technology Co., LTD" + 1 o="Siren Care(Shanghai) information and technology company" + 2 o="Loupedeck Oy" + 3 o="Xmitech Technology Co., Limited" + 4 o="Genitek Engineering sprl" + 5 o="QCTEK CO.,LTD." + 6 o="Annapurna labs" + 7 o="Suzhou lehui display co.,ltd" + 8 o="Asesorias y Servicios Innovaxxion SPA" + 9 o="Aroma Retail" + A o="Scopus International Pvt. Ltd." + B o="HEAD-DIRECT (KUNSHAN) Co. Ltd" + C o="Spedos ADS a.s." + D o="Shenzhen Smartbyte Technology Co., Ltd." + E o="Eltek brojila d.o.o." FCD2B6 0 o="CG POWER AND INDUSTRIAL SOLUTIONS LTD" 1 o="LINK (FAR-EAST) CORPORATION" @@ -25265,3 +33178,19 @@ FCD2B6 C o="Silicon (Shenzhen) Electronic Technology Co.,Ltd." D o="Bee Smart(Changzhou) Information Technology Co., Ltd" E o="Univer S.p.A." +FCE498 + 0 o="NTCSOFT" + 1 o="QuEL, Inc." + 2 o="ART Finex Co.,Ltd." + 3 o="Shanghai Kanghai Information System CO.,LTD." + 4 o="TScale Electronics Mfg. (Kunshan) Co., Ltd" + 5 o="SM Instruments" + 6 o="Videonetics Technology Private Limited" + 7 o="E Haute Intelligent Technology Co., Ltd" + 8 o="Changzhou Leading Weighing Technology Co., Ltd" + 9 o="AVCON Information Technology Co.,Ltd." + A o="SATEL Ltd" + B o="GIGA Copper Networks GmbH" + C o="Siretta Ltd" + D o="Infinity Electronics Ltd" + E o="TIH Microelectronics Technology Co. Ltd." diff --git a/stdnum/pe/__init__.py b/stdnum/pe/__init__.py index 80bbd529..d058573a 100644 --- a/stdnum/pe/__init__.py +++ b/stdnum/pe/__init__.py @@ -14,9 +14,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Peruvian numbers.""" + +from __future__ import annotations + from stdnum.pe import ruc as vat # noqa: F401 diff --git a/stdnum/pe/cui.py b/stdnum/pe/cui.py index d9c37eac..8ae57f28 100644 --- a/stdnum/pe/cui.py +++ b/stdnum/pe/cui.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CUI (Cédula Única de Identidad, Peruvian identity number). @@ -42,17 +40,19 @@ '10101174102' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').strip().upper() -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the possible check digits for the CUI.""" number = compact(number) weights = (3, 2, 7, 6, 5, 4, 3, 2) @@ -60,14 +60,14 @@ def calc_check_digits(number): return '65432110987'[c] + 'KJIHGFEDCBA'[c] -def to_ruc(number): +def to_ruc(number: str) -> str: """Convert the number to a valid RUC.""" from stdnum.pe import ruc number = '10' + compact(number)[:8] return number + ruc.calc_check_digit(number) -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid CUI. This checks the length, formatting and check digit.""" number = compact(number) @@ -80,7 +80,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid CUI. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/pe/ruc.py b/stdnum/pe/ruc.py index b4ad3d58..38772998 100644 --- a/stdnum/pe/ruc.py +++ b/stdnum/pe/ruc.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RUC (Registro Único de Contribuyentes, Peruvian company tax number). @@ -27,7 +25,7 @@ More information: -* http://www.sunat.gob.pe/legislacion/ruc/ +* https://www.sunat.gob.pe/legislacion/ruc/ * https://consultarelruc.pe/ >>> validate('20512333797') @@ -40,23 +38,25 @@ '05414828' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (5, 4, 3, 2, 7, 6, 5, 4, 3, 2) return str((11 - sum(w * int(n) for w, n in zip(weights, number)) % 11) % 10) -def to_dni(number): +def to_dni(number: str) -> str: """Return the DNI (CUI) part of the number for natural persons.""" number = validate(number) if not number.startswith('10'): @@ -64,7 +64,7 @@ def to_dni(number): return number[2:10] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid RUC. This checks the length, formatting and check digit.""" number = compact(number) @@ -79,7 +79,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid RUC. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/pk/__init__.py b/stdnum/pk/__init__.py new file mode 100644 index 00000000..be33ad07 --- /dev/null +++ b/stdnum/pk/__init__.py @@ -0,0 +1,19 @@ +# __init__.py - collection of Pakistani numbers +# coding: utf-8 +# +# Copyright (C) 2022 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Pakistani numbers.""" diff --git a/stdnum/pk/cnic.py b/stdnum/pk/cnic.py new file mode 100644 index 00000000..8bab30cf --- /dev/null +++ b/stdnum/pk/cnic.py @@ -0,0 +1,113 @@ +# cnic.py - functions for handling Pakistani CNIC numbers +# coding: utf-8 +# +# Copyright (C) 2022 Syed Haseeb Shah +# Copyright (C) 2022 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""CNIC number (Pakistani Computerised National Identity Card number). + +The CNIC (Computerised National Identity Card, قومی شناختی کارڈ) or SNIC +(Smart National Identity Card) is issued by by Pakistan's NADRA (National +Database and Registration Authority) to citizens of 18 years or older. + +The number consists of 13 digits and encodes the person's locality (5 +digits), followed by 7 digit serial number an a single digit indicating +gender. + +More Information: + +* https://en.wikipedia.org/wiki/CNIC_(Pakistan) +* https://www.nadra.gov.pk/identity/identity-cnic/ + +>>> validate('34201-0891231-8') +'3420108912318' +>>> validate('42201-0397640-8') +'4220103976408' +>>> get_gender('42201-0397640-8') +'F' +>>> get_province('42201-0397640-8') +'Sindh' +>>> format('3420108912318') +'34201-0891231-8' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, '-').strip() + + +def get_gender(number: str) -> str | None: + """Get the person's birth gender ('M' or 'F').""" + number = compact(number) + if number[-1] in '13579': + return 'M' + elif number[-1] in '2468': + return 'F' + return None + + +# Valid Province IDs +PROVINCES = { + '1': 'Khyber Pakhtunkhwa', + '2': 'FATA', + '3': 'Punjab', + '4': 'Sindh', + '5': 'Balochistan', + '6': 'Islamabad', + '7': 'Gilgit-Baltistan', +} + + +def get_province(number: str) -> str | None: + """Get the person's province.""" + number = compact(number) + return PROVINCES.get(number[0]) + + +def validate(number: str) -> str: + """Check if the number is a valid CNIC. This checks the length, formatting + and some digits.""" + number = compact(number) + if not isdigits(number): + raise InvalidFormat() + if len(number) != 13: + raise InvalidLength() + if not get_gender(number): + raise InvalidComponent() + if not get_province(number): + raise InvalidComponent() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid CNIC.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '-'.join((number[:5], number[5:12], number[12:])) diff --git a/stdnum/pl/__init__.py b/stdnum/pl/__init__.py index 1b5e5dbf..c004744f 100644 --- a/stdnum/pl/__init__.py +++ b/stdnum/pl/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Polish numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.pl import nip as vat # noqa: F401 diff --git a/stdnum/pl/nip.py b/stdnum/pl/nip.py index 2ff1c0f8..bfc7506e 100644 --- a/stdnum/pl/nip.py +++ b/stdnum/pl/nip.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIP (Numer Identyfikacji Podatkowej, Polish VAT number). @@ -32,11 +30,13 @@ '856-734-62-15' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -45,13 +45,13 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" weights = (6, 5, 7, 2, 3, 4, 5, 6, 7, -1) return sum(w * int(n) for w, n in zip(weights, number)) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -64,7 +64,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) @@ -72,7 +72,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join((number[0:3], number[3:6], number[6:8], number[8:])) diff --git a/stdnum/pl/pesel.py b/stdnum/pl/pesel.py index 370082e3..38ff544e 100644 --- a/stdnum/pl/pesel.py +++ b/stdnum/pl/pesel.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PESEL (Polish national identification number). @@ -47,19 +45,21 @@ 'F' """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip() -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) year = int(number[0:2]) @@ -79,7 +79,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the person's birth gender ('M' or 'F').""" number = compact(number) if number[9] in '02468': # even @@ -88,7 +88,7 @@ def get_gender(number): return 'M' -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for organisations. The number passed should not have the check digit included.""" weights = (1, 3, 7, 9, 1, 3, 7, 9, 1, 3) @@ -96,7 +96,7 @@ def calc_check_digit(number): return str((10 - check) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid national identification number. This checks the length, formatting and check digit.""" number = compact(number) @@ -110,7 +110,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid national identification number.""" try: return bool(validate(number)) diff --git a/stdnum/pl/regon.py b/stdnum/pl/regon.py index 42f3f6a6..927ea322 100644 --- a/stdnum/pl/regon.py +++ b/stdnum/pl/regon.py @@ -1,4 +1,4 @@ -# pesel.py - functions for handling REGON numbers +# regon.py - functions for handling REGON numbers # coding: utf-8 # # Copyright (C) 2015 Dariusz Choruzy @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """REGON (Rejestr Gospodarki Narodowej, Polish register of economic units). @@ -50,28 +48,30 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for organisations. The number passed should not have the check digit included.""" if len(number) == 8: - weights = (8, 9, 2, 3, 4, 5, 6, 7) + weights = [8, 9, 2, 3, 4, 5, 6, 7] else: - weights = (2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8) + weights = [2, 4, 8, 5, 0, 9, 7, 3, 6, 1, 2, 4, 8] check = sum(w * int(n) for w, n in zip(weights, number)) return str(check % 11 % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid REGON number. This checks the length, formatting and check digit.""" number = compact(number) @@ -86,7 +86,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid REGON number.""" try: return bool(validate(number)) diff --git a/stdnum/pt/__init__.py b/stdnum/pt/__init__.py index 70566544..98c3e548 100644 --- a/stdnum/pt/__init__.py +++ b/stdnum/pt/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Portuguese numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.pt import nif as vat # noqa: F401 diff --git a/stdnum/pt/cc.py b/stdnum/pt/cc.py new file mode 100644 index 00000000..f98f40eb --- /dev/null +++ b/stdnum/pt/cc.py @@ -0,0 +1,93 @@ +# cc.py - functions for handling Portuguese Identity numbers +# coding: utf-8 +# +# Copyright (C) 2021 David Vaz +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""CC (Número de Cartão de Cidadão, Portuguese Identity number). + +The Portuguese Identity Number is alphanumeric and consists of the numeric +Número de Identificação Civil, a two-letter version and a check digit. + +More information: + +* https://pt.wikipedia.org/wiki/Cartão_de_cidadão +* https://www.autenticacao.gov.pt/documents/20126/115760/Validação+de+Número+de+Documento+do+Cartão+de+Cidadão.pdf + +>>> validate('00000000 0 ZZ4') +'000000000ZZ4' +>>> validate('00000000 A ZZ4') # invalid format +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> validate('00000000 0 ZZ3') # invalid check digits +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('000000000ZZ4') +'00000000 0 ZZ4' +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean + + +_cc_re = re.compile(r'^\d*[A-Z0-9]{2}\d$') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + number = clean(number, ' ').upper().strip() + return number + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit for the number.""" + def cutoff(x: int) -> int: + return x - 9 if x > 9 else x + alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' + s = sum( + cutoff(alphabet.index(n) * 2) if i % 2 == 0 else alphabet.index(n) + for i, n in enumerate(number[::-1])) + return str((10 - s) % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid cartao de cidadao number.""" + number = compact(number) + if not _cc_re.match(number): + raise InvalidFormat() + if calc_check_digit(number[:-1]) != number[-1]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid cartao de cidadao number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return ' '.join([number[:-4], number[-4], number[-3:]]) diff --git a/stdnum/pt/nif.py b/stdnum/pt/nif.py index 77a2808e..463597e1 100644 --- a/stdnum/pt/nif.py +++ b/stdnum/pt/nif.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIF (Número de identificação fiscal, Portuguese VAT number). @@ -32,11 +30,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.').upper().strip() @@ -45,14 +45,14 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" s = sum((9 - i) * int(n) for i, n in enumerate(number)) return str((11 - s) % 11 % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -65,7 +65,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/py.typed b/stdnum/py.typed new file mode 100644 index 00000000..e69de29b diff --git a/stdnum/py/__init__.py b/stdnum/py/__init__.py index b7916f73..137f3b2b 100644 --- a/stdnum/py/__init__.py +++ b/stdnum/py/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Paraguayan numbers.""" +from __future__ import annotations + # provide aliases from stdnum.py import ruc as vat # noqa: F401 diff --git a/stdnum/py/ruc.py b/stdnum/py/ruc.py index 0870b660..ee0bad84 100644 --- a/stdnum/py/ruc.py +++ b/stdnum/py/ruc.py @@ -1,4 +1,4 @@ -# rut.py - functions for handling Paraguay RUC numbers +# ruc.py - functions for handling Paraguay RUC numbers # coding: utf-8 # # Copyright (C) 2019 Leandro Regueiro @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RUC number (Registro Único de Contribuyentes, Paraguay tax number). @@ -50,11 +48,13 @@ '80000035-8' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -63,7 +63,7 @@ def compact(number): return clean(number, ' -').upper().strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included. @@ -72,7 +72,7 @@ def calc_check_digit(number): return str((-s % 11) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Paraguay RUC number. This checks the length, formatting and check digit. @@ -87,7 +87,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Paraguay RUC number.""" try: return bool(validate(number)) @@ -95,7 +95,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[:-1], number[-1]]) diff --git a/stdnum/ro/__init__.py b/stdnum/ro/__init__.py index b0ae7a29..2ef8c04d 100644 --- a/stdnum/ro/__init__.py +++ b/stdnum/ro/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Romanian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.ro import cf as vat # noqa: F401 diff --git a/stdnum/ro/cf.py b/stdnum/ro/cf.py index dbede727..918df30a 100644 --- a/stdnum/ro/cf.py +++ b/stdnum/ro/cf.py @@ -1,7 +1,7 @@ # cf.py - functions for handling Romanian CF (VAT) numbers # coding: utf-8 # -# Copyright (C) 2012-2015 Arthur de Jong +# Copyright (C) 2012-2023 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,65 +14,55 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CF (Cod de înregistrare în scopuri de TVA, Romanian VAT number). The Romanian CF is used for VAT purposes and can be from 2 to 10 digits long. ->>> validate('RO 185 472 90') +>>> validate('RO 185 472 90') # VAT CUI/CIF +'RO18547290' +>>> validate('185 472 90') # non-VAT CUI/CIF '18547290' ->>> validate('185 472 91') -Traceback (most recent call last): - ... -InvalidChecksum: ... ->>> validate('1630615123457') # personal code +>>> validate('1630615123457') # CNP '1630615123457' """ +from __future__ import annotations + from stdnum.exceptions import * -from stdnum.ro import cnp -from stdnum.util import clean, isdigits +from stdnum.ro import cnp, cui +from stdnum.util import clean -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" - number = clean(number, ' -').upper().strip() - if number.startswith('RO'): - number = number[2:] - return number + return clean(number, ' -').upper().strip() -def calc_check_digit(number): - """Calculate the check digit for organisations. The number passed - should not have the check digit included.""" - weights = (7, 5, 3, 2, 1, 7, 5, 3, 2) - number = (9 - len(number)) * '0' + number - check = 10 * sum(w * int(n) for w, n in zip(weights, number)) - return str(check % 11 % 10) +# for backwards compatibility +calc_check_digit = cui.calc_check_digit -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) - if not isdigits(number) or number[0] == '0': - raise InvalidFormat() - if len(number) == 13: + cnumber = number + if cnumber.startswith('RO'): + cnumber = cnumber[2:] + if len(cnumber) == 13: # apparently a CNP can also be used (however, not all sources agree) - cnp.validate(number) - elif 2 <= len(number) <= 10: - if calc_check_digit(number[:-1]) != number[-1]: - raise InvalidChecksum() + cnp.validate(cnumber) + elif 2 <= len(cnumber) <= 10: + cui.validate(number) else: raise InvalidLength() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/ro/cnp.py b/stdnum/ro/cnp.py index 9247c9ab..80edcf92 100644 --- a/stdnum/ro/cnp.py +++ b/stdnum/ro/cnp.py @@ -1,7 +1,7 @@ # cnp.py - functions for handling Romanian CNP numbers # coding: utf-8 # -# Copyright (C) 2012-2020 Arthur de Jong +# Copyright (C) 2012-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """CNP (Cod Numeric Personal, Romanian Numerical Personal Code). @@ -26,9 +24,12 @@ More information: * https://ro.wikipedia.org/wiki/Cod_numeric_personal +* https://github.com/vimishor/cnp-spec/blob/master/spec.md >>> validate('1630615123457') '1630615123457' +>>> get_county('1630615123457') +'Cluj' >>> validate('0800101221142') # invalid first digit Traceback (most recent call last): ... @@ -37,25 +38,91 @@ Traceback (most recent call last): ... InvalidComponent: ... +>>> validate('1630615993454') # invalid county +Traceback (most recent call last): + ... +InvalidComponent: ... >>> validate('1630615123458') # invalid check digit Traceback (most recent call last): ... InvalidChecksum: ... """ +from __future__ import annotations + import datetime from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +# The Romanian counties +_COUNTIES = { + '01': 'Alba', + '02': 'Arad', + '03': 'Arges', + '04': 'Bacau', + '05': 'Bihor', + '06': 'Bistrita-Nasaud', + '07': 'Botosani', + '08': 'Brasov', + '09': 'Braila', + '10': 'Buzau', + '11': 'Caras-Severin', + '12': 'Cluj', + '13': 'Constanta', + '14': 'Covasna', + '15': 'Dambovita', + '16': 'Dolj', + '17': 'Galati', + '18': 'Gorj', + '19': 'Harghita', + '20': 'Hunedoara', + '21': 'Ialomita', + '22': 'Iasi', + '23': 'Ilfov', + '24': 'Maramures', + '25': 'Mehedinti', + '26': 'Mures', + '27': 'Neamt', + '28': 'Olt', + '29': 'Prahova', + '30': 'Satu Mare', + '31': 'Salaj', + '32': 'Sibiu', + '33': 'Suceava', + '34': 'Teleorman', + '35': 'Timis', + '36': 'Tulcea', + '37': 'Vaslui', + '38': 'Valcea', + '39': 'Vrancea', + '40': 'Bucuresti', + '41': 'Bucuresti - Sector 1', + '42': 'Bucuresti - Sector 2', + '43': 'Bucuresti - Sector 3', + '44': 'Bucuresti - Sector 4', + '45': 'Bucuresti - Sector 5', + '46': 'Bucuresti - Sector 6', + '47': 'Bucuresti - Sector 7 (desfiintat)', + '48': 'Bucuresti - Sector 8 (desfiintat)', + '51': 'Calarasi', + '52': 'Giurgiu', + '70': 'Any', + '80': 'Unknown', + '81': 'Unknown', + '82': 'Unknown', + '83': 'Unknown', +} + + +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" - return clean(number, ' -').upper().strip() + return clean(number, ' -').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for personal codes.""" # note that this algorithm has not been confirmed by an independent source weights = (2, 7, 9, 1, 4, 6, 3, 5, 8, 2, 7, 9) @@ -63,7 +130,7 @@ def calc_check_digit(number): return '1' if check == 10 else str(check) -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the birth date.""" number = compact(number) centuries = { @@ -78,7 +145,15 @@ def get_birth_date(number): raise InvalidComponent() -def validate(number): +def get_county(number: str) -> str: + """Get the county name from the number""" + try: + return _COUNTIES[compact(number)[7:9]] + except KeyError: + raise InvalidComponent() + + +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -93,13 +168,13 @@ def validate(number): # check if birth date is valid get_birth_date(number) # TODO: check that the birth date is not in the future - # number[7:9] is the county, we ignore it for now, just check last digit + get_county(number) if calc_check_digit(number[:-1]) != number[-1]: raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/ro/cui.py b/stdnum/ro/cui.py new file mode 100644 index 00000000..af79f48f --- /dev/null +++ b/stdnum/ro/cui.py @@ -0,0 +1,85 @@ +# cui.py - functions for handling Romanian CUI and CIF numbers +# coding: utf-8 +# +# Copyright (C) 2012-2020 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""CUI or CIF (Codul Unic de Înregistrare, Romanian company identifier). + +The CUI (Codul Unic de Înregistrare) is assigned to companies that are +required to register with the Romanian Trade Register. The CIF (Codul de +identificare fiscală) is identical but assigned to entities that have no such +requirement. The names seem to be used interchangeably and some sources +suggest that CIF is the new name for CUI. + +This number can change under some conditions. The number can be prefixed with +RO to indicate that the entity has been registered for VAT. + +More information: + +* https://ro.wikipedia.org/wiki/Cod_de_identificare_fiscală + +>>> validate('185 472 90') +'18547290' +>>> validate('185 472 91') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('RO 185 472 90') # the RO prefix is ignored +'18547290' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + number = clean(number, ' -').upper().strip() + if number.startswith('RO'): + number = number[2:] + return number + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit.""" + weights = (7, 5, 3, 2, 1, 7, 5, 3, 2) + number = number.zfill(9) + check = 10 * sum(w * int(n) for w, n in zip(weights, number)) + return str(check % 11 % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid CUI or CIF number. This checks the length, + formatting and check digit.""" + number = compact(number) + if not isdigits(number) or number[0] == '0': + raise InvalidFormat() + if not (2 <= len(number) <= 10): + raise InvalidLength() + if calc_check_digit(number[:-1]) != number[-1]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid CUI or CIF number.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/ro/onrc.py b/stdnum/ro/onrc.py index da153e92..5467b032 100644 --- a/stdnum/ro/onrc.py +++ b/stdnum/ro/onrc.py @@ -1,8 +1,8 @@ # onrc.py - functions for handling Romanian ONRC numbers # coding: utf-8 # -# Copyright (C) 2020 Dimitrios Josef Moustos -# Copyright (C) 2020 Arthur de Jong +# Copyright (C) 2020-2024 Dimitrios Josef Moustos +# Copyright (C) 2020-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,16 +15,20 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ONRC (Ordine din Registrul Comerţului, Romanian Trade Register identifier). All businesses in Romania have the to register with the National Trade Register Office to receive a registration number. The number contains -information about the type of company, county, a sequence number and -registration year. +information about the type of company and registration year. + +On 2024-07-26 a new format was introduced and for a while both old and new +formats need to be valid. + +More information: + +* https://targetare.ro/blog/schimbari-importante-la-registrul-comertului-ce-trebuie-sa-stii-despre-noul-format-al-numarului-de-ordine >>> validate('J52/750/2012') 'J52/750/2012' @@ -32,30 +36,38 @@ Traceback (most recent call last): ... InvalidComponent: ... -""" +>>> validate('J2012000750528') +'J2012000750528' +>>> validate('J2012000750529') +Traceback (most recent call last): + ... +InvalidChecksum: ... +""" # noqa: E501 + +from __future__ import annotations import datetime import re from stdnum.exceptions import * -from stdnum.util import clean +from stdnum.util import clean, isdigits # These characters should all be replaced by slashes _cleanup_re = re.compile(r'[ /\\-]+') # This pattern should match numbers that for some reason have a full date -# as last field -_onrc_fulldate_re = re.compile(r'^([A-Z][0-9]+/[0-9]+/)\d{2}[.]\d{2}[.](\d{4})$') +# as last field for the old format +_old_onrc_fulldate_re = re.compile(r'^([A-Z][0-9]+/[0-9]+/)\d{2}[.]\d{2}[.](\d{4})$') -# This pattern should match all valid numbers -_onrc_re = re.compile(r'^[A-Z][0-9]+/[0-9]+/[0-9]+$') +# This pattern should match all valid numbers in the old format +_old_onrc_re = re.compile(r'^[A-Z][0-9]+/[0-9]+/[0-9]+$') # List of valid counties _counties = set(list(range(1, 41)) + [51, 52]) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = _cleanup_re.sub('/', clean(number).upper().strip()) @@ -66,19 +78,16 @@ def compact(number): if number[2:3] == '/': number = number[:1] + '0' + number[1:] # convert trailing full date to year only - m = _onrc_fulldate_re.match(number) + m = _old_onrc_fulldate_re.match(number) if m: number = ''.join(m.groups()) return number -def validate(number): - """Check if the number is a valid ONRC.""" - number = compact(number) - if not _onrc_re.match(number): +def _validate_old_format(number: str) -> None: + # old YJJ/XXXX/AAAA format + if not _old_onrc_re.match(number): raise InvalidFormat() - if number[:1] not in 'JFC': - raise InvalidComponent() county, serial, year = number[1:].split('/') if len(serial) > 5: raise InvalidLength() @@ -86,12 +95,62 @@ def validate(number): raise InvalidComponent() if len(year) != 4: raise InvalidLength() - if int(year) < 1990 or int(year) > datetime.date.today().year: + # old format numbers will not be issued after 2024 + if int(year) < 1990 or int(year) > 2024: + raise InvalidComponent() + + +def _calc_check_digit(number: str) -> str: + """Calculate the check digit for the new ONRC format.""" + # replace letters with digits + number = str(ord(number[0]) % 10) + number[1:] + return str(sum(int(n) for n in number[:-1]) % 10) + + +def _validate_new_format(number: str) -> None: + # new YAAAAXXXXXXJJC format, no slashes + if not isdigits(number[1:]): + raise InvalidFormat() + if len(number) != 14: + raise InvalidLength() + year = int(number[1:5]) + if year < 1990 or year > datetime.date.today().year: + raise InvalidComponent() + # the registration year determines which counties are allowed + # companies registered after 2024-07-26 have 00 as county code + county = int(number[11:13]) + if year < 2024: + if county not in _counties: + raise InvalidComponent() + elif year == 2024: + if county not in _counties.union([0]): + raise InvalidComponent() + else: + if county != 0: + raise InvalidComponent() + if number[-1] != _calc_check_digit(number): + raise InvalidChecksum + + +def validate(number: str) -> str: + """Check if the number is a valid ONRC.""" + number = compact(number) + # J: legal entities (e.g., LLC, SA, etc.) + # F: sole proprietorships, individual and family businesses + # C: cooperative societies. + if number[:1] not in 'JFC': raise InvalidComponent() + if '/' in number: + # old YJJ/XXXX/AAAA format, still supported but will be phased out, companies + # will get a new number + _validate_old_format(number) + else: + # new YAAAAXXXXXXJJC format, no slashes + _validate_new_format(number) return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ONRC.""" try: return bool(validate(number)) diff --git a/stdnum/rs/__init__.py b/stdnum/rs/__init__.py index 05916563..8f332ddf 100644 --- a/stdnum/rs/__init__.py +++ b/stdnum/rs/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Serbian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.rs import pib as vat # noqa: F401 diff --git a/stdnum/rs/pib.py b/stdnum/rs/pib.py index d53e2114..1e59f130 100644 --- a/stdnum/rs/pib.py +++ b/stdnum/rs/pib.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PIB (Poreski Identifikacioni Broj, Serbian tax identification number). @@ -31,18 +29,20 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.iso7064 import mod_11_10 from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -.').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -54,7 +54,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/ru/__init__.py b/stdnum/ru/__init__.py index 470f21a9..8725a855 100644 --- a/stdnum/ru/__init__.py +++ b/stdnum/ru/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Russian numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.ru import inn as vat # noqa: F401 diff --git a/stdnum/ru/inn.py b/stdnum/ru/inn.py index 58cc2167..ff234309 100644 --- a/stdnum/ru/inn.py +++ b/stdnum/ru/inn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ИНН (Идентификационный номер налогоплательщика, Russian tax identifier). @@ -38,32 +36,34 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' ').strip() -def calc_company_check_digit(number): +def calc_company_check_digit(number: str) -> str: """Calculate the check digit for the 10-digit ИНН for organisations.""" weights = (2, 4, 10, 3, 5, 9, 4, 6, 8) return str(sum(w * int(n) for w, n in zip(weights, number)) % 11 % 10) -def calc_personal_check_digits(number): +def calc_personal_check_digits(number: str) -> str: """Calculate the check digits for the 12-digit personal ИНН.""" - weights = (7, 2, 4, 10, 3, 5, 9, 4, 6, 8) + weights = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8] d1 = str(sum(w * int(n) for w, n in zip(weights, number)) % 11 % 10) - weights = (3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8) + weights = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8] d2 = str(sum(w * int(n) for w, n in zip(weights, number[:10] + d1)) % 11 % 10) return d1 + d2 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ИНН. This checks the length, formatting and check digit.""" number = compact(number) @@ -81,7 +81,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ИНН.""" try: return bool(validate(number)) diff --git a/stdnum/ru/ogrn.py b/stdnum/ru/ogrn.py new file mode 100644 index 00000000..7c2bde7e --- /dev/null +++ b/stdnum/ru/ogrn.py @@ -0,0 +1,88 @@ +# ogrn.py - functions for handling Russian company registration numbers +# coding: utf-8 +# +# Copyright (C) 2024 Ivan Stavropoltsev +# Copyright (C) 2025 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""ОГРН, OGRN, PSRN, ОГРНИП, OGRNIP (Russian Primary State Registration Number). + +The ОГРН (Основной государственный регистрационный номер, Primary State +Registration Number) is a Russian identifier for legal entities. The number +consists of 13 or 15 digits and includes information on the type of +organisation, the registration year and a tax inspection code. The 15 digit +variant is called ОГРНИП (Основной государственный регистрационный номер +индивидуального предпринимателя, Primary State Registration Number of an +Individual Entrepreneur). + +More information: + +* https://ru.wikipedia.org/wiki/Основной_государственный_регистрационный_номер +* https://ru.wikipedia.org/wiki/Основной_государственный_регистрационный_номер_индивидуального_предпринимателя + +>>> validate('1022200525819') +'1022200525819' +>>> validate('385768585948949') +'385768585948949' +>>> validate('1022500001328') +Traceback (most recent call last): + ... +InvalidChecksum: ... +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' ') + + +def calc_check_digit(number: str) -> str: + """Calculate the control digit of the OGRN based on its length.""" + if len(number) == 13: + return str(int(number[:-1]) % 11 % 10) + else: + return str(int(number[:-1]) % 13) + + +def validate(number: str) -> str: + """Determine if the given number is a valid OGRN.""" + number = compact(number) + if not isdigits(number): + raise InvalidFormat() + if len(number) == 13: + if number[0] == '0': + raise InvalidComponent() + elif len(number) == 15: + if number[0] not in '34': + raise InvalidComponent() + else: + raise InvalidLength() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid OGRN.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/se/__init__.py b/stdnum/se/__init__.py index 76c4a0fa..d2130ac3 100644 --- a/stdnum/se/__init__.py +++ b/stdnum/se/__init__.py @@ -14,11 +14,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Swedish numbers.""" +from __future__ import annotations + # provide aliases from stdnum.se import personnummer as personalid # noqa: F401 +from stdnum.se import postnummer as postal_code # noqa: F401 diff --git a/stdnum/se/orgnr.py b/stdnum/se/orgnr.py index 2aea9eb0..82fa1999 100644 --- a/stdnum/se/orgnr.py +++ b/stdnum/se/orgnr.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Orgnr (Organisationsnummer, Swedish company number). @@ -36,18 +34,20 @@ '123456-7897' """ +from __future__ import annotations + from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -.').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid organisation number. This checks the length, formatting and check digit.""" number = compact(number) @@ -58,7 +58,7 @@ def validate(number): return luhn.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid organisation number""" try: return bool(validate(number)) @@ -66,7 +66,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number[:6] + '-' + number[6:] diff --git a/stdnum/se/personnummer.py b/stdnum/se/personnummer.py index 8829ef78..277c7f54 100644 --- a/stdnum/se/personnummer.py +++ b/stdnum/se/personnummer.py @@ -16,9 +16,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Personnummer (Swedish personal identity number). @@ -45,6 +43,8 @@ '880320-0016' """ +from __future__ import annotations + import datetime from stdnum import luhn @@ -52,7 +52,7 @@ from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' :') @@ -61,7 +61,7 @@ def compact(number): return number[:-5].replace('-', '').replace('+', '') + number[-5:] -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Determine the birth date from the number. For people aged 100 and up, the minus/dash in the personnummer is changed to a plus @@ -90,7 +90,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the person's birth gender ('M' or 'F').""" number = compact(number) if int(number[-2]) % 2: @@ -99,7 +99,7 @@ def get_gender(number): return 'F' -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid identity number.""" number = compact(number) if len(number) not in (11, 13): @@ -112,7 +112,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid identity number.""" try: return bool(validate(number)) @@ -120,6 +120,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/se/postnummer.py b/stdnum/se/postnummer.py new file mode 100644 index 00000000..2b9a0d06 --- /dev/null +++ b/stdnum/se/postnummer.py @@ -0,0 +1,77 @@ +# postnummer.py - functions for handling Swedish postal codes +# +# Copyright (C) 2021 Michele Ciccozzi +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Postcode (the Swedish postal code). + +The Swedish postal code consists of three numbers followed by two numbers, +separated by a single space. + +More information: + +* https://en.wikipedia.org/wiki/Postal_codes_in_Sweden +* https://sv.wikipedia.org/wiki/Postnummer_i_Sverige + +>>> validate('114 18') +'11418' +>>> validate('SE-11418') +'11418' +>>> validate('1145 18') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> format('11418') +'114 18' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + number = clean(number, ' -').upper().strip() + if number.startswith('SE'): + number = number[2:] + return number + + +def validate(number: str) -> str: + """Check if the number is in the correct format. This currently does not + check whether the code corresponds to a real address.""" + number = compact(number) + if not isdigits(number) or number.startswith('0'): + raise InvalidFormat() + if len(number) != 5: + raise InvalidLength() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid postal code.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '%s %s' % (number[:3], number[3:]) diff --git a/stdnum/se/vat.py b/stdnum/se/vat.py index 9dcd3565..2cf4a72a 100644 --- a/stdnum/se/vat.py +++ b/stdnum/se/vat.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VAT (Moms, Mervärdesskatt, Swedish VAT number). @@ -32,12 +30,14 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.se import orgnr from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -.').upper().strip() @@ -46,7 +46,7 @@ def compact(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -56,7 +56,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/sg/__init__.py b/stdnum/sg/__init__.py index 1d3e79d3..e0b4a827 100644 --- a/stdnum/sg/__init__.py +++ b/stdnum/sg/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Singapore numbers.""" +from __future__ import annotations + # provide aliases from stdnum.sg import uen as vat # noqa: F401 diff --git a/stdnum/sg/uen.py b/stdnum/sg/uen.py index 2b49be1f..d8f4c746 100644 --- a/stdnum/sg/uen.py +++ b/stdnum/sg/uen.py @@ -15,14 +15,12 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """UEN (Singapore's Unique Entity Number). The Unique Entity Number (UEN) is a 9 or 10 digit identification issued by -the government of Singapore to businesses that operate with within Singapore. +the government of Singapore to businesses that operate within Singapore. Accounting and Corporate Regulatory Authority (ACRA) @@ -54,12 +52,14 @@ Traceback (most recent call last): ... InvalidLength: ... -""" +""" # noqa: E501 # There are some references to special 10-digit (or 7-digit) numbers that # start with an F for foreign companies but it is unclear whether this is # still current and not even examples of these numbers could be found. +from __future__ import annotations + from datetime import datetime from stdnum.exceptions import * @@ -74,7 +74,7 @@ ) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This converts to uppercase and removes surrounding whitespace. It @@ -84,14 +84,14 @@ def compact(number): return clean(number).upper().strip() -def calc_business_check_digit(number): +def calc_business_check_digit(number: str) -> str: """Calculate the check digit for the Business (ROB) number.""" number = compact(number) weights = (10, 4, 9, 3, 8, 2, 7, 1) return 'XMKECAWLJDB'[sum(int(n) * w for n, w in zip(number, weights)) % 11] -def _validate_business(number): +def _validate_business(number: str) -> str: """Perform validation on UEN - Business (ROB) numbers.""" if not isdigits(number[:-1]): raise InvalidFormat() @@ -102,14 +102,14 @@ def _validate_business(number): return number -def calc_local_company_check_digit(number): +def calc_local_company_check_digit(number: str) -> str: """Calculate the check digit for the Local Company (ROC) number.""" number = compact(number) weights = (10, 8, 6, 4, 9, 7, 5, 3, 1) return 'ZKCMDNERGWH'[sum(int(n) * w for n, w in zip(number, weights)) % 11] -def _validate_local_company(number): +def _validate_local_company(number: str) -> str: """Perform validation on UEN - Local Company (ROC) numbers.""" if not isdigits(number[:-1]): raise InvalidFormat() @@ -121,7 +121,7 @@ def _validate_local_company(number): return number -def calc_other_check_digit(number): +def calc_other_check_digit(number: str) -> str: """Calculate the check digit for the other entities number.""" number = compact(number) alphabet = 'ABCDEFGHJKLMNPQRSTUVWX0123456789' @@ -129,7 +129,7 @@ def calc_other_check_digit(number): return alphabet[(sum(alphabet.index(n) * w for n, w in zip(number, weights)) - 5) % 11] -def _validate_other(number): +def _validate_other(number: str) -> str: """Perform validation on other UEN numbers.""" if number[0] not in ('R', 'S', 'T'): raise InvalidComponent() @@ -147,7 +147,7 @@ def _validate_other(number): return number -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Singapore UEN number.""" number = compact(number) if len(number) not in (9, 10): @@ -159,7 +159,7 @@ def validate(number): return _validate_other(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Singapore UEN number.""" try: return bool(validate(number)) @@ -167,6 +167,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/si/__init__.py b/stdnum/si/__init__.py index 077165f8..4993bfd9 100644 --- a/stdnum/si/__init__.py +++ b/stdnum/si/__init__.py @@ -2,6 +2,7 @@ # coding: utf-8 # # Copyright (C) 2012 Arthur de Jong +# Copyright (C) 2022 Blaž Bregar # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,11 +15,13 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Slovenian numbers.""" -# provide vat as an alias +from __future__ import annotations + +# provide aliases from stdnum.si import ddv as vat # noqa: F401 +from stdnum.si import emso as personalid # noqa: F401 +from stdnum.si import maticna as businessid # noqa: F401 diff --git a/stdnum/si/ddv.py b/stdnum/si/ddv.py index bb6d9865..e32aea83 100644 --- a/stdnum/si/ddv.py +++ b/stdnum/si/ddv.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ID za DDV (Davčna številka, Slovenian VAT number). @@ -32,11 +30,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -45,7 +45,7 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" check = (11 - sum((8 - i) * int(n) for i, n in enumerate(number)) % 11) @@ -53,7 +53,7 @@ def calc_check_digit(number): return '0' if check == 10 else str(check) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -66,7 +66,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/si/emso.py b/stdnum/si/emso.py new file mode 100644 index 00000000..5c2cf6b6 --- /dev/null +++ b/stdnum/si/emso.py @@ -0,0 +1,118 @@ +# emso.py - functions for handling Slovenian Unique Master Citizen Numbers +# coding: utf-8 +# +# Copyright (C) 2022 Blaž Bregar +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Enotna matična številka občana (Unique Master Citizen Number). + +The EMŠO is used for uniquely identify persons including foreign citizens +living in Slovenia, It is issued by Centralni Register Prebivalstva CRP +(Central Citizen Registry). + +The number consists of 13 digits and includes the person's date of birth, a +political region of birth and a unique number that encodes a person's gender +followed by a check digit. + +More information: + +* https://en.wikipedia.org/wiki/Unique_Master_Citizen_Number +* https://sl.wikipedia.org/wiki/Enotna_matična_številka_občana + +>>> validate('0101006500006') +'0101006500006' +>>> validate('0101006500007') # invalid check digit +Traceback (most recent call last): + ... +InvalidChecksum: ... +""" + +from __future__ import annotations + +import datetime + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' ').strip() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit.""" + weights = (7, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 2) + total = sum(int(n) * w for n, w in zip(number, weights)) + return str(-total % 11 % 10) + + +def get_birth_date(number: str) -> datetime.date: + """Return date of birth from valid EMŠO.""" + number = compact(number) + day = int(number[:2]) + month = int(number[2:4]) + year = int(number[4:7]) + if year < 800: + year += 2000 + else: + year += 1000 + try: + return datetime.date(year, month, day) + except ValueError: + raise InvalidComponent() + + +def get_gender(number: str) -> str: + """Get the person's birth gender ('M' or 'F').""" + number = compact(number) + if int(number[9:12]) < 500: + return 'M' + else: + return 'F' + + +def get_region(number: str) -> str: + """Return (political) region from valid EMŠO.""" + return number[7:9] + + +def validate(number: str) -> str: + """Check if the number is a valid EMŠO number. This checks the length, + formatting and check digit.""" + number = compact(number) + if len(number) != 13: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + get_birth_date(number) + if calc_check_digit(number) != number[-1]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number provided is a valid ID. This checks the length, + formatting and check digit.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/si/maticna.py b/stdnum/si/maticna.py new file mode 100644 index 00000000..28e472b3 --- /dev/null +++ b/stdnum/si/maticna.py @@ -0,0 +1,92 @@ +# maticna.py - functions for handling Slovenian Corporate Registration Numbers +# coding: utf-8 +# +# Copyright (C) 2023 Blaž Bregar +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Matična številka poslovnega registra (Corporate Registration Number) + +The Corporate registration number represent a unique identification of +each unit of the business register, assigned by the registry administrator +at the time of entry in the business register, which shall not be changed. + +The number consists of 7 or 10 digits and includes a check digit. The first 6 +digits represent a unique number for each unit or company, followed by a +check digit. The last 3 digits represent an additional business unit of the +company, starting at 001. When a company consists of more than 1000 units, a +letter is used instead of the first digit in the business unit. Unit 000 +always represents the main registered address. + +More information: + +* https://pisrs.si/pregledPredpisa?id=URED7599 + +>>> validate('9331310000') +'9331310' +>>> validate('9331320000') +Traceback (most recent call last): + ... +InvalidChecksum: ... +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + number = clean(number, '. ').strip().upper() + if len(number) == 10 and number.endswith('000'): + number = number[0:7] + return number + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit.""" + weights = (7, 6, 5, 4, 3, 2) + total = sum(int(n) * w for n, w in zip(number, weights)) + remainder = -total % 11 + if remainder == 0: + return 'invalid' # invalid remainder + return str(remainder % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid Corporate Registration number. This + checks the length and check digit.""" + number = compact(number) + if len(number) not in (7, 10): + raise InvalidLength() + if not isdigits(number[:6]): + raise InvalidFormat() + if not re.match(r'^([A-Za-z0-9]\d{2})?$', number[7:]): + raise InvalidFormat() + if calc_check_digit(number) != number[6]: + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if provided is valid ID. This checks the length, + formatting and check digit.""" + try: + return bool(validate(number)) + except ValidationError: + return False diff --git a/stdnum/sk/__init__.py b/stdnum/sk/__init__.py index c2e257ee..eb7e3773 100644 --- a/stdnum/sk/__init__.py +++ b/stdnum/sk/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Slovak numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.sk import dph as vat # noqa: F401 diff --git a/stdnum/sk/dph.py b/stdnum/sk/dph.py index c8cab287..1bda9880 100644 --- a/stdnum/sk/dph.py +++ b/stdnum/sk/dph.py @@ -1,4 +1,4 @@ -# vat.py - functions for handling Slovak VAT numbers +# dph.py - functions for handling Slovak VAT numbers # coding: utf-8 # # Copyright (C) 2012, 2013 Arthur de Jong @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """IČ DPH (IČ pre daň z pridanej hodnoty, Slovak VAT number). @@ -31,12 +29,14 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.sk import rc from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" number = clean(number, ' -').upper().strip() @@ -45,12 +45,12 @@ def compact(number): return number -def checksum(number): +def checksum(number: str) -> int: """Calculate the checksum.""" return int(number) % 11 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This checks the length, formatting and check digit.""" number = compact(number) @@ -68,7 +68,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/sk/rc.py b/stdnum/sk/rc.py index f43dc798..b03d762f 100644 --- a/stdnum/sk/rc.py +++ b/stdnum/sk/rc.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RČ (Rodné číslo, the Slovak birth number). @@ -49,6 +47,9 @@ # since this number is essentially the same as the Czech counterpart # (until 1993 the Czech Republic and Slovakia were one country) + +from __future__ import annotations + from stdnum.cz.rc import compact, format, is_valid, validate diff --git a/stdnum/sm/__init__.py b/stdnum/sm/__init__.py index 28c385d9..df2f5fec 100644 --- a/stdnum/sm/__init__.py +++ b/stdnum/sm/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of San Marino numbers.""" +from __future__ import annotations + # provide vat as an alias from stdnum.sm import coe as vat # noqa: F401 diff --git a/stdnum/sm/coe.py b/stdnum/sm/coe.py index 721bda52..b80e7ca3 100644 --- a/stdnum/sm/coe.py +++ b/stdnum/sm/coe.py @@ -16,9 +16,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """COE (Codice operatore economico, San Marino national tax number). @@ -39,6 +37,8 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -51,13 +51,13 @@ 87, 88, 91, 92, 94, 95, 96, 97, 99)) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips surrounding whitespace and separation dash.""" return clean(number, '.').strip().lstrip('0') -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid COE. This checks the length and formatting.""" number = compact(number) @@ -70,7 +70,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid COE.""" try: return bool(validate(number)) diff --git a/stdnum/sn/__init__.py b/stdnum/sn/__init__.py new file mode 100644 index 00000000..ef13f743 --- /dev/null +++ b/stdnum/sn/__init__.py @@ -0,0 +1,22 @@ +# __init__.py - collection of Senegal numbers +# coding: utf-8 +# +# Copyright (C) 2023 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Senegal numbers.""" + +# provide aliases +from stdnum.sn import ninea as vat # noqa: F401 diff --git a/stdnum/sn/ninea.py b/stdnum/sn/ninea.py new file mode 100644 index 00000000..99b92e8c --- /dev/null +++ b/stdnum/sn/ninea.py @@ -0,0 +1,155 @@ +# ninea.py - functions for handling Senegal NINEA numbers +# coding: utf-8 +# +# Copyright (C) 2023 Leandro Regueiro +# Copyright (C) 2026 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""NINEA (Numéro d'Identification Nationale des Entreprises et Associations, Senegal tax number). + +The National Identification Number for Businesses and Associations (NINEA) is +a unique tax identifier for tax purposes in Senegal. + +This number consists of 7 digits and is usually followed by a 3 digit tax +identification code called COFI (Code d’Identification Fiscale) that is used +to indicate the company's tax status and legal structure. + +More information: + +* https://www.wikiprocedure.com/index.php/Senegal%5F-_Obtain_a_Tax_Identification_Number +* https://nkac-audit.com/comprendre-le-ninea-votre-guide-de-lecture-simplifie/ +* https://www.creationdentreprise.sn/rechercher-une-societe +* https://www.dci-sn.sn/index.php/obtenir-son-ninea +* https://e-ninea.ansd.sn/search_annuaire + +>>> validate('306 7221') +'3067221' +>>> validate('30672212G2') +'30672212G2' +>>> validate('3067221 2G2') +'30672212G2' +>>> validate('3067222') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('1234567 0AZ') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> format('30672212G2') +'3067221 2G2' +""" # noqa: E501 + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators and removes surrounding + whitespace. + """ + return clean(number, ' -/,').upper().strip() + + +def _validate_cofi(number: str) -> None: + # The first digit of the COFI indicates the tax status + # 0: taxpayer subject to the real scheme, not subject to VAT. + # 1: taxpayer subject to the single global contribution (TOU). + # 2: taxpayer subject to the real scheme and subject to VAT. + if number[0] not in '012': + raise InvalidComponent() + # The second character is a letter that indicates the tax centre: + # A: Dakar Plateau 1 + # B: Dakar Plateau 2 + # C: Grand Dakar + # D: Pikine + # E: Rufisque + # F: Thiès + # G: Centre des grandes Entreprises + # H: Louga + # J: Diourbel + # K: Saint-Louis + # L: Tambacounda + # M: Kaolack + # N: Fatick + # P: Ziguinchor + # Q: Kolda + # R: Prarcelles assainies + # S: Professions libérales + # T: Guédiawaye + # U: Dakar-Medina + # V: Dakar liberté + # W: Matam + # Z: Centre des Moyennes Entreprises + if number[1] not in 'ABCDEFGHJKLMNPQRSTUVWZ': + raise InvalidComponent() + # The third character is a digit that indicates the legal form: + # 1: Individual-Natural person + # 2: SARL + # 3: SA + # 4: Simple Limited Partnership + # 5: Share Sponsorship Company + # 6: GIE + # 7: Civil Society + # 8: Partnership + # 9: Cooperative Association + # 0: Other + if number[2] not in '0123456789': + raise InvalidComponent() + + +def _checksum(number: str) -> int: + number = number.zfill(9) + weights = (1, 2, 1, 2, 1, 2, 1, 2, 1) + return sum(int(n) * w for n, w in zip(number, weights)) % 10 + + +def validate(number: str) -> str: + """Check if the number is a valid Senegal NINEA. + + This checks the length and formatting. + """ + cofi = '' + number = compact(number) + if len(number) > 9: + cofi = number[-3:] + number = number[:-3] + if len(number) not in (7, 9): + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if cofi: + _validate_cofi(cofi) + if _checksum(number) != 0: + raise InvalidChecksum() + return number + cofi + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Senegal NINEA.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + if len(number) in (7, 9): + return number + return ' '.join([number[:-3], number[-3:]]) diff --git a/stdnum/sv/__init__.py b/stdnum/sv/__init__.py index dd63b082..b2c044c9 100644 --- a/stdnum/sv/__init__.py +++ b/stdnum/sv/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of El Salvador numbers.""" +from __future__ import annotations + # provide aliases from stdnum.sv import nit as vat # noqa: F401 diff --git a/stdnum/sv/nit.py b/stdnum/sv/nit.py index ed2f5f9f..d27d2f4a 100644 --- a/stdnum/sv/nit.py +++ b/stdnum/sv/nit.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """NIT (Número de Identificación Tributaria, El Salvador tax number). @@ -59,13 +57,15 @@ InvalidLength: ... >>> format('06140507071048') '0614-050707-104-8' -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -77,7 +77,7 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" # Old NIT if number[10:13] <= '100': @@ -90,7 +90,7 @@ def calc_check_digit(number): return str((-total % 11) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid El Salvador NIT number. This checks the length, formatting and check digit. @@ -107,7 +107,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid El Salvador NIT number.""" try: return bool(validate(number)) @@ -115,7 +115,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[:4], number[4:-4], number[-4:-1], number[-1]]) diff --git a/stdnum/th/__init__.py b/stdnum/th/__init__.py new file mode 100644 index 00000000..20c6498b --- /dev/null +++ b/stdnum/th/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Thai numbers +# coding: utf-8 +# +# Copyright (C) 2021 Piruin Panichphol +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Thai numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.th import moa as vat # noqa: F401 diff --git a/stdnum/th/moa.py b/stdnum/th/moa.py new file mode 100644 index 00000000..9f53d546 --- /dev/null +++ b/stdnum/th/moa.py @@ -0,0 +1,94 @@ +# moa.py - functions for handling Memorandum of Association Number +# +# Copyright (C) 2021 Piruin Panichphol +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""MOA (Thailand Memorandum of Association Number). + +Memorandum of Association Number (aka Company's Taxpayer Identification +Number) are numbers issued by the Department of Business Development. + +The number consists of 13 digits of which the last is a check digit following +the same algorithm as in the Personal Identity Number (PIN). It uses a +different grouping format and always starts with zero to indicate that the +number issued by DBD. + +More information: + +* https://www.dbd.go.th/download/pdf_kc/s09/busin_2542-48.pdf + +>>> compact('0 10 5 536 11201 4') +'0105536112014' +>>> validate('0994000617721') +'0994000617721' +>>> validate('0-99-4-000-61772-1') +'0994000617721' +>>> validate('0-99-4-000-61772-3') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('0993000133978') +'0-99-3-000-13397-8' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.th import pin +from stdnum.util import clean, isdigits + + +__all__ = ['compact', 'calc_check_digit', 'validate', 'is_valid', 'format'] + + +# use the same calc_check_digit function as PIN +calc_check_digit = pin.calc_check_digit + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').strip() + + +def validate(number: str) -> str: + """Check if the number is a valid MOA Number. This checks the length, + formatting, component and check digit.""" + number = compact(number) + if len(number) != 13: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[0] != '0': + raise InvalidComponent() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check whether the number is valid.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '-'.join(( + number[:1], number[1:3], number[3:4], number[4:7], number[7:12], + number[12:])) diff --git a/stdnum/th/pin.py b/stdnum/th/pin.py new file mode 100644 index 00000000..3364aed1 --- /dev/null +++ b/stdnum/th/pin.py @@ -0,0 +1,90 @@ +# pin.py - functions for handling Thailand PINs +# +# Copyright (C) 2021 Piruin Panichphol +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""PIN (Thailand Personal Identification Number). + +The Thailand Personal Identification Number is a unique personal identifier +assigned at birth or upon receiving Thai citizenship issue by the Ministry of +Interior. + +This number consists of 13 digits which the last is a check digit. Usually +separated into five groups using hyphens to make it easier to read. + +More information: + +* https://en.wikipedia.org/wiki/Thai_identity_card + +>>> compact('1-2345-45678-78-1') +'1234545678781' +>>> validate('3100600445635') +'3100600445635' +>>> validate('1-2345-45678-78-1') +'1234545678781' +>>> validate('1-2345-45678-78-9') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> format('7100600445635') +'7-1006-00445-63-5' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').strip() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit.""" + s = sum((2 - i) * int(n) for i, n in enumerate(number[:12])) % 11 + return str((1 - s) % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid PIN. This checks the length, + formatting and check digit.""" + number = compact(number) + if len(number) != 13: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[0] in ('0', '9'): + raise InvalidComponent() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check whether the number is valid.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + number = compact(number) + return '-'.join(( + number[:1], number[1:5], number[5:10], number[10:12], number[12:])) diff --git a/stdnum/th/tin.py b/stdnum/th/tin.py new file mode 100644 index 00000000..8da132ac --- /dev/null +++ b/stdnum/th/tin.py @@ -0,0 +1,95 @@ +# tin.py - functions for handling Thailand TINs +# +# Copyright (C) 2021 Piruin Panichphol +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""TIN (Thailand Taxpayer Identification Number). + +The Taxpayer Identification Number is used for tax purposes in the Thailand. +This number consists of 13 digits which the last is a check digit. + +Personal income taxpayers use Personal Identification Number (PIN) while +companies use Memorandum of Association (MOA). + +>>> validate('1-2345-45678-78-1') +'1234545678781' +>>> validate('0-99-4-000-61772-1') +'0994000617721' +>>> validate('1234545678789') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> tin_type('1-2345-45678-78-1') +'pin' +>>> tin_type('0-99-4-000-61772-1') +'moa' +>>> format('3100600445635') +'3-1006-00445-63-5' +>>> format('0993000133978') +'0-99-3-000-13397-8' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.th import moa, pin +from stdnum.util import clean + + +_tin_modules = (moa, pin) + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. This strips the + number of any valid separators and removes surrounding whitespace.""" + return clean(number, ' -').strip() + + +def tin_type(number: str) -> str | None: + """Return a TIN type which this number is valid.""" + number = compact(number) + for mod in _tin_modules: + if mod.is_valid(number): + return mod.__name__.rsplit('.', 1)[-1] + # fallback + return None + + +def validate(number: str) -> str: + """Check if the number is a valid TIN. This searches for the proper + sub-type and validates using that.""" + for mod in _tin_modules: + try: + return mod.validate(number) # type: ignore[no-any-return] + except ValidationError: + pass # try next module + # fallback + raise InvalidFormat() + + +def is_valid(number: str) -> bool: + """Check whether the number is valid.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + for mod in _tin_modules: + if mod.is_valid(number): + return mod.format(number) # type: ignore[no-any-return] + return number diff --git a/stdnum/tn/__init__.py b/stdnum/tn/__init__.py new file mode 100644 index 00000000..a8c9ea03 --- /dev/null +++ b/stdnum/tn/__init__.py @@ -0,0 +1,24 @@ +# __init__.py - collection of Tunisian numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Tunisian numbers.""" + +from __future__ import annotations + +# provide aliases +from stdnum.tn import mf as vat # noqa: F401 diff --git a/stdnum/tn/mf.py b/stdnum/tn/mf.py new file mode 100644 index 00000000..7f6c98be --- /dev/null +++ b/stdnum/tn/mf.py @@ -0,0 +1,131 @@ +# mf.py - functions for handling Tunisia MF numbers +# coding: utf-8 +# +# Copyright (C) 2022 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""MF (Matricule Fiscal, Tunisia tax number). + +The MF consists of 4 parts: the "identifiant fiscal", the "code TVA", the "code +catégorie" and the "numéro d'etablissement secondaire". + +The "identifiant fiscal" consists of 2 parts: the "identifiant unique" and the +"clef de contrôle". The "identifiant unique" is composed of 7 digits. The "clef +de contrôle" is a letter, excluding "I", "O" and "U" because of their +similarity to "1", "0" and "4". + +The "code TVA" is a letter that tells which VAT regime is being used. The valid +values are "A", "P", "B", "D" and "N". + +The "code catégorie" is a letter that tells the category the contributor +belongs to. The valid values are "M", "P", "C", "N" and "E". + +The "numéro d'etablissement secondaire" consists of 3 digits. It is usually +"000", but it can be "001", "002"... depending on the branches. If it is not +"000" then "code catégorie" must be "E". + +More information: + +* https://futurexpert.tn/2019/10/22/structure-et-utilite-du-matricule-fiscal/ +* https://www.registre-entreprises.tn/ + +>>> validate('1234567/M/A/E/001') +'1234567MAE001' +>>> validate('1282182 W') +'1282182W' +>>> validate('121J') +'0000121J' +>>> validate('1219773U') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> validate('1234567/M/A/X/000') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> format('121J') +'0000121/J' +>>> format('1496298 T P N 000') +'1496298/T/P/N/000' +""" + +from __future__ import annotations + +import re + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +_VALID_CONTROL_KEYS = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', + 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', + 'Z') +_VALID_TVA_CODES = ('A', 'P', 'B', 'D', 'N') +_VALID_CATEGORY_CODES = ('M', 'P', 'C', 'N', 'E') + + +def compact(number: str) -> str: + """Convert the number to the minimal representation. + + This strips the number of any valid separators, removes surrounding + whitespace. + """ + number = clean(number, ' /.-').upper() + # Zero pad the numeric serial to length 7 + match = re.match(r'^(?P[0-9]+)(?P.*)$', number) + if match: + number = match.group('serial').zfill(7) + match.group('rest') + return number + + +def validate(number: str) -> str: + """Check if the number is a valid Tunisia MF number. + + This checks the length and formatting. + """ + number = compact(number) + if len(number) not in (8, 13): + raise InvalidLength() + if not isdigits(number[:7]): + raise InvalidFormat() + if number[7] not in _VALID_CONTROL_KEYS: + raise InvalidFormat() + if len(number) == 8: + return number + if number[8] not in _VALID_TVA_CODES: + raise InvalidFormat() + if number[9] not in _VALID_CATEGORY_CODES: + raise InvalidFormat() + if not isdigits(number[10:]): + raise InvalidFormat() + if number[10:] != '000' and number[9] != 'E': + raise InvalidFormat() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Tunisia MF number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + result = compact(number) + if len(result) == 8: + return '/'.join([result[:7], result[7]]) + return '/'.join([result[:7], result[7], result[8], result[9], result[10:]]) diff --git a/stdnum/tr/__init__.py b/stdnum/tr/__init__.py index ebb92d35..98e1c473 100644 --- a/stdnum/tr/__init__.py +++ b/stdnum/tr/__init__.py @@ -14,9 +14,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Turkish numbers.""" + +from __future__ import annotations + from stdnum.tr import vkn as vat # noqa: F401 diff --git a/stdnum/tr/tckimlik.py b/stdnum/tr/tckimlik.py index e3dfceae..fcd9efd4 100644 --- a/stdnum/tr/tckimlik.py +++ b/stdnum/tr/tckimlik.py @@ -1,7 +1,7 @@ # tckimlik.py - functions for handling T.C. Kimlik No. # coding: utf-8 # -# Copyright (C) 2016-2018 Arthur de Jong +# Copyright (C) 2016-2024 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """T.C. Kimlik No. (Turkish personal identification number) @@ -45,6 +43,8 @@ InvalidFormat: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, get_soap_client, isdigits @@ -53,13 +53,13 @@ """The WSDL URL of the T.C. Kimlik validation service.""" -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number).strip() -def calc_check_digits(number): +def calc_check_digits(number: str) -> str: """Calculate the check digits for the specified number. The number passed should not have the check digit included.""" check1 = (10 - sum((3, 1)[i % 2] * int(n) @@ -68,7 +68,7 @@ def calc_check_digits(number): return '%d%d' % (check1, check2) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid T.C. Kimlik number. This checks the length and check digits.""" number = compact(number) @@ -81,7 +81,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid T.C. Kimlik number.""" try: return bool(validate(number)) @@ -89,17 +89,33 @@ def is_valid(number): return False -def check_kps(number, name, surname, birth_year, timeout): # pragma: no cover - """Query the online T.C. Kimlik validation service run by the Directorate +def check_kps( + number: str, + name: str, + surname: str, + birth_year: int, + timeout: float = 30, + verify: bool | str = True, +) -> bool: # pragma: no cover + """Use the T.C. Kimlik validation service to check the provided number. + + Query the online T.C. Kimlik validation service run by the Directorate of Population and Citizenship Affairs. The timeout is in seconds. This returns a boolean but may raise a SOAP exception for missing or invalid - values.""" + values. + + The `timeout` argument specifies the network timeout in seconds. + + The `verify` argument is either a boolean that determines whether the + server's certificate is validate or a string which must be a path the CA + certificate bundle to use for verification. + """ # this function isn't automatically tested because it would require # network access for the tests and unnecessarily load the online service number = compact(number) - client = get_soap_client(tckimlik_wsdl, timeout) + client = get_soap_client(tckimlik_wsdl, timeout=timeout, verify=verify) result = client.TCKimlikNoDogrula( TCKimlikNo=number, Ad=name, Soyad=surname, DogumYili=birth_year) if hasattr(result, 'get'): - return result.get('TCKimlikNoDogrulaResult') - return result + return result.get('TCKimlikNoDogrulaResult') # type: ignore[no-any-return] + return result # type: ignore[no-any-return] diff --git a/stdnum/tr/vkn.py b/stdnum/tr/vkn.py index e23cb918..6d1b83da 100644 --- a/stdnum/tr/vkn.py +++ b/stdnum/tr/vkn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VKN (Vergi Kimlik Numarası, Turkish tax identification number). @@ -40,17 +38,19 @@ InvalidLength: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number).strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the specified number.""" s = 0 for i, n in enumerate(reversed(number[:9]), 1): @@ -61,7 +61,7 @@ def calc_check_digit(number): return str((10 - s) % 10) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Vergi Kimlik Numarası. This checks the length and check digits.""" number = compact(number) @@ -74,7 +74,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Vergi Kimlik Numarası. This checks the length and check digits.""" try: diff --git a/stdnum/tw/__init__.py b/stdnum/tw/__init__.py index d79cc3db..d5ac0fc2 100644 --- a/stdnum/tw/__init__.py +++ b/stdnum/tw/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Taiwanese numbers.""" +from __future__ import annotations + # provide aliases from stdnum.tw import ubn as vat # noqa: F401 diff --git a/stdnum/tw/ubn.py b/stdnum/tw/ubn.py index efae7406..cf518cc0 100644 --- a/stdnum/tw/ubn.py +++ b/stdnum/tw/ubn.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """UBN (Unified Business Number, 統一編號, Taiwanese tax number). @@ -43,11 +41,13 @@ '00501503' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -56,7 +56,7 @@ def compact(number): return clean(number, ' -').strip() -def calc_checksum(number): +def calc_checksum(number: str) -> int: """Calculate the checksum over the number.""" # convert to numeric first, then sum individual digits weights = (1, 2, 1, 2, 1, 2, 4, 1) @@ -64,7 +64,7 @@ def calc_checksum(number): return sum(int(n) for n in number) % 10 -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Taiwan UBN number. This checks the length, formatting and check digit. @@ -80,7 +80,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Taiwan UBN number.""" try: return bool(validate(number)) @@ -88,6 +88,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/stdnum/ua/__init__.py b/stdnum/ua/__init__.py new file mode 100644 index 00000000..dfb83b6c --- /dev/null +++ b/stdnum/ua/__init__.py @@ -0,0 +1,19 @@ +# __init__.py - collection of Ukrainian numbers +# coding: utf-8 +# +# Copyright (C) 2020 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""Collection of Ukrainian numbers.""" diff --git a/stdnum/ua/edrpou.py b/stdnum/ua/edrpou.py new file mode 100644 index 00000000..9420815b --- /dev/null +++ b/stdnum/ua/edrpou.py @@ -0,0 +1,95 @@ +# edrpou.py - functions for handling Ukrainian EDRPOU numbers +# coding: utf-8 +# +# Copyright (C) 2020 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""ЄДРПОУ, EDRPOU (Identifier for enterprises and organizations in Ukraine). + +The ЄДРПОУ (Єдиного державного реєстру підприємств та організацій України, +Unified State Register of Enterprises and Organizations of Ukraine) is a +unique identification number of a legal entities in Ukraine. The number +consists of 8 digits, the last being a check digit. + +More information: + +* https://uk.wikipedia.org/wiki/Код_ЄДРПОУ +* https://1cinfo.com.ua/Articles/Proverka_koda_po_EDRPOU.aspx + +>>> validate('32855961') +'32855961' +>>> validate('32855968') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> format(' 32855961 ') +'32855961' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation.""" + return clean(number, ' ').strip() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit for number.""" + weights = [1, 2, 3, 4, 5, 6, 7] + if number[0] in '345': + weights = [7, 1, 2, 3, 4, 5, 6] + total = sum(w * int(n) for w, n in zip(weights, number)) + if total % 11 < 10: + return str(total % 11) + # Calculate again with other weights + weights = [w + 2 for w in weights] + total = sum(w * int(n) for w, n in zip(weights, number)) + return str(total % 11 % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid Ukraine EDRPOU (ЄДРПОУ) number. + + This checks the length, formatting and check digit. + """ + number = compact(number) + if len(number) != 8: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Ukraine EDRPOU (ЄДРПОУ) number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/ua/rntrc.py b/stdnum/ua/rntrc.py new file mode 100644 index 00000000..8a1d178e --- /dev/null +++ b/stdnum/ua/rntrc.py @@ -0,0 +1,87 @@ +# rntrc.py - functions for handling Ukrainian RNTRC numbers +# coding: utf-8 +# +# Copyright (C) 2020 Leandro Regueiro +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""РНОКПП, RNTRC (Individual taxpayer registration number in Ukraine). + +The РНОКПП (Реєстраційний номер облікової картки платника податків, +registration number of the taxpayer's registration card) is a unique +identification number that is provided to individuals within Ukraine. The +number consists of 10 digits, the last being a check digit. + +More information: + +* https://uk.wikipedia.org/wiki/РНОКПП + +>>> validate('1759013776') +'1759013776' +>>> validate('1759013770') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> format(' 25 30 41 40 71 ') +'2530414071' +""" + +from __future__ import annotations + +from stdnum.exceptions import * +from stdnum.util import clean, isdigits + + +def compact(number: str) -> str: + """Convert the number to the minimal representation.""" + return clean(number, ' ').strip() + + +def calc_check_digit(number: str) -> str: + """Calculate the check digit for number.""" + weights = (-1, 5, 7, 9, 4, 6, 10, 5, 7) + total = sum(w * int(n) for w, n in zip(weights, number)) + return str((total % 11) % 10) + + +def validate(number: str) -> str: + """Check if the number is a valid Ukraine RNTRC (РНОКПП) number. + + This checks the length, formatting and check digit. + """ + number = compact(number) + if len(number) != 10: + raise InvalidLength() + if not isdigits(number): + raise InvalidFormat() + if number[-1] != calc_check_digit(number): + raise InvalidChecksum() + return number + + +def is_valid(number: str) -> bool: + """Check if the number is a valid Ukraine RNTRC (РНОКПП) number.""" + try: + return bool(validate(number)) + except ValidationError: + return False + + +def format(number: str) -> str: + """Reformat the number to the standard presentation format.""" + return compact(number) diff --git a/stdnum/us/__init__.py b/stdnum/us/__init__.py index 5d767341..35db7aaa 100644 --- a/stdnum/us/__init__.py +++ b/stdnum/us/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of United States numbers.""" diff --git a/stdnum/us/atin.py b/stdnum/us/atin.py index 4ff59535..f622107f 100644 --- a/stdnum/us/atin.py +++ b/stdnum/us/atin.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ATIN (U.S. Adoption Taxpayer Identification Number). @@ -35,6 +33,8 @@ '123' """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -45,13 +45,13 @@ _atin_re = re.compile(r'^[0-9]{3}-?[0-9]{2}-?[0-9]{4}$') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '-').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ATIN. This checks the length and formatting if it is present.""" match = _atin_re.search(clean(number, '').strip()) @@ -61,7 +61,7 @@ def validate(number): return compact(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ATIN.""" try: return bool(validate(number)) @@ -69,7 +69,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" if len(number) == 9: number = number[:3] + '-' + number[3:5] + '-' + number[5:] diff --git a/stdnum/us/ein.py b/stdnum/us/ein.py index 75d178c2..58dfc960 100644 --- a/stdnum/us/ein.py +++ b/stdnum/us/ein.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """EIN (U.S. Employer Identification Number). @@ -42,6 +40,8 @@ '123' """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -52,13 +52,13 @@ _ein_re = re.compile(r'^(?P[0-9]{2})-?(?P[0-9]{7})$') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '-').strip() -def get_campus(number): +def get_campus(number: str) -> str: """Determine the Campus or other location that issued the EIN.""" from stdnum import numdb number = compact(number) @@ -68,7 +68,7 @@ def get_campus(number): return results['campus'] -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid EIN. This checks the length, groups and formatting if it is present.""" match = _ein_re.search(clean(number, '').strip()) @@ -78,7 +78,7 @@ def validate(number): return compact(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid EIN.""" try: return bool(validate(number)) @@ -86,7 +86,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" if len(number) == 9: number = number[:2] + '-' + number[2:] diff --git a/stdnum/us/itin.py b/stdnum/us/itin.py index 0d1aa41d..4173def9 100644 --- a/stdnum/us/itin.py +++ b/stdnum/us/itin.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ITIN (U.S. Individual Taxpayer Identification Number). @@ -49,6 +47,8 @@ '123' """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -63,13 +63,13 @@ _allowed_groups = set((str(x) for x in range(70, 100) if x not in (89, 93))) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '-').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid ITIN. This checks the length, groups and formatting if it is present.""" match = _itin_re.search(clean(number, '').strip()) @@ -82,7 +82,7 @@ def validate(number): return compact(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ITIN.""" try: return bool(validate(number)) @@ -90,7 +90,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" if len(number) == 9: number = number[:3] + '-' + number[3:5] + '-' + number[5:] diff --git a/stdnum/us/ptin.py b/stdnum/us/ptin.py index 7d60f6a3..046bbd2b 100644 --- a/stdnum/us/ptin.py +++ b/stdnum/us/ptin.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """PTIN (U.S. Preparer Tax Identification Number). @@ -33,6 +31,8 @@ InvalidFormat: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -43,13 +43,13 @@ _ptin_re = re.compile(r'^P[0-9]{8}$') -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '-').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid PTIN. This checks the length, groups and formatting if it is present.""" number = compact(number).upper() @@ -59,7 +59,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid ATIN.""" try: return bool(validate(number)) diff --git a/stdnum/us/rtn.py b/stdnum/us/rtn.py index eb889266..1b6c7a39 100644 --- a/stdnum/us/rtn.py +++ b/stdnum/us/rtn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RTN (Routing transport number). @@ -42,18 +40,20 @@ InvalidChecksum: .. """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any surrounding whitespace.""" number = clean(number).strip() return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit. The number passed should not have the check digit included.""" digits = [int(c) for c in number] @@ -65,7 +65,7 @@ def calc_check_digit(number): return str(checksum) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid routing number. This checks the length and check digit.""" number = compact(number) @@ -78,7 +78,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid RTN.""" try: return bool(validate(number)) diff --git a/stdnum/us/ssn.py b/stdnum/us/ssn.py index 78d538e6..79b24e86 100644 --- a/stdnum/us/ssn.py +++ b/stdnum/us/ssn.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """SSN (U.S. Social Security Number). @@ -60,6 +58,8 @@ '111-22-3333' """ +from __future__ import annotations + import re from stdnum.exceptions import * @@ -74,13 +74,13 @@ _ssn_blacklist = set(('078-05-1120', '457-55-5462', '219-09-9999')) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '-').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid SSN. This checks the length, groups and formatting if it is present.""" match = _ssn_re.search(clean(number, '').strip()) @@ -100,7 +100,7 @@ def validate(number): return compact(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid SSN.""" try: return bool(validate(number)) @@ -108,7 +108,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" if len(number) == 9: number = number[:3] + '-' + number[3:5] + '-' + number[5:] diff --git a/stdnum/us/tin.py b/stdnum/us/tin.py index 72ccddcb..d66d6801 100644 --- a/stdnum/us/tin.py +++ b/stdnum/us/tin.py @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """TIN (U.S. Taxpayer Identification Number). @@ -48,6 +46,8 @@ '123-456' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.us import atin, ein, itin, ptin, ssn from stdnum.util import clean @@ -56,25 +56,25 @@ _tin_modules = (ssn, itin, ein, ptin, atin) -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, '-').strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid TIN. This searches for the proper sub-type and validates using that.""" for mod in _tin_modules: try: - return mod.validate(number) + return mod.validate(number) # type: ignore[no-any-return] except ValidationError: pass # try next module # fallback raise InvalidFormat() -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid TIN.""" try: return bool(validate(number)) @@ -82,7 +82,7 @@ def is_valid(number): return False -def guess_type(number): +def guess_type(number: str) -> list[str]: """Return a list of possible TIN types for which this number is valid..""" return [mod.__name__.rsplit('.', 1)[-1] @@ -90,9 +90,9 @@ def guess_type(number): if mod.is_valid(number)] -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" for mod in _tin_modules: if mod.is_valid(number) and hasattr(mod, 'format'): - return mod.format(number) + return mod.format(number) # type: ignore[no-any-return] return number diff --git a/stdnum/util.py b/stdnum/util.py index 5c194250..bd5d1056 100644 --- a/stdnum/util.py +++ b/stdnum/util.py @@ -1,7 +1,7 @@ # util.py - common utility functions # coding: utf-8 # -# Copyright (C) 2012-2019 Arthur de Jong +# Copyright (C) 2012-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Common utility functions for other stdnum modules. @@ -25,9 +23,12 @@ stdnum. """ +from __future__ import annotations + import pkgutil import pydoc import re +import ssl import sys import unicodedata import warnings @@ -35,23 +36,43 @@ from stdnum.exceptions import * +TYPE_CHECKING = False +if TYPE_CHECKING: # pragma: no cover (only used when type checking) + from collections.abc import Generator + from typing import Any, Protocol + + class NumberValidationModule(Protocol): + """Minimal interface for a number validation module.""" + + def compact(self, number: str) -> str: + """Convert the number to the minimal representation.""" + + def validate(self, number: str) -> str: + """Check if the number provided is a valid number of its type.""" + + def is_valid(self, number: str) -> bool: + """Check if the number provided is a valid number of its type.""" + + +else: + + NumberValidationModule = None + + # Regular expression to match doctests in docstrings -_strip_doctest_re = re.compile(r'^>>> .*\Z', re.DOTALL | re.MULTILINE) +_strip_doctest_re = re.compile(r'^>>> .*\Z', flags=re.DOTALL | re.MULTILINE) # Regular expression to match digits _digits_re = re.compile(r'^[0-9]+$') -def _mk_char_map(mapping): - """Transform a dictionary with comma separated uniode chracter names +def _mk_char_map(mapping: dict[str, str]) -> Generator[tuple[str, str]]: + """Transform a dictionary with comma separated uniode character names to tuples with unicode characters as key.""" for key, value in mapping.items(): for char in key.split(','): - try: - yield (unicodedata.lookup(char), value) - except KeyError: # pragma: no cover (does not happen on Python3) - pass + yield (unicodedata.lookup(char), value) # build mapping of Unicode characters to equivalent ASCII characters @@ -153,12 +174,12 @@ def _mk_char_map(mapping): })) -def _clean_chars(number): +def _clean_chars(number: str) -> str: """Replace various Unicode characters with their ASCII counterpart.""" return ''.join(_char_map.get(x, x) for x in number) -def clean(number, deletechars=''): +def clean(number: str, deletechars: str = '') -> str: """Remove the specified characters from the supplied number. >>> clean('123-456:78 9', ' -:') @@ -168,31 +189,25 @@ def clean(number, deletechars=''): """ try: number = ''.join(x for x in number) - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() - if sys.version < '3' and isinstance(number, str): # pragma: no cover (Python 2 specific code) - try: - number = _clean_chars(number.decode()).encode() - except UnicodeError: - try: - number = _clean_chars(number.decode('utf-8')).encode('utf-8') - except UnicodeError: - pass - else: # pragma: no cover (Python 3 specific code) - number = _clean_chars(number) + number = _clean_chars(number) return ''.join(x for x in number if x not in deletechars) -def isdigits(number): +def isdigits(number: str) -> bool: """Check whether the provided string only consists of digits.""" # This function is meant to replace str.isdigit() which will also return # True for all kind of unicode digits which is generally not what we want return bool(_digits_re.match(number)) -def to_unicode(text): - """Convert the specified text to a unicode string.""" - if not isinstance(text, type(u'')): +def to_unicode(text: str | bytes) -> str: + """DEPRECATED: Will be removed in an upcoming release.""" # noqa: D40 + warnings.warn( + 'to_unicode() will be removed in an upcoming release', + DeprecationWarning, stacklevel=2) + if not isinstance(text, str): try: return text.decode('utf-8') except UnicodeDecodeError: @@ -200,7 +215,7 @@ def to_unicode(text): return text -def get_number_modules(base='stdnum'): +def get_number_modules(base: str = 'stdnum') -> Generator[NumberValidationModule]: """Yield all the number validation modules under the specified module.""" __import__(base) module = sys.modules[base] @@ -215,71 +230,122 @@ def get_number_modules(base='stdnum'): yield module -def get_module_name(module): +def get_module_name(module: object) -> str: """Return the short description of the number.""" return pydoc.splitdoc(pydoc.getdoc(module))[0].strip('.') -def get_module_description(module): +def get_module_description(module: object) -> str: """Return a description of the number.""" doc = pydoc.splitdoc(pydoc.getdoc(module))[1] # remove the doctests return _strip_doctest_re.sub('', doc).strip() -def get_cc_module(cc, name): +def get_cc_module(cc: str, name: str) -> NumberValidationModule | None: """Find the country-specific named module.""" cc = cc.lower() # add suffix for python reserved words if cc in ('in', 'is', 'if'): cc += '_' try: - mod = __import__('stdnum.%s' % cc, globals(), locals(), [str(name)]) + mod = __import__('stdnum.%s' % cc, globals(), locals(), [name]) return getattr(mod, name, None) except ImportError: - return + return None # this is a cache of SOAP clients _soap_clients = {} -def get_soap_client(wsdlurl, timeout=30): # pragma: no cover (not part of normal test suite) +def _get_zeep_soap_client( + wsdlurl: str, + timeout: float, + verify: bool | str, +) -> Any: # pragma: no cover (not part of normal test suite) + from requests import Session + from zeep import CachingClient + from zeep.transports import Transport + session = Session() + session.verify = verify + transport = Transport(operation_timeout=timeout, timeout=timeout, session=session) # type: ignore[no-untyped-call] + return CachingClient(wsdlurl, transport=transport).service # type: ignore[no-untyped-call] + + +def _get_suds_soap_client( + wsdlurl: str, + timeout: float, + verify: bool | str, +) -> Any: # pragma: no cover (not part of normal test suite) + import os.path + from urllib.request import HTTPSHandler, getproxies + + from suds.client import Client # type: ignore + from suds.transport.http import HttpTransport # type: ignore + + class CustomSudsTransport(HttpTransport): # type: ignore[misc] + + def u2handlers(self): # type: ignore[no-untyped-def] + handlers = super(CustomSudsTransport, self).u2handlers() + if isinstance(verify, str): + if not os.path.isdir(verify): + ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, capath=verify) + else: + ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=verify) + else: + ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH) + if verify is False: + ssl_context.check_hostname = False + ssl_context.verify_mode = ssl.CERT_NONE + handlers.append(HTTPSHandler(context=ssl_context)) + return handlers + warnings.warn( + 'Use of Suds for SOAP requests is deprecated, please use Zeep instead', + DeprecationWarning, stacklevel=1) + return Client(wsdlurl, proxy=getproxies(), timeout=timeout, transport=CustomSudsTransport()).service + + +def _get_pysimplesoap_soap_client( + wsdlurl: str, + timeout: float, + verify: bool | str, +) -> Any: # pragma: no cover (not part of normal test suite) + from urllib.request import getproxies + + from pysimplesoap.client import SoapClient # type: ignore + if verify is False: + raise ValueError('PySimpleSOAP does not support verify=False') + kwargs = {} + if isinstance(verify, str): + kwargs['cacert'] = verify + warnings.warn( + 'Use of PySimpleSOAP for SOAP requests is deprecated, please use Zeep instead', + DeprecationWarning, stacklevel=1) + return SoapClient(wsdl=wsdlurl, proxy=getproxies(), timeout=timeout, **kwargs) + + +def get_soap_client( + wsdlurl: str, + timeout: float = 30, + verify: bool | str = True, +) -> Any: # pragma: no cover (not part of normal test suite) """Get a SOAP client for performing requests. The client is cached. The - timeout is in seconds.""" + timeout is in seconds. The verify parameter is either True (the default), False + (to disabled certificate validation) or string value pointing to a CA certificate + file. + """ # this function isn't automatically tested because the functions using - # it are not automatically tested - if (wsdlurl, timeout) not in _soap_clients: - # try zeep first - try: - from zeep.transports import Transport - transport = Transport(timeout=timeout) - from zeep import CachingClient - client = CachingClient(wsdlurl, transport=transport).service - except ImportError: - # fall back to non-caching zeep client + # it are not automatically tested and it requires network access for proper + # testing + if (wsdlurl, timeout, verify) not in _soap_clients: + for function in (_get_zeep_soap_client, _get_suds_soap_client, _get_pysimplesoap_soap_client): try: - from zeep import Client - client = Client(wsdlurl, transport=transport).service + client = function(wsdlurl, timeout, verify) + break except ImportError: - # other implementations require passing the proxy config - try: - from urllib import getproxies - except ImportError: - from urllib.request import getproxies - # fall back to suds - try: - from suds.client import Client - client = Client( - wsdlurl, proxy=getproxies(), timeout=timeout).service - except ImportError: - # use pysimplesoap as last resort - try: - from pysimplesoap.client import SoapClient - client = SoapClient( - wsdl=wsdlurl, proxy=getproxies(), timeout=timeout) - except ImportError: - raise ImportError( - 'No SOAP library (such as zeep) found') - _soap_clients[(wsdlurl, timeout)] = client - return _soap_clients[(wsdlurl, timeout)] + pass + else: + raise ImportError('No SOAP library (such as zeep) found') + _soap_clients[(wsdlurl, timeout, verify)] = client + return _soap_clients[(wsdlurl, timeout, verify)] diff --git a/stdnum/uy/__init__.py b/stdnum/uy/__init__.py index 3cfea915..ae368a23 100644 --- a/stdnum/uy/__init__.py +++ b/stdnum/uy/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Uruguayan numbers.""" +from __future__ import annotations + # provide aliases from stdnum.uy import rut as vat # noqa: F401 diff --git a/stdnum/uy/rut.py b/stdnum/uy/rut.py index baf6322a..8cec1fde 100644 --- a/stdnum/uy/rut.py +++ b/stdnum/uy/rut.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RUT (Registro Único Tributario, Uruguay tax number). @@ -48,6 +46,8 @@ '21-100342-001-7' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits @@ -58,7 +58,7 @@ # https://servicios.dgi.gub.uy/ServiciosEnLinea/ampliar/servicios-automatizados -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -70,14 +70,14 @@ def compact(number): return number -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2) total = sum(int(n) * w for w, n in zip(weights, number)) return str(-total % 11) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Uruguay RUT number. This checks the length, formatting and check digit. @@ -87,7 +87,7 @@ def validate(number): raise InvalidLength() if not isdigits(number): raise InvalidFormat() - if number[:2] < '01' or number[:2] > '21': + if number[:2] < '01' or number[:2] > '22': raise InvalidComponent() if number[2:8] == '000000': raise InvalidComponent() @@ -98,7 +98,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Uruguay RUT number.""" try: return bool(validate(number)) @@ -106,7 +106,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return '-'.join([number[:2], number[2:-4], number[-4:-1], number[-1]]) diff --git a/stdnum/vatin.py b/stdnum/vatin.py index 50f587ce..3e7e2f56 100644 --- a/stdnum/vatin.py +++ b/stdnum/vatin.py @@ -1,6 +1,7 @@ # vatin.py - function to validate any given VATIN. # # Copyright (C) 2020 Leandro Regueiro +# Copyright (C) 2021-2024 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,16 +14,14 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """VATIN (International value added tax identification number) The number VAT identification number (VATIN) is an identifier used in many countries. It starts with an ISO 3166-1 alpha-2 (2 letters) country code (except for Greece, which uses EL, instead of GR) and is followed by the -country-specific the identifier. +country-specific identifier. This module supports all VAT numbers that are supported in python-stdnum. @@ -46,47 +45,56 @@ InvalidComponent: ... """ +from __future__ import annotations + import re from stdnum.exceptions import * -from stdnum.util import clean, get_cc_module +from stdnum.util import NumberValidationModule, clean, get_cc_module # Cache of country code modules _country_modules = dict() -def _get_cc_module(cc): +def _get_cc_module(cc: str) -> NumberValidationModule: """Get the VAT number module based on the country code.""" - # Greece uses a "wrong" country code - cc = cc.lower().replace('el', 'gr') + # Greece uses a "wrong" country code, special case for Northern Ireland + cc = cc.lower().replace('el', 'gr').replace('xi', 'gb') if not re.match(r'^[a-z]{2}$', cc): raise InvalidFormat() if cc not in _country_modules: _country_modules[cc] = get_cc_module(cc, 'vat') - if not _country_modules[cc]: + module = _country_modules[cc] + if not module: raise InvalidComponent() # unknown/unsupported country code - return _country_modules[cc] + return module -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation.""" number = clean(number).strip() module = _get_cc_module(number[:2]) - return number[:2] + module.compact(number[2:]) + try: + return number[:2].upper() + module.compact(number[2:]) + except ValidationError: + return module.compact(number) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid VAT number. This performs the country-specific check for the number. """ number = clean(number, '').strip() module = _get_cc_module(number[:2]) - return number[:2].upper() + module.validate(number[2:]) + try: + return number[:2].upper() + module.validate(number[2:]) + except ValidationError: + return module.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid VAT number.""" try: return bool(validate(number)) diff --git a/stdnum/ve/__init__.py b/stdnum/ve/__init__.py index 83223b3a..4fb567f8 100644 --- a/stdnum/ve/__init__.py +++ b/stdnum/ve/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Venezuelan numbers.""" +from __future__ import annotations + # provide aliases from stdnum.ve import rif as vat # noqa: F401 diff --git a/stdnum/ve/rif.py b/stdnum/ve/rif.py index 2ed3c9f3..dda72b7b 100644 --- a/stdnum/ve/rif.py +++ b/stdnum/ve/rif.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """RIF (Registro de Identificación Fiscal, Venezuelan VAT number). @@ -33,11 +31,13 @@ InvalidChecksum: ... """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding whitespace.""" return clean(number, ' -').upper().strip() @@ -54,7 +54,7 @@ def compact(number): } -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit for the RIF.""" number = compact(number) weights = (3, 2, 7, 6, 5, 4, 3, 2) @@ -63,7 +63,7 @@ def calc_check_digit(number): return '00987654321'[c % 11] -def validate(number): +def validate(number: str) -> str: """Check if the number provided is a valid RIF. This checks the length, formatting and check digit.""" number = compact(number) @@ -78,7 +78,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided is a valid RIF. This checks the length, formatting and check digit.""" try: diff --git a/stdnum/verhoeff.py b/stdnum/verhoeff.py index e6af8547..ee1c3458 100644 --- a/stdnum/verhoeff.py +++ b/stdnum/verhoeff.py @@ -1,6 +1,6 @@ # verhoeff.py - functions for performing the Verhoeff checksum # -# Copyright (C) 2010-2015 Arthur de Jong +# Copyright (C) 2010-2021 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """The Verhoeff algorithm. @@ -45,6 +43,8 @@ '12340' """ +from __future__ import annotations + from stdnum.exceptions import * @@ -74,32 +74,29 @@ (7, 0, 4, 6, 9, 1, 3, 2, 5, 8)) -def checksum(number): +def checksum(number: str) -> int: """Calculate the Verhoeff checksum over the provided number. The checksum is returned as an int. Valid numbers should have a checksum of 0.""" - # transform number list - number = tuple(int(n) for n in reversed(str(number))) - # calculate checksum check = 0 - for i, n in enumerate(number): + for i, n in enumerate(int(n) for n in reversed(str(number))): check = _multiplication_table[check][_permutation_table[i % 8][n]] return check -def validate(number): +def validate(number: str) -> str: """Check if the number provided passes the Verhoeff checksum.""" if not bool(number): raise InvalidFormat() try: valid = checksum(number) == 0 - except Exception: + except Exception: # noqa: B902 raise InvalidFormat() if not valid: raise InvalidChecksum() return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number provided passes the Verhoeff checksum.""" try: return bool(validate(number)) @@ -107,7 +104,7 @@ def is_valid(number): return False -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the extra digit that should be appended to the number to make it a valid number.""" return str(_multiplication_table[checksum(str(number) + '0')].index(0)) diff --git a/stdnum/vn/__init__.py b/stdnum/vn/__init__.py index 62552bce..a900bd35 100644 --- a/stdnum/vn/__init__.py +++ b/stdnum/vn/__init__.py @@ -14,11 +14,11 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of Vietnam numbers.""" +from __future__ import annotations + # provide aliases from stdnum.vn import mst as vat # noqa: F401 diff --git a/stdnum/vn/mst.py b/stdnum/vn/mst.py index a8cc4175..3f18645d 100644 --- a/stdnum/vn/mst.py +++ b/stdnum/vn/mst.py @@ -1,4 +1,4 @@ -# nit.py - functions for handling Vietnam MST numbers +# mst.py - functions for handling Vietnam MST numbers # coding: utf-8 # # Copyright (C) 2020 Leandro Regueiro @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """MST (Mã số thuế, Vietnam tax number). @@ -25,7 +23,7 @@ The first two digits is the province code where the business was established. If an enterprise relocates its head office from one -province to another, ths MST will remain unchanged. +province to another, the MST will remain unchanged. The following seven digits are a sequential number from 0000001 to 9999999. @@ -61,11 +59,13 @@ '0312687878-001' """ +from __future__ import annotations + from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -74,14 +74,14 @@ def compact(number): return clean(number, ' -.').strip() -def calc_check_digit(number): +def calc_check_digit(number: str) -> str: """Calculate the check digit.""" weights = (31, 29, 23, 19, 17, 13, 7, 5, 3) total = sum(w * int(n) for w, n in zip(weights, number)) return str(10 - (total % 11)) -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid Vietnam MST number. This checks the length, formatting and check digit. @@ -100,7 +100,7 @@ def validate(number): return number -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid Vietnam MST number.""" try: return bool(validate(number)) @@ -108,7 +108,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return number if len(number) == 10 else '-'.join([number[:10], number[10:]]) diff --git a/stdnum/za/__init__.py b/stdnum/za/__init__.py index 2424e9c1..9b839ba4 100644 --- a/stdnum/za/__init__.py +++ b/stdnum/za/__init__.py @@ -14,8 +14,6 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """Collection of South Africa numbers.""" diff --git a/stdnum/za/idnr.py b/stdnum/za/idnr.py index c4cae18f..6708fe24 100644 --- a/stdnum/za/idnr.py +++ b/stdnum/za/idnr.py @@ -1,4 +1,4 @@ -# tin.py - functions for handling South Africa ID number +# idnr.py - functions for handling South Africa ID number # coding: utf-8 # # Copyright (C) 2020 Arthur de Jong @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """ID number (South African Identity Document number). @@ -27,7 +25,7 @@ More information: * https://en.wikipedia.org/wiki/South_African_identity_card -* http://www.dha.gov.za/index.php/identity-documents2 +* https://www.dha.gov.za/index.php/identity-documents2 >>> validate('7503305044089') '7503305044089' @@ -49,6 +47,8 @@ '750330 5044 08 9' """ +from __future__ import annotations + import datetime from stdnum import luhn @@ -56,7 +56,7 @@ from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -65,7 +65,7 @@ def compact(number): return clean(number, ' ') -def get_birth_date(number): +def get_birth_date(number: str) -> datetime.date: """Split the date parts from the number and return the date of birth. Since the number only uses two digits for the year, the century may be @@ -84,7 +84,7 @@ def get_birth_date(number): raise InvalidComponent() -def get_gender(number): +def get_gender(number: str) -> str: """Get the gender (M/F) from the person's ID number.""" number = compact(number) if number[6] in '01234': @@ -93,7 +93,7 @@ def get_gender(number): return 'M' -def get_citizenship(number): +def get_citizenship(number: str) -> str: """Get the citizenship status (citizen/resident) from the ID number.""" number = compact(number) if number[10] == '0': @@ -104,7 +104,7 @@ def get_citizenship(number): raise InvalidComponent() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid South African ID number. This checks the length, formatting and check digit. @@ -119,7 +119,7 @@ def validate(number): return luhn.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid South African ID number.""" try: return bool(validate(number)) @@ -127,7 +127,7 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" number = compact(number) return ' '.join((number[:6], number[6:10], number[10:12], number[12:])) diff --git a/stdnum/za/tin.py b/stdnum/za/tin.py index cde0fdf1..299dc52a 100644 --- a/stdnum/za/tin.py +++ b/stdnum/za/tin.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """TIN (South African Tax Identification Number). @@ -41,14 +39,16 @@ InvalidLength: ... >>> format('084308984-8') '0843089848' -""" +""" # noqa: E501 + +from __future__ import annotations from stdnum import luhn from stdnum.exceptions import * from stdnum.util import clean, isdigits -def compact(number): +def compact(number: str) -> str: """Convert the number to the minimal representation. This strips the number of any valid separators and removes surrounding @@ -57,7 +57,7 @@ def compact(number): return clean(number, ' -/').upper().strip() -def validate(number): +def validate(number: str) -> str: """Check if the number is a valid South Africa Tax Reference Number. This checks the length, formatting and check digit. @@ -72,7 +72,7 @@ def validate(number): return luhn.validate(number) -def is_valid(number): +def is_valid(number: str) -> bool: """Check if the number is a valid South Africa Tax Reference Number.""" try: return bool(validate(number)) @@ -80,6 +80,6 @@ def is_valid(number): return False -def format(number): +def format(number: str) -> str: """Reformat the number to the standard presentation format.""" return compact(number) diff --git a/tests/numdb-test.dat b/tests/numdb-test.dat index 6b25454e..4fe8bc32 100644 --- a/tests/numdb-test.dat +++ b/tests/numdb-test.dat @@ -1,9 +1,13 @@ +# numdb-test.dat: used for testing the stdnum.numdb module # this is a comment line 0-8 prop1="foo" 100-999 prop2="bar" 200,300-399 prop3="baz" + 333 prop4="bax" 6 prop1="boo" 333 prop4="bla" 90-99 prop1="booz" + 200 comment1="this value will be ignored because a shorter one matches" 00-89 prop2="foo" + 200 comment2="this value will also be ignored" 900-999 prop2="fooz" diff --git a/tests/test_ad_nrt.doctest b/tests/test_ad_nrt.doctest index 74d5f8d7..254d1ef9 100644 --- a/tests/test_ad_nrt.doctest +++ b/tests/test_ad_nrt.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ad.nrt module. It diff --git a/tests/test_al_nipt.doctest b/tests/test_al_nipt.doctest index 471b4329..dc160b9b 100644 --- a/tests/test_al_nipt.doctest +++ b/tests/test_al_nipt.doctest @@ -1,6 +1,6 @@ -test_al_nitp.doctest - more detailed doctests stdnum.al.nipt +test_al_nipt.doctest - more detailed doctests stdnum.al.nipt -Copyright (C) 2015-2017 Arthur de Jong +Copyright (C) 2015-2023 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.al.nipt module. @@ -30,148 +28,106 @@ http://www.qkr.gov.al/kerko/kerko-ne-regjistrin-tregtar/kerko-per-subjekt/ >>> numbers = ''' ... -... J 64103842 S -... J 69102564 M -... J 78311939 N -... J 8291 6498 D -... J 91402501 L ... J 98624806 P -... J61807017B -... J61826022R -... J61911008C +... J61827501H ... J61922018S ... J61923008Q -... J62903175S -... J62903393F -... J62903470T -... J62903491S -... J64103682L +... J62903770O ... J66702410U +... J67902218L ... J67902618M -... J69405530G -... J71824003C -... J72603171B -... J73706808B ... J73721043Q ... J74517201G +... J76418907K +... J76705047U ... J77411245Q -... J81314004P -... J81402004E -... J81508002V -... J81804001C +... J78716317H +... J82916489E ... J86526614T -... J91305001Q -... J91808007H -... J92006014W -... J92917219S +... J91425005N ... J93910409N ... K 01725001F -... K 02727202 O -... K 11715005 L -... K 22013001U +... K 11723003 M ... K 37507987 N -... K 41316001 V ... K 41424801 U ... K 47905861 R ... K 63005203 O ... K 67204202 P -... K 91426008 U +... K01730502W ... K11515001T -... K11715005L ... K12113002H +... K13001013H ... K14019001H -... K21405003G ... K21622001M ... K22218003V -... K26330201T -... K31404025J +... K31518077S ... K31525146H ... K31526056N -... K31823059I -... K31929010K ... K32203501H ... K32801430W ... K33714725W -... K34712418N ... K36308746I ... K36520204A -... K42725403f +... K41315003J ... K46621201I -... K51428013Q ... K51518058O +... K56417201G ... K59418208E -... K61710508W -... K71903001A -... K72410014H -... K81427030E +... K61617040L +... K71822006R +... K72113010E ... K81428502L ... K81618039O -... K84508002F -... K87101202A +... K82418002C +... K82612003J ... K91725009J ... K92402023O -... L 21721005U ... L 22614402 H -... L01307052Q -... L01510016S +... L 62119008 A ... L01622006F -... L01909501I -... L02003503P +... L01717030C ... L02023501H ... L02226012N -... L02602801H ... L03321203G +... L03929803I ... L06426702Q -... L06524402O -... L06901403L -... L06923204C ... L07305201K ... L08711201I -... L09110504G ... L11325024K -... L11625013E ... L11810502T -... L11815018A -... L12003021H -... L12009010A -... L12624002J -... L13020404N +... L12213005M ... L14118803B -... L14703202P ... L21310054D ... L21408015A ... L21429502L -... L21508023Q +... L21906001L ... L21923507N -... L22201021E -... L22203019C ... L22804207O -... L22825801P -... L22902002B ... L24006002V -... L24018612J -... L26311004G ... L29616001A -... L31511019E -... L31911504A +... L31518001O ... L32210507A ... L32319014A -... L32522401O -... L33117002J -... L33318001M -... L41309075A -... L41320026E +... L32622601G ... L41410025S +... L41512005R ... L42008005H ... L42115015G -... L42206027K ... L42307007E -... L42710403A -... L42720201A ... L44119601E -... L46812703Q ... L47014204F ... L48117101S +... L52305009L +... L58428303T +... L62119008A +... L72031013B +... L81506043D +... L81618040T +... L82306024Q +... L98602504L +... M 02129023 S +... M 11807013 N +... M02129023 S ... ... ''' >>> [x for x in numbers.splitlines() if x and not nipt.is_valid(x)] diff --git a/tests/test_ar_cbu.doctest b/tests/test_ar_cbu.doctest index ef3aa9e8..6025763a 100644 --- a/tests/test_ar_cbu.doctest +++ b/tests/test_ar_cbu.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ar.cbu module. It diff --git a/tests/test_ar_cuit.doctest b/tests/test_ar_cuit.doctest index 511634e4..e236bf36 100644 --- a/tests/test_ar_cuit.doctest +++ b/tests/test_ar_cuit.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ac.cuit module. It diff --git a/tests/test_at_tin.doctest b/tests/test_at_tin.doctest index 3a2da539..e1a75138 100644 --- a/tests/test_at_tin.doctest +++ b/tests/test_at_tin.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.at.tin module. It diff --git a/tests/test_au_abn.doctest b/tests/test_au_abn.doctest index 41ae5cab..04e05c28 100644 --- a/tests/test_au_abn.doctest +++ b/tests/test_au_abn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.au.abn module. It diff --git a/tests/test_au_acn.doctest b/tests/test_au_acn.doctest index da7bd4a9..4c2d78fe 100644 --- a/tests/test_au_acn.doctest +++ b/tests/test_au_acn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.au.acn module. It diff --git a/tests/test_au_tfn.doctest b/tests/test_au_tfn.doctest index 1dddcaec..9dc029fb 100644 --- a/tests/test_au_tfn.doctest +++ b/tests/test_au_tfn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.au.tfn module. It diff --git a/tests/test_az_voen.doctest b/tests/test_az_voen.doctest new file mode 100644 index 00000000..04ca23cb --- /dev/null +++ b/tests/test_az_voen.doctest @@ -0,0 +1,252 @@ +test_az_voen.doctest - more detailed doctests for stdnum.az.voen module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.az.voen module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.az import voen + + +Tests for some corner cases. + +>>> voen.validate('1400057421') +'1400057421' +>>> voen.validate('140 155 5071') +'1401555071' +>>> voen.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> voen.validate('ZZ00057421') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> voen.validate('1400057424') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +Nine digit numbers get turned into 10 digits because a leading 0 is sometimes +left out. + +>>> voen.compact('300725012') +'0300725012' +>>> voen.validate('300725012') +'0300725012' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 0200432771 +... 0400198812 +... 0600192862 +... 0800000512 +... 0900062472 +... 1000276532 +... 1002031802 +... 1002193082 +... 1002632171 +... 1002900962 +... 1003160261 +... 1003337762 +... 1005196511 +... 1005643421 +... 1005837482 +... 1005840682 +... 1101062081 +... 1200941152 +... 1202174962 +... 1300182372 +... 1301478392 +... 1302363462 +... 1303029632 +... 1303392331 +... 1303776231 +... 1303959432 +... 1304429532 +... 1305161112 +... 1305777442 +... 1306144182 +... 1306379412 +... 1400138202 +... 1401146511 +... 1401598061 +... 1403147441 +... 1403149281 +... 1403424841 +... 1403575391 +... 1404034501 +... 1404363351 +... 1404678141 +... 1501238982 +... 1501398032 +... 1502964842 +... 1503660862 +... 1503706462 +... 1503883601 +... 1503929742 +... 1504014182 +... 1504695681 +... 1601293792 +... 1602158822 +... 1602379421 +... 1603117061 +... 1603390091 +... 1700548702 +... 1701338762 +... 1701423382 +... 1701825192 +... 1702640641 +... 1801735962 +... 1803381652 +... 1803742052 +... 1803964261 +... 1804578291 +... 1900156291 +... 1900666092 +... 1901679992 +... 1902783672 +... 1903742192 +... 2001344972 +... 2001938462 +... 2002612202 +... 2003266571 +... 2003583512 +... 2004402192 +... 2005090691 +... 2005913681 +... 200722502 +... 2100223801 +... 2100710642 +... 2201511592 +... 2300195562 +... 2300216922 +... 2300295452 +... 2304643692 +... 2600559872 +... 2600774242 +... 2601337332 +... 2602941392 +... 2700093202 +... 2700300252 +... 2700947102 +... 2800038132 +... 2900398871 +... 2903227542 +... 2903472571 +... 3000740252 +... 300293922 +... 3100775152 +... 3100922132 +... 3101355922 +... 3101945282 +... 3102821612 +... 3200741062 +... 3200777152 +... 3300511732 +... 3400435452 +... 3500865702 +... 3600093232 +... 3700292512 +... 3700362132 +... 3800115252 +... 3800140902 +... 3900596722 +... 4001130832 +... 400198382 +... 4100217642 +... 4101419902 +... 4200287721 +... 4200811431 +... 4300343432 +... 4300573181 +... 4401208732 +... 4500078262 +... 4501381622 +... 4600238532 +... 4700899992 +... 4800213191 +... 4900279562 +... 5000136892 +... 500027792 +... 5100109431 +... 5100186382 +... 5200103342 +... 5300164942 +... 5400520582 +... 5400932482 +... 5500638121 +... 5600095582 +... 5700281172 +... 5700680892 +... 5800143892 +... 5900080492 +... 6000440592 +... 6000474432 +... 600495162 +... 6100192552 +... 6100585341 +... 6101051612 +... 6200094532 +... 6300004442 +... 6300030322 +... 6400005112 +... 6402002901 +... 6500021732 +... 6500262492 +... 6600304962 +... 6701087912 +... 6800062912 +... 6800100962 +... 6900587432 +... 7000419952 +... 700516122 +... 7100015622 +... 7200649742 +... 7300403792 +... 7400146452 +... 7400216762 +... 7500537672 +... 7600071671 +... 7600205102 +... 7700749702 +... 7701086342 +... 7701233582 +... 7800009861 +... 7900062142 +... 8000051472 +... 800044702 +... 800047872 +... 8100182712 +... 8200088092 +... 8300356482 +... 8300737062 +... 8400248092 +... 8500094382 +... 8600050502 +... 8700029382 +... 900215552 +... 9900051231 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not voen.is_valid(x)] +[] diff --git a/tests/test_be_bis.doctest b/tests/test_be_bis.doctest new file mode 100644 index 00000000..d9f0a3e7 --- /dev/null +++ b/tests/test_be_bis.doctest @@ -0,0 +1,134 @@ +test_be_bis.doctest - more detailed doctests for stdnum.be.bis module + +Copyright (C) 2023 Jeff Horemans + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.be.bis module. It +tries to test more corner cases and detailed functionality that is not +really useful as module documentation. + +>>> from stdnum.be import bis + + +Extra tests for getting birth date, year and/or month + + +>>> bis.get_birth_date('75.46.08-980.95') +datetime.date(1975, 6, 8) +>>> bis.get_birth_year('75.46.08-980.95') +1975 +>>> bis.get_birth_month('75.46.08-980.95') +6 +>>> bis.get_birth_date('01 49 07 001 85') +datetime.date(2001, 9, 7) +>>> bis.get_birth_year('01 49 07 001 85') +2001 +>>> bis.get_birth_month('01 49 07 001 85') +9 +>>> bis.get_birth_date('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> bis.get_birth_year('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> bis.get_birth_month('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> bis.get_birth_date('00400100155') # Exact date of birth unknown (fictitious date case 1900-00-01) +>>> bis.get_birth_year('00400100155') +>>> bis.get_birth_month('00400100155') +>>> bis.get_birth_date('00200100112') # Birth date and gender unknown +>>> bis.get_birth_year('00200100112') +>>> bis.get_birth_month('00200100112') +>>> bis.get_birth_date('00400100184') # Exact date of birth unknown (fictitious date case 2000-00-01) +>>> bis.get_birth_year('00400100184') +>>> bis.get_birth_month('00400100184') +>>> bis.get_birth_date('00200100141') # Birth date and gender unknown +>>> bis.get_birth_year('00200100141') +>>> bis.get_birth_month('00200100141') +>>> bis.get_birth_date('00400000117') # Only birth year known (2000-00-00) +>>> bis.get_birth_year('00400000117') +2000 +>>> bis.get_birth_month('00400000117') +>>> bis.get_birth_date('00200000171') # Only birth year known and gender unknown +>>> bis.get_birth_year('00200000171') +2000 +>>> bis.get_birth_month('00200000171') +>>> bis.get_birth_date('00410000124') # Only birth year and month known (2000-01-00) +>>> bis.get_birth_year('00410000124') +2000 +>>> bis.get_birth_month('00410000124') +1 +>>> bis.get_birth_date('00210000178') # Only birth year and month known (2000-01-00) and gender unknown +>>> bis.get_birth_year('00210000178') +2000 +>>> bis.get_birth_month('00210000178') +1 +>>> bis.get_birth_date('85473500193') # Unknown day of birth date (35) +>>> bis.get_birth_year('85473500193') +1985 +>>> bis.get_birth_month('85473500193') +7 +>>> bis.get_birth_date('85273500150') # Unknown day of birth date (35) and gender unknown +>>> bis.get_birth_year('85273500150') +1985 +>>> bis.get_birth_month('85273500150') +7 +>>> bis.get_birth_date('85533000191') # Invalid month (13) +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> bis.get_birth_year('85533000191') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> bis.get_birth_month('85533000191') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> bis.get_birth_date('85333000148') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> bis.get_birth_year('85333000148') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> bis.get_birth_month('85333000148') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +Extra tests for getting gender. + +>>> bis.get_gender('75.46.08-980.95') +'F' +>>> bis.get_gender('75.26.08-980.52') # Gender unknown (month incremented by 20) +>>> bis.get_gender('85473500193') +'M' +>>> bis.get_gender('85273500150') + + +A NN should not be considered a valid BIS number. + +>>> bis.validate('00000100195') +Traceback (most recent call last): + ... +InvalidComponent: ... diff --git a/tests/test_be_iban.doctest b/tests/test_be_iban.doctest index e0492760..054c15e8 100644 --- a/tests/test_be_iban.doctest +++ b/tests/test_be_iban.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.be.iban module. It @@ -37,6 +35,15 @@ Traceback (most recent call last): InvalidChecksum: ... +Some bank account numbers don't have a BIC. +(this is a constructed bank account number, no actual one was found in the wild) + +>>> iban.validate('BE45102000000089') +'BE45102000000089' +>>> iban.to_bic('BE45102000000089') is None +True + + These should all be valid numbers combined with the appropriate BIC code for the IBAN. @@ -51,7 +58,6 @@ the IBAN. ... BE 07-0682455012-66 GKCCBEBB ... BE 08 0682 0620 1213 GKCCBEBB ... BE 099790 8568 5357 ARSPBE22 -... BE 10 0000 0000 0404 BPOTBEB1 ... BE 10 1030 4164 5404 NICABEBB ... BE 10850818312004 NICABEBB ... BE 11 2300 1259 3448 GEBABEBB @@ -79,11 +85,9 @@ the IBAN. ... BE 36 0910 0060 6681 GKCCBEBB ... BE 36310180497181 BBRUBEBB ... BE 3773 103 388 7428 KREDBEBB -... BE 38 0000 1315 0772 BPO TBE B1 ... BE 38 0016 8887 4272 GEBABEBB ... BE 40 0631 6189 5863 GKCCBEBB ... BE 40 7380 1475 7863 KREDBEBB -... BE 41 0003 2556 2110 BPOTBEB1 ... BE 43.4679.1170.4101 KREDBEBB ... BE 44 2200 4529 0245 GEBABEBB ... BE 45 2100 0760 8589 GEBABEBB @@ -91,7 +95,6 @@ the IBAN. ... BE 46 4214 1888 0136 KREDBEBB ... BE 46 6528 2264 2736 BBRUBEBB ... BE 46 7380 3139 0636 KREDBEBB -... BE 47 0001 0350 7080 BPOTBEB1 ... BE 48 3200 7018 4927 BBRUBEBB ... BE 48 6792 0055 0227 PCHQ BE BB ... BE 48 6792 0055 0227 PCHQBEBB @@ -127,13 +130,10 @@ the IBAN. ... BE 80.3850.5900.6577 BBRUBEBB ... BE 81 4171 0398 9124 KREDBEBB ... BE 81 731001139824 KREDBEBB -... BE 82 1796 3107 6768 COBABEBX ... BE 84375084291059 BBRU BE BB ... BE 85 0017 1352 5006 GEBABEBB ... BE 85 7310 4209 1406 KREDBEBB ... BE 87 0015 4520 0094 GEBABEBB -... BE 88 0000 0000 4141 BPOTBEB1 -... BE 88 0000 1820 1341 BPOTBEB1 ... BE 88 3200 2887 4041 BBRUBEBB ... BE 88733 0477639 41 KREDBEBB ... BE 89 0013 0131 2085 GEBABEBB @@ -151,14 +151,11 @@ the IBAN. ... BE 96 2100 6808 9305 GEBA-BEBB ... BE 962300 1003 8005 GEBABEBB ... BE 97 2930 1249 3049 GEBABEBB -... BE10 0000 0000 0404 BPOTBEB1 ... BE52 3100 2234 1109 BBRUBEBB ... BE58 7310 2144 7479 KREDBEBB ... BE59 65283724 9926 BBRUBEBB ... BE65 0910 0060 8196 GKCCBEBB ... BE79 0689 0189 6933 GKCCBEBB -... BE88 0000 0000 4141 BPOTBEB1 -... BE89 0000 1076 5885 BPOTBEB1 ... BE97 0017 6310 6049 GEBABEBB ... be 54 9799 7279 3197 arspbe22 ... ''' diff --git a/tests/test_be_nn.doctest b/tests/test_be_nn.doctest new file mode 100644 index 00000000..1c03fa0a --- /dev/null +++ b/tests/test_be_nn.doctest @@ -0,0 +1,99 @@ +test_be_nn.doctest - more detailed doctests for stdnum.be.nn module + +Copyright (C) 2022 Arthur de Jong +Copyright (C) 2023 Jeff Horemans + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.be.nn module. It +tries to test more corner cases and detailed functionality that is not +really useful as module documentation. + +>>> from stdnum.be import nn + + +Extra tests for getting birth date, year and/or month + + +>>> nn.get_birth_date('85.07.30-033 28') +datetime.date(1985, 7, 30) +>>> nn.get_birth_year('85.07.30-033 28') +1985 +>>> nn.get_birth_month('85.07.30-033 28') +7 +>>> nn.get_birth_date('17 07 30 033 84') +datetime.date(2017, 7, 30) +>>> nn.get_birth_year('17 07 30 033 84') +2017 +>>> nn.get_birth_month('17 07 30 033 84') +7 +>>> nn.get_birth_date('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> nn.get_birth_year('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> nn.get_birth_month('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> nn.get_birth_date('00000100166') # Exact date of birth unknown (fictitious date case 1900-00-01) +>>> nn.get_birth_year('00000100166') +>>> nn.get_birth_month('00000100166') +>>> nn.get_birth_date('00000100195') # Exact date of birth unknown (fictitious date case 2000-00-01) +>>> nn.get_birth_year('00000100195') +>>> nn.get_birth_month('00000100195') +>>> nn.get_birth_date('00000000128') # Only birth year known (2000-00-00) +>>> nn.get_birth_year('00000000128') +2000 +>>> nn.get_birth_month('00000000128') +>>> nn.get_birth_date('00010000135') # Only birth year and month known (2000-01-00) +>>> nn.get_birth_year('00010000135') +2000 +>>> nn.get_birth_month('00010000135') +1 +>>> nn.get_birth_date('85073500107') # Unknown day of birth date (35) +>>> nn.get_birth_year('85073500107') +1985 +>>> nn.get_birth_month('85073500107') +7 +>>> nn.get_birth_date('85133000105') # Invalid month (13) +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> nn.get_birth_year('85133000105') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> nn.get_birth_month('85133000105') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +Extra tests for getting gender + +>>> nn.get_gender('75.06.08-980.09') +'F' + + +A BIS number is not considered a valid NN. + +>>> nn.validate('00400100184') +Traceback (most recent call last): + ... +InvalidComponent: ... diff --git a/tests/test_be_ssn.doctest b/tests/test_be_ssn.doctest new file mode 100644 index 00000000..b0e67ada --- /dev/null +++ b/tests/test_be_ssn.doctest @@ -0,0 +1,203 @@ +test_be_ssn.doctest - more detailed doctests for stdnum.be.ssn module + +Copyright (C) 2022 Arthur de Jong +Copyright (C) 2023 Jeff Horemans + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.be.ssn module. It +tries to test more corner cases and detailed functionality that is not +really useful as module documentation. + +>>> from stdnum.be import ssn + + +Extra tests for getting birth date, year and/or month from National Number. + + +>>> ssn.get_birth_date('85.07.30-033 28') +datetime.date(1985, 7, 30) +>>> ssn.get_birth_year('85.07.30-033 28') +1985 +>>> ssn.get_birth_month('85.07.30-033 28') +7 +>>> ssn.get_birth_date('17 07 30 033 84') +datetime.date(2017, 7, 30) +>>> ssn.get_birth_year('17 07 30 033 84') +2017 +>>> ssn.get_birth_month('17 07 30 033 84') +7 +>>> ssn.get_birth_date('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> ssn.get_birth_year('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> ssn.get_birth_month('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> ssn.get_birth_date('00000100166') # Exact date of birth unknown (fictitious date case 1900-00-01) +>>> ssn.get_birth_year('00000100166') +>>> ssn.get_birth_month('00000100166') +>>> ssn.get_birth_date('00000100195') # Exact date of birth unknown (fictitious date case 2000-00-01) +>>> ssn.get_birth_year('00000100195') +>>> ssn.get_birth_month('00000100195') +>>> ssn.get_birth_date('00000000128') # Only birth year known (2000-00-00) +>>> ssn.get_birth_year('00000000128') +2000 +>>> ssn.get_birth_month('00000000128') +>>> ssn.get_birth_date('00010000135') # Only birth year and month known (2000-01-00) +>>> ssn.get_birth_year('00010000135') +2000 +>>> ssn.get_birth_month('00010000135') +1 +>>> ssn.get_birth_date('85073500107') # Unknown day of birth date (35) +>>> ssn.get_birth_year('85073500107') +1985 +>>> ssn.get_birth_month('85073500107') +7 +>>> ssn.get_birth_date('85133000105') # Invalid month (13) +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ssn.get_birth_year('85133000105') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ssn.get_birth_month('85133000105') +Traceback (most recent call last): + ... +InvalidComponent: ... + + + +Extra tests for getting gender from National Number + +>>> ssn.get_gender('75.06.08-980.09') +'F' +>>> ssn.get_gender('12345678901') + + +Extra tests for getting birth date, year and/or month from BIS number. + + +>>> ssn.get_birth_date('75.46.08-980.95') +datetime.date(1975, 6, 8) +>>> ssn.get_birth_year('75.46.08-980.95') +1975 +>>> ssn.get_birth_month('75.46.08-980.95') +6 +>>> ssn.get_birth_date('01 49 07 001 85') +datetime.date(2001, 9, 7) +>>> ssn.get_birth_year('01 49 07 001 85') +2001 +>>> ssn.get_birth_month('01 49 07 001 85') +9 +>>> ssn.get_birth_date('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> ssn.get_birth_year('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> ssn.get_birth_month('12345678901') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> ssn.get_birth_date('00400100155') # Exact date of birth unknown (fictitious date case 1900-00-01) +>>> ssn.get_birth_year('00400100155') +>>> ssn.get_birth_month('00400100155') +>>> ssn.get_birth_date('00200100112') # Birth date and gender unknown +>>> ssn.get_birth_year('00200100112') +>>> ssn.get_birth_month('00200100112') +>>> ssn.get_birth_date('00400100184') # Exact date of birth unknown (fictitious date case 2000-00-01) +>>> ssn.get_birth_year('00400100184') +>>> ssn.get_birth_month('00400100184') +>>> ssn.get_birth_date('00200100141') # Birth date and gender unknown +>>> ssn.get_birth_year('00200100141') +>>> ssn.get_birth_month('00200100141') +>>> ssn.get_birth_date('00400000117') # Only birth year known (2000-00-00) +>>> ssn.get_birth_year('00400000117') +2000 +>>> ssn.get_birth_month('00400000117') +>>> ssn.get_birth_date('00200000171') # Only birth year known and gender unknown +>>> ssn.get_birth_year('00200000171') +2000 +>>> ssn.get_birth_month('00200000171') +>>> ssn.get_birth_date('00410000124') # Only birth year and month known (2000-01-00) +>>> ssn.get_birth_year('00410000124') +2000 +>>> ssn.get_birth_month('00410000124') +1 +>>> ssn.get_birth_date('00210000178') # Only birth year and month known (2000-01-00) and gender unknown +>>> ssn.get_birth_year('00210000178') +2000 +>>> ssn.get_birth_month('00210000178') +1 +>>> ssn.get_birth_date('85473500193') # Unknown day of birth date (35) +>>> ssn.get_birth_year('85473500193') +1985 +>>> ssn.get_birth_month('85473500193') +7 +>>> ssn.get_birth_date('85273500150') # Unknown day of birth date (35) and gender unknown +>>> ssn.get_birth_year('85273500150') +1985 +>>> ssn.get_birth_month('85273500150') +7 +>>> ssn.get_birth_date('85533000191') # Invalid month (13) +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ssn.get_birth_year('85533000191') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ssn.get_birth_month('85533000191') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ssn.get_birth_date('85333000148') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ssn.get_birth_year('85333000148') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ssn.get_birth_month('85333000148') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +Extra tests for getting gender from BIS number. + +>>> ssn.get_gender('75.46.08-980.95') +'F' +>>> ssn.get_gender('75.26.08-980.52') # Gender unknown (month incremented by 20) +>>> ssn.get_gender('85473500193') +'M' +>>> ssn.get_gender('85273500150') +>>> ssn.get_gender('12345678901') + + +Extra tests for guessing type of invalid numbers + + +>>> ssn.guess_type('12345678901') diff --git a/tests/test_be_vat.doctest b/tests/test_be_vat.doctest new file mode 100644 index 00000000..e9a36de8 --- /dev/null +++ b/tests/test_be_vat.doctest @@ -0,0 +1,43 @@ +test_be_vat.doctest - more detailed doctests for stdnum.be.vat module + +Copyright (C) 2020-2025 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.be.vat module. It +tries to test more corner cases and detailed functionality that is not +really useful as module documentation. + +>>> from stdnum.be import vat + + +Tests for corner cases. + +>>> vat.validate('BE0000000000') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> vat.validate('BE000000000') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> vat.validate('000000') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> vat.validate('BE2000021323') +Traceback (most recent call last): + ... +InvalidComponent: ... diff --git a/tests/test_bg_egn.doctest b/tests/test_bg_egn.doctest index 2eccb60d..c8e28a64 100644 --- a/tests/test_bg_egn.doctest +++ b/tests/test_bg_egn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.bg.egn module. It diff --git a/tests/test_bg_vat.doctest b/tests/test_bg_vat.doctest index aed256b2..b506cd46 100644 --- a/tests/test_bg_vat.doctest +++ b/tests/test_bg_vat.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.bg.vat module. It diff --git a/tests/test_bic.doctest b/tests/test_bic.doctest new file mode 100644 index 00000000..a3eaee73 --- /dev/null +++ b/tests/test_bic.doctest @@ -0,0 +1,441 @@ +test_bic.doctest - more detailed doctests for stdnum.bic module + +Copyright (C) 2025 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.bic module. It +tries to test more corner cases and detailed functionality that is not +really useful as module documentation. + +>>> from stdnum import bic + + +Test for invalid country codes. + +>>> bic.validate('MULTIPLE') # IP is not a valid country code +Traceback (most recent call last): + ... +InvalidComponent: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... ABNCNL2AGIR +... ABNNSVS2 +... ABOCCNBJ270 +... ABOCKRSE +... ACGDGDGD +... ADECCH2G +... AFDBCIABNPD +... AFGMMGMG +... AFROGB2L +... AGBMDEMM +... AGRIGPGX +... AGTBIDJA +... AGUBDZAL +... AHCDDOS2 +... AIEPSGSGIWC +... AIRRHKHH +... AIYLKG22 +... ALCVLBBE +... ALFXAEAD +... ALLFLULLAFI +... ANCEAOLU +... ANDLTRISTUZ +... ANIKAM22 +... ANZBSBSB +... ANZBTONN +... APDEVAVA +... ARABBHBM +... ARABJOAX +... ARABPS22600 +... ARCGITMA +... ARECAM22 +... AREXGHAC +... ARUBAWAX +... ARUNTJ22 +... ARVDTJ22 +... ASBBNZ2A +... ASCMPKKA002 +... ASPMMYKL +... ATBJBJBJ +... ATGWGWGW +... ATTGTGTG +... AUDBLBBX +... AUIVAU2S +... AVALUAUK +... AWXLLT22 +... AXCWKWKW +... AXISINBB389 +... AXSBBMHM +... AZAMZMLU +... AZRTAZ22 +... BAIPCVCV +... BANOGLG2 +... BAPRNIMA +... BARBFJFJ +... BARBKENAKIS +... BARBSCSC +... BARCSCSC +... BAVDCVCP +... BBDEBRSPBGS +... BBICCWCW +... BBONKYKY +... BBVATWTP +... BCAOMLBASIK +... BCAOSNDP +... BCBATCGP +... BCBHDOSD +... BCBTBZBZ +... BCEXCOBB +... BCKICKCR +... BCOMMOMX +... BCOMPTPL +... BCPLBOLXSCZ +... BCPOMAMCBRK +... BCTLTLDA +... BCYPCY2N +... BDACEGCA084 +... BDGEGNGN +... BDINIDJATPC +... BEACGQGQ +... BFCORERX +... BFCOYTYT +... BFMXAOLU +... BGFICMCX +... BGFIGALI +... BHELSHJJ +... BIBDBNBB +... BICCKMKM +... BICVNENI +... BIMOMZMXFIN +... BJAZSAJE002 +... BKAUATWWWOL +... BKCHCNBJ260 +... BKCHJPJTOTM +... BKIDJPJTOSK +... BKIGRWRW +... BKIRKIKI +... BKKBHKHHMTG +... BKKBKHPP +... BKMOMSMS +... BKNNSMSM +... BLFLLI2X225 +... BMCEMAMCCOR +... BMILHNTE +... BMOCMZMP +... BNDCCAMMVAL +... BNEVKNNE +... BNGRGRAACON +... BNPAFRPPAUX +... BNPAMQMX +... BNPANCNXKOU +... BNPARERXPOR +... BNPASARI +... BNRWRWRW +... BOFAIE3XFUT +... BOMDMH22 +... BOSPCKCR +... BPKOROBU +... BPNGPGPM +... BPOLPFTP +... BPUNPKKACRU +... BRASPYPX +... BREDFJFJ +... BREDVUVU +... BRHAHTPP +... BRMXNENI +... BSANADAD +... BSAPPEPL +... BSLJSI2XATM +... BSLULCLC +... BSUPARBATIT +... BTRLRO22BNA +... BTVAAT22KIB +... BUNONIMA +... CABARS22 +... CAGLESMMVIG +... CBAOBFBG +... CBBSBA2A +... CBCUUYMMGPA +... CBCYCY2NPMT +... CBGIGYGG +... CBININBI +... CBKNNANAPCH +... CBKUKWKWBOD +... CBLELSMX +... CBOMOMRU +... CBSISBSB +... CCEICMCXDLA +... CCIOCRSJBBI +... CDCGWF2M +... CDERCLRG +... CDISALTR +... CDSOGTG2 +... CEPANCNM +... CESUUAU2 +... CGDITLDI +... CHASARBA +... CHASPHMMOBU +... CHASTHBX +... CHGLVGVG +... CIBEEGCX166 +... CITCCWCU +... CITGUS44EHP +... CITINGLA +... CLMDMGMG +... CMBAAWAX +... CMWBDMDM +... CNBTIMDD +... CNVXBMHM +... COEBLALA +... COFDPEPL +... CORIMLBA +... CPITMNUB +... CRDAADAD +... CRESCHZZ12Q +... CRTUGE22086 +... CSDLLT22 +... CTCBTWTP012 +... DABAFIHHHAM +... DABAIE2D917 +... DBLNBJBJ +... DEUTESBBAP2 +... DFLTTTPS +... DIETMCMC +... DIKIBTBBORO +... DKNBDKKKPLL +... DOHBQAQAWBB +... DVKAKZKA +... EBAPFRPS +... ECAAKYK2 +... ECOCGQGQ +... ECOCSTST +... ECOCTGTA +... EIKBFOTFKON +... EMSYMTMT +... ESTPSTST +... ESYIPRSJ +... ETHNGRAATIP +... EUBOBSNS +... EXSKSKBX +... EXTNKMKM +... FARPSZMA +... FCIBBBB2 +... FCIBTTP2 +... FCOHPAPA +... FDSFLI22LV1 +... FIFBFOTX +... FIRNBWGXCUS +... FIRNLSMX +... FIVFPGPM +... FLMSNANX +... FLORNL2ACCB +... FMBKDEMM258 +... FMBZZMLX +... FPVCCOBB +... FTMDMD2X +... GBHAMQMM +... GDAAETAA +... GIBAHUHB +... GMBKGUGU +... GODOSRPA +... GOLDBRSP +... GRENGLGXKON +... GTBGGMGM +... GUTIGYGE +... GVVGVCVC +... HABAEE2XTIP +... HAMBGIGI +... HANDPLPW +... HATHKHPP +... HBBAMEPG +... HDELSI22 +... ICBKKZKX +... ICBKNZ2A +... ICDJDJJD +... ICGSGTGC +... IFIPPHM2 +... IHSAMUMU +... INCEGHAC +... INUIHR22CUS +... IOPRVAVX +... ISGUGNGN +... ISRAILIR +... JNBSJMKN +... JSCLUZ22 +... KBNONO22 +... KCBLTZTZ +... KICPDMD2 +... KNANKNSK +... KOMASK2XSNV +... KOMBCZPP +... KREZHR2XCUS +... KTAYCRSJ +... KYRGKG22 +... LAPBLV2X +... LBDELRLM +... LDBBLALA +... LHFMJESH +... LIVEDKKK +... LMLDZWHA +... LNLNNOB2D01 +... LUMIILIT +... LUOBLCLC +... MAOISMSM003 +... MBICMRMR0MN +... MBLBBDDH003 +... MBLNNPKA +... MCBKBQBN +... MCBLMVMV +... MDFCGWGW +... MEBBBA22 +... MENOMXMT +... MMAUMVMV +... NABTTVTV +... NABZAZ2X +... NACNBOLP +... NACNPYPA0PE +... NAPAPAPA +... NATXDZAL +... NBADBHBMTFO +... NBELBZBB +... NBFUAEAFSHJ +... NBKEKENX757 +... NBMAMWMW005 +... NBRMMK2A +... NBSLWSWS +... NCBGGDGD001 +... NCBVVC22 +... NESWSZMX +... NIBIETAA +... NLPRXKPR +... NOITAGAG +... NOSCCATMSEC +... NOSCTCGP +... NREIGGSP +... NSBINPKA +... OKOYLV2X +... ORBASXSM +... ORBKGALI +... ORINUGKA +... OTPPHUH2 +... PACIECEG100 +... PAERCZPPGEN +... PASCITMMCAN +... PAVTPW22 +... PBPRHNT2 +... PCBCVNVX +... PCCACLRZ +... PHBXLRLM +... PICHECEQ522 +... PICTBSNX +... PLLPMUMU +... PMAPPS22ACH +... PRBAUYMM +... PRCBRSBG +... PRCBSVSS +... PRDTNGLA +... PSATPLPW +... PSBKLKLX023 +... PUBABDDH205 +... PYMXMTMTMAL +... QNBAMRMU +... RBMAMWMWMRA +... RBNKAIAI +... RBNKSXSMANT +... RBNKVGVGVGA +... RBTTBQBN +... REBZZWHQ +... REVOPTP2 +... RFLCJESX +... RIKOEE22 +... RIKSSESSBER +... RMABBTBT +... RNCBMD2X +... ROKLIMDI1UW +... ROYCBBBB +... ROYCGGSPOFM +... ROYCSGS2 +... RYSGTM2A +... RZOOAT2L226 +... SAMBQAQA +... SBICCIAB +... SBINOMRX +... SBMMMCMC +... SBZAZAJJAFR +... SCBLFKFK +... SCBLMOMX +... SCBLTHBX +... SCBLTZTXSSU +... SCHBBWGX013 +... SCOBWSWS +... SEDCJOAX +... SENFLKLX +... SGBBBFBF +... SIMXMXMM +... SKFISEGA +... SLCBSLFR +... SOCBPFTX +... SOGEBJBJ +... SOGHHTPP +... SPYEISR2 +... SRIBDJJD +... SSDSKRSE +... STBBMK22 +... STBKTNTT925 +... STBMMNUB +... STGNPRSJ +... SWHTBEBB +... TACBAU2S +... TBLTGMGM +... TEBKXKPR030 +... TEBUTRIS664 +... TEECMH22 +... TNBKTM2X +... TNETZAJJ +... TNOVGIGI +... TODETONU +... TOLMAGAG +... TOPFUGKA +... UBBIMY22 +... UBCITNTTCHG +... UBKLGB2LBAK +... UGEBGE22622 +... UNAFSNDA +... UNALALTR +... UNCRBGSF426 +... UOVBBNBBCMS +... UPMKFIHH +... USBKLU2L +... UTBSSLFR +... UTWBBEBBTGT +... UZUMUZ22 +... VATOISRE +... VBAAVNVX640 +... VCBSSRPA +... VMBSJMKN +... VPAYBGS2 +... WANFVUVV +... WEWOUS33 +... ZBCGMEPG +... ZRCPCAT2 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not bic.is_valid(x)] +[] diff --git a/tests/test_bitcoin.doctest b/tests/test_bitcoin.doctest index 85ad66d7..022bd846 100644 --- a/tests/test_bitcoin.doctest +++ b/tests/test_bitcoin.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.bitcoin module. It diff --git a/tests/test_br_cnpj.doctest b/tests/test_br_cnpj.doctest index 2a0d605b..bb9ca1f6 100644 --- a/tests/test_br_cnpj.doctest +++ b/tests/test_br_cnpj.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.br.cnpj module. It diff --git a/tests/test_by_unp.doctest b/tests/test_by_unp.doctest index 6c2b8a45..0cf8436f 100644 --- a/tests/test_by_unp.doctest +++ b/tests/test_by_unp.doctest @@ -1,6 +1,6 @@ test_by_unp.doctest - more detailed doctests for stdnum.by.unp module -Copyright (C) 2020 Arthur de Jong +Copyright (C) 2020-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.by.unp. It @@ -32,8 +30,6 @@ Tests for some corner cases. '591705582' >>> unp.validate('УНП 591705582') '591705582' ->>> str(unp.validate(u'\u0423\u041d\u041f 591705582')) -'591705582' >>> unp.validate('UNP 591705582') '591705582' >>> unp.validate('5917DDD82') # letters in wrong places diff --git a/tests/test_by_unp.py b/tests/test_by_unp.py index 229b0344..1f91db13 100644 --- a/tests/test_by_unp.py +++ b/tests/test_by_unp.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # This is a separate test file because it should not be run regularly # because it could negatively impact the online service. @@ -35,29 +33,31 @@ class TestNalog(unittest.TestCase): """Test the web services provided by the portal.nalog.gov.by web site.""" - def test_check_nalog(self): + def test_check_nalog(self) -> None: """Test stdnum.by.unp.check_nalog()""" # Test a normal valid number result = unp.check_nalog('191682495') + self.assertTrue(result) + assert result self.assertDictEqual( result, { - 'CKODSOST': '1', - 'DLIKV': None, - 'DREG': '08.07.2011', - 'NMNS': '104', - 'VKODS': 'Действующий', - 'VLIKV': None, - 'VMNS': 'Инспекция МНС по Московскому району г.Минска ', - 'VNAIMK': 'Частное предприятие "КРИОС ГРУПП"', - 'VNAIMP': 'Частное производственное унитарное предприятие "КРИОС ГРУПП"', - 'VPADRES': 'г. Минск,ул. Уманская, д.54, пом. 152', - 'VUNP': '191682495', + 'ckodsost': '1', + 'dlikv': None, + 'dreg': '2011-07-08', + 'nmns': '104', + 'vkods': 'Действующий', + 'vlikv': None, + 'vmns': 'Инспекция МНС по Московскому району г.Минска ', + 'vnaimk': 'Частное предприятие "КРИОС ГРУПП"', + 'vnaimp': 'Частное производственное унитарное предприятие "КРИОС ГРУПП"', + 'vpadres': 'г. Минск,ул. Уманская, д.54, пом. 152', + 'vunp': '191682495', }) # Check that result has at least these keys - keys = ['VUNP', 'VNAIMP', 'VNAIMK', 'DREG', 'CKODSOST', 'VKODS'] + keys = ['vunp', 'vnaimp', 'vnaimk', 'dreg', 'ckodsost', 'vkods'] self.assertEqual([key for key in keys if key in result], keys) - self.assertEqual(result['VUNP'], '191682495') + self.assertEqual(result['vunp'], '191682495') # Test invalid number result = unp.check_nalog('771681495') self.assertIsNone(result) diff --git a/tests/test_ca_bn.doctest b/tests/test_ca_bn.doctest index c28a6276..c3b359f4 100644 --- a/tests/test_ca_bn.doctest +++ b/tests/test_ca_bn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ca.bn module. diff --git a/tests/test_casrn.doctest b/tests/test_casrn.doctest index 3ba6906f..c3e486ef 100644 --- a/tests/test_casrn.doctest +++ b/tests/test_casrn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.casrn module. It diff --git a/tests/test_cfi.doctest b/tests/test_cfi.doctest new file mode 100644 index 00000000..951db388 --- /dev/null +++ b/tests/test_cfi.doctest @@ -0,0 +1,184 @@ +test_cfi.doctest - more detailed doctests for the stdnum.cfi module + +Copyright (C) 2022 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.cfi module. It +tries to validate a number of numbers that have been found online. + +>>> import json +>>> from stdnum import cfi +>>> from stdnum.exceptions import * + + +Check some obviously invalid numbers. + +>>> cfi.validate('123456') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> cfi.validate('ELNUF') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> cfi.validate('AAAAAA') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> cfi.validate('XXAAAA') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> cfi.validate('IFXXXZ') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +Most characters can be replaced by an X. + +>>> cfi.validate('DTFNFR') +'DTFNFR' +>>> cfi.validate('DTXXXX') +'DTXXXX' +>>> cfi.validate('DTFNXX') +'DTFNXX' +>>> cfi.validate('DTXNFX') +'DTXNFX' + + +The info function returns useful information. + +>>> print(json.dumps(cfi.info('DTFNFR'), indent=2, sort_keys=True)) +{ + "Form": "Registered", + "Guarantee or ranking": "Senior", + "Redemption/reimbursement": "Fixed maturity", + "Type of interest": "Fixed rate", + "category": "Debt instruments", + "group": "Medium-term notes" +} +>>> print(json.dumps(cfi.info('IFXXXP'), indent=2, sort_keys=True)) +{ + "Delivery": "Physical", + "category": "Spot", + "group": "Foreign exchange" +} +>>> print(json.dumps(cfi.info('IFXXXX'), indent=2, sort_keys=True)) +{ + "category": "Spot", + "group": "Foreign exchange" +} +>>> print(json.dumps(cfi.info('DBFNXR'), indent=2, sort_keys=True)) +{ + "Form": "Registered", + "Guarantee or ranking": "Senior", + "Type of interest or cash payment": "Fixed rate", + "category": "Debt instruments", + "group": "Bonds" +} + + +These should all be valid numbers. + +>>> numbers = ''' +... +... CBMJXS +... CBOIXS +... CBOIXX +... CBXIXX +... CEMJXU +... CEOIBU +... CEOICU +... CEOIEU +... CEOIXU +... CEOJCU +... CEOJXU +... CFOGIY +... CFOIXX +... CICXXX +... CIOGBU +... CIOGEU +... CIOGEX +... CIOGLU +... CIOGLY +... CIOIBX +... CIOIEX +... CIOILX +... CIOIXX +... CIOXMX +... CMXXXX +... DBFCXB +... DBFNDB +... DBFNFB +... DBFNFR +... DBFNGB +... DBFNXR +... DBFOFB +... DBFPFB +... DBFPGB +... DBFQFB +... DBFQGB +... DBVQGB +... DBVQQB +... DBVQXB +... DBVQXR +... DCFPGB +... DECXRB +... DEDFRB +... DEDFTB +... DEEXRB +... DEEXRS +... DEEXTB +... DEMFRB +... DEMFRI +... DEMVRI +... DEMXRB +... DEMXTB +... DEMYRB +... DGFSFB +... DMXXXB +... DNFNGB +... DNFNXB +... DSAFVX +... DSAXVB +... DSAXVI +... DSAXVM +... DSAXVT +... DSAYVB +... DSAYVI +... DTFCGB +... DTFNFB +... DTFNFR +... DTFNGB +... DTFNXB +... EDSNXR +... ELNUFR +... ELRUFR +... ELVUFR +... EPNNFR +... EPNNPR +... EYAYFI +... EYAYFX +... EYCXEB +... EYMXFB +... EYMXFI +... EYMXFM +... EYMXFT +... +... ''' +>>> [x for x in numbers.splitlines() if x and not cfi.is_valid(x)] +[] diff --git a/tests/test_ch_esr.doctest b/tests/test_ch_esr.doctest index 5fa31dae..31f2ff98 100644 --- a/tests/test_ch_esr.doctest +++ b/tests/test_ch_esr.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ch.esr module. diff --git a/tests/test_ch_ssn.doctest b/tests/test_ch_ssn.doctest index 2a496ca7..674217d7 100644 --- a/tests/test_ch_ssn.doctest +++ b/tests/test_ch_ssn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ch.ssn module. It diff --git a/tests/test_ch_uid.doctest b/tests/test_ch_uid.doctest index 04cd2a9d..be13b498 100644 --- a/tests/test_ch_uid.doctest +++ b/tests/test_ch_uid.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ch.uid module. diff --git a/tests/test_ch_uid.py b/tests/test_ch_uid.py new file mode 100644 index 00000000..541cc698 --- /dev/null +++ b/tests/test_ch_uid.py @@ -0,0 +1,47 @@ +# test_eu_vat.py - functions for testing the UID Webservice +# coding: utf-8 +# +# Copyright (C) 2022 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +# This is a separate test file because it should not be run regularly +# because it could negatively impact the VIES service. + +"""Extra tests for the stdnum.ch.uid module.""" + +import os +import unittest + +from stdnum.ch import uid + + +@unittest.skipIf( + not os.environ.get('ONLINE_TESTS'), + 'Do not overload online services') +class TestUid(unittest.TestCase): + """Test the UID Webservice provided by the Swiss Federal Statistical + Office for validating UID numbers.""" + + def test_check_uid(self) -> None: + """Test stdnum.ch.uid.check_uid()""" + result = uid.check_uid('CHE113690319') + self.assertTrue(result) + self.assertEqual( + result['organisation']['organisationIdentification']['uid']['uidOrganisationId'], # type: ignore[index] + 113690319) + self.assertEqual( + result['organisation']['organisationIdentification']['legalForm'], # type: ignore[index] + '0220') + self.assertEqual(result['vatRegisterInformation']['vatStatus'], '2') # type: ignore[index] diff --git a/tests/test_ch_vat.doctest b/tests/test_ch_vat.doctest index c13f8df9..4024f7c7 100644 --- a/tests/test_ch_vat.doctest +++ b/tests/test_ch_vat.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ch.vat module. diff --git a/tests/test_cl_rut.doctest b/tests/test_cl_rut.doctest index c0a96eb6..8c6e69d1 100644 --- a/tests/test_cl_rut.doctest +++ b/tests/test_cl_rut.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.cl.rut module. diff --git a/tests/test_cn_ric.doctest b/tests/test_cn_ric.doctest index 21ba4054..ddd87802 100644 --- a/tests/test_cn_ric.doctest +++ b/tests/test_cn_ric.doctest @@ -1,6 +1,7 @@ test_cn_ric.doctest - more detailed doctests for stdnum.cn.ric module Copyright (C) 2014 Jiangge Zhang +Copyright (C) 2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.cn.ric. It @@ -46,12 +45,30 @@ datetime.date(2014, 10, 5) Get the birth place: ->>> c = ric.get_birth_place('360426199101010071')['county'] ->>> c == u'\u5fb7\u5b89\u53bf' -True ->>> c = ric.get_birth_place('44011320141005001x')['county'] ->>> c == u'\u756a\u79ba\u533a' -True +>>> ric.get_birth_place('360426199101010071') +{'province': '江西省', 'county': '德安县'} +>>> ric.get_birth_place('44011320141005001x') +{'province': '广东省', 'county': '番禺区'} +>>> ric.get_birth_place('412723199010050012') +{'province': '河南省', 'county': '商水县'} +>>> ric.get_birth_place('110102199101010078') +{'province': '北京市', 'county': '西城区'} +>>> ric.get_birth_place('120110198012010073') # before 1991 +{'province': '天津市', 'county': '东郊区'} +>>> ric.get_birth_place('120110199212010072') # after 1991 +{'province': '天津市', 'county': '东丽区'} +>>> ric.get_birth_place('990426199112010074') # unknown county +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ric.get_birth_place('110111198012010078') # county was not registered yet at birth year +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ric.get_birth_place('110201199312010077') # county was deregistered at birth year +Traceback (most recent call last): + ... +InvalidComponent: ... Invalid format: diff --git a/tests/test_cn_uscc.doctest b/tests/test_cn_uscc.doctest index 9d34ebb0..94a902fa 100644 --- a/tests/test_cn_uscc.doctest +++ b/tests/test_cn_uscc.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.cn.uscc module. It diff --git a/tests/test_co_nit.doctest b/tests/test_co_nit.doctest index 5999f9a3..11d65cfc 100644 --- a/tests/test_co_nit.doctest +++ b/tests/test_co_nit.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.co.nit module. diff --git a/tests/test_cr_cpf.doctest b/tests/test_cr_cpf.doctest index ee4d7307..8df58254 100644 --- a/tests/test_cr_cpf.doctest +++ b/tests/test_cr_cpf.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.cr.cpf module. It diff --git a/tests/test_cr_cpj.doctest b/tests/test_cr_cpj.doctest index d77ff673..aa6d53bb 100644 --- a/tests/test_cr_cpj.doctest +++ b/tests/test_cr_cpj.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.cr.cpj module. It diff --git a/tests/test_cr_cr.doctest b/tests/test_cr_cr.doctest index 138f9b3f..90a40b17 100644 --- a/tests/test_cr_cr.doctest +++ b/tests/test_cr_cr.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.cr.cr module. It diff --git a/tests/test_cusip.doctest b/tests/test_cusip.doctest index 60e9c18e..545c6316 100644 --- a/tests/test_cusip.doctest +++ b/tests/test_cusip.doctest @@ -1,6 +1,6 @@ test_cusip.doctest - more detailed doctests for the stdnum.cusip module -Copyright (C) 2015 Arthur de Jong +Copyright (C) 2015-2022 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.cusip module. It @@ -25,223 +23,119 @@ tries to validate a number of numbers that have been found online. >>> from stdnum.exceptions import * -Number should not use O (captial o) or I (capital 1) to avoid confusion with +Previously it was thought that O (capital o) or I (capital 1) were not allowed but +apparently 0 and 1: ->>> cusip.validate('0O141T575') -Traceback (most recent call last): - ... -InvalidFormat: ... ->>> cusip.validate('257I32103') -Traceback (most recent call last): - ... -InvalidFormat: ... +>>> cusip.validate('FDIC90903') +'FDIC90903' These have been found online and should all be valid numbers. >>> numbers = ''' ... -... 00078H125 -... 00080Y348 -... 00141H409 -... 00141M572 -... 00141T577 ... 00141V267 -... 00142F832 ... 00142K500 -... 00170J862 -... 00170K109 ... 00170M873 ... 00758M261 ... 024524746 -... 024932808 ... 024934408 ... 025081704 -... 025081860 -... 02631C817 ... 068278704 ... 068278878 -... 06828M405 ... 101156602 -... 119804102 -... 12628J600 ... 140543828 ... 192476109 -... 19765J830 -... 19765N401 -... 19765Y852 ... 207267105 ... 23336W809 ... 23337G134 -... 23337R502 -... 23338F713 -... 245908660 -... 245917505 ... 24610B859 ... 25155T528 ... 25156A668 ... 25157M778 -... 25159K309 -... 25159L745 ... 25264S403 ... 254939424 -... 257132100 -... 258618701 -... 261967103 ... 261967822 ... 261986566 ... 265458513 ... 265458570 ... 269858817 -... 277902565 -... 277905436 ... 29372R208 ... 313923302 -... 314172743 -... 315792598 -... 315805325 -... 315807651 ... 315911875 ... 315920579 -... 316069103 -... 31607A208 -... 316146257 -... 316175850 -... 31638R204 -... 316390277 -... 316390335 ... 316390640 -... 316390681 ... 320600109 -... 320604606 ... 320917107 -... 353496854 -... 353535107 ... 354128704 ... 354723769 -... 36158T506 ... 409902624 ... 416649507 -... 416649606 ... 425888104 -... 42588P825 -... 42588P882 -... 44929K630 ... 461418691 ... 465898682 ... 469785109 ... 471023531 ... 47803M663 -... 4812A4427 ... 4812C0548 -... 52106N335 ... 52106N442 -... 52106N632 -... 52106N657 ... 543912604 -... 543913305 -... 552984601 -... 552986309 -... 552986853 -... 557492428 ... 56063J849 -... 56063U851 -... 56166Y438 ... 561709692 ... 561717661 ... 57056B ZW1 -... 575719109 ... 592905756 -... 61744J499 -... 640917209 ... 640917407 -... 64122M506 ... 643642200 -... 647108414 ... 648018828 -... 650914203 -... 66537Y165 ... 67065R408 ... 67065R812 -... 670678762 ... 670690767 ... 670700608 -... 670725738 -... 670729599 ... 670729730 -... 680029667 -... 68583W507 ... 704329101 -... 70472Q302 ... 70472Q880 -... 72200Q232 -... 72201F383 -... 72201F458 -... 72201M800 ... 72201T664 ... 72201U430 -... 741481105 -... 741486104 -... 74149P390 ... 74149P648 ... 74149P689 -... 74149P820 ... 742935521 ... 742935547 -... 74316P207 ... 743185373 ... 743185464 ... 74318Q864 -... 74683L508 ... 749255121 -... 74972H200 ... 74972H283 -... 74972H390 ... 74972H598 -... 74972K666 ... 76628T496 ... 77956H302 -... 783554470 ... 783554728 ... 784924458 ... 803431105 ... 803431410 -... 829334101 ... 82980D400 ... 884116872 ... 890085327 -... 890085871 -... 89354D874 -... 904504560 ... 904504586 ... 912810EQ7 -... 912828C24 ... 912828EG1 ... 912828HA1 -... 912828KD1 -... 912828UA6 ... 920461209 ... 92646A252 -... 92913K645 ... 92913K884 ... 92913L775 -... 92913R822 ... 92914A661 ... 93208V106 -... 936793306 -... 936793504 -... 94975P686 ... 94984B108 ... 94984B538 ... 949915177 ... 949915557 ... 957904584 -... 969251719 -... 969251834 ... 984281204 +... FDIC99375 +... FDIC99425 ... Y0488F100 -... Y27257149 ... Y44425117 ... ... ''' diff --git a/tests/test_cz_bankaccount.doctest b/tests/test_cz_bankaccount.doctest new file mode 100644 index 00000000..fdb539bb --- /dev/null +++ b/tests/test_cz_bankaccount.doctest @@ -0,0 +1,57 @@ +test_cz_bankaccount.doctest - more detailed doctests for stdnum.cz.bankaccount + +Copyright (C) 2022 Petr Přikryl + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.cz.bankaccount +module. + +>>> from stdnum.cz import bankaccount + +>>> bankaccount.validate('34278-0727558021/0100') +'034278-0727558021/0100' +>>> bankaccount.is_valid('4278-0727558021/0100') # missing initial digit +False +>>> bankaccount.to_bic('34278-0727558021/0100') +'KOMBCZPP' +>>> bankaccount.compact('1/0100') +'1/0100' +>>> bankaccount.compact('12/0100') +'000000-0000000012/0100' +>>> bankaccount.validate('1/0100') +Traceback (most recent call last): + ... +bankaccount.InvalidFormat: ... +>>> bankaccount.validate('8021/0100') +Traceback (most recent call last): + ... +bankaccount.InvalidChecksum: ... +>>> bankaccount.to_bic('0727558021/2260') + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 19-2000145399/0800 +... 178124-4159/0710 +... 19-34222621/0710 +... 280154417/0300 +... 0500021502/0800 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not bankaccount.is_valid(x)] +[] diff --git a/tests/test_cz_rc.doctest b/tests/test_cz_rc.doctest new file mode 100644 index 00000000..1b54a5df --- /dev/null +++ b/tests/test_cz_rc.doctest @@ -0,0 +1,34 @@ +test_cz_rc.doctest - more detailed doctests for stdnum.cz.rc + +Copyright (C) 2025 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.cz.rc +module. + +>>> from stdnum.cz import rc + + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 8801251680 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not rc.is_valid(x)] +[] diff --git a/tests/test_damm.doctest b/tests/test_damm.doctest index 13d8c233..10633683 100644 --- a/tests/test_damm.doctest +++ b/tests/test_damm.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.damm module. It diff --git a/tests/test_de_handelsregisternummer.doctest b/tests/test_de_handelsregisternummer.doctest index f204b4ff..04167571 100644 --- a/tests/test_de_handelsregisternummer.doctest +++ b/tests/test_de_handelsregisternummer.doctest @@ -1,6 +1,6 @@ test_de_handelsregisternummer.doctest - tests for German register number -Copyright (C) 2018-2019 Arthur de Jong +Copyright (C) 2018-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . >>> from stdnum.de import handelsregisternummer @@ -62,18 +60,14 @@ funky so they work both in Python 2 and Python 3. 'Berlin (Charlottenburg) HRB 11223 B' >>> handelsregisternummer.validate('St. Ingbert HRA 61755') 'St. Ingbert (St Ingbert) HRA 61755' ->>> number = u'K\xf6ln HRB 49263' # Unicode ->>> handelsregisternummer.validate(number) == number -True ->>> utf8 = 'K\xc3\xb6ln HRB 49263' # UTF-8 ->>> handelsregisternummer.validate(utf8) == 'Köln HRB 49263' -True ->>> iso885915 = 'K\xf6ln HRB 49263' # ISO-8859-15 ->>> handelsregisternummer.validate(iso885915) == 'Köln HRB 49263' -True ->>> ascii = 'Koln HRB 49263' # ASCII replaced ->>> handelsregisternummer.validate(ascii) == 'Köln HRB 49263' -True +>>> handelsregisternummer.validate('Köln HRB 49263') +'Köln HRB 49263' +>>> handelsregisternummer.validate('K\xc3\xb6ln HRB 49263') +'Köln HRB 49263' +>>> handelsregisternummer.validate('K\xf6ln HRB 49263') +'Köln HRB 49263' +>>> handelsregisternummer.validate('Koln HRB 49263') # ASCII replaced +'Köln HRB 49263' >>> handelsregisternummer.validate('KXln HRB 49263') # too wrong Traceback (most recent call last): ... @@ -106,6 +100,7 @@ These have been found online and should all be valid numbers. ... Bochum HRA 5828 ... Bochum HRB 1 ... Braunschweig HRB 8057 +... Charlottenburg (Berlin) HRB 103587 B ... Chemnitz HRB 14011 ... Coesfeld HRA 7092 ... Coesfeld HRB 13681 diff --git a/tests/test_de_handelsregisternummer.py b/tests/test_de_handelsregisternummer.py index 496c3567..0e5d50c0 100644 --- a/tests/test_de_handelsregisternummer.py +++ b/tests/test_de_handelsregisternummer.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # This is a separate test file because it should not be run regularly # because it could negatively impact the online service. @@ -35,13 +33,15 @@ class TestOffeneRegister(unittest.TestCase): """Test the web services provided by the OffeneRegister.de web site.""" - def test_check_offeneregister(self): + def test_check_offeneregister(self) -> None: """Test stdnum.de.handelsregisternummer.check_offeneregister()""" # Test a normal valid number - result = handelsregisternummer.check_offeneregister('Chemnitz HRB 14011') + result = handelsregisternummer.check_offeneregister('Chemnitz HRB 32854') + self.assertTrue(result) + assert result self.assertTrue(all( key in result.keys() - for key in ['company_number', 'current_status', 'federal_state', 'registrar', 'native_company_number'])) + for key in ['companyId', 'courtCode', 'courtName', 'name', 'nativeReferenceNumber'])) # Test invalid number result = handelsregisternummer.check_offeneregister('Chemnitz HRA 14012') self.assertIsNone(result) diff --git a/tests/test_de_idnr.doctest b/tests/test_de_idnr.doctest index ecd65edf..821ee1ad 100644 --- a/tests/test_de_idnr.doctest +++ b/tests/test_de_idnr.doctest @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.de.idnr module. It @@ -43,7 +41,7 @@ Traceback (most recent call last): InvalidFormat: ... -The first 10 digits of the IdNr is supposed to contain extactly one digit +The first 10 digits of the IdNr is supposed to contain exactly one digit twice (or three times since 2016) and all other digits in the number can only appear once. This tries to catch some corner cases. Note that only the first 10 digits are considered for this. diff --git a/tests/test_de_leitweg.doctest b/tests/test_de_leitweg.doctest new file mode 100644 index 00000000..de0fd05a --- /dev/null +++ b/tests/test_de_leitweg.doctest @@ -0,0 +1,69 @@ +test_de_leitweg.doctest - more detailed doctests for the stdnum.de.leitweg module + +Copyright (C) 2025 Holvi Payment Services Oy + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.de.leitweg module. It +tries to validate a number of numbers that have been found online. + +>>> from stdnum.de import leitweg +>>> from stdnum.exceptions import * + + +These are present in the verzeichnis.leitweg-id.de directory and should all be valid numbers. + +>>> valid_numbers = ''' +... +... 16066069-0001-38 +... 13-L75810002000-60 +... 057660004004-31001-55 +... 991-03730-19 +... 992-90009-96 +... 08315033-ESCHBACH6626-66 +... 09274154-NFH-05 +... 05370032-WDF5271-06 +... 09778137-ETTRINGEN868331262-55 +... 08325024-787394066-26 +... 15088205-LEUNA6877-16 +... 09471131-GDEFD96158-46 +... 09780119-RATHAUSDIETMANNSRIED7247-90 +... 09176111-ADELSCHLAG-11 +... 09274193-WHM-62 +... 09177127-GEMEINDELENGDORF-24 +... 09176122-EGWEIL-38 +... 06533010-L357921748-84 +... 09176149-NASSENFELS-39 +... 09177131-NEUCHING-08 +... +... ''' +>>> [x for x in valid_numbers.splitlines() if x and not leitweg.is_valid(x)] +[] + + +Unknown Kennzahl des Bundes(landes). + +>>> leitweg.validate('55-55-20') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +Invalid checksum. + +>>> leitweg.validate('992-90009-97') +Traceback (most recent call last): + ... +InvalidChecksum: ... diff --git a/tests/test_de_stnr.doctest b/tests/test_de_stnr.doctest index 7996c34a..663d8192 100644 --- a/tests/test_de_stnr.doctest +++ b/tests/test_de_stnr.doctest @@ -1,7 +1,7 @@ test_de_stnr.doctest - more detailed doctests for the stdnum.de.stnr module Copyright (C) 2017 Holvi Payment Services -Copyright (C) 2018 Arthur de Jong +Copyright (C) 2018-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.de.stnr module. It @@ -53,11 +51,9 @@ InvalidLength: ... The module should handle various encodings of region names properly. ->>> stnr.validate('9381508152', u'Baden-W\xfcrttemberg') # Python unicode +>>> stnr.validate('9381508152', 'Baden-Württemberg') '9381508152' ->>> stnr.validate('9381508152', 'Baden-W\xc3\xbcrttemberg') # UTF-8 -'9381508152' ->>> stnr.validate('9381508152', 'Baden-W\xfcrttemberg') # ISO-8859-15 +>>> stnr.validate('9381508152', 'Baden-W\xc3\xbcrttemberg') # mangled unicode '9381508152' >>> stnr.validate('9381508152', 'Baden Wurttemberg') # ASCII with space '9381508152' diff --git a/tests/test_de_wkn.doctest b/tests/test_de_wkn.doctest index db47c49b..94251dfd 100644 --- a/tests/test_de_wkn.doctest +++ b/tests/test_de_wkn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.de.wkn module. It diff --git a/tests/test_do_cedula.doctest b/tests/test_do_cedula.doctest index 665a7312..33a1aa3f 100644 --- a/tests/test_do_cedula.doctest +++ b/tests/test_do_cedula.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.do.cedula module. It diff --git a/tests/test_do_cedula.py b/tests/test_do_cedula.py index a5a3bb8c..9a85c42a 100644 --- a/tests/test_do_cedula.py +++ b/tests/test_do_cedula.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # This is a separate test file because it should not be run regularly # because it could negatively impact the online service. @@ -36,10 +34,20 @@ class TestDGII(unittest.TestCase): """Test the web services provided by the the Dirección General de Impuestos Internos (DGII), the Dominican Republic tax department.""" - def test_check_dgii(self): + # Theses tests currently fail because the SOAP service at + # https://www.dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx?WSDL + # is no longer available. There is a new one at + # https://www.dgii.gov.do/ventanillaunica/ventanillaunica.asmx?WSDL + # but it has a different API and seems to require authentication. + # See https://github.com/arthurdejong/python-stdnum/pull/462 + # and https://github.com/arthurdejong/python-stdnum/issues/461 + @unittest.expectedFailure + def test_check_dgii(self) -> None: """Test stdnum.do.cedula.check_dgii()""" # Test a normal valid number result = cedula.check_dgii('05500023407') + self.assertTrue(result) + assert result self.assertTrue(all( key in result.keys() for key in ['cedula', 'name', 'commercial_name', 'category', 'status'])) @@ -51,5 +59,7 @@ def test_check_dgii(self): # Valid number but unknown self.assertIsNone(cedula.check_dgii('12345678903')) # Test a number on the whitelist - result = cedula.check_dgii('0710208838') - self.assertEqual(result['cedula'], '0710208838') + result = cedula.check_dgii('02300052220') + self.assertTrue(result) + assert result + self.assertEqual(result['cedula'], '02300052220') diff --git a/tests/test_do_ncf.doctest b/tests/test_do_ncf.doctest index d0a64754..21f6d0d7 100644 --- a/tests/test_do_ncf.doctest +++ b/tests/test_do_ncf.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.do.ncf module. It diff --git a/tests/test_do_ncf.py b/tests/test_do_ncf.py index 8a94bfa0..857eaa5f 100644 --- a/tests/test_do_ncf.py +++ b/tests/test_do_ncf.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # This is a separate test file because it should not be run regularly # because it could negatively impact the online service. @@ -36,11 +34,12 @@ class TestDGII(unittest.TestCase): """Test the web services provided by the the Dirección General de Impuestos Internos (DGII), the Dominican Republic tax department.""" - def test_check_dgii(self): + def test_check_dgii(self) -> None: """Test stdnum.do.ncf.check_dgii()""" # Test a normal valid number result = ncf.check_dgii('130546312', 'A010010011500000038') self.assertTrue(result) + assert result self.assertIn('name', result.keys()) self.assertIn('rnc', result.keys()) self.assertIn('ncf', result.keys()) @@ -58,9 +57,24 @@ def test_check_dgii(self): # Test the new format result = ncf.check_dgii('130546312', 'B0100000005') self.assertTrue(result) + assert result self.assertIn('name', result.keys()) self.assertIn('rnc', result.keys()) self.assertIn('ncf', result.keys()) self.assertIn('validation_message', result.keys()) self.assertEqual(result['rnc'], '130546312') self.assertEqual(result['ncf'], 'B0100000005') + # Test the ENCF + result = ncf.check_dgii('101010632', 'E310049533639', + buyer_rnc='22400559690', security_code='hnI63Q') + self.assertTrue(result) + assert result + self.assertIn('status', result.keys()) + self.assertEqual(result['issuing_rnc'], '101010632') + self.assertEqual(result['buyer_rnc'], '22400559690') + self.assertEqual(result['ncf'], 'E310049533639') + self.assertIn('issuing_date', result.keys()) + self.assertIn('signature_date', result.keys()) + self.assertIn('total', result.keys()) + self.assertIn('total_itbis', result.keys()) + self.assertIn('validation_message', result.keys()) diff --git a/tests/test_do_rnc.doctest b/tests/test_do_rnc.doctest index 80c35754..ca839137 100644 --- a/tests/test_do_rnc.doctest +++ b/tests/test_do_rnc.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.do.rnc module. It diff --git a/tests/test_do_rnc.py b/tests/test_do_rnc.py index 9ea06c93..da91c7e9 100644 --- a/tests/test_do_rnc.py +++ b/tests/test_do_rnc.py @@ -1,7 +1,7 @@ # test_do_rnc.py - functions for testing the online RNC validation # coding: utf-8 # -# Copyright (C) 2017 Arthur de Jong +# Copyright (C) 2017-2023 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # This is a separate test file because it should not be run regularly # because it could negatively impact the online service. @@ -36,10 +34,20 @@ class TestDGII(unittest.TestCase): """Test the web services provided by the the Dirección General de Impuestos Internos (DGII), the Dominican Republic tax department.""" - def test_check_dgii(self): + # Theses tests currently fail because the SOAP service at + # https://www.dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx?WSDL + # is no longer available. There is a new one at + # https://www.dgii.gov.do/ventanillaunica/ventanillaunica.asmx?WSDL + # but it has a different API and seems to require authentication. + # See https://github.com/arthurdejong/python-stdnum/pull/462 + # and https://github.com/arthurdejong/python-stdnum/issues/461 + @unittest.expectedFailure + def test_check_dgii(self) -> None: """Test stdnum.do.rnc.check_dgii()""" # Test a normal valid number result = rnc.check_dgii('131098193') + self.assertTrue(result) + assert result self.assertTrue(all( key in result.keys() for key in ['rnc', 'name', 'commercial_name', 'category', 'status'])) @@ -52,20 +60,32 @@ def test_check_dgii(self): self.assertIsNone(rnc.check_dgii('814387152')) # Test a number on the whitelist result = rnc.check_dgii('501658167') + self.assertTrue(result) + assert result self.assertEqual(result['rnc'], '501658167') # Test the output unescaping (\t and \n) of the result so JSON # deserialisation works result = rnc.check_dgii('132070801') + self.assertTrue(result) + assert result self.assertEqual(result['rnc'], '132070801') - def test_search_dgii(self): + # Theses tests currently fail because the SOAP service at + # https://www.dgii.gov.do/wsMovilDGII/WSMovilDGII.asmx?WSDL + # is no longer available. There is a new one at + # https://www.dgii.gov.do/ventanillaunica/ventanillaunica.asmx?WSDL + # but it has a different API and seems to require authentication. + # See https://github.com/arthurdejong/python-stdnum/pull/462 + # and https://github.com/arthurdejong/python-stdnum/issues/461 + @unittest.expectedFailure + def test_search_dgii(self) -> None: """Test stdnum.do.rnc.search_dgii()""" # Search for some existing companies results = rnc.search_dgii('EXPORT DE') self.assertGreaterEqual(len(results), 3) - self.assertRegexpMatches(results[0]['rnc'], r'\d{9}') - self.assertRegexpMatches(results[1]['rnc'], r'\d{9}') - self.assertRegexpMatches(results[2]['rnc'], r'\d{9}') + self.assertRegex(results[0]['rnc'], r'\d{9}') + self.assertRegex(results[1]['rnc'], r'\d{9}') + self.assertRegex(results[2]['rnc'], r'\d{9}') # Check maximum rows parameter two_results = rnc.search_dgii('EXPORT DE', end_at=2) self.assertEqual(len(two_results), 2) diff --git a/tests/test_dz_nif.doctest b/tests/test_dz_nif.doctest new file mode 100644 index 00000000..005ab5d0 --- /dev/null +++ b/tests/test_dz_nif.doctest @@ -0,0 +1,157 @@ +test_dz_nif.doctest - more detailed doctests for stdnum.dz.nif module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.dz.nif module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.dz import nif + + +Tests for some corner cases. + +>>> nif.validate('416001000000007') +'416001000000007' +>>> nif.validate('408 020 000 150 039') +'408020000150039' +>>> nif.validate('41201600000606600001') +'41201600000606600001' +>>> nif.validate('000 216 001 808 337 13010') +'00021600180833713010' +>>> nif.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> nif.validate('X1600100000000V') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> nif.format('408 020 000 150 039') +'408020000150039' +>>> nif.format('000 216 001 808 337 13010') +'00021600180833713010' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 000 116 180 807 261 +... 000 216 001 808 337 +... 000 216 001 808 337 13010 +... 0000 1600 15 01 289 +... 000016001159195 +... 000016001300865 +... 000016001358124 +... 00001600137674493005 +... 000116001524660 +... 000116001567707 +... 000116180849545 +... 00021 600 180 833 716 001 +... 000216002104442 +... 000216299033049 +... 000307024248170 +... 000336068252339 +... 000347019004646 +... 000428056270862 +... 000434046319884 +... 000505022347781 +... 000516096825183 +... 000516096872520 +... 000616097459024 +... 000624038263530 +... 000716097425528 +... 000716097805474 +... 000724038267478 +... 000735072494667 +... 000824038269319 +... 000825006783595 +... 000848019007735 +... 000906018632115 +... 001 109 199 007 345 +... 001116099033052 +... 001125069042347 +... 001206018759104 +... 001216098929656 +... 001216209014175 +... 001216209014745 +... 001225006964374 +... 00131 6099242493 +... 001316099262097 +... 001316100750513 +... 001316100750533 +... 001341050285855 +... 001513026489736 +... 001609019033838 +... 001616104328611 +... 001707024366917 +... 001716104401413 +... 001730019009056 +... 001816104587248 +... 002016101606088 +... 002131011846676 +... 097524019047421 +... 098919015000337 +... 099716000280672 +... 099747086204339 +... 099807024211756 +... 099815019058902 +... 099816000499785 +... 099915004292220 +... 099916029015224 +... 099919008329067 +... 099925006295010 +... 099935072285348 +... 152431400682135 +... 153160105528127 +... 164151000512151 +... 165161701380190 +... 169164800432122 +... 171161800210177 +... 181050400060195 +... 185160201610152 +... 194 916 010 095 431 +... 195213040012847 +... 196 816 040 011 445 +... 197 919 010 321 535 +... 197016180012728 +... 198018210116342 +... 198805420009824 +... 198847070005037 +... 287160700030597 +... 295161704436174 +... 408 020 000 150 039 +... 408008000100033 +... 408015000017094 +... 408015000043003 +... 408020000020098 +... 408020000060031 +... 408020000290087 +... 408020000310039 +... 408020001100031 +... 40802100000204900000 +... 410007000000046 +... 410011000000012 +... 417180000000088 +... 420016000090015 +... 420110400000042 +... 797 435 379 003 601 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not nif.is_valid(x)] +[] diff --git a/tests/test_ean.doctest b/tests/test_ean.doctest index d5411842..bacaed8f 100644 --- a/tests/test_ean.doctest +++ b/tests/test_ean.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ean module. It diff --git a/tests/test_ec_ci.doctest b/tests/test_ec_ci.doctest index 08efb8b3..fe7572f6 100644 --- a/tests/test_ec_ci.doctest +++ b/tests/test_ec_ci.doctest @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ec.ci. It tries to diff --git a/tests/test_ec_ruc.doctest b/tests/test_ec_ruc.doctest index 1bdaebf8..47173f59 100644 --- a/tests/test_ec_ruc.doctest +++ b/tests/test_ec_ruc.doctest @@ -1,7 +1,7 @@ test_ec_ruc.doctest - more detailed doctests for stdnum.ec.ruc module Copyright (C) 2014 Jonathan Finlay -Copyright (C) 2014-2015 Arthur de Jong +Copyright (C) 2014-2021 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ec.ruc. It tries to @@ -27,13 +25,15 @@ as module documentation. >>> from stdnum.exceptions import * -Normal natural RUC values (third digit less than 6) that should just work. +Normal natural RUC values (third digit less than or equal to 6) that should +just work. >>> numbers = ''' ... 0101016905001 ... 0602910945001 ... 0910005917001 ... 0926687856001 +... 0962467429001 ... 1001152287001 ... 1102755442001 ... 1104552037001 @@ -127,6 +127,7 @@ Normal public RUC values (third digit is 6) that should just work. ... 0960006420001 ... 0968529830001 ... 0968566440001 +... 0968599020001 ... 1060000180001 ... 1060000260001 ... 1060000340001 @@ -285,6 +286,7 @@ Normal juridical RUC values (third digit is 9) that should just work. ... 1792141869001 ... 1792147638001 ... 1792373255001 +... 1793221293001 ... 1890001323001 ... 1890003628001 ... 1890037646001 diff --git a/tests/test_ee_ik.doctest b/tests/test_ee_ik.doctest index b5e14534..28abf183 100644 --- a/tests/test_ee_ik.doctest +++ b/tests/test_ee_ik.doctest @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . >>> from stdnum.ee import ik diff --git a/tests/test_ee_registrikood.doctest b/tests/test_ee_registrikood.doctest index 1ed4440e..591e24c6 100644 --- a/tests/test_ee_registrikood.doctest +++ b/tests/test_ee_registrikood.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ee.registrikood. It diff --git a/tests/test_eg_tn.doctest b/tests/test_eg_tn.doctest new file mode 100644 index 00000000..8f660639 --- /dev/null +++ b/tests/test_eg_tn.doctest @@ -0,0 +1,170 @@ +test_eg_tn.doctest - more detailed doctests for stdnum.eg.tn module +coding: utf-8 + +Copyright (C) 2022 Leandro Regueiro +Copyright (C) 2025 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.eg.tn module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.eg import tn + + +Tests for some corner cases. + +>>> tn.validate('100-531-385') +'100531385' +>>> tn.validate('100531385') +'100531385' +>>> tn.validate('421 – 159 – 723') +'421159723' +>>> tn.validate('347/404/847') +'347404847' +>>> tn.validate('٣٣١-١٠٥-٢٦٨') +'331105268' +>>> tn.validate('۹٤۹-۸۹۱-۲۰٤') +'949891204' +>>> tn.format('100531385') +'100-531-385' +>>> tn.format('٣٣١-١٠٥-٢٦٨') +'331-105-268' +>>> tn.format('۹٤۹-۸۹۱-۲۰٤') +'949-891-204' +>>> tn.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> tn.validate('VV3456789') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 039-528-313 +... 100-131-778 +... 100-223-508 +... 100-294-197 +... 100-534-287 +... 200-018-728 +... 200-131-052 +... 200-138-480 +... 200-139-649 +... 200-140-884 +... 200-237-446 +... 200-239-090 +... 202-458-482 +... 202-460-738 +... 202-466-566 +... 202-468-828 +... 202-469-077 +... 202-478-696 +... 202-483-827 +... 202-484-173 +... 202-484-327 +... 202-486-400 +... 202-487-598 +... 202-487-938 +... 202-490-483 +... 202-494-802 +... 202-494-985 +... 204-829-305 +... 204-830-109 +... 204-944-252 +... 204-946-786 +... 204-962-862 +... 205-044-816 +... 205-047-297 +... 215-559-053 +... 220-682-836 +... 235-005-266 +... 239-772-660 +... 247-604-224 +... 250-067-498 +... 254 299-954 +... 254-228-992 +... 257-149-295 +... 280-948-565 +... 288-953-452 +... 297-923-900 +... 303-428-007 +... 305-310-313 +... 306-006-014 +... 308-523-229 +... 310-286-719 +... 332-673-553 +... 337-703-027 +... 347/404/847 +... 372-076-416 +... 374-106-290 +... 374-201-099 +... 374-380-139 +... 376978082 +... 383-438-845 +... 383-521-815 +... 383-556-848 +... 383-612-055 +... 383-856-183 +... 403-965-896 +... 408-994-509 +... 412-700-212 +... 412-907-399 +... 413-370-712 +... 415-211-468 +... 421 – 159 – 723 +... 431-134-189 +... 432-600-132 +... 455-466-138 +... 455273677 +... 479-738-440 +... 499-149-246 +... 506-247-368 +... 508-717-388 +... 513-992-693 +... 516-346-997 +... 518-934-489 +... 518-944-155 +... 521-338-514 +... 525-915-540 +... 528-495-275 +... 540-497-754 +... 542-251-337 +... 554-685-442 +... 555-407-284 +... 570-165-725 +... 589-269-666 +... 608-769-347 +... 619-395-100 +... 626-381-738 +... 646-687-799 +... 724-125-078 +... 728-620-480 +... 728-755-645 +... 735-739-447 +... 825-885-383 +... 910-921-383 +... ٣٣١-١٠٥-٢٦٨ +... ٩٤٦-١٤٩-٢٠٠ +... ۹٤۹-۸۹۱-۲۰٤ +... +... ''' +>>> [x for x in numbers.splitlines() if x and not tn.is_valid(x)] +[] diff --git a/tests/test_es_cae.doctest b/tests/test_es_cae.doctest new file mode 100644 index 00000000..ae3df35c --- /dev/null +++ b/tests/test_es_cae.doctest @@ -0,0 +1,259 @@ +test_es_cae.doctest - more detailed doctests for stdnum.es.cae module + +Copyright (C) 2024 Quique Porta + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.es.cae and related +modules. It tries to cover more corner cases and detailed functionality that +is not really useful as module documentation. + +>>> from stdnum.es import cae + + +>>> cae.compact('ES00008V1567A') # valid CAE +'ES00008V1567A' +>>> cae.is_valid('ES10008V1567A') # invalid CAE characters third, fourth and fifth must be zero +False +>>> cae.is_valid('ES01008V1567A') # invalid CAE characters third, fourth and fifth must be zero +False +>>> cae.is_valid('ES00108V1567A') # invalid CAE characters third, fourth and fifth must be zero +False +>>> cae.is_valid('ES00008V1567') # invalid CAE length +False +>>> cae.is_valid('IT00008V1567A') # invalid CAE not starting with ES +False +>>> cae.is_valid('ES00000V1567A') # invalid CAE office +False +>>> cae.is_valid('ES00008XX567A') # invalid CAE activity key +False +>>> cae.is_valid('ES00008V1X67A') # invalid CAE characters tenth, eleventh and twelfth must be digits +False +>>> cae.is_valid('ES00008V15X7A') # invalid CAE characters tenth, eleventh and twelfth must be digits +False +>>> cae.is_valid('ES00008V156XA') # invalid CAE characters tenth, eleventh and twelfth must be digits +False +>>> cae.is_valid('ES00008V15670') # invalid CAE last character must be a letter +False + + +These should all be valid numbers. + +>>> numbers = ''' +... +... ES00001BA567A +... ES00001H0567A +... ES00002OV567A +... ES00002RF567A +... ES00002V1567A +... ES00003A1567A +... ES00003A2567A +... ES00003OV567A +... ES00003VD567A +... ES00004A0567A +... ES00004A7567A +... ES00004A9567A +... ES00004AX567A +... ES00004DM567A +... ES00004F1567A +... ES00004H9567A +... ES00004OA567A +... ES00005HX567A +... ES00006HC567A +... ES00006HL567A +... ES00006HS567A +... ES00006M7567A +... ES00006RF567A +... ES00007A7567A +... ES00007HN567A +... ES00007OB567A +... ES00007OV567A +... ES00009DM567A +... ES00010H9567A +... ES00010HF567A +... ES00010HL567A +... ES00010HS567A +... ES00010HX567A +... ES00011B6567A +... ES00011C7567A +... ES00011DA567A +... ES00011H9567A +... ES00011HL567A +... ES00011HQ567A +... ES00011L0567A +... ES00012AX567A +... ES00012DM567A +... ES00012TT567A +... ES00013A6567A +... ES00013HA567A +... ES00014A7567A +... ES00014HC567A +... ES00014L7567A +... ES00015AC567A +... ES00015HH567A +... ES00016AW567A +... ES00016DP567A +... ES00016HJ567A +... ES00017HF567A +... ES00017L0567A +... ES00017L7567A +... ES00018HX567A +... ES00019H1567A +... ES00019HD567A +... ES00019HX567A +... ES00019TT567A +... ES00020B1567A +... ES00020H2567A +... ES00020H9567A +... ES00020L3567A +... ES00020TT567A +... ES00021H1567A +... ES00021H8567A +... ES00021OH567A +... ES00021OT567A +... ES00022C7567A +... ES00022HR567A +... ES00022OV567A +... ES00023AT567A +... ES00023AW567A +... ES00023AX567A +... ES00023HU567A +... ES00024AT567A +... ES00024HA567A +... ES00024HC567A +... ES00024HJ567A +... ES00025E7567A +... ES00025OH567A +... ES00025OR567A +... ES00026B6567A +... ES00026H6567A +... ES00027E7567A +... ES00027HD567A +... ES00027HR567A +... ES00027M7567A +... ES00027OT567A +... ES00027OV567A +... ES00028A2567A +... ES00028B6567A +... ES00028HA567A +... ES00028HD567A +... ES00028PF567A +... ES00029B7567A +... ES00029EC567A +... ES00029HD567A +... ES00029HV567A +... ES00030E7567A +... ES00030HM567A +... ES00030HU567A +... ES00031L7567A +... ES00031OB567A +... ES00032A9567A +... ES00032BA567A +... ES00032L2567A +... ES00032OR567A +... ES00033H7567A +... ES00033H8567A +... ES00033HR567A +... ES00034AX567A +... ES00034HI567A +... ES00034VD567A +... ES00035A0567A +... ES00035AW567A +... ES00036E7567A +... ES00036H2567A +... ES00036HL567A +... ES00036HN567A +... ES00036HR567A +... ES00036VD567A +... ES00037HE567A +... ES00037HM567A +... ES00037HS567A +... ES00037L3567A +... ES00037L7567A +... ES00038A2567A +... ES00038H6567A +... ES00038OT567A +... ES00039B6567A +... ES00039H7567A +... ES00039HI567A +... ES00039HP567A +... ES00040A6567A +... ES00040AX567A +... ES00040H0567A +... ES00040H1567A +... ES00041A0567A +... ES00041A6567A +... ES00041H7567A +... ES00041HJ567A +... ES00041HN567A +... ES00041HU567A +... ES00042A7567A +... ES00042HM567A +... ES00042RF567A +... ES00043A0567A +... ES00043AF567A +... ES00043H2567A +... ES00043HX567A +... ES00043RF567A +... ES00043V1567A +... ES00044AC567A +... ES00044DA567A +... ES00044RF567A +... ES00044TT567A +... ES00045HR567A +... ES00045OB567A +... ES00046B0567A +... ES00046H9567A +... ES00046HQ567A +... ES00047DM567A +... ES00047HL567A +... ES00047HZ567A +... ES00048HX567A +... ES00048OR567A +... ES00048OT567A +... ES00048RF567A +... ES00049AT567A +... ES00049C1567A +... ES00049E7567A +... ES00049HA567A +... ES00050HL567A +... ES00050HX567A +... ES00051C1567A +... ES00051E7567A +... ES00051F1567A +... ES00051H6567A +... ES00051OR567A +... ES00051OV567A +... ES00052A0567A +... ES00052A7567A +... ES00052AX567A +... ES00052H1567A +... ES00052HE567A +... ES00052HZ567A +... ES00052OB567A +... ES00052T7567A +... ES00053F1567A +... ES00053L3567A +... ES00053VD567A +... ES00054AT567A +... ES00054F1567A +... ES00054HR567A +... ES00054HT567A +... ES00055DF567A +... ES00056HA567A +... +... ''' +>>> [x for x in numbers.splitlines() if x and not cae.is_valid(x)] +[] diff --git a/tests/test_es_cups.doctest b/tests/test_es_cups.doctest index 6c76a866..9ecfbfc8 100644 --- a/tests/test_es_cups.doctest +++ b/tests/test_es_cups.doctest @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.es.cups. It diff --git a/tests/test_es_nif.doctest b/tests/test_es_nif.doctest index 17286eb9..d1502376 100644 --- a/tests/test_es_nif.doctest +++ b/tests/test_es_nif.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.es.nif and related diff --git a/tests/test_es_referenciacatastral.doctest b/tests/test_es_referenciacatastral.doctest index e7fbfad9..c27a254d 100644 --- a/tests/test_es_referenciacatastral.doctest +++ b/tests/test_es_referenciacatastral.doctest @@ -1,7 +1,7 @@ test_es_referenciacatastral.doctest - more detailed doctests for stdnum.es.referenciacatastral module Copyright (C) 2016 David García Garzón -Copyright (C) 2015-2017 Arthur de Jong +Copyright (C) 2015-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the @@ -77,12 +75,12 @@ seems that unicode literals do not work so we are escaping Ñ. >>> referenciacatastral.calc_check_digits('9872023 ÑH5797S 0001') 'WP' ->>> referenciacatastral.calc_check_digits(u'9872023 \xd1H5797S 0001') +>>> referenciacatastral.calc_check_digits('9872023 \xd1H5797S 0001') 'WP' ->>> referenciacatastral.validate('9872023 ÑH5797S 0001 WP') == '9872023ÑH5797S0001WP' -True ->>> referenciacatastral.validate(u'9872023 \xd1H5797S 0001 WP') == u'9872023\xd1H5797S0001WP' -True +>>> referenciacatastral.validate('9872023 ÑH5797S 0001 WP') +'9872023ÑH5797S0001WP' +>>> referenciacatastral.validate('9872023 \xd1H5797S 0001 WP') +'9872023\xd1H5797S0001WP' These have been found online and should all be valid numbers. diff --git a/tests/test_eu_banknote.doctest b/tests/test_eu_banknote.doctest index 891aa96e..0e5585ac 100644 --- a/tests/test_eu_banknote.doctest +++ b/tests/test_eu_banknote.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.eu.banknote module. diff --git a/tests/test_eu_ecnumber.doctest b/tests/test_eu_ecnumber.doctest new file mode 100644 index 00000000..a389d9df --- /dev/null +++ b/tests/test_eu_ecnumber.doctest @@ -0,0 +1,195 @@ +test_eu_ecnumber.doctest - more detailed doctests for the stdnum.eu.ecnumber module + +Copyright (C) 2023 Daniel Weber + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.eu.ecnumber module. It +contains some corner case tests and tries to validate numbers that have been +found online. + +>>> from stdnum.eu import ecnumber +>>> from stdnum.exceptions import * + + +EC Numbers always include separators and will be introduced if they are not +present. Validation will fail if separators are in the incorrect place. + +>>> ecnumber.validate('200-112-1') +'200-112-1' +>>> ecnumber.validate('2001121') +'200-112-1' +>>> ecnumber.validate('20-0112-1') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> ecnumber.validate('2000112-1') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +The number should only have two separators. + +>>> ecnumber.validate('20--112-1') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +Only numeric characters between separators. + +>>> ecnumber.validate('20A-112-1') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +EC Numbers are always nine characters long (including hyphens). + +>>> ecnumber.validate('2000-112-1') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> ecnumber.validate('20001121') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> ecnumber.validate('201121') +Traceback (most recent call last): + ... +InvalidLength: ... + + +The final character must have the correct check digit. + +>>> ecnumber.validate('200-112-2') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> ecnumber.validate('2001122') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +These are randomly selected from the EC Inventory should be valid EC Numbers. + +>>> numbers = ''' +... +... 200-662-2 +... 200-897-0 +... 203-499-5 +... 204-282-8 +... 206-777-4 +... 207-296-2 +... 207-631-2 +... 207-952-8 +... 211-043-1 +... 212-948-4 +... 215-429-0 +... 216-155-4 +... 217-593-9 +... 217-931-5 +... 219-941-5 +... 220-575-3 +... 221-531-6 +... 222-700-7 +... 222-729-5 +... 223-550-5 +... 226-307-1 +... 228-426-4 +... 233-748-3 +... 235-556-5 +... 236-325-1 +... 238-475-3 +... 238-769-1 +... 239-367-9 +... 239-530-4 +... 241-289-5 +... 242-807-2 +... 243-154-6 +... 244-556-4 +... 244-886-9 +... 245-704-0 +... 247-214-2 +... 248-170-7 +... 249-213-2 +... 249-244-1 +... 249-469-5 +... 250-046-2 +... 250-140-3 +... 250-478-1 +... 251-186-7 +... 251-412-4 +... 252-552-9 +... 252-796-6 +... 254-323-9 +... 254-324-4 +... 255-524-4 +... 255-597-2 +... 256-980-7 +... 257-228-0 +... 257-308-5 +... 259-660-5 +... 262-758-0 +... 263-157-6 +... 263-543-4 +... 266-556-3 +... 266-597-7 +... 266-708-9 +... 267-064-1 +... 271-104-3 +... 271-556-1 +... 273-972-9 +... 274-112-5 +... 274-741-5 +... 274-747-8 +... 276-796-0 +... 280-279-5 +... 280-851-4 +... 280-947-6 +... 281-719-9 +... 281-919-6 +... 282-848-3 +... 282-944-5 +... 284-690-0 +... 286-712-4 +... 287-761-4 +... 287-900-9 +... 288-360-7 +... 295-191-2 +... 296-057-6 +... 297-119-5 +... 297-362-7 +... 300-706-1 +... 301-691-4 +... 301-916-6 +... 302-175-1 +... 302-331-9 +... 304-512-8 +... 304-902-8 +... 307-269-6 +... 307-415-9 +... 307-692-6 +... 310-159-0 +... 414-380-4 +... 421-750-9 +... 424-870-1 +... 500-464-9 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not ecnumber.is_valid(x)] +[] diff --git a/tests/test_eu_eic.doctest b/tests/test_eu_eic.doctest index 92b7a32e..ce5dbfd5 100644 --- a/tests/test_eu_eic.doctest +++ b/tests/test_eu_eic.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.eu.eic module. It diff --git a/tests/test_eu_excise.doctest b/tests/test_eu_excise.doctest new file mode 100644 index 00000000..f355de47 --- /dev/null +++ b/tests/test_eu_excise.doctest @@ -0,0 +1,50 @@ +test_eu_excise.doctest - more detailed doctests for the stdnum.eu.excise module + +Copyright (C) 2023 Cédric Krier + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + +This file contains more detailed doctests for the stdnum.eu.excise module. It +tries to validate a number of Excise numbers that have been found online. + +>>> from stdnum.eu import excise +>>> from stdnum.exceptions import * + +These numbers should be mostly valid except that they have the wrong length. + +>>> excise.validate('LU987ABC') +'LU00000987ABC' +>>> excise.validate('LU000000987ABC') +Traceback (most recent call last): + ... +InvalidLength: ... + + +These numbers should be mostly valid except that they have the wrong prefix. + +>>> excise.validate('XX00000987ABC') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... LU 00000987ABC +... FR012907E0820 +... ''' +>>> [x for x in numbers.splitlines() if x and not excise.is_valid(x)] +[] diff --git a/tests/test_eu_nace.doctest b/tests/test_eu_nace.doctest new file mode 100644 index 00000000..6ec1efd8 --- /dev/null +++ b/tests/test_eu_nace.doctest @@ -0,0 +1,44 @@ +test_eu_nace.doctest - more detailed doctests for the stdnum.eu.nace module + +Copyright (C) 2012-2023 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.eu.nace module. It +tries to validate a number of VAT numbers that have been found online. + +>>> from stdnum.eu import nace +>>> from stdnum.exceptions import * + + +The label of a few numbers have been changed between revision 2.0 and revision +2.1 of NACE + +>>> nace.get_label('01.11', revision='2.0') +'Growing of cereals (except rice), leguminous crops and oil seeds' +>>> nace.get_label('01.11', revision='2.1') +'Growing of cereals, other than rice, leguminous crops and oil seeds' +>>> nace.get_label('01.11') # revision 2.1 is the default +'Growing of cereals, other than rice, leguminous crops and oil seeds' + + +Some number are new in revision 2.1 + +>>> nace.validate('03.30') +'0330' +>>> nace.validate('03.30', revision='2.0') +Traceback (most recent call last): + ... +InvalidComponent: ... diff --git a/tests/test_eu_oss.doctest b/tests/test_eu_oss.doctest new file mode 100644 index 00000000..f879e86d --- /dev/null +++ b/tests/test_eu_oss.doctest @@ -0,0 +1,66 @@ +test_eu_oss.doctest - more detailed doctests for the stdnum.eu.oss module + +Copyright (C) 2023 Arthur de Jong +Copyright (C) 2023 Sergi Almacellas Abellana + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.eu.oss module. + +>>> from stdnum.eu import oss + +#>>> from stdnum.exceptions import * + + +Extra tests for some corner cases. + +>>> oss.validate('AA826010755') # first digits wrong +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> oss.validate('EU372A22452') # some digits not numeric +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> oss.validate('EU123010755') # MSI wrong +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> oss.validate('EU3720000224') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> oss.validate('IM372022452') +Traceback (most recent call last): + ... +InvalidLength: ... + + + +These have been found online and should all be valid numbers. Interestingly +the VIES VAT number validation does not support validating numbers issued +under the non-union or import schemes. + +https://en.wikipedia.org/wiki/VAT_identification_number also lists +EU826010755 for Godaddy and EU826009064 for AWS but neither seem to be valid. + +>>> numbers = ''' +... +... EU372022452 +... IM3720000224 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not oss.is_valid(x)] +[] diff --git a/tests/test_eu_vat.doctest b/tests/test_eu_vat.doctest index d013f17c..ee2b3595 100644 --- a/tests/test_eu_vat.doctest +++ b/tests/test_eu_vat.doctest @@ -1,6 +1,6 @@ test_eu_vat.doctest - more detailed doctests for the stdnum.eu.vat module -Copyright (C) 2012-2020 Arthur de Jong +Copyright (C) 2012-2023 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.eu.vat module. It @@ -258,6 +256,8 @@ These have been found online and should all be valid numbers. ... EL: 094279805 ... El 800 179 925 ... +... EU372022452 +... ... FI 02459042 ... FI 0982651-1 ... FI 10320534 @@ -347,46 +347,6 @@ These have been found online and should all be valid numbers. ... FR88000053537 ... FR96000110899 ... -... GB 002 4257 28 -... GB 003232345 -... GB 100 1950 75 -... GB 100190874 -... GB 102675046 -... GB 232177091 -... GB 242338087388 -... GB 311 405 025 -... GB 362 5866 29 -... GB 417 2280 71 -... GB 436 0630 72 -... GB 495 2781 05 -... GB 507 5768 25 -... GB 521 6763 52 -... GB 586 367 295 -... GB 591 9373 01 -... GB 605 8678 15 -... GB 662 8564 06 -... GB 698 550 577 -... GB 733 4428 41 -... GB 770 381 235 -... GB 784 9117 89 -... GB 808 6365 12 -... GB 812 8333 44 -... GB 818243334 -... GB 823 531 352 -... GB 829 9594 59 -... GB 845788960 -... GB 879 7056 62 -... GB 881 3758 91 -... GB 913 3041 68 -... GB 933210951 -... GB 975 8664 50 -... GB 977 4872 51 -... GB 980780684 -... GB 997 7094 44 -... GB260311213 -... GB653599494 -... GB974053902 -... ... HU -12509403 ... HU 10672101 ... HU 10766172 @@ -735,6 +695,8 @@ These have been found online and should all be valid numbers. ... SK 2022193459 ... SK2022193459 ... +... XI 432525179 +... ... ''' >>> [x for x in numbers.splitlines() if x and not vat.is_valid(x)] [] @@ -912,3 +874,48 @@ These numbers should be mostly valid except that they have the wrong length. ... ''' >>> [x for x in numbers.splitlines() if x and not caught(x, InvalidLength)] [] + + +Romanian CIF numbers assume that the RO prefix is part of the number so the +EU VAT module should not return the prefix twice. + +>>> vat.compact('RO 21996566') +'RO21996566' + + +Otherwise valid numbers with duplicated prefixes should not be considered valid. + +>>> numbers = ''' +... +... AT ATU 65033803 +... ATU ATU 65033803 +... BE BE 0220764971 +... BG BG 175074752 +... CY CY 00632993F +... CZ CZ 61467839 +... DE DE 246595415 +... DK DK 20646446 +... EE EE 100931558 +... EL EL 094501040 +... ES ES Y5277343F +... EU EU 372022452 +... FI FI 20946063 +... FR FR 23000047372 +... HU HU 18206373 +... IE IE 4550159S +... IT IT 06863340961 +... LT LT 354991917 +... LU LU 20993674 +... LV LV 40003754957 +... MT MT 19661023 +... NL NL 818643778B01 +... PL PL 7671325342 +... RO RO 16621241 +... SE SE 556043606401 +... SI SI 70310815 +... SK SK 2022749619 +... XI XI 432525179 +... +... ''' +>>> [x for x in numbers.splitlines() if x and vat.is_valid(x)] +[] diff --git a/tests/test_eu_vat.py b/tests/test_eu_vat.py index ff0f5dc4..a6d4ba33 100644 --- a/tests/test_eu_vat.py +++ b/tests/test_eu_vat.py @@ -14,9 +14,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . # This is a separate test file because it should not be run regularly # because it could negatively impact the VIES service. @@ -36,14 +34,16 @@ class TestVies(unittest.TestCase): """Test the VIES web service provided by the European commission for validation VAT numbers of European countries.""" - def test_check_vies(self): + def test_check_vies(self) -> None: """Test stdnum.eu.vat.check_vies()""" - result = vat.check_vies('BE555445') - self.assertEqual(result['countryCode'], 'BE') - self.assertEqual(result['vatNumber'], '555445') + result = vat.check_vies('NL4495445B01') + self.assertTrue(result['valid']) + self.assertEqual(result['countryCode'], 'NL') + self.assertEqual(result['vatNumber'], '004495445B01') - def test_check_vies_approx(self): + def test_check_vies_approx(self) -> None: """Test stdnum.eu.vat.check_vies_approx()""" - result = vat.check_vies_approx('BE555445', 'BE555445') - self.assertEqual(result['countryCode'], 'BE') - self.assertEqual(result['vatNumber'], '555445') + result = vat.check_vies_approx('NL4495445B01', 'NL4495445B01') + self.assertTrue(result['valid']) + self.assertEqual(result['countryCode'], 'NL') + self.assertEqual(result['vatNumber'], '004495445B01') diff --git a/tests/test_fi_hetu.doctest b/tests/test_fi_hetu.doctest index 96701fd6..88ecdd6a 100644 --- a/tests/test_fi_hetu.doctest +++ b/tests/test_fi_hetu.doctest @@ -15,9 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.fi.hetu. It @@ -39,6 +37,14 @@ Normal values that should just work. >>> hetu.validate('131052a308t') '131052A308T' +From the beginning of year 2023, additional century indicating signs were added. +This doesn't affect the checksum calculation. + +>>> hetu.validate('131052B308T') +'131052B308T' + +>>> hetu.validate('131052X308T') +'131052X308T' Invalid checksum: diff --git a/tests/test_figi.doctest b/tests/test_figi.doctest index f63728cc..33d3fe5f 100644 --- a/tests/test_figi.doctest +++ b/tests/test_figi.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.figi module. It diff --git a/tests/test_fo_vn.doctest b/tests/test_fo_vn.doctest new file mode 100644 index 00000000..97f86d24 --- /dev/null +++ b/tests/test_fo_vn.doctest @@ -0,0 +1,165 @@ +test_fo_vn.doctest - more detailed doctests for stdnum.fo.vn module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.fo.vn module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.fo import vn + + +Tests for some corner cases. + +>>> vn.validate('623857') +'623857' +>>> vn.validate('602 590') +'602590' +>>> vn.validate('563.609') +'563609' +>>> vn.validate('FO384941') +'384941' +>>> vn.format('623857') +'623857' +>>> vn.format('602 590') +'602590' +>>> vn.format('33 28 28') +'332828' +>>> vn.format('563.609') +'563609' +>>> vn.format('FO384941') +'384941' +>>> vn.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> vn.validate('12345X') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 308382 +... 309273 +... 321079 +... 322059 +... 322407 +... 323853 +... 324213 +... 328863 +... 328871 +... 328944 +... 33 28 28 +... 330833 +... 331538 +... 339849 +... 344338 +... 345334 +... 345490 +... 353477 +... 355186 +... 355216 +... 366161 +... 369497 +... 374989 +... 379778 +... 401900 +... 403369 +... 403687 +... 408638 +... 427888 +... 437.115 +... 443921 +... 452432 +... 463000 +... 476897 +... 478 865 +... 488135 +... 489042 +... 498.289 +... 502855 +... 504572 +... 509078 +... 516244 +... 519324 +... 522821 +... 537.535 +... 537.543 +... 538485 +... 539813 +... 546.089 +... 549118 +... 55 16 00 +... 550558 +... 550612 +... 551.023 +... 552569 +... 554375 +... 557 692 +... 559679 +... 563.609 +... 568 031 +... 568 597 +... 569682 +... 575712 +... 576174 +... 578 509 +... 579319 +... 585335 +... 587974 +... 589.810 +... 589306 +... 597570 +... 601470 +... 602 590 +... 602221 +... 603937 +... 604097 +... 605 174 +... 606294 +... 607436 +... 613606 +... 616 923 +... 617105 +... 617121 +... 619388 +... 619558 +... 620092 +... 620785 +... 623016 +... 623385 +... 623792 +... 623857 +... 625485 +... 625590 +... 627976 +... 628980 +... 630713 +... 636223 +... 636568 +... 637114 +... 638722 +... 641154 +... FO384941 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not vn.is_valid(x)] +[] diff --git a/tests/test_fr_accise.doctest b/tests/test_fr_accise.doctest new file mode 100644 index 00000000..8a7e74f8 --- /dev/null +++ b/tests/test_fr_accise.doctest @@ -0,0 +1,51 @@ +test_fr_accise.doctest - more detailed doctests for the stdnum.fr.accise module + +Copyright (C) 2023 Cédric Krier + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + +This file contains more detailed doctests for the stdnum.fr.accise module. It +tries to validate a number of Excise numbers that have been found online. + +>>> from stdnum.fr import accise +>>> from stdnum.exceptions import * + + +>>> accise.compact('FR0 23 004 N 9448') +'FR023004N9448' +>>> accise.validate('FR023004N9448') +'FR023004N9448' +>>> accise.validate('FR012907E0820') +'FR012907E0820' + +>>> accise.validate('FR012345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> accise.validate('FR0XX907E0820') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> accise.validate('FR012XXXE0820') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> accise.validate('FR012907A0820') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> accise.validate('FR012907EXXXX') +Traceback (most recent call last): + ... +InvalidFormat: ... diff --git a/tests/test_fr_rcs.doctest b/tests/test_fr_rcs.doctest new file mode 100644 index 00000000..9373b3f4 --- /dev/null +++ b/tests/test_fr_rcs.doctest @@ -0,0 +1,54 @@ +test_fr_rcs.doctest - more detailed doctests for the stdnum.fr.rcs module + +Copyright (C) 2025 Fabien Michel + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.fr.rcs module. + +>>> from stdnum.fr import rcs +>>> from stdnum.exceptions import * + + +>>> rcs.validate('RCS Nancy B 323 159 715') +'RCS Nancy B 323159715' +>>> rcs.validate('RCS Nancy B 323159715') +'RCS Nancy B 323159715' +>>> rcs.validate('RCS Nancy B323 159715') +'RCS Nancy B 323159715' +>>> rcs.validate('RCS Nancy B 323 159 716') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> rcs.validate('RCSNancy B 323 159 716') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> rcs.validate('RCS NancyB 323 159 716') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> rcs.format('RCS Nancy B323159715') +'RCS Nancy B 323 159 715' +>>> rcs.format('invalid') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> rcs.to_siren('RCS Nancy B 323159 715') +'323159715' +>>> rcs.to_siren('invalid') +Traceback (most recent call last): + ... +InvalidFormat: ... diff --git a/tests/test_fr_siren.doctest b/tests/test_fr_siren.doctest index 2169ec99..2e0ac350 100644 --- a/tests/test_fr_siren.doctest +++ b/tests/test_fr_siren.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.fr.siren module. diff --git a/tests/test_fr_siret.doctest b/tests/test_fr_siret.doctest index 699ac33b..21515f95 100644 --- a/tests/test_fr_siret.doctest +++ b/tests/test_fr_siret.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.fr.siret module. @@ -24,6 +22,21 @@ This file contains more detailed doctests for the stdnum.fr.siret module. >>> from stdnum.exceptions import * +La Poste SIRET does not use the Luhn checksum but the sum of digits must be a +multiple of 5. + +>>> siret.validate('356 000 000 09075') +'35600000009075' +>>> siret.validate('35600000000048') +'35600000000048' +>>> siret.validate('35600000049837') +'35600000049837' +>>> siret.validate('35600000049838') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + These have been found online and should all be valid numbers. >>> numbers = ''' diff --git a/tests/test_fr_tva.doctest b/tests/test_fr_tva.doctest new file mode 100644 index 00000000..831980a6 --- /dev/null +++ b/tests/test_fr_tva.doctest @@ -0,0 +1,42 @@ +test_fr_tva.doctest - more detailed doctests for the stdnum.fr.tva module + +Copyright (C) 2025 Fabien Michel + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.fr.tva module. + +>>> from stdnum.fr import tva +>>> from stdnum.exceptions import * + + +>>> tva.validate('Fr 40 303 265 045') +'40303265045' +>>> tva.validate('23 334 175 221') +'23334175221' +>>> tva.validate('23334175221') +'23334175221' +>>> tva.validate('84 323 140 391') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> tva.to_siren('Fr 40 303 265 045') +'303265045' +>>> tva.to_siren('23 334 175 221') +'334175221' +>>> tva.to_siren('FR 53 0000 04605') # Monaco VAT code canot be converted +Traceback (most recent call last): + ... +InvalidComponent: ... diff --git a/tests/test_gb_sedol.doctest b/tests/test_gb_sedol.doctest index 407d2951..7827bc57 100644 --- a/tests/test_gb_sedol.doctest +++ b/tests/test_gb_sedol.doctest @@ -1,4 +1,4 @@ -test_sedol.doctest - more detailed doctests for the stdnum.gb.sedol module +test_gb_sedol.doctest - more detailed doctests for the stdnum.gb.sedol module Copyright (C) 2015 Arthur de Jong @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.gb.sedol module. It diff --git a/tests/test_gb_utr.doctest b/tests/test_gb_utr.doctest index 93637cca..4bbc16b1 100644 --- a/tests/test_gb_utr.doctest +++ b/tests/test_gb_utr.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.gb.utr module. It diff --git a/tests/test_gb_vat.doctest b/tests/test_gb_vat.doctest index 151feb4b..613e95e0 100644 --- a/tests/test_gb_vat.doctest +++ b/tests/test_gb_vat.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.gb.vat. It @@ -25,6 +23,52 @@ really useful as module documentation. >>> from stdnum.gb import vat +>>> numbers = ''' +... +... GB 002 4257 28 +... GB 003232345 +... GB 100 1950 75 +... GB 100190874 +... GB 102675046 +... GB 232177091 +... GB 242338087388 +... GB 311 405 025 +... GB 362 5866 29 +... GB 417 2280 71 +... GB 436 0630 72 +... GB 495 2781 05 +... GB 507 5768 25 +... GB 521 6763 52 +... GB 586 367 295 +... GB 591 9373 01 +... GB 605 8678 15 +... GB 662 8564 06 +... GB 698 550 577 +... GB 733 4428 41 +... GB 770 381 235 +... GB 784 9117 89 +... GB 808 6365 12 +... GB 812 8333 44 +... GB 818243334 +... GB 823 531 352 +... GB 829 9594 59 +... GB 845788960 +... GB 879 7056 62 +... GB 881 3758 91 +... GB 913 3041 68 +... GB 933210951 +... GB 975 8664 50 +... GB 977 4872 51 +... GB 980780684 +... GB 997 7094 44 +... GB260311213 +... GB653599494 +... GB974053902 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not vat.validate(x)] +[] + Normal values that should just work. >>> vat.validate('980780684') # standard number diff --git a/tests/test_gh_tin.doctest b/tests/test_gh_tin.doctest new file mode 100644 index 00000000..e3b6b59f --- /dev/null +++ b/tests/test_gh_tin.doctest @@ -0,0 +1,102 @@ +test_gh_tin.doctest - more detailed doctests for stdnum.gh.tin module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.gh.tin module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.gh import tin + + +Tests for some corner cases. + +>>> tin.validate('C0000803561') +'C0000803561' +>>> tin.validate('P0008816751') +'P0008816751' +>>> tin.validate('V0022862404') +'V0022862404' +>>> tin.validate('G0005513405') +'G0005513405' +>>> tin.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> tin.validate('X0000803561') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... C0000803561 +... C0002147866 +... C0002442477 +... C0002551888 +... C000261992X +... C0002862646 +... C0003136973 +... C0003137007 +... C0003165493 +... C0003168417 +... C0003257630 +... C0003257673 +... C0003268071 +... C0003278263 +... C0003278271 +... C000327828X +... C0003278484 +... C0003417425 +... C0003442500 +... C000366497X +... C0003664996 +... C0003831426 +... C0004056450 +... C0004524764 +... C0004656830 +... C0004743520 +... C0004894162 +... C0005015774 +... C0005203333 +... C0006570275 +... C0009705228 +... C0010952330 +... C001095242X +... C0013225812 +... C0021485674 +... C0029454158 +... G0005513405 +... G0061140708 +... P0001525662 +... P0004697499 +... P0006187994 +... P0008816751 +... P0009329188 +... P0009329250 +... P0009487379 +... P0012631833 +... P0039937100 +... V0003107108 +... V0022862404 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not tin.is_valid(x)] +[] diff --git a/tests/test_gn_nifp.doctest b/tests/test_gn_nifp.doctest new file mode 100644 index 00000000..4ace3ec9 --- /dev/null +++ b/tests/test_gn_nifp.doctest @@ -0,0 +1,155 @@ +test_gn_nifp.doctest - more detailed doctests for stdnum.gn.nifp module + +Copyright (C) 2023 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.gn.nifp module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.gn import nifp + + +Tests for some corner cases. + +>>> nifp.validate('693770885') +'693770885' +>>> nifp.validate('693-770-885') +'693770885' +>>> nifp.format('693770885') +'693-770-885' +>>> nifp.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> nifp.validate('VV3456789') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> nifp.validate('693770880') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 102193364 +... 102932480 +... 113906614 +... 137855094 +... 157700758 +... 163512015 +... 168219525 +... 177755154 +... 203352125 +... 215895707 +... 234705127 +... 258620392 +... 265163162 +... 270905136 +... 276587276 +... 281697813 +... 281973404 +... 289136574 +... 290216472 +... 291581551 +... 311132112 +... 326241312 +... 326916780 +... 330284803 +... 333066967 +... 339107195 +... 370302309 +... 379503667 +... 390899623 +... 407497502 +... 415146935 +... 416379998 +... 422626143 +... 429527492 +... 433727930 +... 438888018 +... 447159617 +... 447777913 +... 489733675 +... 496666249 +... 515556629 +... 530081389 +... 538787201 +... 540187069 +... 569056062 +... 585086473 +... 589015205 +... 622719409 +... 626945182 +... 633490883 +... 634628101 +... 634726517 +... 639191436 +... 647585900 +... 653873455 +... 656468998 +... 658615315 +... 664138476 +... 664763828 +... 666959549 +... 677783854 +... 681340105 +... 691380299 +... 720469097 +... 735630923 +... 762478154 +... 765808340 +... 775347206 +... 780527677 +... 780806089 +... 784170151 +... 806927760 +... 833139827 +... 839709987 +... 841526031 +... 842993172 +... 853101202 +... 853102234 +... 864098611 +... 875480923 +... 877008771 +... 887516623 +... 896053261 +... 902765809 +... 908179583 +... 908810518 +... 912232667 +... 914351234 +... 925867079 +... 927432484 +... 938291994 +... 955449905 +... 958819708 +... 960943835 +... 964456891 +... 969695261 +... 972555296 +... 977428416 +... 982469827 +... 999707235 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not nifp.is_valid(x)] +[] diff --git a/tests/test_gr_amka.doctest b/tests/test_gr_amka.doctest index 6b8815f6..4cef2268 100644 --- a/tests/test_gr_amka.doctest +++ b/tests/test_gr_amka.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.gr.amka module. It diff --git a/tests/test_gs1_128.doctest b/tests/test_gs1_128.doctest index 8bfa9af9..7036d271 100644 --- a/tests/test_gs1_128.doctest +++ b/tests/test_gs1_128.doctest @@ -1,7 +1,7 @@ test_gs1_128.doctest - more detailed doctests for the stdnum.gs1_128 module Copyright (C) 2019 Sergi Almacellas Abellaan -Copyright (C) 2020 Arthur de Jong +Copyright (C) 2020-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.gs1_128 module. It @@ -38,9 +36,17 @@ will be converted to the correct representation. >>> gs1_128.encode({'01': '38425876095074', '17': datetime.date(2018, 11, 19), '37': 1}, parentheses=True) '(01)38425876095074(17)181119(37)1' ->>> gs1_128.encode({'02': '98412345678908', '310': 17.23, '37': 32}) +>>> gs1_128.encode({'02': '98412345678908', '3100': 17.23, '37': 32}) '029841234567890831020017233732' ->>> gs1_128.encode({'03': '1234'}) # unknown AI +>>> gs1_128.encode({'02': '98412345678908', '3100': 17.23, '37': 32}, parentheses=True) +'(02)98412345678908(3102)001723(37)32' +>>> gs1_128.encode({'253': '1234567890005000123'}) +'2531234567890005000123' +>>> gs1_128.encode({'09': '1234'}) # unknown AI +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> gs1_128.encode({'310': 17.23}) # no longer detected as part of the 3100-3105 range Traceback (most recent call last): ... InvalidComponent: ... @@ -48,22 +54,24 @@ InvalidComponent: ... If we have a separator we use it to separate variable-length values, otherwise we pad all variable-length values to the maximum length (except the last one). ->>> gs1_128.encode({'01': '58425876097843', '10': '123456', '37': 18, '390': 42, '392': 12}, parentheses=True) -'(01)58425876097843(10)123456 (37)00000018(390)0000000000000042(392)012' ->>> gs1_128.encode({'01': '58425876097843', '10': '123456', '37': 18, '390': 42, '392': 12}, parentheses=True, separator='[FNC1]') -'(01)58425876097843(10)123456[FNC1](37)18[FNC1](390)042[FNC1](392)012' +>>> gs1_128.encode({'01': '58425876097843', '10': '123456', '37': 18, '3900': 42, '3920': 12}, parentheses=True) +'(01)58425876097843(10)123456 (37)00000018(3900)000000000000042(3920)12' +>>> gs1_128.encode({'01': '58425876097843', '10': '123456', '37': 18, '3900': 42, '3920': 12}, parentheses=True, separator='[FNC1]') +'(01)58425876097843(10)123456[FNC1](37)18[FNC1](3900)42[FNC1](3920)12' Numeric values can be provided in several forms and precision is encoded properly. >>> gs1_128.encode({ -... '310': 17.23, # float -... '311': 456, # int -... '312': 1.0 / 3.0, # float with lots of digits -... '313': '123.456', # str -... '391': ('123', Decimal('123.456')), # currency number combo +... '3100': 17.23, # float +... '3110': 456, # int +... '3120': 1.0 / 3.0, # float with lots of digits +... '3130': '123.456', # str +... '3910': ('123', Decimal('123.456')), # currency number combo ... }, parentheses=True) -'(310)2001723(311)0000456(312)5033333(313)3123456(391)3123123456' +'(3102)001723(3110)000456(3125)033333(3133)123456(3913)123123456' +>>> gs1_128.encode({'01': '98456789014533', '3100': Decimal('0.035')}, parentheses=True) +'(01)98456789014533(3103)000035' We generate dates in various formats, depending on the AI. @@ -82,6 +90,10 @@ We generate dates in various formats, depending on the AI. '(8008)18111912' >>> gs1_128.encode({'8008': datetime.datetime(2018, 11, 19, 0, 0)}, parentheses=True) '(8008)18111900' +>>> gs1_128.encode({'7011': datetime.date(2018, 11, 19)}, parentheses=True) +'(7011)181119' +>>> gs1_128.encode({'7011': datetime.datetime(2018, 11, 19, 12, 45)}, parentheses=True) +'(7011)1811191245' If we try to encode an invalid EAN we will get an error. @@ -98,25 +110,33 @@ pprint.pprint(gs1_128.info('(01)38425876095074(17)181119(37)1 ')) {'01': '38425876095074', '17': datetime.date(2018, 11, 19), '37': 1} >>> pprint.pprint(gs1_128.info('013842587609507417181119371')) {'01': '38425876095074', '17': datetime.date(2018, 11, 19), '37': 1} ->>> pprint.pprint(gs1_128.info('(02)98412345678908(310)3017230(37)32')) -{'02': '98412345678908', '310': Decimal('17.230'), '37': 32} +>>> pprint.pprint(gs1_128.info('(02)98412345678908(3103)017230(37)32')) +{'02': '98412345678908', '3103': Decimal('17.230'), '37': 32} >>> pprint.pprint(gs1_128.info('(01)58425876097843(10)123456 (17)181119(37)18')) {'01': '58425876097843', '10': '123456', '17': datetime.date(2018, 11, 19), '37': 18} >>> pprint.pprint(gs1_128.info('|(01)58425876097843|(10)123456|(17)181119(37)18', separator='|')) {'01': '58425876097843', '10': '123456', '17': datetime.date(2018, 11, 19), '37': 18} ->>> gs1_128.info('(03)38425876095074') # unknown AI +>>> pprint.pprint(gs1_128.info('(01)38425876095074(17)260400(10)123456')) +{'01': '38425876095074', '10': '123456', '17': datetime.date(2026, 4, 30)} +>>> pprint.pprint(gs1_128.info('(01)38425876095074(17)261200(10)123456')) +{'01': '38425876095074', '10': '123456', '17': datetime.date(2026, 12, 31)} +>>> gs1_128.info('(09)38425876095074') # unknown AI Traceback (most recent call last): ... InvalidComponent: ... +>>> pprint.pprint(gs1_128.info('(253)1234567890005000123')) +{'253': '1234567890005000123'} We can decode decimal values from various formats. ->>> pprint.pprint(gs1_128.info('(310)5033333')) -{'310': Decimal('0.33333')} ->>> pprint.pprint(gs1_128.info('(310)0033333')) -{'310': Decimal('33333')} ->>> pprint.pprint(gs1_128.info('(391)3123123456')) -{'391': ('123', Decimal('123.456'))} +>>> pprint.pprint(gs1_128.info('(3105)033333')) +{'3105': Decimal('0.33333')} +>>> pprint.pprint(gs1_128.info('(3103)000035')) +{'3103': Decimal('0.035')} +>>> pprint.pprint(gs1_128.info('(3100)033333')) +{'3100': Decimal('33333')} +>>> pprint.pprint(gs1_128.info('(3913)123123456')) +{'3913': ('123', Decimal('123.456'))} We an decode date files from various formats. @@ -130,6 +150,10 @@ We an decode date files from various formats. {'7007': (datetime.date(2018, 11, 19), datetime.date(2018, 11, 21))} >>> pprint.pprint(gs1_128.info('(8008)18111912')) {'8008': datetime.datetime(2018, 11, 19, 12, 0)} +>>> pprint.pprint(gs1_128.info('(7011)181119')) +{'7011': datetime.date(2018, 11, 19)} +>>> pprint.pprint(gs1_128.info('(7011)1811191245')) +{'7011': datetime.datetime(2018, 11, 19, 12, 45)} While the compact() function can clean up the number somewhat the validate() diff --git a/tests/test_gt_nit.doctest b/tests/test_gt_nit.doctest index eff949b1..ec0aa94e 100644 --- a/tests/test_gt_nit.doctest +++ b/tests/test_gt_nit.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.gt.nit module. It diff --git a/tests/test_iban.doctest b/tests/test_iban.doctest index 083ce88a..80b4f6e2 100644 --- a/tests/test_iban.doctest +++ b/tests/test_iban.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.iban module. It diff --git a/tests/test_id_npwp.doctest b/tests/test_id_npwp.doctest index 13a78d9e..eb160c19 100644 --- a/tests/test_id_npwp.doctest +++ b/tests/test_id_npwp.doctest @@ -1,6 +1,7 @@ test_id_npwp.doctest - more detailed doctests for stdnum.id.npwp module Copyright (C) 2020 Leandro Regueiro +Copyright (C) 2024 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.id.npwp module. It @@ -49,6 +48,16 @@ Traceback (most recent call last): InvalidChecksum: ... +Since 2024 the numbers have been changed to a 16 digit format. They can +either be a NIK (for Indonesian citizens) or a 0 followed by the original +15-digit number. + +>>> npwp.validate('3171011708450001') # NIK +'3171011708450001' +>>> npwp.validate('083.132.665.7-201.000') # extra 0 prepended +'0831326657201000' + + These have been found online and should all be valid numbers. >>> numbers = ''' diff --git a/tests/test_ie_pps.doctest b/tests/test_ie_pps.doctest new file mode 100644 index 00000000..e8f8680c --- /dev/null +++ b/tests/test_ie_pps.doctest @@ -0,0 +1,57 @@ +test_ie_pps.doctest - more detailed doctests for stdnum.ie.pps module + +Copyright (C) 2024 Olly Middleton + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.ie.pps module. It +tries to cover more corner cases and detailed functionality that is not +really useful as module documentation. + +>>> from stdnum.ie import pps + + +Extra tests for length checking and corner cases: + +>>> pps.validate('111222333') # check number should contain letters +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> pps.validate('1234567ABC') # too long +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> pps.validate('1234567XX') # invalid letters +Traceback (most recent call last): + ... +InvalidFormat: ... + + +The validate() function should check with new format if last letter is A, B or H. + +>>> pps.validate('1234567FA') +'1234567FA' +>>> pps.validate('1234567WH') +'1234567WH' +>>> pps.validate('1234567OB') +'1234567OB' + + +The validate() function should check with old format if last letter is W or T. + +>>> pps.validate('1234567TW') +'1234567TW' +>>> pps.validate('1234567TT') +'1234567TT' diff --git a/tests/test_ie_vat.doctest b/tests/test_ie_vat.doctest index cbdf9589..736ef594 100644 --- a/tests/test_ie_vat.doctest +++ b/tests/test_ie_vat.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ie.vat module. It diff --git a/tests/test_il_hp.doctest b/tests/test_il_hp.doctest index baaecc39..2cb30871 100644 --- a/tests/test_il_hp.doctest +++ b/tests/test_il_hp.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.il.hp module. It diff --git a/tests/test_imei.doctest b/tests/test_imei.doctest index 7589d695..f549faf6 100644 --- a/tests/test_imei.doctest +++ b/tests/test_imei.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.imei module. It diff --git a/tests/test_imsi.doctest b/tests/test_imsi.doctest index dbf20782..8f726f54 100644 --- a/tests/test_imsi.doctest +++ b/tests/test_imsi.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.imsi module. It diff --git a/tests/test_in_pan.doctest b/tests/test_in_pan.doctest index e3179ee7..ab338dda 100644 --- a/tests/test_in_pan.doctest +++ b/tests/test_in_pan.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.in_.pan module. It diff --git a/tests/test_is_kennitala.doctest b/tests/test_is_kennitala.doctest index 00ec7cde..6e05b17b 100644 --- a/tests/test_is_kennitala.doctest +++ b/tests/test_is_kennitala.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.is_.kennitala diff --git a/tests/test_isan.doctest b/tests/test_isan.doctest index 32f0f1d0..806707de 100644 --- a/tests/test_isan.doctest +++ b/tests/test_isan.doctest @@ -1,6 +1,6 @@ test_isan.doctest - more detailed doctests for stdnum.isan module -Copyright (C) 2010, 2012, 2013 Arthur de Jong +Copyright (C) 2010-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.isan module. It @@ -113,8 +111,5 @@ A simple test for the to_binary() function. >>> import binascii >>> import sys ->>> x = binascii.b2a_hex(isan.to_binary('0000-0000-D07A-0090-Q')) ->>> if sys.version > '3': -... x = str(x, encoding='ascii') ->>> x -'00000000d07a0090' +>>> binascii.b2a_hex(isan.to_binary('0000-0000-D07A-0090-Q')) +b'00000000d07a0090' diff --git a/tests/test_isbn.doctest b/tests/test_isbn.doctest index 26ccdab0..e309dddd 100644 --- a/tests/test_isbn.doctest +++ b/tests/test_isbn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.isbn module. It diff --git a/tests/test_isil.doctest b/tests/test_isil.doctest index 1668563b..a37eabf8 100644 --- a/tests/test_isil.doctest +++ b/tests/test_isil.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.isil module. It diff --git a/tests/test_isin.doctest b/tests/test_isin.doctest index 568aa60c..d6f3e682 100644 --- a/tests/test_isin.doctest +++ b/tests/test_isin.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.isin module. It diff --git a/tests/test_ismn.doctest b/tests/test_ismn.doctest index 23eb5f20..f7a4b201 100644 --- a/tests/test_ismn.doctest +++ b/tests/test_ismn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ismn module. It diff --git a/tests/test_iso11649.doctest b/tests/test_iso11649.doctest index 24cdd711..73442625 100644 --- a/tests/test_iso11649.doctest +++ b/tests/test_iso11649.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.iso11649 module. It diff --git a/tests/test_iso6346.doctest b/tests/test_iso6346.doctest index a6b2f49b..d8758167 100644 --- a/tests/test_iso6346.doctest +++ b/tests/test_iso6346.doctest @@ -1,4 +1,4 @@ -test_doctest - more detailed doctests for the stdnum.iso6346 package +test_iso6346.doctest - more detailed doctests for the stdnum.iso6346 package Copyright (C) 2014 Openlabs Technologies & Consulting (P) Limited @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.iso7064 package. It diff --git a/tests/test_iso7064.doctest b/tests/test_iso7064.doctest index 28c62472..ddb5444d 100644 --- a/tests/test_iso7064.doctest +++ b/tests/test_iso7064.doctest @@ -1,6 +1,6 @@ -test_doctest - more detailed doctests for the stdnum.iso7064 package +test_iso7064.doctest - more detailed doctests for the stdnum.iso7064 package -Copyright (C) 2010, 2011, 2013 Arthur de Jong +Copyright (C) 2010-2022 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.iso7064 package. It @@ -68,3 +66,14 @@ These normal tests of Mod 37, 2 should just work >>> mod_37_2.calc_check_digit('G123498654321') 'H' + + +The Mod 97, 10 check digit suggestion should prefer check digits in the +range of 02 to 98 as is used in IBAN. + +>>> mod_97_10.calc_check_digits('5367') +'02' +>>> mod_97_10.calc_check_digits('5303') +'97' +>>> mod_97_10.calc_check_digits('5335') +'98' diff --git a/tests/test_isrc.doctest b/tests/test_isrc.doctest new file mode 100644 index 00000000..57cf5574 --- /dev/null +++ b/tests/test_isrc.doctest @@ -0,0 +1,60 @@ +test_isrc.doctest - more detailed doctests for stdnum.isrc module + +Copyright (C) 2021 Nuno André Novo +Copyright (C) 2021 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.isrc module. It +tries to test more corner cases and detailed functionality that is not +really useful as module documentation. + +>>> from stdnum import isrc + + +These are normal variations that should just work. + +>>> isrc.validate('US-SKG-19-12345') +'USSKG1912345' +>>> isrc.validate('USSKG1912345') +'USSKG1912345' +>>> isrc.validate('us-skg1912345') +'USSKG1912345' +>>> isrc.validate('GX26J2400002') +'GX26J2400002' +>>> isrc.validate('FXR592300639') +'FXR592300639' + + +Tests for mangling and incorrect country codes. + +>>> isrc.validate('US-SKG-19-123456') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> isrc.validate('US-SKG-19-1234*') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> isrc.validate('XX-SKG-19-12345') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +Formatting tests. + +>>> isrc.format('USSKG1912345') +'US-SKG-19-12345' diff --git a/tests/test_it_aic.doctest b/tests/test_it_aic.doctest index b3f13e4e..1854fcd7 100644 --- a/tests/test_it_aic.doctest +++ b/tests/test_it_aic.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.it.aic module. diff --git a/tests/test_it_codicefiscale.doctest b/tests/test_it_codicefiscale.doctest index 81b8b380..1407139e 100644 --- a/tests/test_it_codicefiscale.doctest +++ b/tests/test_it_codicefiscale.doctest @@ -15,9 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.it.codicefiscale diff --git a/tests/test_jp_cn.doctest b/tests/test_jp_cn.doctest index e3bf0fed..1dad0215 100644 --- a/tests/test_jp_cn.doctest +++ b/tests/test_jp_cn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.jp.cn module. It diff --git a/tests/test_ke_pin.doctest b/tests/test_ke_pin.doctest new file mode 100644 index 00000000..7a1ced2a --- /dev/null +++ b/tests/test_ke_pin.doctest @@ -0,0 +1,151 @@ +test_ke_pin.doctest - more detailed doctests for stdnum.ke.pin module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.ke.pin module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.ke import pin + + +Tests for some corner cases. + +>>> pin.validate('A006665913Y') +'A006665913Y' +>>> pin.validate('P 051193029-r') +'P051193029R' +>>> pin.format('P 051193029-r') +'P051193029R' +>>> pin.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> pin.validate('X1234567897') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... A001906275H +... A003364162P +... A004690554X +... A004764821W +... A005171423w +... A008965081L +... A010165600X +... A014678229G +... A015002408V +... P000591575X +... P000592118K +... P000592265X +... P000592366Z +... P000592851X +... P000593471Z +... P000593916S +... P000595037X +... P000595362D +... P000595438C +... P000595467J +... P000596373I +... P000596967Q +... P000597143A +... P000597694S +... P000598224A +... P000598330Z +... P000598522B +... P000599642I +... P000600314X +... P000602904I +... P000602920I +... P000603130E +... P000603639S +... P000604053O +... P000605255W +... P000605674D +... P000607839E +... P000608167F +... P000609340W +... P000609345B +... P000609346C +... P000609356G +... P000609360C +... P000609361D +... P000609362E +... P000609364G +... P000609365H +... P000609367J +... P000609370E +... P000609661G +... P000609671I +... P000611951N +... P000611975V +... P000612067R +... P000612260M +... P000612829R +... P000613824O +... P000615058Y +... P000619379O +... P000619594P +... P051092778I +... P051092962C +... P051094112J +... P051094227U +... P051094522S +... P051100248H +... P051100289S +... P051102426H +... P051102575T +... P051104242J +... P051106014G +... P051112430E +... P051116151S +... P051117306P +... P051123493Y +... P051124237Z +... P051124533N +... P051141061H +... P051149832D +... P051151506E +... P051153177Y +... P051153543Q +... P051155350V +... P051160236J +... P051170839T +... P051172781A +... P051332840T +... P051351120F +... P051365947M +... P051391353w +... P051474338E +... P051603577M +... P051647363S +... P051675891A +... P051828116I +... P051855612G +... P051909085B +... P051912053E +... p051606652M +... p051896085c +... +... ''' +>>> [x for x in numbers.splitlines() if x and not pin.is_valid(x)] +[] diff --git a/tests/test_kr_brn.doctest b/tests/test_kr_brn.doctest index 668a9751..d6246ef1 100644 --- a/tests/test_kr_brn.doctest +++ b/tests/test_kr_brn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.kr.brn module. It diff --git a/tests/test_kr_brn.py b/tests/test_kr_brn.py deleted file mode 100644 index 31cd9d6a..00000000 --- a/tests/test_kr_brn.py +++ /dev/null @@ -1,46 +0,0 @@ -# test_kr_brn.py - functions for testing the online BRN validation -# coding: utf-8 -# -# Copyright (C) 2020 Arthur de Jong -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA - -# This is a separate test file because it should not be run regularly -# because it could negatively impact the online service. - -"""Extra tests for the stdnum.kr.brn module.""" - -import os -import unittest - -from stdnum.kr import brn - - -@unittest.skipIf( - not os.environ.get('ONLINE_TESTS'), - 'Do not overload online services') -class TestFTC(unittest.TestCase): - """Test the check provided based on the Korea Fair Trade Commission - website.""" - - def test_check_ftc(self): - """Test stdnum.kr.brn.check_ftc()""" - # Test a normal valid number - result = brn.check_ftc('109-81-39795') - self.assertTrue(result) - # Test an invalid number - result = brn.check_ftc('109-81-39796') - self.assertIsNone(result) diff --git a/tests/test_kr_rrn.doctest b/tests/test_kr_rrn.doctest index 09a1412f..bebd39e8 100644 --- a/tests/test_kr_rrn.doctest +++ b/tests/test_kr_rrn.doctest @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.kr.rrn module. It diff --git a/tests/test_lei.doctest b/tests/test_lei.doctest index 5c2900dd..bc2d5a5b 100644 --- a/tests/test_lei.doctest +++ b/tests/test_lei.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.lei module. diff --git a/tests/test_li_peid.doctest b/tests/test_li_peid.doctest new file mode 100644 index 00000000..66eaed17 --- /dev/null +++ b/tests/test_li_peid.doctest @@ -0,0 +1,92 @@ +test_li_peid.doctest - more detailed doctests for stdnum.li.peid module + +Copyright (C) 2020 Matthias Schmid + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.li.peid module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.li import peid + + +Tests for some corner cases. + +>>> peid.validate('1339050') +'1339050' +>>> peid.validate('01339050') +'1339050' +>>> peid.validate('0001339050') +'1339050' +>>> peid.validate('0843089848') +'843089848' + +>>> peid.validate('123') +Traceback (most recent call last): + ... +InvalidLength: The number has an invalid length. + +>>> peid.validate('1234567890123') +Traceback (most recent call last): + ... +InvalidLength: The number has an invalid length. + +>>> peid.validate('0001') +Traceback (most recent call last): + ... +InvalidLength: The number has an invalid length. + +>>> peid.validate('FF01339050') +Traceback (most recent call last): + ... +InvalidFormat: The number has an invalid format. + +>>> peid.validate('13-39050') +Traceback (most recent call last): + ... +InvalidFormat: The number has an invalid format. + +>>> peid.validate('568ABC91345') +Traceback (most recent call last): + ... +InvalidFormat: The number has an invalid format. + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 100364 +... 1053541 +... 2.580.073 +... 2031108 +... 2043832 +... 2385259 +... 2467526 +... 2518516 +... 2536979 +... 2547594 +... 2555984 +... 2557953 +... 2580190 +... 2581203 +... 2766 +... 84166 +... 84167 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not peid.is_valid(x)] +[] diff --git a/tests/test_lt_asmens.doctest b/tests/test_lt_asmens.doctest index e472700f..d160774d 100644 --- a/tests/test_lt_asmens.doctest +++ b/tests/test_lt_asmens.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.lt.asmens. It tries diff --git a/tests/test_luhn.doctest b/tests/test_luhn.doctest index 44095142..d6ce570b 100644 --- a/tests/test_luhn.doctest +++ b/tests/test_luhn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.luhn module. It diff --git a/tests/test_ma_ice.doctest b/tests/test_ma_ice.doctest new file mode 100644 index 00000000..7e9d305c --- /dev/null +++ b/tests/test_ma_ice.doctest @@ -0,0 +1,151 @@ +test_ma_ice.doctest - more detailed doctests for stdnum.ma.ice module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.ma.ice module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.ma import ice + + +Tests for some corner cases. + +>>> ice.validate('001561191000066') +'001561191000066' +>>> ice.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> ice.validate('X0156119100006Z') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> ice.format('00 21 36 09 30 00 040') +'002136093000040' +>>> ice.format('36794000036') +'000036794000036' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 000030205000041 +... 000039557000028 +... 000084803000004 +... 000106304000022 +... 000121494000008 +... 000206981000071 +... 00 21 36 09 30 00 040 +... 001512572000078 +... 001561191000066 +... 001565457000023 +... 001604356000066 +... 001629924000079 +... 001680801000017 +... 001731355000043 +... 001744856000042 +... 001747979000014 +... 001748885000093 +... 001753989000025 +... 001757319000034 +... 001827913000046 +... 001867807000093 +... 001883389000068 +... 001887940000090 +... 001906225000028 +... 001911196000059 +... 001965640000009 +... 001974718000022 +... 001976463000049 +... 001985336000068 +... 001996344000060 +... 002007999000043 +... 002020847000019 +... 002023181000051 +... 002033432000015 +... 002034945000001 +... 002037826000008 +... 002058647000053 +... 002063738000045 +... 002064672000047 +... 002076600000031 +... 002085583000087 +... 002105112000096 +... 002117772000007 +... 002143491000017 +... 002153925000084 +... 002171831000070 +... 002175561000046 +... 002183254000012 +... 002196660000054 +... 002200638000027 +... 002214705000070 +... 002223396000056 +... 002229460000064 +... 002270907000084 +... 002276099000065 +... 002284350000097 +... 002289496000059 +... 002295895000043 +... 002316916000023 +... 002329576000031 +... 002330015000012 +... 002332839000006 +... 002333592000045 +... 002335910000024 +... 002336083000009 +... 002356463000030 +... 002362254000037 +... 002364621000051 +... 002397991000094 +... 002398966000056 +... 002404272000063 +... 002410367000010 +... 002411901000011 +... 002428800000026 +... 002434341000090 +... 002443493000045 +... 002533410000002 +... 002539687000079 +... 002548326000014 +... 002553650000020 +... 002567289000076 +... 002581462000070 +... 002586051000036 +... 002591358000016 +... 002604451000070 +... 002614910000044 +... 002627640000005 +... 002630734000081 +... 002667689000038 +... 002672505000083 +... 002673962000029 +... 002701712000007 +... 002702346000058 +... 002738846000078 +... 002753855000004 +... 002848452000089 +... 002855545000056 +... 002904997000057 +... 003004995000009 +... 003102867000036 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not ice.is_valid(x)] +[] diff --git a/tests/test_mac.doctest b/tests/test_mac.doctest index aab83398..933008da 100644 --- a/tests/test_mac.doctest +++ b/tests/test_mac.doctest @@ -1,6 +1,6 @@ test_mac.doctest - more detailed doctests for the stdnum.mac module -Copyright (C) 2018 Arthur de Jong +Copyright (C) 2018-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.mac module. It @@ -77,9 +75,9 @@ True We can lookup the organisation that registered the OUI part of the MAC address. ->>> str(mac.get_manufacturer('2c:76:8a:ad:f2:74')) +>>> mac.get_manufacturer('2c:76:8a:ad:f2:74') 'Hewlett Packard' ->>> str(mac.get_manufacturer('fe:54:00:76:07:0a')) # libvirt MAC address +>>> mac.get_manufacturer('fe:54:00:76:07:0a') # libvirt MAC address Traceback (most recent call last): ... InvalidComponent: ... diff --git a/tests/test_md_idno.doctest b/tests/test_md_idno.doctest index 36f2a51c..57f0ea83 100644 --- a/tests/test_md_idno.doctest +++ b/tests/test_md_idno.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.md.idno. It tries diff --git a/tests/test_me_pib.doctest b/tests/test_me_pib.doctest new file mode 100644 index 00000000..fea9192f --- /dev/null +++ b/tests/test_me_pib.doctest @@ -0,0 +1,178 @@ +test_me_pib.doctest - more detailed doctests for stdnum.me.pib module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.me.pib module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.me import pib + + +Tests for some corner cases. + +>>> pib.validate('02655284') +'02655284' +>>> pib.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> pib.validate('12345XYZ') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> pib.format('02655284') +'02655284' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 02000989 +... 02005115 +... 02005328 +... 02007479 +... 02008599 +... 02015099 +... 02017105 +... 02018560 +... 02026325 +... 02033143 +... 02033356 +... 02044188 +... 02046954 +... 02047403 +... 02051664 +... 02052822 +... 02082390 +... 02085020 +... 02087723 +... 02094754 +... 02096064 +... 02096099 +... 02106183 +... 02118912 +... 02126265 +... 02131013 +... 02132419 +... 02160102 +... 02171058 +... 02194007 +... 02196727 +... 02216078 +... 02219603 +... 02241102 +... 02259974 +... 02264811 +... 02265435 +... 02272296 +... 02291266 +... 02293099 +... 02303213 +... 02305054 +... 02305623 +... 02309084 +... 02310783 +... 02313987 +... 02335450 +... 02355388 +... 02357950 +... 02383136 +... 02384337 +... 02385040 +... 02389231 +... 02395673 +... 02404281 +... 02407515 +... 02436159 +... 02437643 +... 02440768 +... 02448076 +... 02454190 +... 02455455 +... 02462494 +... 02465787 +... 02467593 +... 02628988 +... 02630419 +... 02653753 +... 02656515 +... 02671930 +... 02694638 +... 02697904 +... 02702967 +... 02705001 +... 02707942 +... 02709392 +... 02717557 +... 02739500 +... 02751372 +... 02759519 +... 02766515 +... 02769336 +... 02783746 +... 02865971 +... 02868474 +... 02880474 +... 02894998 +... 02896753 +... 02904870 +... 02908433 +... 02952165 +... 02959801 +... 02983303 +... 03016480 +... 03022480 +... 03037002 +... 03099873 +... 03183246 +... 03313468 +... 03328139 +... 03350479 +... 03350487 +... 03350495 +... 03350509 +... 03350517 +... 03350525 +... 03350533 +... 03350541 +... 03350550 +... 03350568 +... 03350576 +... 03350584 +... 03350592 +... 03350606 +... 03350614 +... 03350622 +... 03350665 +... 03350673 +... 03350681 +... 03350690 +... 03350703 +... 03350789 +... 03351483 +... 03352480 +... 03353486 +... 03354482 +... 03355489 +... 03356485 +... 03357481 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not pib.is_valid(x)] +[] diff --git a/tests/test_meid.doctest b/tests/test_meid.doctest index 1cb551a2..48a84e15 100644 --- a/tests/test_meid.doctest +++ b/tests/test_meid.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.meid module. It diff --git a/tests/test_mk_edb.doctest b/tests/test_mk_edb.doctest new file mode 100644 index 00000000..2ddf4846 --- /dev/null +++ b/tests/test_mk_edb.doctest @@ -0,0 +1,177 @@ +test_mk_edb.doctest - more detailed doctests for stdnum.mk.edb module + +Copyright (C) 2022 Leandro Regueiro +Copyright (C) 2025 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.mk.edb module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.mk import edb + + +Tests for some corner cases. + +>>> edb.validate('4030000375897') +'4030000375897' +>>> edb.validate('МК 4020990116747') # Cyrillic letters +'4020990116747' +>>> edb.validate('MK4057009501106') # ASCII letters +'4057009501106' +>>> edb.validate('МК4030006603425') # Cyrillic letters +'4030006603425' +>>> edb.validate('МК4030006603425') # Cyrillic letters +'4030006603425' +>>> edb.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> edb.validate('1234567890XYZ') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> edb.validate('4030000375890') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> edb.format('4030000375897') +'4030000375897' +>>> edb.format('МК 4020990116747') # Cyrillic letters +'4020990116747' +>>> edb.format('MK4057009501106') # ASCII letters +'4057009501106' +>>> edb.format('МК4030006603425') # Cyrillic letters +'4030006603425' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 4001015504286 +... 4002012527974 +... 4002015539612 +... 4002015541625 +... 4002017550907 +... 4002979132007 +... 4002991125091 +... 4002995103351 +... 4002999142769 +... 4004010506301 +... 4004019517659 +... 4004996102912 +... 4006012508266 +... 4006999109376 +... 4007013515009 +... 4012995101109 +... 4017004148023 +... 4017012520357 +... 4017015527930 +... 4017996129718 +... 4017999130385 +... 4020010511130 +... 4020015529216 +... 4020017533580 +... 4020019538376 +... 4020991100666 +... 4021004145439 +... 4021018535892 +... 4023003112815 +... 4023003113056 +... 4023009503069 +... 4026012514780 +... 4027008504520 +... 4027015522240 +... 4027017526693 +... 4027991103694 +... 4028006151708 +... 4028008502435 +... 4028008506791 +... 4028008507070 +... 4028016528567 +... 4028017532851 +... 4028017533823 +... 4028018535986 +... 4028019537796 +... 4028999127025 +... 4028999139961 +... 4029007136199 +... 4029009505450 +... 4029999133765 +... 4030000407411 +... 4030001404580 +... 4030002438667 +... 4030004518463 +... 4030005553815 +... 4030005565759 +... 4030006601066 +... 4030007641649 +... 4030974163226 +... 4030984349182 +... 4030992158418 +... 4030993125769 +... 4030996123112 +... 4030996244823 +... 4030999431535 +... 4032017535882 +... 4032018538060 +... 4044012506696 +... 4044013508269 +... 4044017513879 +... 4054009500097 +... 4054016503417 +... 4057012518508 +... 4057013523246 +... 4057017536733 +... 4057018541765 +... 4057019547848 +... 4061018502090 +... 4064012500591 +... 4065015500653 +... 4069011500670 +... 4071016500495 +... 4075013502816 +... 4080011522414 +... 4080012525921 +... 4080015554205 +... 4080016560551 +... 4080019578567 +... 4080019584974 +... 4080019585377 +... 4082014512960 +... 4082014513702 +... 4082018521297 +... 4082019523064 +... MK 4030005534810 +... MK4030996254241 +... MK4032012519218 +... MK4057009501106 +... MK4057009502714 +... MK4080012530747 +... MK4080014548341 +... МК 4004991103546 +... МК 4020990116747 +... МК4011014511586 +... МК4027002133725 +... МК4027992109874 +... МК4030000398099 +... МК4030002456746 +... МК4030993244482 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not edb.is_valid(x)] +[] diff --git a/tests/test_mu_nid.doctest b/tests/test_mu_nid.doctest index 93f6adc6..07ac2ae7 100644 --- a/tests/test_mu_nid.doctest +++ b/tests/test_mu_nid.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.mu.nid module. It diff --git a/tests/test_mx_curp.doctest b/tests/test_mx_curp.doctest index 73eeb818..aa82baac 100644 --- a/tests/test_mx_curp.doctest +++ b/tests/test_mx_curp.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.mx.curp module. diff --git a/tests/test_mx_rfc.doctest b/tests/test_mx_rfc.doctest index 7fa5c341..bfb31748 100644 --- a/tests/test_mx_rfc.doctest +++ b/tests/test_mx_rfc.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.mx.rfc module. diff --git a/tests/test_my_nric.doctest b/tests/test_my_nric.doctest index a68a9327..277768e1 100644 --- a/tests/test_my_nric.doctest +++ b/tests/test_my_nric.doctest @@ -1,6 +1,6 @@ test_my_nric.doctest - more detailed doctests for stdnum.my.nric module -Copyright (C) 2013, 2014 Arthur de Jong +Copyright (C) 2013-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.my.nric. It @@ -52,13 +50,13 @@ datetime.date(1988, 2, 29) Get the birth place: ->>> str(nric.get_birth_place('770305-02-1234')['state']) +>>> nric.get_birth_place('770305-02-1234')['state'] 'Kedah' ->>> str(nric.get_birth_place('890131-06-1224')['state']) +>>> nric.get_birth_place('890131-06-1224')['state'] 'Pahang' ->>> str(nric.get_birth_place('810909785542')['country']).upper() +>>> nric.get_birth_place('810909785542')['country'].upper() 'SRI LANKA' ->>> str(nric.get_birth_place('880229875542')['countries']).upper() +>>> nric.get_birth_place('880229875542')['countries'].upper() 'BRITAIN, GREAT BRITAIN, IRELAND' diff --git a/tests/test_mz_nuit.doctest b/tests/test_mz_nuit.doctest new file mode 100644 index 00000000..e44bf1e7 --- /dev/null +++ b/tests/test_mz_nuit.doctest @@ -0,0 +1,143 @@ +test_mz_nuit.doctest - more detailed doctests for stdnum.mz.nuit module + +Copyright (C) 2023 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.mz.nuit module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.mz import nuit + + +Tests for some corner cases. + +>>> nuit.validate('400339910') +'400339910' +>>> nuit.validate('400 005 834') +'400005834' +>>> nuit.validate('100.033.593') +'100033593' +>>> nuit.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> nuit.validate('VV3456789') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> nuit.validate('101935626') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> nuit.format('400339910') +'400 339 910' +>>> nuit.format('100.033.593') +'100 033 593' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 400339910 +... 400 005 834 +... 500171650 +... 700152855 +... 400 005 834 +... 400027145 +... 400001391 +... 400584291 +... 103017602 +... 400872120 +... 500001615 +... 400786704 +... 500 024 240 +... 400066183 +... 500006005 +... 401 191 607 +... 400 102 961 +... 105564724 +... 500003545 +... 400787451 +... 116773767 +... 111878641 +... 154695168 +... 102889010 +... 101908372 +... 149349324 +... 400339910 +... 400509182 +... 400 006 245 +... 400778922 +... 400015546 +... 401343261 +... 401120807 +... 400 108 791 +... 400 415 870 +... 108 755 423 +... 108 755 385 +... 400007225 +... 401508317 +... 400535825 +... 400418810 +... 401129006 +... 400058172 +... 400267839 +... 500017341 +... 700074854 +... 401215298 +... 400786704 +... 400058921 +... 400238685 +... 400005516 +... 500050012 +... 400 052 786 +... 400 111 200 +... 400824037 +... 400 410 151 +... 120883275 +... 100002892 +... 118924045 +... 400157715 +... 400370028 +... 129926945 +... 400364001 +... 101002561 +... 400551847 +... 400 769 052 +... 400 120 323 +... 100.033.593 +... 105032031 +... 401430989 +... 103709776 +... 500171650 +... 400316341 +... 400509182 +... 400021260 +... 400129551 +... 400187398 +... 600000063 +... 400102961 +... 400994579 +... 400905649 +... 500003839 +... 401041877 +... 400068038 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not nuit.is_valid(x)] +[] diff --git a/tests/test_no_fodselsnummer.doctest b/tests/test_no_fodselsnummer.doctest index bca21cf8..8c93a74b 100644 --- a/tests/test_no_fodselsnummer.doctest +++ b/tests/test_no_fodselsnummer.doctest @@ -15,9 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.no.fodselsnummer @@ -91,9 +89,9 @@ InvalidComponent: The birthdate century cannot be determined Traceback (most recent call last): ... InvalidComponent: This number is an FH-number, and does not contain birth date information by design. ->>> fodselsnummer.validate('19102270846') +>>> fodselsnummer.validate('18103970861') Traceback (most recent call last): - ... + ... InvalidComponent: The birth date information is valid, but this person has not been born yet. diff --git a/tests/test_no_mva.doctest b/tests/test_no_mva.doctest index 945974f0..4d08f546 100644 --- a/tests/test_no_mva.doctest +++ b/tests/test_no_mva.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.no.mva module. It diff --git a/tests/test_nz_bankaccount.doctest b/tests/test_nz_bankaccount.doctest index e3e79551..99fa8e7c 100644 --- a/tests/test_nz_bankaccount.doctest +++ b/tests/test_nz_bankaccount.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.nz.bankaccount diff --git a/tests/test_nz_ird.doctest b/tests/test_nz_ird.doctest index aa0dff3f..ed67fc06 100644 --- a/tests/test_nz_ird.doctest +++ b/tests/test_nz_ird.doctest @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.nz.ird module. diff --git a/tests/test_pe_cui.doctest b/tests/test_pe_cui.doctest index 9ae7ddef..df4273cc 100644 --- a/tests/test_pe_cui.doctest +++ b/tests/test_pe_cui.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.pe.ruc module. It diff --git a/tests/test_pe_ruc.doctest b/tests/test_pe_ruc.doctest index 6fe6384d..3b079fc1 100644 --- a/tests/test_pe_ruc.doctest +++ b/tests/test_pe_ruc.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.pe.ruc module. It diff --git a/tests/test_pk_cnic.doctest b/tests/test_pk_cnic.doctest new file mode 100644 index 00000000..aab7d9a9 --- /dev/null +++ b/tests/test_pk_cnic.doctest @@ -0,0 +1,38 @@ +test_pk_cnic.doctest - more detailed doctests for stdnum.pk.cnic + +Copyright (C) 2022 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.pk.cnic module. + +>>> from stdnum.pk import cnic + + +>>> cnic.validate('34201-0891231-8') +'3420108912318' +>>> cnic.validate('34201-0891231-0') # invalid gender +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> cnic.validate('94201-0891231-8') # invalid province +Traceback (most recent call last): + ... +InvalidComponent: ... + +>>> cnic.get_gender('34201-0891231-8') +'F' +>>> cnic.get_gender('34201-0891231-9') +'M' diff --git a/tests/test_pl_regon.doctest b/tests/test_pl_regon.doctest index ecd4f691..511a8e60 100644 --- a/tests/test_pl_regon.doctest +++ b/tests/test_pl_regon.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.pl.regon module. It diff --git a/tests/test_pt_cc.doctest b/tests/test_pt_cc.doctest new file mode 100644 index 00000000..65e4f060 --- /dev/null +++ b/tests/test_pt_cc.doctest @@ -0,0 +1,36 @@ +test_pt_cc.doctest - more detailed doctests for stdnum.pt.cc module + +Copyright (C) 2021 Arthur de Jong + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.pt.cc module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.pt import cc + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 04521224 4 ZZ 7 +... 054546796ZY7 +... 101490801ZY0 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not cc.is_valid(x)] +[] diff --git a/tests/test_py_ruc.doctest b/tests/test_py_ruc.doctest index baa08436..e63001ba 100644 --- a/tests/test_py_ruc.doctest +++ b/tests/test_py_ruc.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.py.ruc module. It diff --git a/tests/test_ro_onrc.doctest b/tests/test_ro_onrc.doctest index 6b47a5fd..93b7da7a 100644 --- a/tests/test_ro_onrc.doctest +++ b/tests/test_ro_onrc.doctest @@ -1,6 +1,6 @@ test_ro_onrc.doctest - more detailed doctests for the stdnum.ro.onrc module -Copyright (C) 2020 Arthur de Jong +Copyright (C) 2020-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ro.onrc module. @@ -24,7 +22,7 @@ This file contains more detailed doctests for the stdnum.ro.onrc module. >>> from stdnum.exceptions import * -Test some corner cases. +Test some corner cases of the old format. >>> onrc.validate('J/52/750/2012') 'J52/750/2012' @@ -62,6 +60,40 @@ InvalidComponent: ... Traceback (most recent call last): ... InvalidComponent: ... +>>> onrc.validate('J22/1515/2007/123') # too many components +Traceback (most recent call last): + ... +InvalidFormat: ... + + +Test some corner cases of the new format. + +>>> onrc.validate('J2016012984401') +'J2016012984401' +>>> onrc.validate('J201601298440') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> onrc.validate('J1822012984405') # year too old +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> onrc.validate('J2112012984408') # year in the future +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> onrc.validate('J2016012984007') # number before 2024 with 0 county +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> onrc.validate('J2024012984994') # number from 2024 with invalid county +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> onrc.validate('J2025012984401') # number after 2024 with non-0 county +Traceback (most recent call last): + ... +InvalidComponent: ... These have been found online and should all be valid numbers. @@ -72,203 +104,143 @@ These have been found online and should all be valid numbers. ... C22/4/2018 ... C30/2/2009 ... F01 /592 /2013 +... F01 587 2023 +... F01 988 2003 ... F01/1477/2011 -... F04/876/2004 ... F05/696/2006 -... F06/340/2011 -... F07/176/2010 ... F07/477/2003 ... F08/1095/2005 -... F10/841/2012 -... F11/78/2012 ... F12/617/2011 ... F13/1917/2005 ... F14/217/2013 -... F14/218/2016 -... F18/1032/2011 ... F20/491/2013 -... F30/98/2008 ... F31/786/2011 ... F32/639/2013 ... F36/64/2008 -... F37/832/2013 -... F40/682/2004 ... F5/1055/2013 ... F5/2659/2013 ... F5/550/2012 -... F5/678/2013 ... F6/496/2015 ... F8/1302/2013 ... F8/672/2012 ... J 01/585/2002 ... J 40/1323/2005 -... J01/173/2004 ... J01/568/2015 ... J02/1253/2008 ... J02/143/2011 -... J02/169/01.02.2006 ... J02/238/2012 ... J02/310/2004 -... J03/1336/2007 -... J03/179/2004 -... J03/2299/1992 ... J03/442/2002 -... J03/630/2002 -... J03/803/2009 ... J03/920/2002 ... J04/368/2006 -... J04/822/1994 ... J05/1117/2004 -... J05/1464/2011 ... J05/1729/09.09.1991 -... J05/256/2010 ... J05/5114/1994 ... J05/582/2011 -... J06/1282/1994 ... J06/307/2009 -... J06/330/2003 ... J06/52/2001 -... J06/837/2008 +... J07 4 2024 ... J07/147/2001 ... J07/208/1998 -... J08/1233/2005 -... J08/1617/1997 ... J08/1716/1997 -... J08/215/27.02.1998 ... J08/2679/2008 ... J08/2720/2007 ... J08/545/2001 -... J08/61/2010 -... J08/68/2003 -... J08/926/2008 -... J09/2118/1994 +... J09 49 2023 +... J09 87 2024 ... J1/384/13.05.2015 -... J1/398/2005 -... J1/499/2012 -... J1/628/2016 ... J10/460/2012 -... J12/1103/2003 -... J12/1366/2003 ... J12/1701/16.10.1996 ... J12/1811/2002 -... J12/1816/2007 -... J12/1932/1993 ... J12/2322/2002 ... J12/2553/1992 ... J12/3388/2016 -... J12/3828/16.06.2017 ... J12/4365/2006 ... J12/487/2012 -... J12/573/2010 ... J12/595/1991 ... J12/633/2012 ... J12/850/2014 ... J13/197/2012 ... J13/2949/1991 -... J13/529/2006 ... J13/60/2005 ... J13/674/2016 -... J15/1279/1993 -... J15/680/2005 -... J16/1148/2005 -... J16/1930/2013 -... J16/2036/2011 ... J17/1241/1992 -... J17/2697/1992 -... J17/861/2012 ... J18/583/2015 ... J18/877/2006 -... J19/230/2007 -... J19/55/2002 ... J20/2034/1993 -... J21/512/2016 ... J21/565/1992 -... J22/1249/2012 -... J22/1774/2008 -... J22/3673/1994 ... J22/874/1996 ... J22/930/2016 ... J23/134/27.01.2006 ... J23/1657/14.06.2012 -... J23/461/2009 ... J23/4802/2017 ... J23/864/2017 ... J24/1082/2015 -... J24/246/2005 ... J24/908/2006 ... J26/1077/2008 -... J29/264/2014 ... J30/428/1993 -... J30/477/2014 -... J30/482/2014 ... J30/722/08.08.2016 ... J30/734/2014 ... J30/855/1993 -... J30/99/2009 -... J31 / 248 / 1994 ... J32/2241/1994 -... J32/331/2011 ... J32/631/2013 -... J33/277/2011 -... J33/451/2012 ... J35/1056/2008 -... J35/48/2013 -... J35/625/2003 ... J36/25/2001 ... J36/284/2017 -... J36/369/2015 ... J36/637/2018 -... J36/691/2008 ... J37/384/2009 -... J38/163/23.02.2006 ... J39 /771 /2005 +... J40 14850 2021 +... J40 1546 2018 +... J40 3509 2020 +... J40 4214 2024 +... J40 4834 2000 +... J40 5302 2020 +... J40 8068 2024 +... J40 8364 2024 +... J40 9214 2024 ... J40/10944/2006 -... J40/11566/2011 ... J40/11591/2003 ... J40/11591/2009 ... J40/1293/23.10.2014 -... J40/13920/2003 ... J40/1472/1992 -... J40/1498/2010 -... J40/1667/2010 ... J40/17202/2006 ... J40/19473/2006 -... J40/19754/2007 -... J40/20281/2004 -... J40/23948/14.12.1994 -... J40/24874/1994 -... J40/2810/2017 -... J40/2867/2004 -... J40/3758/2008 ... J40/3905/30.03.2015 ... J40/4206/2008 -... J40/4463/2008 ... J40/4502/2011 ... J40/467/1998 ... J40/5139/1998 -... J40/7613/2003 ... J40/7888/1999 -... J40/8005/1995 -... J40/8577/2006 ... J40/8633/2013 -... J40/8910/2007 -... J40/8998/2010 -... J40/9712/2008 ... J5/1243/2016 ... J5/2916/03.09.1993 ... J51/159/2016 ... J51/229/2011 -... J51/74/2009 -... J52/128/2014 ... J52/474/1994 -... J52/60/2004 -... J6/974/2016 -... J7/2/2005 ... j05/1455/2012 ... j30/61/2010 ... j39/151/2019 ... j40/3674/2002 ... +... C2005000007045 +... C2005000011220 +... C2009000002022 +... J1992002621040 +... J1993001036400 +... J1994000536225 +... J2007007766403 +... J2012000750528 +... J2016012984401 +... J2021016333409 +... J2024012585407 +... J2024030812006 +... J2024035703000 +... J2024044457006 +... J2025007112004 +... J2025066599008 +... J2025085871002 +... ... ''' >>> [x for x in numbers.splitlines() if x and not onrc.is_valid(x)] [] diff --git a/tests/test_robustness.doctest b/tests/test_robustness.doctest index 9250bc7a..cb0fb5cd 100644 --- a/tests/test_robustness.doctest +++ b/tests/test_robustness.doctest @@ -1,6 +1,6 @@ test_robustness.doctest - test is_valid() functions to not break -Copyright (C) 2011-2019 Arthur de Jong +Copyright (C) 2011-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains some tests for modules in the stdnum package to @@ -23,7 +21,7 @@ check whether all provided is_valid() functions can handle clearly invalid junk. >>> testvalues = ( -... None, '*&^%$', '', 0, False, object(), 'Z', 'QQ', '3', '€', u'€', +... None, '*&^%$', '', 0, False, object(), 'Z', 'QQ', '3', '€', '€'.encode('utf-8'), ... '😴', '¥', '3²', 'ⅷ', '⑱', '᭓', b'\xc2\xb2'.decode('utf-8')) >>> from stdnum.util import get_number_modules diff --git a/tests/test_rs_pib.doctest b/tests/test_rs_pib.doctest index 80135c4c..44b3bb10 100644 --- a/tests/test_rs_pib.doctest +++ b/tests/test_rs_pib.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.rs.pib module. diff --git a/tests/test_ru_inn.doctest b/tests/test_ru_inn.doctest index 86ac88e7..57aa0ff8 100644 --- a/tests/test_ru_inn.doctest +++ b/tests/test_ru_inn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ru.inn module. It diff --git a/tests/test_ru_ogrn.doctest b/tests/test_ru_ogrn.doctest new file mode 100644 index 00000000..c19a973f --- /dev/null +++ b/tests/test_ru_ogrn.doctest @@ -0,0 +1,76 @@ +test_ru_ogrn.doctest - more detailed doctests for the stdnum.ru.ogrn module + +Copyright (C) 2024 Ivan Stavropoltsev + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.ru.ogrn module. + +These tests validate the format, normalisation, and validity of various +OGRN numbers, ensuring they conform to expected behaviour. + +>>> from stdnum.ru import ogrn +>>> from stdnum.exceptions import * + + +Checks of the 13 digit ОГРН, OGRN + +>>> ogrn.validate('1022500001325') +'1022500001325' +>>> ogrn.validate('10277395526422') # 14 digits +Traceback (most recent call last): + ... +InvalidLength: ... +>>> ogrn.validate('0022500001325') # starts with 0 +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ogrn.validate('102250000') # too short +Traceback (most recent call last): + ... +InvalidLength: ... +>>> ogrn.validate('1022500001328') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +Checks of the 13 digit ОГРНИП, OGRNIP + +>>> ogrn.validate('985768585948944') # OGRNIP with invalid start digit +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ogrn.validate('385768585948948') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +This is a list of OGRNs that should all be valid numbers: + +>>> valid_numbers = ''' +... +... 1022300000502 +... 1022300001811 +... 1022400007508 +... 1022500000566 +... 1022600000092 +... 1027100000311 +... 1027739552642 +... +... ''' +>>> [x for x in valid_numbers.splitlines() if x and not ogrn.is_valid(x)] +[] diff --git a/tests/test_se_personnummer.doctest b/tests/test_se_personnummer.doctest index 6c493220..12f70339 100644 --- a/tests/test_se_personnummer.doctest +++ b/tests/test_se_personnummer.doctest @@ -14,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.se.personnummer diff --git a/tests/test_se_postnummer.doctest b/tests/test_se_postnummer.doctest new file mode 100644 index 00000000..959dd815 --- /dev/null +++ b/tests/test_se_postnummer.doctest @@ -0,0 +1,73 @@ +test_se_postnummer.doctest - more detailed doctests for stdnum.se.postnummer module + +Copyright (C) 2021 Michele Ciccozzi + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.se.postnummer +module. It tries to cover more corner cases and detailed functionality that +is not really useful as module documentation. + + +>>> from stdnum.se import postnummer + + +Test for various formats and corner cases. + +>>> postnummer.is_valid('114 18') +True +>>> postnummer.is_valid('SE-114 18') +True +>>> postnummer.is_valid('114018') +False +>>> postnummer.is_valid('01418') +False + +>>> postnummer.validate('114 18') +'11418' +>>> postnummer.validate('SE-114 18') +'11418' +>>> postnummer.validate('11418') +'11418' + +>>> postnummer.format('114 18') +'114 18' +>>> postnummer.format('SE-114 18') +'114 18' +>>> postnummer.format('11418') +'114 18' + + +Invalid values are rejected. + + +>>> postnummer.validate('114180') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> postnummer.validate('1 14 18') +'11418' +>>> postnummer.validate('a' * 10) +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> postnummer.validate('a' * 11) +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> postnummer.validate('01234') +Traceback (most recent call last): + ... +InvalidFormat: ... diff --git a/tests/test_sg_uen.doctest b/tests/test_sg_uen.doctest index caa2d0a6..b61c7d26 100644 --- a/tests/test_sg_uen.doctest +++ b/tests/test_sg_uen.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.sg.uen module. It diff --git a/tests/test_si_emso.doctest b/tests/test_si_emso.doctest new file mode 100644 index 00000000..65986f91 --- /dev/null +++ b/tests/test_si_emso.doctest @@ -0,0 +1,74 @@ +test_si_emso.doctest - more detailed doctests for the stdnum.si.emso module + +Copyright (C) 2022 Blaž Bregar + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.si.emso. It +tries to validate a number of numbers that have been found online. + +>>> from stdnum.si import emso +>>> from stdnum.exceptions import * + + +Tests for some corner cases. + +>>> emso.validate('0101006500006') +'0101006500006' +>>> emso.format(' 0101006 50 000 6 ') +'0101006500006' +>>> emso.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> emso.validate('3202006500008') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> emso.validate('0101006500007') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> emso.validate('010100650A007') +Traceback (most recent call last): + ... +InvalidFormat: ... + + +Tests helper functions. + +>>> emso.get_gender('0101006500006') +'M' +>>> emso.get_gender('2902932505526') +'F' +>>> emso.get_region('0101006500006') +'50' +>>> emso.get_birth_date('0101006500006') +datetime.date(2006, 1, 1) + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 0101006500006 +... 1211981500126 +... 1508995500237 +... 2001939010010 +... 2902932505526 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not emso.is_valid(x)] +[] diff --git a/tests/test_si_maticna.doctest b/tests/test_si_maticna.doctest new file mode 100644 index 00000000..ccbf9e0d --- /dev/null +++ b/tests/test_si_maticna.doctest @@ -0,0 +1,121 @@ +test_si_maticna.doctest - more detailed doctests for the stdnum.si.maticna module + +Copyright (C) 2023 Blaž Bregar + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.si.emso. It +tries to validate a number of numbers that have been found online. + +>>> from stdnum.si import maticna +>>> from stdnum.exceptions import * + + +Tests for some corner cases. + +>>> maticna.validate('9331310000') +'9331310' +>>> maticna.validate('9331310255') +'9331310255' +>>> maticna.validate('9331310 000') +'9331310' +>>> maticna.validate('9331310') +'9331310' +>>> maticna.validate('9331310255') +'9331310255' +>>> maticna.validate('8982279A00') +'8982279A00' +>>> maticna.validate('8982279J00') +'8982279J00' +>>> maticna.validate('8982279z00') +'8982279Z00' +>>> maticna.validate('8982279f00') +'8982279F00' +>>> maticna.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> maticna.validate('9331320000') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> maticna.validate('933A310100') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> maticna.validate('93313100A0') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> maticna.validate('9331310AA0') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> maticna.validate('5491710') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> maticna.validate('9331310$$$') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> maticna.validate('9015310') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> maticna.validate('2961970') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> maticna.validate('5015170') +Traceback (most recent call last): + ... +InvalidChecksum: ... +>>> maticna.validate('3919110') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 1876031010 +... 3490360000 +... 3501264000 +... 5147174000 +... 5263565019 +... 5300231000 +... 5300231136 +... 5300231150 +... 5464943000 +... 5464943003 +... 5464943608 +... 5491711 +... 5860571000 +... 5860571084 +... 5860571255 +... 5860580000 +... 5860580150 +... 7282664000 +... 8071993000 +... 8339414000 +... 8982279000 +... 9331310 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not maticna.is_valid(x)] +[] diff --git a/tests/test_sn_ninea.doctest b/tests/test_sn_ninea.doctest new file mode 100644 index 00000000..659fffa0 --- /dev/null +++ b/tests/test_sn_ninea.doctest @@ -0,0 +1,183 @@ +test_sn_ninea.doctest - more detailed doctests for stdnum.sn.ninea module + +Copyright (C) 2023 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.sn.ninea module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.sn import ninea + + +Tests for some corner cases. + +>>> ninea.validate('3067221') +'3067221' +>>> ninea.validate('30672212G2') +'30672212G2' +>>> ninea.validate('306 7221') +'3067221' +>>> ninea.validate('3067221 2G2') +'30672212G2' +>>> ninea.validate('3067221/2/G/2') +'30672212G2' +>>> ninea.validate('3067221-2G2') +'30672212G2' +>>> ninea.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> ninea.validate('VV34567') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> ninea.validate('VV345670A0') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> ninea.validate('12345679A0') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ninea.validate('12345670I0') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ninea.validate('12345670AV') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> ninea.format('306 7221') +'3067221' +>>> ninea.format('30672212G2') +'3067221 2G2' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 0,017,766 2G3 +... 0,027,476 2G3 +... 0,059 990 2G3 +... 0,513,475 2C1 +... 00140012G3 +... 0014051-2G3 +... 0015041 +... 00153142G3 +... 00154212G3 +... 0019366 +... 0020884 2 G 3 +... 002420983 2G3 +... 002502343 +... 004237633 2B2 +... 004343430 +... 0044440722V1 +... 0045799442C2 +... 0046 00096 2S9 +... 004641363 +... 004912269 +... 005,830,866 1V1 +... 005023081 +... 005046174 +... 0051126442L1 +... 005117355 +... 005131305 2G3 +... 005216371 2V3 +... 005241550 2C2 +... 0053655402R2 +... 005371026 +... 005623998 +... 00569042P2 +... 005721809 +... 005754339 2V2 +... 005844700 +... 00605 33 92 +... 006208434 +... 006269436 +... 006295879 +... 0063150572G2 +... 006325741 +... 006373295/0A9 +... 006416681 +... 00661012S3 +... 006715314 2G3 +... 006777463 +... 006900387 +... 006946034 +... 007039292 +... 007057947 +... 00722992 G 3 +... 00722992G3 +... 007266126 +... 007307748 1V1 +... 007389100 +... 007660740 +... 007912662 +... 007992482 2A3 +... 008086242 1E1 +... 008135114 +... 00830 48 0 C 9 +... 008517560 +... 008895586 +... 008895677 +... 0108531 2G3 +... 0120 212 +... 0149642 +... 0185844 2 R 2 +... 0283 408-2C2 +... 0288846 2G3 +... 0316093 +... 0316390 +... 0332891 +... 0366 709 2S2 +... 0404913 2B1 +... 1928863 2B2 +... 19370542G2 +... 2,838,516 2B3 +... 2079376/2/G/3 +... 20839132 S 3 +... 2139378 2V2 +... 21409612D1 +... 2160472-2G3 +... 21948852B9 +... 22486742 S 3 +... 24312110V9 +... 25437852G3 +... 255 44 772 S 3 +... 25833512R2 +... 2599770 2 B 2 +... 26080342R2 +... 26132492D6 +... 26581702G2 +... 270 773 72 S2 +... 2929406 0G0 +... 30092572G3 +... 30672212G2 +... 4069367 2G3 +... 41130152C2 +... 48522250G0 +... 49615470C0 +... 5,729,803 2V2 +... 50 63 699 2E1 +... 5435 468 0G0 +... 61523762A2 +... 81329702S1 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not ninea.is_valid(x)] +[] diff --git a/tests/test_sv_nit.doctest b/tests/test_sv_nit.doctest index 28161116..0d60e366 100644 --- a/tests/test_sv_nit.doctest +++ b/tests/test_sv_nit.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.sv.nit module. It diff --git a/tests/test_th_moa.doctest b/tests/test_th_moa.doctest new file mode 100644 index 00000000..398758fd --- /dev/null +++ b/tests/test_th_moa.doctest @@ -0,0 +1,81 @@ +test_th_moa.doctest - more detailed doctests for stdnum.th.moa module + +Copyright (C) 2021 Piruin Panichphol + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.th.moa module. + +>>> from stdnum.th import moa + + +>>> moa.validate('0-99-4-000') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> moa.validate('0-99-4-00A-61772-X') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> moa.validate('3-99-4-000-61772-1') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> moa.validate('0-99-4-000-61772-8') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +These have been found online and should all be valid numbers. +https://vsreg.rd.go.th/VATINFOWSWeb/jsp/VATInfoWSServlet? + +>>> numbers = ''' +... +... 0 10 5 544 04660 2 +... 0 10 5 559 13643 2 +... 0 10 5 560 07360 1 +... 0 1055 43000 15 3 +... 0 12 5 551 01213 1 +... 0 19 5 554 00071 1 +... 0 22 5 550 00051 1 +... 0-10-3-541-01737-5 +... 0-10-5-518-00189-3 +... 0-10-5-539-13697-6 +... 0-10-5-554-04636-2 +... 0-7035-36000-78-2 +... 0-99-2-002-50289-9 +... 01055 6302 15 4 7 +... 0105530041751 +... 0105542067556 +... 0105543014758 +... 0105549020393 +... 0105554084159 +... 0105556000751 +... 0105556142792 +... 0115555008901 +... 0115556023301 +... 0245541000066 +... 05 0 55440 03519 +... 0655554000295 +... 0713551000259 +... 0745554003056 +... 0992001001446 +... 0992001158728 +... 0992001526719 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not moa.is_valid(x)] +[] diff --git a/tests/test_th_pin.doctest b/tests/test_th_pin.doctest new file mode 100644 index 00000000..df250698 --- /dev/null +++ b/tests/test_th_pin.doctest @@ -0,0 +1,94 @@ +test_th_pin.doctest - more detailed doctests for stdnum.th.pin module + +Copyright (C) 2021 Piruin Panichphol + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.th.pin module. + +>>> from stdnum.th import pin + + +>>> pin.validate('1-2345-45678-78-11') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> pin.validate('1-2345-45678-78-X') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> pin.validate('0-2345-45678-78-1') +Traceback (most recent call last): + ... +InvalidComponent: ... +>>> pin.validate('9-2345-45678-78-1') +Traceback (most recent call last): + ... +InvalidComponent: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 1 1101 00152 64 1 +... 1 1996 00076 67 4 +... 1 6299 00299 92 5 +... 1 7399 00504 82 0 +... 1-1002-00439-84-4 +... 1100900359657 +... 1311100161266 +... 1350500075722 +... 1459900065632 +... 1670800079267 +... 2 3107 00002 24 7 +... 3 451 000 50 5414 +... 3 3415 01 082 5 68 +... 3 91 05 00 3 92 03 6 +... 3 5099 00736 90 7 +... 3 6710 00129 65 8 +... 3 7401 00523 48 8 +... 3-1001-00818-95-5 +... 3-1103-00283-26-5 +... 3-1898-00009-58-6 +... 3-3207-00476-55-7 +... 3-5207-00211-03-9 +... 3-6599-00381-54-7 +... 3-7005-00702-40-1 +... 3-9099-00588-10-6 +... 3100400648338 +... 3101900254691 +... 3102400746269 +... 33508 0030 2577 +... 3400100399577 +... 3540200423193 +... 3569900168313 +... 3600500113229 +... 3629900162691 +... 3709800221741 +... 3810100438722 +... 4 6205000 0482 7 +... 4-6607-00003-53-1 +... 4220100005137 +... 5 3013 00038 01 1 +... 5 5805 90000 01 9 +... 5100200233319 +... 5260399000878 +... 5671000003006 +... 5900599008311 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not pin.is_valid(x)] +[] diff --git a/tests/test_th_tin.doctest b/tests/test_th_tin.doctest new file mode 100644 index 00000000..cf743b50 --- /dev/null +++ b/tests/test_th_tin.doctest @@ -0,0 +1,91 @@ +test_th_tin.doctest - more detailed doctests for stdnum.th.tin module + +Copyright (C) 2021 Piruin Panichphol + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.th.tin module. + +>>> from stdnum.th import tin + + +>>> tin.validate('1-2345-45678-78-11') # InvalidLength +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> tin.validate('1-2345-45678-78-X') # InvalidFormat +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> tin.validate('0-2345-45678-78-1') # InvalidChecksum +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> tin.validate('9-2345-45678-78-1') # InvalidComponent +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> tin.format('0234545678783') +'0-23-4-545-67878-3' +>>> tin.format('0234545678781') # Not format invalid number +'0234545678781' +>>> tin.tin_type('0234545678783') +'moa' +>>> tin.tin_type('0234545678780') # Invalid number return None + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 0 13 5 559 01262 8 +... 0 20 5 560 00584 1 +... 0 55 3 561 00041 5 +... 0 74 5 561 00276 1 +... 0-11-5-561-01623-6 +... 0-2055-61011-25-0 +... 0-2155-51001-61-8 +... 0-3035-50001-80-8 +... 0-33-3-558-00060-6 +... 0-47-5-562-00062-4 +... 0-58-3-558-00012-4 +... 0-73-5-561-00588-3 +... 0-7355-56003-30-4 +... 0105552029681 +... 0105559074461 +... 0343559002742 +... 0403552000484 +... 0835561014091 +... 1 1020 01865 33 1 +... 1 3501 00018 05 5 +... 1-40-9-900-07433-0 +... 1-4701-00062-82-7 +... 1-56-0-300-01581-3 +... 1-6707-00016-13-1 +... 1-8399-00112-47-5 +... 1129900166199 +... 1509900258294 +... 1939990003289 +... 2-30-9-900-00391-1 +... 3 2001 00052 57 9 +... 3 5099 01429 67 6 +... 3-10-1-201-21325-1 +... 3-1907-00075-74-1 +... 5-49-0-200-01960-8 +... 8 4799 88011 44 1 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not tin.is_valid(x)] +[] diff --git a/tests/test_tn_mf.doctest b/tests/test_tn_mf.doctest new file mode 100644 index 00000000..d19ba8e7 --- /dev/null +++ b/tests/test_tn_mf.doctest @@ -0,0 +1,252 @@ +test_tn_mf.doctest - more detailed doctests for stdnum.tn.mf module + +Copyright (C) 2022 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.tn.mf module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.tn import mf + + +Tests for some corner cases. + +>>> mf.validate('1182431M/A/M/000') +'1182431MAM000' +>>> mf.validate('1234567/M/A/E/001') +'1234567MAE001' +>>> mf.validate('000 123 LAM 000') +'0000123LAM000' +>>> mf.validate('1282182 / W') +'1282182W' +>>> mf.validate('121/J') +'0000121J' +>>> mf.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> mf.validate('000/M/A/1222334L') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> mf.validate('992465Y/B/M') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> mf.validate('X123') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> mf.validate('Z1234567') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> mf.validate('1234567/M/A/M/0Z0') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> mf.validate('1219773G/M/A/000') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> mf.validate('1219773U') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> mf.validate('1234567/M/X/M/000') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> mf.validate('1234567/M/A/X/000') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> mf.validate('1234567/M/A/M/001') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> mf.format('1282182 / W') +'1282182/W' +>>> mf.format('121J') +'0000121/J' +>>> mf.format('1496298 T P N 000') +'1496298/T/P/N/000' +>>> mf.format('1060559 C.D.M 000') +'1060559/C/D/M/000' + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 1182431M/A/M/000 +... 1182431M/AM/000 +... 1452730 /Z/N/M/000 +... 000 123 LAM 000 +... 1496298 T P N 000 +... 892314B/N/C/000 +... 1282182 / W +... 1347867/B +... 121/J +... 1496298/T +... 868024/D/A/M/000 +... 1544502 Y NP000 +... 015094B/A/M/000 +... 1631526V/A/M/000 +... 1058891 R/A/M/000 +... 1347663 QAM000 +... 333486L/A/P/000 +... 001237/A/P/M/000 +... 0001629N +... 0001629N/P/M/000 +... 510797/NNN000 +... 1393531/N +... 1219748F/A/M/000 +... 1221825X/N/M/000 +... 1222316/J/A/M/000 +... 1222564/Z +... 1222675/F/P/M/000 +... 1222516Q/A/M/000 +... 1221532L/A/M/000 +... 1222519 T +... 1221955/G +... 1222622R/N/M/000 +... 122638/A +... 1222750/Z +... 1222775/J +... 1222014/Y +... 1222529 W/N/M/000 +... 1212130A/A/M/000 +... 1221661 V/N/M/000 +... 1220737T +... 1222623/S/A/M/000 +... 333640H/N/M/000 +... 1216853S/A/M/000 +... 1222690ENM000 +... 1222695K +... 1221925/A +... 1222795/N +... 1221189/R +... 1222759/J +... 1222959/Q +... 1193809/MNM/000 +... 1217286M/A/M/000 +... 1222572/Z/N/M/000 +... 0022822CAM000 +... 038244W AM000 +... 32962V/A/M/000 +... 1013401Q/A/M/000 +... 496781 S/A/M/000 +... 341544APM000 +... 015077A/AM/000 +... 900217/A/A/M/000 +... 5378F/ P/M/000 +... 0817422H/A/M/000 +... 1061204 F +... 0082736 N/A/M000 +... 000271Y +... 32819N +... 011855C/N/M/000 +... 0036180N +... 820206/B +... 036826E/A/M/000 +... 036826E/A/M/000 +... 580238Y +... 8403B +... 0031064N +... 00218S/A/M/000 +... 510283 Q +... 437463C +... 0433716M +... 911534W A M 000 +... 1037696A/A/M/000 +... 1167652KAM000 +... 857416G/A/M/000 +... 0429364D +... 0449589F +... 0997054 D/A/M/000 +... 1 069715/K/A/M/000 +... 6919S/A/M/000 +... 889436LBM000 +... 1112912M +... 1027837 P/A/M/000 +... 1078963B/P/M/000 +... 0996708Q +... 0024410T +... 0984097X +... 785872E +... 1010093 L +... 1006826W +... 979446PAM000 +... 918467HNM000 +... 1165399H +... 1068309V +... 1072689B +... 04176S/A/M000 +... 971251V +... 1168403Y +... 1082949/H/A/M/000 +... 1170015/KA/M/000 +... 1028282 E/A/M/000 +... 791970T +... 0504279G/A/M/000 +... 1076771L +... 1060559 C.D.M 000 +... 805956WNM000 +... 635441A +... 741290Y/P/M/000 +... 850424B/A/M/000 +... 1085044LAM000 +... 1023814 P +... 1014613F/A/M/000 +... 1078662Q/A/M/000 +... 0836646/E/A/M/000 +... 807707/N +... 571355/B/A/M/000 +... 1204692 E +... 0004842E/P/M/000 +... 701849V/A/M/000 +... 34445L/A/M/000 +... 1132361N-A-M-000 +... 806473K/B/M 000 +... 1179412/J/A/M/000 +... 1107107FAM000 +... 1158905L +... 1186255G +... 1165585/H +... 1110202D +... 1116453/Y +... 00110F/P/M/000 +... 723832EAM000 +... 0505492P/N/N/000 +... 182910Q/A/P/000 +... 005234P/A/M/000 +... 1051770C/A/M/000 +... 022667 K +... 01629N +... 1121936/x +... 1116514T/A/M/000 +... 023302 LAM 000 +... 009021/V/P/M/000 +... 036507RAM000 +... 8423 F/A/M/000 +... 819586M/A/M/000 +... 594166X/P/M/000 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not mf.is_valid(x)] +[] diff --git a/tests/test_tr_tckimlik.doctest b/tests/test_tr_tckimlik.doctest index c3cb4a2a..55b86074 100644 --- a/tests/test_tr_tckimlik.doctest +++ b/tests/test_tr_tckimlik.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.tr.tckimlik diff --git a/tests/test_tr_vkn.doctest b/tests/test_tr_vkn.doctest index 99427ddf..f576e9af 100644 --- a/tests/test_tr_vkn.doctest +++ b/tests/test_tr_vkn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.tr.vkn module. diff --git a/tests/test_tw_ubn.doctest b/tests/test_tw_ubn.doctest index 127f636d..06a49742 100644 --- a/tests/test_tw_ubn.doctest +++ b/tests/test_tw_ubn.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.tw.ubn module. It diff --git a/tests/test_ua_edrpou.doctest b/tests/test_ua_edrpou.doctest new file mode 100644 index 00000000..ce97c92e --- /dev/null +++ b/tests/test_ua_edrpou.doctest @@ -0,0 +1,309 @@ +test_ua_edrpou.doctest - more detailed doctests for stdnum.ua.edrpou module + +Copyright (C) 2020 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.ua.edrpou module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.ua import edrpou + + +Tests for some corner cases. + +>>> edrpou.validate('32855961') +'32855961' +>>> edrpou.format('32855961') +'32855961' +>>> edrpou.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> edrpou.validate('VV855961') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> edrpou.validate('32855968') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 00022438 +... 00022496 +... 00022504 +... 00022585 +... 00022651 +... 00022680 +... 00032945 +... 00034022 +... 00034051 +... 00100227 +... 00130694 +... 00130725 +... 00130926 +... 00131564 +... 00131587 +... 00131819 +... 00131954 +... 00132003 +... 00217857 +... 00231610 +... 00260652 +... 00282406 +... 00282435 +... 00290280 +... 00308778 +... 00372109 +... 00443074 +... 00480247 +... 00493706 +... 00497006 +... 00659101 +... 00692009 +... 00740599 +... 00849184 +... 01056273 +... 01072609 +... 01192220 +... 01415559 +... 01497439 +... 01566117 +... 01566330 +... 01881876 +... 01984613 +... 01986380 +... 01991116 +... 01996272 +... 02010669 +... 02010758 +... 02010830 +... 02011261 +... 02066769 +... 02070766 +... 02070812 +... 02070950 +... 02070987 +... 02125102 +... 02125237 +... 02125266 +... 02136554 +... 02139133 +... 02139771 +... 02142448 +... 02145010 +... 02147606 +... 02224548 +... 02363072 +... 02426097 +... 02573817 +... 02909938 +... 02909996 +... 02910031 +... 02910060 +... 02910108 +... 03114017 +... 03293304 +... 03338030 +... 03346822 +... 03355353 +... 03356128 +... 03356571 +... 03359658 +... 03361661 +... 03361678 +... 03361780 +... 03491079 +... 03491085 +... 03491180 +... 03491300 +... 03491406 +... 03491435 +... 03499945 +... 04013755 +... 04014246 +... 04059243 +... 04350665 +... 04375151 +... 04824652 +... 05379487 +... 05387179 +... 05396638 +... 05460344 +... 05465672 +... 05489555 +... 05786100 +... 07904041 +... 08027576 +... 08183359 +... 08563808 +... 08564794 +... 08571363 +... 08803543 +... 13857564 +... 13915014 +... 13956473 +... 13986712 +... 14038383 +... 14282338 +... 14282829 +... 14307481 +... 14307529 +... 14310299 +... 14352406 +... 19350062 +... 20001303 +... 20001585 +... 20001591 +... 20001823 +... 20003749 +... 20022334 +... 20077720 +... 20442705 +... 20488297 +... 20551088 +... 21045573 +... 21705897 +... 21726250 +... 22518134 +... 22530614 +... 22800735 +... 22815333 +... 23226362 +... 23246880 +... 23293513 +... 23505151 +... 23541342 +... 23935584 +... 24283333 +... 24976272 +... 24978555 +... 25042882 +... 25083040 +... 25836018 +... 26112972 +... 26255795 +... 26510514 +... 26615223 +... 30327425 +... 30638956 +... 30674235 +... 30702701 +... 30998764 +... 31394728 +... 31584378 +... 31725604 +... 31850889 +... 31867274 +... 32000106 +... 32161160 +... 32277963 +... 32355213 +... 32359108 +... 32523934 +... 32610639 +... 32737851 +... 32855961 +... 33124015 +... 33499803 +... 34201058 +... 34275671 +... 34334305 +... 34827358 +... 34837504 +... 34868595 +... 35264255 +... 35622956 +... 35623077 +... 36041214 +... 36177661 +... 36297353 +... 36383349 +... 36521731 +... 36598008 +... 37107050 +... 37181129 +... 37199618 +... 37324614 +... 37451388 +... 37508470 +... 37533381 +... 37567646 +... 37609984 +... 37819430 +... 37951998 +... 37958419 +... 37988155 +... 38004897 +... 38066005 +... 38149966 +... 38168926 +... 38203737 +... 38243641 +... 38337116 +... 38516938 +... 38572374 +... 38775688 +... 39034697 +... 39292197 +... 39308149 +... 39393260 +... 39434500 +... 39592941 +... 39736985 +... 39738364 +... 39816845 +... 39896543 +... 40046124 +... 40081200 +... 40081221 +... 40081237 +... 40108625 +... 40108866 +... 40109173 +... 40599600 +... 41399586 +... 41436842 +... 41475043 +... 41617928 +... 41761770 +... 41800368 +... 41810109 +... 42258617 +... 42262749 +... 42309535 +... 42485471 +... 42588390 +... 42598807 +... 43178370 +... 43328020 +... 43476227 +... 43518172 +... 43529818 +... 43573920 +... 43586656 +... 43618792 +... 43629317 +... 43808820 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not edrpou.is_valid(x)] +[] diff --git a/tests/test_ua_rntrc.doctest b/tests/test_ua_rntrc.doctest new file mode 100644 index 00000000..57ce59bd --- /dev/null +++ b/tests/test_ua_rntrc.doctest @@ -0,0 +1,150 @@ +test_ua_rntrc.doctest - more detailed doctests for stdnum.ua.rntrc module + +Copyright (C) 2020 Leandro Regueiro + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, see . + + +This file contains more detailed doctests for the stdnum.ua.rntrc module. It +tries to test more corner cases and detailed functionality that is not really +useful as module documentation. + +>>> from stdnum.ua import rntrc + + +Tests for some corner cases. + +>>> rntrc.validate('1759013776') +'1759013776' +>>> rntrc.format(' 25 30 41 40 71 ') +'2530414071' +>>> rntrc.validate('12345') +Traceback (most recent call last): + ... +InvalidLength: ... +>>> rntrc.validate('VV59013776') +Traceback (most recent call last): + ... +InvalidFormat: ... +>>> rntrc.validate('1759013770') +Traceback (most recent call last): + ... +InvalidChecksum: ... + + +These have been found online and should all be valid numbers. + +>>> numbers = ''' +... +... 1759013776 +... 1941106083 +... 2019304211 +... 2029212006 +... 2050823598 +... 2057604994 +... 2062412328 +... 2071907598 +... 2141715084 +... 2162316775 +... 2166209127 +... 2182917600 +... 2199602758 +... 2200300272 +... 2215911880 +... 2221604457 +... 2223820028 +... 2278520212 +... 2288012353 +... 2323000531 +... 2340714291 +... 2355207831 +... 2358623466 +... 2360711297 +... 2360803036 +... 2427616997 +... 2431516896 +... 2432915368 +... 2446410726 +... 2451902259 +... 2464921030 +... 2467920538 +... 2468920144 +... 2491109768 +... 2492601451 +... 2492810092 +... 2495912135 +... 25 30 41 40 71 +... 2507300273 +... 2511313590 +... 2511615015 +... 2514219625 +... 2517305837 +... 2518609656 +... 2521601845 +... 2522615927 +... 2525808071 +... 2526400856 +... 2531310373 +... 2537610987 +... 2548903136 +... 2595704439 +... 2618103132 +... 2656501477 +... 2661314935 +... 2668604464 +... 2687602513 +... 2715212635 +... 2722600497 +... 2725020233 +... 2735321158 +... 2756824294 +... 2756915742 +... 2767507288 +... 2777606331 +... 2796607557 +... 2803909085 +... 2849507907 +... 2862500663 +... 2881507890 +... 2886719190 +... 2940813715 +... 2976609691 +... 2979904457 +... 2981410717 +... 2986715322 +... 3022512606 +... 3039702911 +... 3047924216 +... 3065520146 +... 3072814835 +... 3087300101 +... 3099517368 +... 3104807458 +... 3104911417 +... 3121614071 +... 3124313135 +... 3130600734 +... 3132220152 +... 3152909256 +... 3171718420 +... 3190607860 +... 3215016793 +... 3279114362 +... 3323805078 +... 3366800663 +... 3451517675 +... +... ''' +>>> [x for x in numbers.splitlines() if x and not rntrc.is_valid(x)] +[] diff --git a/tests/test_util.doctest b/tests/test_util.doctest index ff92978a..b9a2439a 100644 --- a/tests/test_util.doctest +++ b/tests/test_util.doctest @@ -1,6 +1,6 @@ test_util.doctest - more detailed doctests for the stdnum.util package -Copyright (C) 2017-2019 Arthur de Jong +Copyright (C) 2017-2025 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.util package. It @@ -23,6 +21,7 @@ tries to test more corner cases and detailed functionality. This module is meant for internal use by stdnum modules and is not guaranteed to remain stable and as such not part of the public API of stdnum. +>>> import warnings >>> from stdnum.util import ( ... get_number_modules, get_module_name, get_module_description, ... clean, isdigits, to_unicode) @@ -30,14 +29,24 @@ stable and as such not part of the public API of stdnum. The to_unicode() function is used to force conversion of a string to unicode if it is not already a unicode string. This is mostly used to convert numbers -with non-ASCII characters in it. +with non-ASCII characters in it. This function is deprecated and should no +longer be used. >>> n_str = b'\xc3\x91'.decode('utf-8') # Ñ character as unicode string ->>> to_unicode(n_str) == n_str +>>> with warnings.catch_warnings(record=True) as w: +... to_unicode(n_str) == n_str +... issubclass(w[-1].category, DeprecationWarning) True ->>> to_unicode(n_str.encode('utf-8')) == n_str True ->>> to_unicode(n_str.encode('iso-8859-1')) == n_str +>>> with warnings.catch_warnings(record=True) as w: +... to_unicode(n_str.encode('utf-8')) == n_str +... issubclass(w[-1].category, DeprecationWarning) +True +True +>>> with warnings.catch_warnings(record=True) as w: +... to_unicode(n_str.encode('iso-8859-1')) == n_str +... issubclass(w[-1].category, DeprecationWarning) +True True @@ -100,7 +109,7 @@ handle aliases properly. 'stdnum.nl.btw' >>> get_cc_module('is', 'vat').__name__ 'stdnum.is_.vsk' ->>> get_cc_module(u'nl', u'vat').__name__ +>>> get_cc_module('nl', 'vat').__name__ 'stdnum.nl.btw' >>> get_cc_module('unknown', 'vat') is None True diff --git a/tests/test_uy_rut.doctest b/tests/test_uy_rut.doctest index 0458389a..eb777b96 100644 --- a/tests/test_uy_rut.doctest +++ b/tests/test_uy_rut.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.uy.rut module. It @@ -47,7 +45,7 @@ InvalidFormat: ... Traceback (most recent call last): ... InvalidComponent: ... ->>> rut.validate('221599340019') # invalid first two digits +>>> rut.validate('991599340011') # invalid first two digits Traceback (most recent call last): ... InvalidComponent: ... @@ -269,6 +267,7 @@ These have been found online and should all be valid numbers. ... 217132510011 ... 217142440016 ... 217149110011 +... 220018800014 ... ... ''' >>> [x for x in numbers.splitlines() if x and not rut.is_valid(x)] diff --git a/tests/test_vatin.doctest b/tests/test_vatin.doctest index f0c5f925..1c65db3e 100644 --- a/tests/test_vatin.doctest +++ b/tests/test_vatin.doctest @@ -1,6 +1,7 @@ test_vatin.doctest - more detailed doctests for stdnum.vatin module Copyright (C) 2020 Leandro Regueiro +Copyright (C) 2021-2024 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.vatin module. It @@ -35,6 +34,10 @@ Check valid VAT numbers for several countries with existing validation: 'BR16727230000197' >>> vatin.validate('el-082857563') 'EL082857563' +>>> vatin.validate('CHE-109.298.651 TVA') +'CHE109298651TVA' +>>> vatin.validate('XI 432525179') +'XI432525179' Try validating invalid VAT numbers for country with validation: @@ -73,3 +76,29 @@ InvalidComponent: ... Traceback (most recent call last): ... InvalidComponent: ... + + +Check is_valid for several scenarios: + +>>> vatin.is_valid('FR 40 303 265 045') +True +>>> vatin.is_valid('FR 40 303') +False +>>> vatin.is_valid('FR') +False +>>> vatin.is_valid('') +False +>>> vatin.is_valid('00') +False +>>> vatin.is_valid('XX') +False +>>> vatin.is_valid('US') +False + + +Check for VAT numbers that cannot be compacted without EU prefix: + +>>> vatin.is_valid('EU191849184') +True +>>> vatin.compact('EU191849184') +'EU191849184' diff --git a/tests/test_ve_rif.doctest b/tests/test_ve_rif.doctest index ce4eec3d..eb9f3086 100644 --- a/tests/test_ve_rif.doctest +++ b/tests/test_ve_rif.doctest @@ -1,4 +1,4 @@ -test_ve_nitp.doctest - more detailed doctests stdnum.ve.rif +test_ve_rif.doctest - more detailed doctests stdnum.ve.rif Copyright (C) 2015-2017 Arthur de Jong @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.ve.rif module. diff --git a/tests/test_verhoeff.doctest b/tests/test_verhoeff.doctest index 4c22e9dd..f23eb3dc 100644 --- a/tests/test_verhoeff.doctest +++ b/tests/test_verhoeff.doctest @@ -1,6 +1,6 @@ test_verhoeff.doctest - more detailed doctests for stdnum.verhoeff module -Copyright (C) 2010, 2011, 2013 Arthur de Jong +Copyright (C) 2010-2024 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.verhoeff module. It @@ -63,3 +61,25 @@ Adding a check digit to the numbers so they are all valid: '7' >>> verhoeff.validate('3984382462386423786482364872364827347') '3984382462386423786482364872364827347' + + +More test cases taken from https://rosettacode.org/wiki/Verhoeff_algorithm + +>>> verhoeff.is_valid('123459') +False +>>> verhoeff.calc_check_digit('123456789012') +'0' +>>> verhoeff.is_valid('1234567890120') +True +>>> verhoeff.is_valid('1234567890129') +False +>>> verhoeff.calc_check_digit('236') +'3' +>>> verhoeff.is_valid('2363') +True +>>> verhoeff.is_valid('2369') +False +>>> verhoeff.calc_check_digit('12345') +'1' +>>> verhoeff.is_valid('123451') +True diff --git a/tests/test_vn_mst.doctest b/tests/test_vn_mst.doctest index 54789c9b..6b7849b8 100644 --- a/tests/test_vn_mst.doctest +++ b/tests/test_vn_mst.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.vn.mst module. It diff --git a/tests/test_za_idnr.doctest b/tests/test_za_idnr.doctest index 206ff6ed..65c12286 100644 --- a/tests/test_za_idnr.doctest +++ b/tests/test_za_idnr.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.za.idnr module. It diff --git a/tests/test_za_tin.doctest b/tests/test_za_tin.doctest index 917a699b..4b92b913 100644 --- a/tests/test_za_tin.doctest +++ b/tests/test_za_tin.doctest @@ -13,9 +13,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301 USA +License along with this library; if not, see . This file contains more detailed doctests for the stdnum.za.tin module. It diff --git a/tox.ini b/tox.ini index 120baece..e7f366ae 100644 --- a/tox.ini +++ b/tox.ini @@ -1,25 +1,20 @@ [tox] -envlist = py{26,27,34,35,36,37,38,py,py3},flake8,docs -skip_missing_interpreters = True +envlist = py{38,39,310,311,312,313,314,py3},flake8,mypy,docs,headers +skip_missing_interpreters = true [testenv] -deps = nose - coverage -commands = nosetests +deps = pytest + pytest-cov +commands = pytest setenv= PYTHONWARNINGS=all -[testenv:py26] -basepython = python2.6 -usedevelop = True -commands = nosetests --ignore-file="test_.*.py" - [testenv:flake8] skip_install = true -deps = flake8 +deps = flake8<6.0 flake8-author flake8-blind-except - py{35,36,37,38}: flake8-bugbear + flake8-bugbear flake8-class-newline flake8-commas flake8-deprecated @@ -31,11 +26,49 @@ deps = flake8 flake8-tidy-imports flake8-tuple pep8-naming - # keep the following until this is fixed: - # https://github.com/gforcada/flake8-isort/issues/88 - isort<5 -commands = flake8 stdnum tests update setup.py +commands = flake8 . +setenv= + PYTHONWARNINGS=ignore + +[testenv:mypy] +skip_install = true +deps = mypy + types-requests + zeep +commands = + mypy tests + mypy -p stdnum --python-version 3.9 + mypy -p stdnum --python-version 3.10 + mypy -p stdnum --python-version 3.11 + mypy -p stdnum --python-version 3.12 + mypy -p stdnum --python-version 3.13 + mypy -p stdnum --python-version 3.14 [testenv:docs] -deps = Sphinx<3 +use_develop = true +deps = Sphinx commands = sphinx-build -N -b html docs {envtmpdir}/sphinx -W + +[testenv:headers] +skip_install = true +deps = +commands = python scripts/check_headers.py + +[testenv:update-dat] +use_develop = true +deps = -r update/requirements.txt +allowlist_externals = bash +commands = + -bash -c 'update/at_postleitzahl.py > stdnum/at/postleitzahl.dat' + -bash -c 'update/be_banks.py > stdnum/be/banks.dat' + -bash -c 'update/cfi.py > stdnum/cfi.dat' + -bash -c 'update/cn_loc.py > stdnum/cn/loc.dat' + -bash -c 'update/cz_banks.py > stdnum/cz/banks.dat' + -bash -c 'update/gs1_ai.py > stdnum/gs1_ai.dat' + -bash -c 'update/iban.py > stdnum/iban.dat' + -bash -c 'update/imsi.py > stdnum/imsi.dat' + -bash -c 'update/isbn.py > stdnum/isbn.dat' + -bash -c 'update/isil.py > stdnum/isil.dat' + -bash -c 'update/my_bp.py > stdnum/my/bp.dat' + -bash -c 'update/nz_banks.py > stdnum/nz/banks.dat' + -bash -c 'update/oui.py > stdnum/oui.dat' diff --git a/update/at_postleitzahl.py b/update/at_postleitzahl.py index c36d8a4f..c3d2cf75 100755 --- a/update/at_postleitzahl.py +++ b/update/at_postleitzahl.py @@ -3,7 +3,7 @@ # update/at_postleitzahl.py - download list of Austrian postal codes # -# Copyright (C) 2018-2019 Arthur de Jong +# Copyright (C) 2018-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -16,31 +16,22 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This download list of postal codes from Austrian Post.""" from __future__ import print_function, unicode_literals -import os -import os.path - -import lxml.html import requests -import xlrd -try: - from urllib.parse import urljoin -except ImportError: - from urlparse import urljoin +# The URL of postal codes on the Austrian open-data portal in CSV format. +download_url = 'https://data.rtr.at/api/v1/tables/plz.json' + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' -# The page that contains a link to the downloadable spreadsheet with current -# Austrian postal codes -base_url = 'https://www.post.at/en/business_advertise_products_and_services_addresses_postcodes.php' # The list of regions that can be used in the document. regions = { @@ -56,47 +47,18 @@ } -def find_download_url(): - """Extract the spreadsheet URL from the Austrian Post website.""" - response = requests.get(base_url) - response.raise_for_status() - document = lxml.html.document_fromstring(response.content) - url = [ - a.get('href') - for a in document.findall('.//a[@href]') - if '/downloads/PLZ_Verzeichnis' in a.get('href')][0] - return urljoin(base_url, url.split('?')[0]) - - -def get_postal_codes(download_url): - """Download the Austrian postal codes spreadsheet.""" - response = requests.get(download_url) - response.raise_for_status() - workbook = xlrd.open_workbook( - file_contents=response.content, logfile=open(os.devnull, 'w')) - sheet = workbook.sheet_by_index(0) - rows = sheet.get_rows() - # the first row contains the column names - columns = [column.value.lower() for column in next(rows)] - # the other rows contain data - for row in rows: - data = dict(zip( - columns, - [column.value for column in row])) - if data['adressierbar'].lower() == 'ja': - yield ( - data['plz'], - data['ort'], - regions.get(data['bundesland'])) - - if __name__ == '__main__': - # download/parse the information - download_url = find_download_url() + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) + response.raise_for_status() + data = response.json() # print header - print('# generated from %s downloaded from' % - os.path.basename(download_url)) - print('# %s' % base_url) + print('# generated from %s' % download_url) + print('# version %s published %s' % ( + data['version']['id'], data['version']['published'])) # build an ordered list of postal codes - for code, location, region in sorted(get_postal_codes(download_url)): + results = set() + for row in data['data']: + if row['adressierbar'] == 'Ja': + results.add((str(row['plz']), row['ort'], regions[row['bundesland']])) + for code, location, region in sorted(results): print('%s location="%s" region="%s"' % (code, location, region)) diff --git a/update/be_banks.py b/update/be_banks.py index 890bfbe7..f01ae2ed 100755 --- a/update/be_banks.py +++ b/update/be_banks.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 # coding: utf-8 -# update/be_banks.py - script to donwload Bank list from Belgian National Bank +# update/be_banks.py - script to download Bank list from Belgian National Bank # -# Copyright (C) 2018-2019 Arthur de Jong +# Copyright (C) 2018-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -16,22 +16,25 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads the list of banks with bank codes as used in the IBAN and BIC codes as published by the Belgian National Bank.""" +import io import os.path +import openpyxl import requests -import xlrd # The location of the XLS version of the bank identification codes. Also see # https://www.nbb.be/en/payment-systems/payment-standards/bank-identification-codes -download_url = 'https://www.nbb.be/doc/be/be/protocol/current_codes.xls' +download_url = 'https://www.nbb.be/doc/be/be/protocol/grouped_list_current.xlsx' + + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' # List of values that refer to non-existing, reserved or otherwise not- @@ -47,6 +50,7 @@ 'VRIJ - LIBRE', 'VRIJ', 'nav', + 'N/A', ) @@ -60,25 +64,28 @@ def clean(value): def get_values(sheet): """Return values (from, to, bic, bank_name) from the worksheet.""" - rows = sheet.get_rows() + rows = sheet.iter_rows() # skip first two rows - next(rows) - next(rows) + try: + next(rows) + next(rows) + except StopIteration: + pass # ignore empty worksheet # go over rows with values for row in rows: row = [clean(column.value) for column in row] low, high, bic = row[:3] - bank = ([x for x in row[3:] if x] + [''])[0] + bank = ([''] + [x for x in row[2:] if x])[-1] if bic or bank: yield low, high, bic.replace(' ', ''), bank if __name__ == '__main__': - response = requests.get(download_url) + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) response.raise_for_status() - workbook = xlrd.open_workbook(file_contents=response.content) - sheet = workbook.sheet_by_index(0) - version = sheet.cell(0, 0).value + workbook = openpyxl.load_workbook(io.BytesIO(response.content), read_only=True) + sheet = workbook.worksheets[0] + version = sheet.cell(1, 1).value print('# generated from %s downloaded from' % os.path.basename(download_url)) print('# %s' % download_url) diff --git a/update/cfi.py b/update/cfi.py new file mode 100755 index 00000000..48eebe44 --- /dev/null +++ b/update/cfi.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 + +# update/cfi.py - script to download CFI code list from the SIX group +# +# Copyright (C) 2022-2026 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""This script downloads the list of CFI codes as published by the SIX group.""" + +import io +import re + +import lxml.html +import openpyxl +import requests + + +# the location of the Statistical Classification file +download_url = 'https://www.six-group.com/en/products-services/financial-information/data-standards.html' + + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + +def normalise(value): + """Clean and minimise attribute names and values.""" + return re.sub(r' *[(\[\n].*', '', value, flags=re.MULTILINE).strip() + + +def get_categories(sheet): + """Get the list of top-level CFI categories.""" + for row in sheet.iter_rows(): + if row[0].value and len(row[0].value) == 1 and row[1].value: + yield (row[0].value, row[1].value) + + +def get_attributes(sheet): + """Get the list of characters and attributes from the group-specific sheet.""" + attribute = None + value_list = [] + values = None + for row in sheet.iter_rows(): + if row[0].value and not row[1].value and row[2].value: + attribute = normalise(row[2].value) + values = [] + value_list.append((attribute, values)) + elif attribute and row[1].value and row[2].value: + values.append((row[1].value, normalise(row[2].value))) + return value_list + + +def print_attributes(attributes, index=0): + """Print the collected attributes in a nested structure.""" + attribute, values = attributes[index] + if len(values) == 1 and values[0][0] == 'X': + print('%sA-Z' % (' ' * (index + 2))) + else: + for char, value in sorted(values): + print('%s%s v="%s"' % (' ' * (index + 2), char, value)) + print('%sA-Z a="%s"' % ( + ' ' * (index + 2), attribute)) + if index < 3: + print_attributes(attributes, index + 1) + + +if __name__ == '__main__': + # Download the page that contains the link to the current XLS file + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) + response.raise_for_status() + # Find the download link + document = lxml.html.document_fromstring(response.content) + links = [a.get('href') for a in document.findall('.//a[@href]')] + link_url = next(a for a in links if re.match(r'.*/cfi/.*xlsx?$', a)) + # Download and parse the spreadsheet + response = requests.get(link_url, timeout=30, headers={'User-Agent': user_agent}) + response.raise_for_status() + workbook = openpyxl.load_workbook(io.BytesIO(response.content), read_only=True) + + print('# generated from %s, downloaded from' % link_url.split('/')[-1]) + print('# %s' % download_url) + + groups = sorted(x for x in workbook.sheetnames if len(x) == 6 and x.endswith('XXXX')) + for category, name in sorted(get_categories(workbook['Categories'])): + print('%s category="%s"' % (category, name)) + for group in (x for x in groups if x.startswith(category)): + sheet = workbook[group] + print(' %s group="%s"' % (group[1], normalise(sheet.cell(1, 1).value))) + print_attributes(get_attributes(sheet)) diff --git a/update/cn_loc.py b/update/cn_loc.py index 7fc1f09c..e06dfbe9 100755 --- a/update/cn_loc.py +++ b/update/cn_loc.py @@ -3,7 +3,7 @@ # update/cn_loc.py - script to fetch data from the CN Open Data community # # Copyright (C) 2014-2015 Jiangge Zhang -# Copyright (C) 2015-2019 Arthur de Jong +# Copyright (C) 2015-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -16,78 +16,128 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . -"""This script downloads birth place codes from the CN Open Data community on -Github.""" +"""This downloads the birth place codes from from Wikipedia.""" -from __future__ import print_function, unicode_literals - -import sys -from collections import OrderedDict -from datetime import datetime +import re +import unicodedata +from collections import defaultdict import requests -data_url = 'https://github.com/cn/GB2260' -data_revisions = [ - 'GB2260-2002', - 'GB2260-2003', - 'GB2260-200306', - 'GB2260-2004', - 'GB2260-200403', - 'GB2260-200409', - 'GB2260-2005', - 'GB2260-200506', - 'GB2260-2006', - 'GB2260-2007', - 'GB2260-2008', - 'GB2260-2009', - 'GB2260-2010', - 'GB2260-2011', - 'GB2260-2012', - 'GB2260-2013', - 'GB2260-2014', -] - - -def fetch_data(): - """Return the data from tab-separated revisions as one code/name dict.""" - data_collection = OrderedDict() - for revision in data_revisions: - response = requests.get('%s/raw/release/%s.txt' % (data_url, revision)) - response.raise_for_status() - if response.ok: - print('%s is fetched' % revision, file=sys.stderr) - else: - print('%s is missing' % revision, file=sys.stderr) +# The wikipedia pages to download +wikipedia_pages = [f'中华人民共和国行政区划代码 ({i}区)' for i in range(1, 9)] + + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + +def get_wikipedia_url(page): + """Get the Simplified Chinese Wikipedia page URL.""" + return f'https://zh.wikipedia.org/w/index.php?title={page.replace(" ", "_")}&action=raw' # noqa: E231 + + +# Regular expression for matching province heading +province_re = re.compile(r'^== *(?P.*) +\((?P[0-9]+)\) +==') + +# Regular expression for matching table row +entry_re = re.compile( + r'^\| *(?P[0-9]{6}) *' + + r'\|\| *(?P.*) *' + + r'\|\| *(?P.*) *' + + r'\|\| *(?P.*) *' + + r'\|\| *(?P.*)') + + +def clean(value): + """Normalise (partially) unicode strings.""" + # Remove unicode parenthesis that include space with normal ones + value = value.replace( + unicodedata.lookup('FULLWIDTH LEFT PARENTHESIS'), ' (', + ).replace( + unicodedata.lookup('FULLWIDTH RIGHT PARENTHESIS'), ') ', + ) + # Remove Wikipedia links + return re.sub(r'\[\[([^]|]*\|)?([^]|]+)\]\]', r'\2', value) + + +def parse_county(county, activation, revocation): + """Parse the county string and return ranges counties.""" + for value in county.split('
    '): + m = re.match(r'(?P.*) +\((?P[0-9]{4})年至今\) +', value) + # This parses various formats as seen on Wikipedia + if m: # starting with year + yield f'[{m.group("year")}-{revocation}]{m.group("county")}' + continue + m = re.match(r'(?P.*) +\((?P[0-9]{4})年前\) +', value) + if m: # before given year + yield f'[{activation}-{int(m.group("year")) - 1}]{m.group("county")}' continue - for line in response.text.strip().split('\n'): - code, name = line.split('\t') - data_collection[code.strip()] = name.strip() - return data_collection + m = re.match(r'(?P.*) +\((?P[0-9]{4}-[0-9]{4})年曾撤销\) +', value) + if m: # abolished between years + if activation or revocation: + yield f'[{activation}-{revocation}]{m.group("county")}' + else: + yield m.group('county') + continue + m = re.match(r'(?P.*) +\((?P[0-9]{4})年?-(?P[0-9]{4})年\) +', value) + if m: + yield f'[{m.group("start")}-{int(m.group("end")) - 1}]{m.group("county")}' + continue + if activation or revocation: + yield f'[{activation}-{revocation}]{value}' + else: + yield value -def group_data(data_collection): - """Filter the data and return codes with names.""" - for code, name in sorted(data_collection.items()): - if code.endswith('00'): - continue # county only - province_code = code[:2] + '0000' - prefecture_code = code[:4] + '00' - province_name = data_collection[province_code] - prefecture_name = data_collection[prefecture_code] - yield code, name, prefecture_name, province_name +def parse_page(content): + """Parse the contents of the Wikipedia page and return number, county, province tuples.""" + province = None + prefix = None + for line in clean(content).splitlines(): + line = clean(line) + m = province_re.match(line) + if m: + province = m.group('province') + prefix = m.group('prefix') + continue + m = entry_re.match(line) + if m: + number = m.group('number') + assert number.startswith(prefix) + counties = m.group('county') + try: + activation = str(int(m.group('activation'))) + except ValueError: + activation = '' + try: + revocation = str(int(m.group('revocation'))) + except ValueError: + revocation = '' + for county in parse_county(counties, activation, revocation): + yield prefix, province, number, county.strip() if __name__ == '__main__': """Output a data file in the right format.""" - print("# generated from National Bureau of Statistics of the People's") - print('# Republic of China, downloaded from %s' % data_url) - print('# %s' % datetime.utcnow()) - data_collection = fetch_data() - for data in group_data(data_collection): - print('%s county="%s" prefecture="%s" province="%s"' % data) + print('# Downloaded from') + for page in wikipedia_pages: + print(f'# {get_wikipedia_url(page)}') + # Download all data + provinces = {} + numbers = defaultdict(lambda: defaultdict(list)) + for page in wikipedia_pages: + response = requests.get(get_wikipedia_url(page), timeout=30, headers={'User-Agent': user_agent}) + response.raise_for_status() + for prefix, province, number, county in parse_page(response.text): + provinces[prefix] = province + numbers[prefix][number].append(county) + # Print data + for prefix, province in sorted(provinces.items()): + print(f'{prefix} province="{province}"') + for number, counties in sorted(numbers[prefix].items()): + county = ','.join(sorted(counties)) + print(f' {number[2:]} county="{county}"') diff --git a/update/cz_banks.py b/update/cz_banks.py new file mode 100755 index 00000000..b5ee2424 --- /dev/null +++ b/update/cz_banks.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +# coding: utf-8 + +# update/cz_banks.py - script to download Bank list from Czech National Bank +# +# Copyright (C) 2022 Petr Přikryl +# Copyright (C) 2026 Arthur de Jong +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, see . + +"""This script downloads the list of banks with bank codes as used in the +IBAN and BIC codes as published by the Czech National Bank.""" + +import csv +import os.path +from io import StringIO + +import requests + + +# The location of the CSV version of the bank identification codes. Also see +# https://www.cnb.cz/cs/platebni-styk/ucty-kody-bank/ +download_url = 'https://www.cnb.cz/cs/platebni-styk/.galleries/ucty_kody_bank/download/kody_bank_CR.csv' + + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + +def get_values(csv_reader): + """Return values (bank_number, bic, bank_name, certis) from the CSV.""" + # skip first row (header) + try: + next(csv_reader) + except StopIteration: + pass # ignore empty CSV + + for row in csv_reader: + yield row[0], row[2], row[1], row[3] == 'A' + + +if __name__ == '__main__': + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) + response.raise_for_status() + csv_reader = csv.reader(StringIO(response.content.decode('utf-8')), delimiter=';') + print('# generated from %s downloaded from' % os.path.basename(download_url)) + print('# %s' % download_url) + for bank_number, bic, bank, certis in get_values(csv_reader): + info = '%s' % bank_number + if bic: + info += ' bic="%s"' % bic + if bank: + info += ' bank="%s"' % bank + if certis: + info += ' certis="%s"' % certis + print(info) diff --git a/update/do_whitelists.py b/update/do_whitelists.py index 3aea8d31..0938bcc9 100755 --- a/update/do_whitelists.py +++ b/update/do_whitelists.py @@ -3,7 +3,7 @@ # update/do_whitelists.py - script to update do.rnc and do.cedula whitelists # -# Copyright (C) 2017-2019 Arthur de Jong +# Copyright (C) 2017-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -16,9 +16,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads a ZIP file from the Dirección General de Impuestos Internos (DGII) web site with lists of all RNC and Cedula values and outputs @@ -45,6 +43,10 @@ download_url = 'https://www.dgii.gov.do/app/WebApps/Consultas/rnc/DGII_RNC.zip' +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + def handle_zipfile(f): """Parse the ZIP file and return a set of invalid RNC and Cedula.""" # collections of invalid numbers found @@ -70,7 +72,7 @@ def handle_zipfile(f): # Download and read the ZIP file with valid data with tempfile.TemporaryFile() as tmp: # Download the zip file to a temporary file - response = requests.get(download_url, stream=True) + response = requests.get(download_url, stream=True, timeout=30, headers={'User-Agent': user_agent}) response.raise_for_status() print('%s: %s' % ( os.path.basename(download_url), diff --git a/update/eu_nace.py b/update/eu_nace.py deleted file mode 100755 index ec530957..00000000 --- a/update/eu_nace.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python3 - -# update/eu_nace.py - script to get the NACE v2 catalogue -# -# Copyright (C) 2017-2019 Arthur de Jong -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA - -"""This script downloads XML data from the European commission RAMON Eurostat -Metadata Server and extracts the information that is used for validating NACE -codes.""" - -import re - -import lxml.etree -import requests - - -# the location of the Statistical Classification file -download_url = 'https://ec.europa.eu/eurostat/ramon/nomenclatures/index.cfm?TargetUrl=ACT_OTH_CLS_DLD&StrNom=NACE_REV2&StrFormat=XML&StrLanguageCode=EN' - - -if __name__ == '__main__': - response = requests.get(download_url) - response.raise_for_status() - content_disposition = response.headers.get('content-disposition', '') - filename = re.findall(r'filename=?(.+)"?', content_disposition)[0].strip('"') - print('# generated from %s, downloaded from' % filename) - print('# %s' % download_url) - - # parse XML document - document = lxml.etree.fromstring(response.content) - - # output header - print('# %s: %s' % ( - document.find('./Classification').get('id'), - document.find('./Classification/Label/LabelText[@language="EN"]').text)) - - for item in document.findall('./Classification/Item'): - number = item.get('id') - level = int(item.get('idLevel', 0)) - label = item.find('./Label/LabelText[@language="EN"]').text - isic = item.find( - './Property[@genericName="ISIC4_REF"]/PropertyQualifier/PropertyText').text - if level == 1: - section = number - print('%s label="%s" isic="%s"' % (number, label, isic)) - elif level == 2: - print('%s section="%s" label="%s" isic="%s"' % ( - number, section, label, isic)) - else: - print('%s%s label="%s" isic="%s"' % ( - ' ' * (level - 2), number[level], label, isic)) diff --git a/update/gs1_ai.py b/update/gs1_ai.py index 06e351bf..1ab7d27a 100755 --- a/update/gs1_ai.py +++ b/update/gs1_ai.py @@ -2,7 +2,7 @@ # update/gs1_ai.py - script to get GS1 application identifiers # -# Copyright (C) 2019 Arthur de Jong +# Copyright (C) 2019-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads GS1 application identifiers from the GS1 web site.""" @@ -30,28 +28,38 @@ # the location of the GS1 application identifiers -download_url = 'https://www.gs1.org/standards/barcodes/application-identifiers' +download_url = 'https://ref.gs1.org/ai/' + + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' def fetch_ais(): """Download application identifiers frm the GS1 website.""" - response = requests.get(download_url) + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) document = lxml.html.document_fromstring(response.content) - element = document.findall('.//script[@type="application/ld+json"]')[1] - for entry in json.loads(element.text)['@graph']: - yield ( - entry['skos:prefLabel'].strip(), # AI - entry['gs1meta:formatAIvalue'].strip()[3:], # format - entry['gs1meta:requiresFNC1'], # require FNC1 - [x['@value'] for x in entry['schema:name'] if x['@language'] == 'en'][0].strip(), - [x['@value'] for x in entry['schema:description'] if x['@language'] == 'en'][0].strip()) + element = document.findall('.//script[@type="application/ld+json"]')[0] + data = json.loads(element.text) + for entry in data['applicationIdentifiers']: + if 'applicationIdentifier' in entry: + ai = entry['applicationIdentifier'].strip() + formatstring = entry['formatString'].strip() + if formatstring.startswith(f'N{len(ai)}+'): + formatstring = formatstring[3:] + yield ( + ai, + formatstring, + entry['separatorRequired'], + entry['title'].strip(), + entry['description'].strip()) -def group_ai_ranges(): +def group_ai_ranges(ranges): """Combine downloaded application identifiers into ranges.""" first = None prev = (None, ) * 5 - for value in sorted(fetch_ais()): + for value in sorted(ranges): if value[1:] != prev[1:]: if first: yield (first, *prev) @@ -62,20 +70,18 @@ def group_ai_ranges(): if __name__ == '__main__': print('# generated from %s' % download_url) - print('# on %s' % datetime.datetime.utcnow()) - for ai1, ai2, format, require_fnc1, name, description in group_ai_ranges(): + print('# on %s' % datetime.datetime.now(datetime.UTC)) + for ai1, ai2, format, require_fnc1, name, description in group_ai_ranges(fetch_ais()): _type = 'str' - if re.match(r'^(N8\+)?N[0-9]*[.]*[0-9]+$', format) and 'date' in description.lower(): + if re.match(r'^(N[68]\[?\+)?N[0-9]*[.]*[0-9]+\]?$', format) and 'date' in description.lower(): _type = 'date' elif re.match(r'^N[.]*[0-9]+$', format) and 'count' in description.lower(): _type = 'int' ai = ai1 if ai1 != ai2: if len(ai1) == 4: - ai = ai1[:3] _type = 'decimal' - else: - ai = '%s-%s' % (ai1, ai2) + ai = '%s-%s' % (ai1, ai2) print('%s format="%s" type="%s"%s name="%s" description="%s"' % ( ai, format, _type, ' fnc1="1"' if require_fnc1 else '', diff --git a/update/iban.py b/update/iban.py index 11f27427..a2fb89c5 100755 --- a/update/iban.py +++ b/update/iban.py @@ -2,7 +2,7 @@ # update/iban.py - script to download and parse data from the IBAN registry # -# Copyright (C) 2011-2019 Arthur de Jong +# Copyright (C) 2011-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,15 +15,15 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads data from SWIFT (the Society for Worldwide Interbank Financial Telecommunication which is the official IBAN registrar) to get the data needed to correctly parse and validate IBANs.""" import csv +import os.path +import sys from collections import defaultdict import requests @@ -31,9 +31,14 @@ # The place where the current version of # swift_standards_infopaper_ibanregistry_1.txt can be downloaded. +# Linked from https://www.swift.com/standards/data-standards/iban-international-bank-account-number download_url = 'https://www.swift.com/node/11971' +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + def get_country_codes(line): """Return the list of country codes this line has.""" # simplest case first @@ -44,28 +49,37 @@ def get_country_codes(line): if __name__ == '__main__': - response = requests.get(download_url) - response.raise_for_status() - print('# generated from swift_standards_infopaper_ibanregistry_1.txt,') - print('# downloaded from %s' % download_url) + if len(sys.argv) > 1: + f = open(sys.argv[1], 'rt', encoding='iso-8859-15') + lines = iter(f) + print(f'# generated from {os.path.basename(sys.argv[1])}') + print(f'# downloaded from {download_url}') + else: + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) + response.raise_for_status() + print('# generated from iban-registry_1.txt') + print(f'# downloaded from {download_url}') + lines = response.iter_lines(decode_unicode=True) values = defaultdict(dict) # the file is CSV but the data is in columns instead of rows - for row in csv.reader(response.iter_lines(decode_unicode=True), delimiter='\t', quotechar='"'): + for row in csv.reader(lines, delimiter='\t', quotechar='"'): # skip first row if row and row[0] != 'Data element': # first column contains label for i, c in enumerate(row[1:]): values[i][row[0]] = c # output the collected data - for i, data in values.items(): + for _i, data in values.items(): bban = data['BBAN structure'] - if not(bban) or bban.lower() == 'n/a': + if not bban or bban.lower() == 'n/a': bban = data['IBAN structure'] bban = bban.replace(' ', '') cc = data['IBAN prefix country code (ISO 3166)'][:2] cname = data['Name of country'] if bban.startswith(cc + '2!n'): bban = bban[5:] + if bban.startswith(cc): + bban = bban[2:] # print country line print('%s country="%s" bban="%s"' % (cc, cname, bban)) # TODO: some countries have a fixed check digit value diff --git a/update/imsi.py b/update/imsi.py index fd20e260..53bcb53d 100755 --- a/update/imsi.py +++ b/update/imsi.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -# update/imsi.py - script to donwload from Wikipedia to build the database +# update/imsi.py - script to download from Wikipedia to build the database # -# Copyright (C) 2011-2019 Arthur de Jong +# Copyright (C) 2011-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This extracts a IMSI country and operator code from Wikipedia.""" @@ -39,18 +37,22 @@ # The wikipedia pages to download wikipedia_pages = ( 'Mobile country code', - 'Mobile Network Codes in ITU region 2xx (Europe)', - 'Mobile Network Codes in ITU region 3xx (North America)', - 'Mobile Network Codes in ITU region 4xx (Asia)', - 'Mobile Network Codes in ITU region 5xx (Oceania)', - 'Mobile Network Codes in ITU region 6xx (Africa)', - 'Mobile Network Codes in ITU region 7xx (South America)', + 'Mobile network codes in ITU region 2xx (Europe)', + 'Mobile network codes in ITU region 3xx (North America)', + 'Mobile network codes in ITU region 4xx (Asia)', + 'Mobile network codes in ITU region 5xx (Oceania)', + 'Mobile network codes in ITU region 6xx (Africa)', + 'Mobile network codes in ITU region 7xx (South America)', ) # Sadly the full list requires an account at ITU-T: # https://www.itu.int/net/ITU-T/inrdb/ +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + cleanup_replacements = { 'Anguilla (United Kingdom)': 'Anguilla', 'Argentina|Argentine Republic': 'Argentina', @@ -126,15 +128,10 @@ def cleanup_value(val): val = val.replace('United Kingdom|UK', 'United Kingdom') val = val.replace('United States|US', 'United States') val = val.replace('New Zealand|NZ', 'New Zealand').strip() + val = val.replace('', '').strip() return cleanup_replacements.get(val, val) -def update_mncs(data, mcc, mnc, **kwargs): - """Merge provided mnc information with the data that is already stored - in mccs.""" - data[mcc][mnc].update(dict((k, cleanup_value(v)) for k, v in kwargs.items() if v)) - - # This matches a heading on the Wikipedia page, e.g. # ==== [[Albania]] - AL ==== _mnc_country_re = re.compile( @@ -153,14 +150,14 @@ def update_mncs(data, mcc, mnc, **kwargs): r')?)?)?)?)?') -def get_mncs_from_wikipedia(data): - """Update the collection of Mobile Country Codes from Wikipedia. - This parses a Wikipedia page to extract the MCC and MNC, the first - part of any IMSI, and stores the results.""" +def get_mncs_from_wikipedia(): + """Return the collection of Mobile Country Codes from Wikipedia. + This parses Wikipedia pages to extract the MCC and MNC, the first + part of any IMSI, and extracts other available data.""" for page in wikipedia_pages: url = 'https://en.wikipedia.org/w/index.php?title=%s&action=raw' % ( page.replace(' ', '_')) - response = requests.get(url) + response = requests.get(url, timeout=30, headers={'User-Agent': user_agent}) response.raise_for_status() country = cc = '' for line in response.iter_lines(decode_unicode=True): @@ -175,11 +172,15 @@ def get_mncs_from_wikipedia(data): match = _mnc_line_re.match(line) if match: for mnc in str2range(match.group('mnc')): - update_mncs(data, match.group('mcc'), mnc, - country=country, cc=cc, brand=match.group('brand'), - operator=match.group('operator'), - status=match.group('status'), - bands=match.group('bands')) + info = dict( + country=country, + cc=cc, + brand=match.group('brand'), + operator=match.group('operator'), + status=match.group('status'), + bands=match.group('bands')) + info = dict((k, cleanup_value(v)) for k, v in info.items() if v) + yield (match.group('mcc'), mnc, info) def str2range(x): @@ -200,7 +201,17 @@ def str2range(x): if __name__ == '__main__': # download/parse the information data = defaultdict(lambda: defaultdict(dict)) - get_mncs_from_wikipedia(data) + not_operational = defaultdict(lambda: defaultdict(dict)) + for mcc, mnc, info in get_mncs_from_wikipedia(): + if info.get('status', '').lower() == 'not operational': + not_operational[mcc][mnc].update(info) + else: + data[mcc][mnc].update(info) + # merge not operational entries as long as they do not conflict + for mcc, mncs in not_operational.items(): + for mnc, info in mncs.items(): + if not data[mcc][mnc] and not data[mcc][mnc[:2]]: + data[mcc][mnc].update(info) # print header print('# generated from various sources') print('# https://en.wikipedia.org/wiki/Mobile_country_code') @@ -211,7 +222,7 @@ def str2range(x): for mcc in mcc_list: print('%s' % mcc) # build an ordered list of mncs - mnc_list = sorted(data[mcc].keys()) + mnc_list = sorted(mnc for mnc, info in data[mcc].items() if info) for mnc in mnc_list: info = data[mcc][mnc] infokeys = sorted(info.keys()) diff --git a/update/isbn.py b/update/isbn.py index 658ba077..3042ae47 100755 --- a/update/isbn.py +++ b/update/isbn.py @@ -2,7 +2,7 @@ # update/isbn.py - script to get ISBN prefix data # -# Copyright (C) 2010-2019 Arthur de Jong +# Copyright (C) 2010-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads XML data from the International ISBN Agency website and provides a compact form of all group prefixes, and registrant @@ -33,6 +31,10 @@ download_url = 'https://www.isbn-international.org/export_rangemessage.xml' +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + def ranges(group): """Provide the ranges for the group.""" for rule in group.findall('./Rules/Rule'): @@ -56,7 +58,7 @@ def wrap(text): if __name__ == '__main__': print('# generated from RangeMessage.xml, downloaded from') print('# %s' % download_url) - response = requests.get(download_url) + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) response.raise_for_status() # parse XML document diff --git a/update/isil.py b/update/isil.py index dedd3078..849a321e 100755 --- a/update/isil.py +++ b/update/isil.py @@ -1,8 +1,8 @@ #!/usr/bin/env python3 -# update/isil.py - script to donwload ISIL agencies +# update/isil.py - script to download ISIL agencies # -# Copyright (C) 2011-2019 Arthur de Jong +# Copyright (C) 2011-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads a web page from the ISIL Registration Authority and screen-scrapes the national and non-national ISIL agencies and @@ -29,10 +27,14 @@ import requests -spaces_re = re.compile(r'\s+', re.UNICODE) +spaces_re = re.compile(r'\s+', flags=re.UNICODE) # the web page that holds information on the ISIL authorities -download_url = 'https://english.slks.dk/libraries/library-standards/isil/' +download_url = 'https://slks.dk/english/work-areas/libraries-and-literature/library-standards/isil' + + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' def clean(td): @@ -42,7 +44,7 @@ def clean(td): if __name__ == '__main__': - response = requests.get(download_url) + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) response.raise_for_status() print('# generated from ISIL Registration Authority, downloaded from') print('# %s' % download_url) diff --git a/update/my_bp.crt b/update/my_bp.crt deleted file mode 100644 index fe5a24dd..00000000 --- a/update/my_bp.crt +++ /dev/null @@ -1,55 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFDjCCA/agAwIBAgIMDulMwwAAAABR03eFMA0GCSqGSIb3DQEBCwUAMIG+MQsw -CQYDVQQGEwJVUzEWMBQGA1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2Vl -IHd3dy5lbnRydXN0Lm5ldC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMDkg -RW50cnVzdCwgSW5jLiAtIGZvciBhdXRob3JpemVkIHVzZSBvbmx5MTIwMAYDVQQD -EylFbnRydXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjAeFw0x -NTEwMDUxOTEzNTZaFw0zMDEyMDUxOTQzNTZaMIG6MQswCQYDVQQGEwJVUzEWMBQG -A1UEChMNRW50cnVzdCwgSW5jLjEoMCYGA1UECxMfU2VlIHd3dy5lbnRydXN0Lm5l -dC9sZWdhbC10ZXJtczE5MDcGA1UECxMwKGMpIDIwMTIgRW50cnVzdCwgSW5jLiAt -IGZvciBhdXRob3JpemVkIHVzZSBvbmx5MS4wLAYDVQQDEyVFbnRydXN0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5IC0gTDFLMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEA2j+W0E25L0Tn2zlem1DuXKVh2kFnUwmqAJqOV38pa9vH4SEkqjrQ -jUcj0u1yFvCRIdJdt7hLqIOPt5EyaM/OJZMssn2XyP7BtBe6CZ4DkJN7fEmDImiK -m95HwzGYei59QAvS7z7Tsoyqj0ip/wDoKVgG97aTWpRzJiatWA7lQrjV6nN5ZGhT -JbiEz5R6rgZFDKNrTdDGvuoYpDbwkrK6HIiPOlJ/915tgxyd8B/lw9bdpXiSPbBt -LOrJz5RBGXFEaLpHPATpXbo+8DX3Fbae8i4VHj9HyMg4p3NFXU2wO7GOFyk36t0F -ASK7lDYqjVs1/lMZLwhGwSqzGmIdTivZGwIDAQABo4IBDDCCAQgwDgYDVR0PAQH/ -BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQAwMwYIKwYBBQUHAQEEJzAlMCMGCCsG -AQUFBzABhhdodHRwOi8vb2NzcC5lbnRydXN0Lm5ldDAwBgNVHR8EKTAnMCWgI6Ah -hh9odHRwOi8vY3JsLmVudHJ1c3QubmV0L2cyY2EuY3JsMDsGA1UdIAQ0MDIwMAYE -VR0gADAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L3JwYTAd -BgNVHQ4EFgQUgqJwdN28Uz/Pe9T3zX+nYMYKTL8wHwYDVR0jBBgwFoAUanImetAe -733nO2lR1GyNn5ASZqswDQYJKoZIhvcNAQELBQADggEBADnVjpiDYcgsY9NwHRkw -y/YJrMxp1cncN0HyMg/vdMNY9ngnCTQIlZIv19+4o/0OgemknNM/TWgrFTEKFcxS -BJPok1DD2bHi4Wi3Ogl08TRYCj93mEC45mj/XeTIRsXsgdfJghhcg85x2Ly/rJkC -k9uUmITSnKa1/ly78EqvIazCP0kkZ9Yujs+szGQVGHLlbHfTUqi53Y2sAEo1GdRv -c6N172tkw+CNgxKhiucOhk3YtCAbvmqljEtoZuMrx1gL+1YQ1JH7HdMxWBCMRON1 -exCdtTix9qrKgWRs6PLigVWXUX/hwidQosk8WwBD9lu51aX8/wdQQGcHsFXwt35u -Lcw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50 -cnVzdC5uZXQvbGVnYWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3Qs -IEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVz -dCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwHhcNMDkwNzA3MTcy -NTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUVu -dHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwt -dGVybXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0 -aG9yaXplZCB1c2Ugb25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP/vaCeb9zYQYKpSfYs1/T -RU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXzHHfV1IWN -cCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hW -wcKUs/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1 -U1+cPvQXLOZprE4yTGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0 -jaWvYkxN4FisZDQSA/i2jZRjJKRxAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ60B7vfec7aVHUbI2fkBJmqzAN -BgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5ZiXMRrEPR9RP/ -jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ -Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v -1fN2D807iDginWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4R -nAuknZoh8/CbCzB428Hch0P+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmH -VHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xOe4pIb4tF9g== ------END CERTIFICATE----- diff --git a/update/my_bp.py b/update/my_bp.py index 672d3f8c..cf38422c 100755 --- a/update/my_bp.py +++ b/update/my_bp.py @@ -2,7 +2,7 @@ # update/my_bp.py - script to download data from Malaysian government site # -# Copyright (C) 2013-2019 Arthur de Jong +# Copyright (C) 2013-2025 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads the list of states and countries and their birthplace code from the National Registration Department of Malaysia.""" @@ -30,15 +28,15 @@ # URLs that are downloaded -state_list_url = 'https://www.jpn.gov.my/kod-negeri/' -country_list_url = 'https://www.jpn.gov.my/en/kod-negara/' +state_list_url = 'https://www.jpn.gov.my/index.php?option=com_content&view=article&id=453&lang=en' +country_list_url = 'https://www.jpn.gov.my/index.php?option=com_content&view=article&id=471&lang=en' # The user agent that will be passed in requests user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' -spaces_re = re.compile(r'\s+', re.UNICODE) +spaces_re = re.compile(r'\s+', flags=re.UNICODE) def clean(td): @@ -51,13 +49,13 @@ def parse(content): """Parse the specified file.""" document = lxml.html.document_fromstring(content) # find all table rows - for tr in document.findall('.//div[@class="box-content"]//tr'): + for tr in document.findall('.//div[@class="uk-container"]//tr'): tds = [clean(td) for td in tr.findall('td')] # table has two columns if len(tds) >= 2 and tds[0] and tds[1]: - yield tds[0], tds[1] + yield tds[0], [bp.strip() for bp in tds[1].split(',') if re.match(r' *[0-9]{2} *', bp)] if len(tds) >= 4 and tds[2] and tds[3]: - yield tds[2], tds[3] + yield tds[2], [bp.strip() for bp in tds[3].split(',') if re.match(r' *[0-9]{2} *', bp)] if __name__ == '__main__': @@ -66,17 +64,18 @@ def parse(content): } results = defaultdict(lambda: defaultdict(set)) # read the states - response = requests.get(state_list_url, headers=headers, verify='update/my_bp.crt') + response = requests.get(state_list_url, headers=headers, timeout=30) response.raise_for_status() for state, bps in parse(response.content): - for bp in bps.split(','): - results[bp.strip()]['state'] = state - results[bp.strip()]['countries'].add('Malaysia') + for bp in bps: + results[bp]['state'] = state + results[bp]['countries'].add('Malaysia') # read the countries - response = requests.get(country_list_url, headers=headers, verify='update/my_bp.crt') + response = requests.get(country_list_url, headers=headers, timeout=30) response.raise_for_status() - for country, bp in parse(response.content): - results[bp]['countries'].add(country) + for country, bps in parse(response.content): + for bp in bps: + results[bp]['countries'].add(country) # print the results print('# generated from National Registration Department of Malaysia, downloaded from') print('# %s' % state_list_url) diff --git a/update/numlist.py b/update/numlist.py index ec5c2094..b71ae476 100755 --- a/update/numlist.py +++ b/update/numlist.py @@ -15,12 +15,10 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script uses introspection to present a list of number formats -suitable to be included in the README and stdnum package description.""" +suitable to be included in the README.md and stdnum package description.""" import os.path import sys @@ -34,20 +32,20 @@ # these are excluded -algortihms = ( +algorithms = ( 'stdnum.verhoeff', 'stdnum.luhn', 'stdnum.iso7064', 'stdnum.damm') def get_number_modules(): """Provide the number modules that are not algorithms.""" for module in util.get_number_modules(): - if module.__name__ not in algortihms and \ + if module.__name__ not in algorithms and \ not module.__name__.startswith('stdnum.iso7064'): yield module if __name__ == '__main__': - print('For README:') + print('For README.md:') print('') for module in get_number_modules(): print(' * %s' % util.get_module_name(module)) diff --git a/update/nz_banks.py b/update/nz_banks.py index bcf20daf..8c1d50ee 100755 --- a/update/nz_banks.py +++ b/update/nz_banks.py @@ -3,7 +3,7 @@ # update/nz_banks.py - script to download Bank list from Bank Branch Register # -# Copyright (C) 2019 Arthur de Jong +# Copyright (C) 2019-2026 Arthur de Jong # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -16,27 +16,30 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads the list of banks with bank codes as used in the New Zealand bank account numbers.""" +import io import re from collections import OrderedDict, defaultdict +import openpyxl import requests -import xlrd # The page that contains a link to the latest XLS version of the codes. download_url = 'https://www.paymentsnz.co.nz/resources/industry-registers/bank-branch-register/download/xlsx/' +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' + + def get_values(sheet): """Return rows from the worksheet as a dict per row.""" - rows = sheet.get_rows() + rows = sheet.iter_rows() # the first row has column names columns = [column.value.lower().replace(' ', '_') for column in next(rows)] # go over rows with values @@ -66,14 +69,14 @@ def branch_list(branches): if __name__ == '__main__': # parse the download as an XLS - response = requests.get(download_url) + response = requests.get(download_url, timeout=30, headers={'User-Agent': user_agent}) response.raise_for_status() content_disposition = response.headers.get('content-disposition', '') filename = re.findall(r'filename=?(.+)"?', content_disposition)[0].strip('"') - workbook = xlrd.open_workbook(file_contents=response.content) - sheet = workbook.sheet_by_index(0) + workbook = openpyxl.load_workbook(io.BytesIO(response.content), read_only=True) + sheet = workbook.worksheets[0] # print header - print('# generated from %s downloaded from ' % filename) + print('# generated from %s downloaded from' % filename) print('# %s' % download_url) # build banks list from spreadsheet banks = defaultdict(dict) diff --git a/update/oui.py b/update/oui.py index 93a62bad..ac1c43e5 100755 --- a/update/oui.py +++ b/update/oui.py @@ -15,9 +15,7 @@ # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301 USA +# License along with this library; if not, see . """This script downloads data from the IEEE web site https://regauth.standards.ieee.org/standards-ra-web/pub/view.html @@ -33,15 +31,19 @@ # The URLs of the MA-L, MA-M and MA-S registries that are downloaded to # construct a full list of manufacturer prefixes. -mal_url = 'http://standards-oui.ieee.org/oui/oui.csv' -mam_url = 'http://standards-oui.ieee.org/oui28/mam.csv' -mas_url = 'http://standards-oui.ieee.org/oui36/oui36.csv' +mal_url = 'https://standards-oui.ieee.org/oui/oui.csv' +mam_url = 'https://standards-oui.ieee.org/oui28/mam.csv' +mas_url = 'https://standards-oui.ieee.org/oui36/oui36.csv' + + +# The user agent that will be passed in requests +user_agent = 'Mozilla/5.0 (compatible; python-stdnum updater; +https://arthurdejong.org/python-stdnum/)' def download_csv(url): """Download the list from the site and provide assignment and organisation names.""" - response = requests.get(url) + response = requests.get(url, timeout=500, headers={'User-Agent': user_agent}) response.raise_for_status() for row in csv.DictReader(line.decode('utf-8') for line in response.iter_lines()): o = row['Organization Name'].strip().replace('"', '%') diff --git a/update/requirements.txt b/update/requirements.txt index 16e367c9..7f2fd1e1 100644 --- a/update/requirements.txt +++ b/update/requirements.txt @@ -1,3 +1,3 @@ lxml +openpyxl requests -xlrd diff --git a/update/update-all.sh b/update/update-all.sh new file mode 100755 index 00000000..79720d0d --- /dev/null +++ b/update/update-all.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# go to directory that this script resides in +cd "$(dirname "$0")" + +set -x + +# run the update scripts to generate data files +./at_postleitzahl.py > ../stdnum/at/postleitzahl.dat +./be_banks.py > ../stdnum/be/banks.dat +./cfi.py > ../stdnum/cfi.dat +./cn_loc.py > ../stdnum/cn/loc.dat +./eu_nace.py > ../stdnum/eu/nace.dat +./gs1_ai.py > ../stdnum/gs1_ai.dat +./iban.py > ../stdnum/iban.dat +./imsi.py > ../stdnum/imsi.dat +./isbn.py > ../stdnum/isbn.dat +./isil.py > ../stdnum/isil.dat +./my_bp.py > ../stdnum/my/bp.dat +./nz_banks.py > ../stdnum/nz/banks.dat +./oui.py > ../stdnum/oui.dat