[
  {
    "path": ".editorconfig",
    "content": "# EditorConfig — https://editorconfig.org\nroot = true\n\n# ── Defaults for all files ────────────────────────────────────────────────────\n[*]\nindent_style             = tab\nindent_size              = 4\nend_of_line              = lf\ncharset                  = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline     = true\n\n# ── Markdown ──────────────────────────────────────────────────────────────────\n# Trailing spaces are significant in Markdown (line break); keep them.\n[*.md]\ntrim_trailing_whitespace = false\nmax_line_length          = off\n\n# ── Shell scripts ─────────────────────────────────────────────────────────────\n[*.sh]\nindent_size = 2\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: Bug Report\ndescription: Report a bug in jFairy\nlabels: [\"bug\"]\nbody:\n  - type: input\n    id: version\n    attributes:\n      label: jFairy version\n      placeholder: \"0.8.0\"\n    validations:\n      required: true\n  - type: input\n    id: java-version\n    attributes:\n      label: Java version\n      placeholder: \"17\"\n    validations:\n      required: true\n  - type: textarea\n    id: description\n    attributes:\n      label: Description\n      description: What happened and what did you expect?\n    validations:\n      required: true\n  - type: textarea\n    id: reproduction\n    attributes:\n      label: How to reproduce\n      description: Minimal code to reproduce the issue\n      render: java\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "name: Feature Request\ndescription: Suggest a new feature or improvement\nlabels: [\"enhancement\"]\nbody:\n  - type: textarea\n    id: description\n    attributes:\n      label: Description\n      description: What would you like to see added or changed?\n    validations:\n      required: true\n  - type: textarea\n    id: use-case\n    attributes:\n      label: Use case\n      description: Why do you need this? What problem does it solve?\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/new_locale.yml",
    "content": "name: New Locale\ndescription: Request or offer support for a new language/country\nlabels: [\"locale\"]\nbody:\n  - type: input\n    id: locale\n    attributes:\n      label: Language / Country\n      placeholder: \"e.g. Turkish (TR)\"\n    validations:\n      required: true\n  - type: checkboxes\n    id: willing\n    attributes:\n      label: Contribution\n      options:\n        - label: I'm willing to submit a PR for this locale\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: Build\n\non:\n  push:\n    branches: [ master ]\n  pull_request:\n    branches: [ master ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: Set up JDK 17\n        uses: actions/setup-java@v4\n        with:\n          java-version: '17'\n          distribution: 'temurin'\n          cache: maven\n      - name: Build and test\n        run: ./mvnw package\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  push:\n    tags:\n      - 'v*'\n\njobs:\n  release:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      - name: Set up JDK 17\n        uses: actions/setup-java@v4\n        with:\n          java-version: '17'\n          distribution: 'temurin'\n          cache: 'maven'\n          server-id: central\n          server-username: MAVEN_USERNAME\n          server-password: MAVEN_PASSWORD\n          gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}\n          gpg-passphrase: GPG_PASSPHRASE\n\n      - name: Extract version from tag\n        id: get_version\n        run: echo \"VERSION=${GITHUB_REF#refs/tags/v}\" >> $GITHUB_OUTPUT\n\n      - name: Build and deploy to Maven Central\n        run: |\n          mvn -B clean deploy -P release \\\n            -Drevision=${{ steps.get_version.outputs.VERSION }} \\\n            -DskipTests\n        env:\n          MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}\n          MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}\n          GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}\n\n      - name: Create GitHub Release\n        uses: softprops/action-gh-release@v1\n        with:\n          generate_release_notes: true\n          files: |\n            **/target/*.jar\n            !**/target/*-sources.jar\n            !**/target/*-javadoc.jar\n"
  },
  {
    "path": ".gitignore",
    "content": "### Maven ###\ntarget/\n\n### IntelliJ ###\n*.iml\n*.ipr\n*.iws\n.idea/\nout/\n\n### Eclipse ###\n/.classpath\n/.project\n/.settings\n/bin/\n\n### Other ###\n.flattened-pom.xml\n"
  },
  {
    "path": ".mvn/wrapper/maven-wrapper.properties",
    "content": "wrapperVersion=3.3.4\ndistributionType=only-script\ndistributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.14/apache-maven-3.9.14-bin.zip\n"
  },
  {
    "path": ".sdkmanrc",
    "content": "# Enable auto-env through sdkman auto-answer\n# sdkman_auto_env=true\njava=17.0.18-tem\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.\n\nWe pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.\n\n## Our Standards\n\nExamples of behavior that contributes to a positive environment for our community include:\n\n* Demonstrating empathy and kindness toward other people\n* Being respectful of differing opinions, viewpoints, and experiences\n* Giving and gracefully accepting constructive feedback\n* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience\n* Focusing on what is best not just for us as individuals, but for the overall community\n\nExamples of unacceptable behavior include:\n\n* The use of sexualized language or imagery, and sexual attention or advances of any kind\n* Trolling, insulting or derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or email address, without their explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Enforcement Responsibilities\n\nCommunity leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.\n\nCommunity leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.\n\n## Scope\n\nThis Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at https://github.com/SkillPanel/jfairy/issues. All complaints will be reviewed and investigated promptly and fairly.\n\nAll community leaders are obligated to respect the privacy and security of the reporter of any incident.\n\n## Enforcement Guidelines\n\nCommunity leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:\n\n### 1. Correction\n\n**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.\n\n**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.\n\n### 2. Warning\n\n**Community Impact**: A violation through a single incident or series of actions.\n\n**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.\n\n### 3. Temporary Ban\n\n**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.\n\n**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.\n\n### 4. Permanent Ban\n\n**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.\n\n**Consequence**: A permanent ban from any sort of public interaction within the community.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].\n\nCommunity Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].\n\nFor answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].\n\n[homepage]: https://www.contributor-covenant.org\n[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html\n[Mozilla CoC]: https://github.com/mozilla/diversity\n[FAQ]: https://www.contributor-covenant.org/faq\n[translations]: https://www.contributor-covenant.org/translations\n\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to jFairy\n\nWe welcome contributions! Here's how to get started.\n\n## Getting Started\n\n1. Fork the repository\n2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/jfairy.git`\n3. Create a branch: `git checkout -b feat/your-feature`\n4. Make your changes\n5. Run tests: `./mvnw test`\n6. Push and open a Pull Request\n\n## Requirements\n\n- Java 17+\n- Maven 4 (included via `./mvnw` wrapper)\n\n## Adding a New Locale\n\n1. Create `src/main/resources/jfairy_XX.yml` with names, cities, streets, etc.\n2. Add provider classes in `src/main/java/.../producer/person/locale/xx/`\n   - `XxAddress` + `XxAddressProvider`\n   - `XxNationalIdentityCardNumberProvider`\n   - `XxPassportNumberProvider`\n3. Add VAT provider in `src/main/java/.../producer/company/locale/xx/`\n4. Add `XX` to `LanguageCode` enum and `Country` enum\n5. Wire in `LocaleSpecificProvidersFactory` (add case + factory method)\n6. Add tests\n\nSee existing locales (e.g., `br`, `sk`) for reference.\n\n## Guidelines\n\n- Follow existing code style\n- Write tests for new functionality\n- Use `baseProducer` for random values (not `Math.random()` or `RandomStringUtils`) to keep seed determinism\n- Keep commits focused — one logical change per commit\n- Use [Conventional Commits](https://www.conventionalcommits.org/) format\n\n## Running Tests\n\n```bash\n./mvnw test\n```\n"
  },
  {
    "path": "LICENSE",
    "content": "Apache License\nVersion 2.0, January 2004\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the terms and conditions for use, reproduction, and\ndistribution as defined by Sections 1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or entity authorized by the copyright\nowner that is granting the License.\n\n\"Legal Entity\" shall mean the union of the acting entity and all other entities\nthat control, are controlled by, or are under common control with that entity.\nFor the purposes of this definition, \"control\" means (i) the power, direct or\nindirect, to cause the direction or management of such entity, whether by\ncontract or otherwise, or (ii) ownership of fifty percent (50%) or more of the\noutstanding shares, or (iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean an individual or Legal Entity exercising\npermissions granted by this License.\n\n\"Source\" form shall mean the preferred form for making modifications, including\nbut not limited to software source code, documentation source, and configuration\nfiles.\n\n\"Object\" form shall mean any form resulting from mechanical transformation or\ntranslation of a Source form, including but not limited to compiled object code,\ngenerated documentation, and conversions to other media types.\n\n\"Work\" shall mean the work of authorship, whether in Source or Object form, made\navailable under the License, as indicated by a copyright notice that is included\nin or attached to the work (an example is provided in the Appendix below).\n\n\"Derivative Works\" shall mean any work, whether in Source or Object form, that\nis based on (or derived from) the Work and for which the editorial revisions,\nannotations, elaborations, or other modifications represent, as a whole, an\noriginal work of authorship. For the purposes of this License, Derivative Works\nshall not include works that remain separable from, or merely link (or bind by\nname) to the interfaces of, the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work of authorship, including the original version\nof the Work and any modifications or additions to that Work or Derivative Works\nthereof, that is intentionally submitted to Licensor for inclusion in the Work\nby the copyright owner or by an individual or Legal Entity authorized to submit\non behalf of the copyright owner. For the purposes of this definition,\n\"submitted\" means any form of electronic, verbal, or written communication sent\nto the Licensor or its representatives, including but not limited to\ncommunication on electronic mailing lists, source code control systems, and\nissue tracking systems that are managed by, or on behalf of, the Licensor for\nthe purpose of discussing and improving the Work, but excluding communication\nthat is conspicuously marked or otherwise designated in writing by the copyright\nowner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any individual or Legal Entity on behalf\nof whom a Contribution has been received by Licensor and subsequently\nincorporated within the Work.\n\n2. Grant of Copyright License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable copyright license to reproduce, prepare Derivative Works of,\npublicly display, publicly perform, sublicense, and distribute the Work and such\nDerivative Works in Source or Object form.\n\n3. Grant of Patent License.\n\nSubject to the terms and conditions of this License, each Contributor hereby\ngrants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,\nirrevocable (except as stated in this section) patent license to make, have\nmade, use, offer to sell, sell, import, and otherwise transfer the Work, where\nsuch license applies only to those patent claims licensable by such Contributor\nthat are necessarily infringed by their Contribution(s) alone or by combination\nof their Contribution(s) with the Work to which such Contribution(s) was\nsubmitted. If You institute patent litigation against any entity (including a\ncross-claim or counterclaim in a lawsuit) alleging that the Work or a\nContribution incorporated within the Work constitutes direct or contributory\npatent infringement, then any patent licenses granted to You under this License\nfor that Work shall terminate as of the date such litigation is filed.\n\n4. Redistribution.\n\nYou may reproduce and distribute copies of the Work or Derivative Works thereof\nin any medium, with or without modifications, and in Source or Object form,\nprovided that You meet the following conditions:\n\nYou must give any other recipients of the Work or Derivative Works a copy of\nthis License; and\nYou must cause any modified files to carry prominent notices stating that You\nchanged the files; and\nYou must retain, in the Source form of any Derivative Works that You distribute,\nall copyright, patent, trademark, and attribution notices from the Source form\nof the Work, excluding those notices that do not pertain to any part of the\nDerivative Works; and\nIf the Work includes a \"NOTICE\" text file as part of its distribution, then any\nDerivative Works that You distribute must include a readable copy of the\nattribution notices contained within such NOTICE file, excluding those notices\nthat do not pertain to any part of the Derivative Works, in at least one of the\nfollowing places: within a NOTICE text file distributed as part of the\nDerivative Works; within the Source form or documentation, if provided along\nwith the Derivative Works; or, within a display generated by the Derivative\nWorks, if and wherever such third-party notices normally appear. The contents of\nthe NOTICE file are for informational purposes only and do not modify the\nLicense. You may add Your own attribution notices within Derivative Works that\nYou distribute, alongside or as an addendum to the NOTICE text from the Work,\nprovided that such additional attribution notices cannot be construed as\nmodifying the License.\nYou may add Your own copyright statement to Your modifications and may provide\nadditional or different license terms and conditions for use, reproduction, or\ndistribution of Your modifications, or for any such Derivative Works as a whole,\nprovided Your use, reproduction, and distribution of the Work otherwise complies\nwith the conditions stated in this License.\n\n5. Submission of Contributions.\n\nUnless You explicitly state otherwise, any Contribution intentionally submitted\nfor inclusion in the Work by You to the Licensor shall be under the terms and\nconditions of this License, without any additional terms or conditions.\nNotwithstanding the above, nothing herein shall supersede or modify the terms of\nany separate license agreement you may have executed with Licensor regarding\nsuch Contributions.\n\n6. Trademarks.\n\nThis License does not grant permission to use the trade names, trademarks,\nservice marks, or product names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty.\n\nUnless required by applicable law or agreed to in writing, Licensor provides the\nWork (and each Contributor provides its Contributions) on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,\nincluding, without limitation, any warranties or conditions of TITLE,\nNON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are\nsolely responsible for determining the appropriateness of using or\nredistributing the Work and assume any risks associated with Your exercise of\npermissions under this License.\n\n8. Limitation of Liability.\n\nIn no event and under no legal theory, whether in tort (including negligence),\ncontract, or otherwise, unless required by applicable law (such as deliberate\nand grossly negligent acts) or agreed to in writing, shall any Contributor be\nliable to You for damages, including any direct, indirect, special, incidental,\nor consequential damages of any character arising as a result of this License or\nout of the use or inability to use the Work (including but not limited to\ndamages for loss of goodwill, work stoppage, computer failure or malfunction, or\nany and all other commercial damages or losses), even if such Contributor has\nbeen advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability.\n\nWhile redistributing the Work or Derivative Works thereof, You may choose to\noffer, and charge a fee for, acceptance of support, warranty, indemnity, or\nother liability obligations and/or rights consistent with this License. However,\nin accepting such obligations, You may act only on Your own behalf and on Your\nsole responsibility, not on behalf of any other Contributor, and only if You\nagree to indemnify, defend, and hold each Contributor harmless for any liability\nincurred by, or claims asserted against, such Contributor by reason of your\naccepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work\n\nTo apply the Apache License to your work, attach the following boilerplate\nnotice, with the fields enclosed by brackets \"[]\" replaced with your own\nidentifying information. (Don't include the brackets!) The text should be\nenclosed in the appropriate comment syntax for the file format. We also\nrecommend that a file or class name and description of purpose be included on\nthe same \"printed page\" as the copyright notice for easier identification within\nthird-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n     http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "# jFairy by Devskiller\n\n[](https://github.com/SkillPanel/jfairy/actions/workflows/build.yml)\n[](https://central.sonatype.com/artifact/com.devskiller/jfairy)\n[](https://javadoc.io/doc/com.devskiller/jfairy)\n\nJava fake data generator. According to Wikipedia:\n\n> Fairyland, in folklore, is the fabulous land or abode of fairies or fays.\n\n## Installation\n\nAdd the following dependency to your `pom.xml`:\n\n```xml\n<dependency>\n    <groupId>com.devskiller</groupId>\n    <artifactId>jfairy</artifactId>\n    <version>0.8.2</version>\n</dependency>\n```\n\n## Usage\n\n### Creating simple objects\n\n```java\nFairy fairy = Fairy.create();\nPerson person = fairy.person();\n\nSystem.out.println(person.getFirstName());\n// Chloe\nSystem.out.println(person.getLastName());\n// Barker\nSystem.out.println(person.getEmail());\n// barker@yahoo.com\nSystem.out.println(person.getTelephoneNumber());\n// 690-950-802\nSystem.out.println(person.getJobTitle());\n// Software Developer\n\nPerson adultMale = fairy.person(PersonProperties.male(), PersonProperties.minAge(21));\nSystem.out.println(adultMale.isMale());\n// true\nSystem.out.println(adultMale.getDateOfBirth());\n// at least 21 years earlier\n```\n\n### Creating related objects\n\n```java\nFairy fairy = Fairy.create();\nCompany company = fairy.company();\nSystem.out.println(company.getName());\n// Robuten Associates\nSystem.out.println(company.getUrl());\n// http://www.robuteniaassociates.com\n\nPerson salesman = fairy.person(PersonProperties.withCompany(company));\nSystem.out.println(salesman.getFullName());\n// Juan Camacho\nSystem.out.println(salesman.getCompanyEmail());\n// juan.camacho@robuteniaassociates.com\n```\n\n## Supported locales\n\n| Locale               | Language tag |\n|:---------------------|:------------:|\n| English (default)    |     `en`     |\n| Polish               |     `pl`     |\n| German               |     `de`     |\n| French               |     `fr`     |\n| Spanish              |     `es`     |\n| Swedish              |     `sv`     |\n| Chinese              |     `zh`     |\n| Georgian             |     `ka`     |\n| Italian              |     `it`     |\n| Brazilian Portuguese |     `br`     |\n| Slovak               |     `sk`     |\n| Turkish              |     `tr`     |\n\n```java\nFairy enFairy = Fairy.create();\n// Locale.ENGLISH is default\nFairy plFairy = Fairy.create(Locale.forLanguageTag(\"pl\"));\n// Polish version\nFairy brFairy = Fairy.create(Locale.forLanguageTag(\"br\"));\n// Brazilian version\n```\n\n## Unique values\n\n```java\nUniqueFairy unique = fairy.unique();\nPerson p1 = unique.person();  // unique by email\nPerson p2 = unique.person();  // different email than p1\nCompany c = unique.company(); // unique by name\n```\n\nFor custom uniqueness keys:\n\n```java\nUniqueEnforcer<Person> unique = UniqueEnforcer.of(fairy::person, Person::getFullName);\nPerson p = unique.next();\n```\n\n## Thread safety\n\n`Fairy` objects are not designed for concurrent use by multiple threads.\nIt is recommended to create a separate `Fairy` instance for each thread.\n\nWhile some methods might appear safe, the underlying `Random` implementation can lead to contention and poor performance. Creating dedicated instances ensures both thread safety and optimal execution speed.\n\n## JUnit 5 Extension\n\nIf you use JUnit 5, check out [jfairy-junit-extension](https://github.com/SkillPanel/jfairy-junit-extension) — an extension that allows injecting jFairy-generated objects directly into test method parameters.\n\n## Building\n\nThis project uses Maven and can be built using the provided wrapper:\n\n```bash\n./mvnw\n```\n\n"
  },
  {
    "path": "mvnw",
    "content": "#!/bin/sh\n# ----------------------------------------------------------------------------\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n# ----------------------------------------------------------------------------\n\n# ----------------------------------------------------------------------------\n# Apache Maven Wrapper startup batch script, version 3.3.4\n#\n# Optional ENV vars\n# -----------------\n#   JAVA_HOME - location of a JDK home dir, required when download maven via java source\n#   MVNW_REPOURL - repo url base for downloading maven distribution\n#   MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven\n#   MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output\n# ----------------------------------------------------------------------------\n\nset -euf\n[ \"${MVNW_VERBOSE-}\" != debug ] || set -x\n\n# OS specific support.\nnative_path() { printf %s\\\\n \"$1\"; }\ncase \"$(uname)\" in\nCYGWIN* | MINGW*)\n  [ -z \"${JAVA_HOME-}\" ] || JAVA_HOME=\"$(cygpath --unix \"$JAVA_HOME\")\"\n  native_path() { cygpath --path --windows \"$1\"; }\n  ;;\nesac\n\n# set JAVACMD and JAVACCMD\nset_java_home() {\n  # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched\n  if [ -n \"${JAVA_HOME-}\" ]; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ]; then\n      # IBM's JDK on AIX uses strange locations for the executables\n      JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n      JAVACCMD=\"$JAVA_HOME/jre/sh/javac\"\n    else\n      JAVACMD=\"$JAVA_HOME/bin/java\"\n      JAVACCMD=\"$JAVA_HOME/bin/javac\"\n\n      if [ ! -x \"$JAVACMD\" ] || [ ! -x \"$JAVACCMD\" ]; then\n        echo \"The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run.\" >&2\n        echo \"JAVA_HOME is set to \\\"$JAVA_HOME\\\", but \\\"\\$JAVA_HOME/bin/java\\\" or \\\"\\$JAVA_HOME/bin/javac\\\" does not exist.\" >&2\n        return 1\n      fi\n    fi\n  else\n    JAVACMD=\"$(\n      'set' +e\n      'unset' -f command 2>/dev/null\n      'command' -v java\n    )\" || :\n    JAVACCMD=\"$(\n      'set' +e\n      'unset' -f command 2>/dev/null\n      'command' -v javac\n    )\" || :\n\n    if [ ! -x \"${JAVACMD-}\" ] || [ ! -x \"${JAVACCMD-}\" ]; then\n      echo \"The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run.\" >&2\n      return 1\n    fi\n  fi\n}\n\n# hash string like Java String::hashCode\nhash_string() {\n  str=\"${1:-}\" h=0\n  while [ -n \"$str\" ]; do\n    char=\"${str%\"${str#?}\"}\"\n    h=$(((h * 31 + $(LC_CTYPE=C printf %d \"'$char\")) % 4294967296))\n    str=\"${str#?}\"\n  done\n  printf %x\\\\n $h\n}\n\nverbose() { :; }\n[ \"${MVNW_VERBOSE-}\" != true ] || verbose() { printf %s\\\\n \"${1-}\"; }\n\ndie() {\n  printf %s\\\\n \"$1\" >&2\n  exit 1\n}\n\ntrim() {\n  # MWRAPPER-139:\n  #   Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.\n  #   Needed for removing poorly interpreted newline sequences when running in more\n  #   exotic environments such as mingw bash on Windows.\n  printf \"%s\" \"${1}\" | tr -d '[:space:]'\n}\n\nscriptDir=\"$(dirname \"$0\")\"\nscriptName=\"$(basename \"$0\")\"\n\n# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties\nwhile IFS=\"=\" read -r key value; do\n  case \"${key-}\" in\n  distributionUrl) distributionUrl=$(trim \"${value-}\") ;;\n  distributionSha256Sum) distributionSha256Sum=$(trim \"${value-}\") ;;\n  esac\ndone <\"$scriptDir/.mvn/wrapper/maven-wrapper.properties\"\n[ -n \"${distributionUrl-}\" ] || die \"cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties\"\n\ncase \"${distributionUrl##*/}\" in\nmaven-mvnd-*bin.*)\n  MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/\n  case \"${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)\" in\n  *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;\n  :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;\n  :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;\n  :Linux*x86_64*) distributionPlatform=linux-amd64 ;;\n  *)\n    echo \"Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version\" >&2\n    distributionPlatform=linux-amd64\n    ;;\n  esac\n  distributionUrl=\"${distributionUrl%-bin.*}-$distributionPlatform.zip\"\n  ;;\nmaven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;\n*) MVN_CMD=\"mvn${scriptName#mvnw}\" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;\nesac\n\n# apply MVNW_REPOURL and calculate MAVEN_HOME\n# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>\n[ -z \"${MVNW_REPOURL-}\" ] || distributionUrl=\"$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*\"$_MVNW_REPO_PATTERN\"}\"\ndistributionUrlName=\"${distributionUrl##*/}\"\ndistributionUrlNameMain=\"${distributionUrlName%.*}\"\ndistributionUrlNameMain=\"${distributionUrlNameMain%-bin}\"\nMAVEN_USER_HOME=\"${MAVEN_USER_HOME:-${HOME}/.m2}\"\nMAVEN_HOME=\"${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string \"$distributionUrl\")\"\n\nexec_maven() {\n  unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :\n  exec \"$MAVEN_HOME/bin/$MVN_CMD\" \"$@\" || die \"cannot exec $MAVEN_HOME/bin/$MVN_CMD\"\n}\n\nif [ -d \"$MAVEN_HOME\" ]; then\n  verbose \"found existing MAVEN_HOME at $MAVEN_HOME\"\n  exec_maven \"$@\"\nfi\n\ncase \"${distributionUrl-}\" in\n*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;\n*) die \"distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'\" ;;\nesac\n\n# prepare tmp dir\nif TMP_DOWNLOAD_DIR=\"$(mktemp -d)\" && [ -d \"$TMP_DOWNLOAD_DIR\" ]; then\n  clean() { rm -rf -- \"$TMP_DOWNLOAD_DIR\"; }\n  trap clean HUP INT TERM EXIT\nelse\n  die \"cannot create temp dir\"\nfi\n\nmkdir -p -- \"${MAVEN_HOME%/*}\"\n\n# Download and Install Apache Maven\nverbose \"Couldn't find MAVEN_HOME, downloading and installing it ...\"\nverbose \"Downloading from: $distributionUrl\"\nverbose \"Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName\"\n\n# select .zip or .tar.gz\nif ! command -v unzip >/dev/null; then\n  distributionUrl=\"${distributionUrl%.zip}.tar.gz\"\n  distributionUrlName=\"${distributionUrl##*/}\"\nfi\n\n# verbose opt\n__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''\n[ \"${MVNW_VERBOSE-}\" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v\n\n# normalize http auth\ncase \"${MVNW_PASSWORD:+has-password}\" in\n'') MVNW_USERNAME='' MVNW_PASSWORD='' ;;\nhas-password) [ -n \"${MVNW_USERNAME-}\" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;\nesac\n\nif [ -z \"${MVNW_USERNAME-}\" ] && command -v wget >/dev/null; then\n  verbose \"Found wget ... using wget\"\n  wget ${__MVNW_QUIET_WGET:+\"$__MVNW_QUIET_WGET\"} \"$distributionUrl\" -O \"$TMP_DOWNLOAD_DIR/$distributionUrlName\" || die \"wget: Failed to fetch $distributionUrl\"\nelif [ -z \"${MVNW_USERNAME-}\" ] && command -v curl >/dev/null; then\n  verbose \"Found curl ... using curl\"\n  curl ${__MVNW_QUIET_CURL:+\"$__MVNW_QUIET_CURL\"} -f -L -o \"$TMP_DOWNLOAD_DIR/$distributionUrlName\" \"$distributionUrl\" || die \"curl: Failed to fetch $distributionUrl\"\nelif set_java_home; then\n  verbose \"Falling back to use Java to download\"\n  javaSource=\"$TMP_DOWNLOAD_DIR/Downloader.java\"\n  targetZip=\"$TMP_DOWNLOAD_DIR/$distributionUrlName\"\n  cat >\"$javaSource\" <<-END\n\tpublic class Downloader extends java.net.Authenticator\n\t{\n\t  protected java.net.PasswordAuthentication getPasswordAuthentication()\n\t  {\n\t    return new java.net.PasswordAuthentication( System.getenv( \"MVNW_USERNAME\" ), System.getenv( \"MVNW_PASSWORD\" ).toCharArray() );\n\t  }\n\t  public static void main( String[] args ) throws Exception\n\t  {\n\t    setDefault( new Downloader() );\n\t    java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );\n\t  }\n\t}\n\tEND\n  # For Cygwin/MinGW, switch paths to Windows format before running javac and java\n  verbose \" - Compiling Downloader.java ...\"\n  \"$(native_path \"$JAVACCMD\")\" \"$(native_path \"$javaSource\")\" || die \"Failed to compile Downloader.java\"\n  verbose \" - Running Downloader.java ...\"\n  \"$(native_path \"$JAVACMD\")\" -cp \"$(native_path \"$TMP_DOWNLOAD_DIR\")\" Downloader \"$distributionUrl\" \"$(native_path \"$targetZip\")\"\nfi\n\n# If specified, validate the SHA-256 sum of the Maven distribution zip file\nif [ -n \"${distributionSha256Sum-}\" ]; then\n  distributionSha256Result=false\n  if [ \"$MVN_CMD\" = mvnd.sh ]; then\n    echo \"Checksum validation is not supported for maven-mvnd.\" >&2\n    echo \"Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties.\" >&2\n    exit 1\n  elif command -v sha256sum >/dev/null; then\n    if echo \"$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName\" | sha256sum -c - >/dev/null 2>&1; then\n      distributionSha256Result=true\n    fi\n  elif command -v shasum >/dev/null; then\n    if echo \"$distributionSha256Sum  $TMP_DOWNLOAD_DIR/$distributionUrlName\" | shasum -a 256 -c >/dev/null 2>&1; then\n      distributionSha256Result=true\n    fi\n  else\n    echo \"Checksum validation was requested but neither 'sha256sum' or 'shasum' are available.\" >&2\n    echo \"Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties.\" >&2\n    exit 1\n  fi\n  if [ $distributionSha256Result = false ]; then\n    echo \"Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised.\" >&2\n    echo \"If you updated your Maven version, you need to update the specified distributionSha256Sum property.\" >&2\n    exit 1\n  fi\nfi\n\n# unzip and move\nif command -v unzip >/dev/null; then\n  unzip ${__MVNW_QUIET_UNZIP:+\"$__MVNW_QUIET_UNZIP\"} \"$TMP_DOWNLOAD_DIR/$distributionUrlName\" -d \"$TMP_DOWNLOAD_DIR\" || die \"failed to unzip\"\nelse\n  tar xzf${__MVNW_QUIET_TAR:+\"$__MVNW_QUIET_TAR\"} \"$TMP_DOWNLOAD_DIR/$distributionUrlName\" -C \"$TMP_DOWNLOAD_DIR\" || die \"failed to untar\"\nfi\n\n# Find the actual extracted directory name (handles snapshots where filename != directory name)\nactualDistributionDir=\"\"\n\n# First try the expected directory name (for regular distributions)\nif [ -d \"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain\" ]; then\n  if [ -f \"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD\" ]; then\n    actualDistributionDir=\"$distributionUrlNameMain\"\n  fi\nfi\n\n# If not found, search for any directory with the Maven executable (for snapshots)\nif [ -z \"$actualDistributionDir\" ]; then\n  # enable globbing to iterate over items\n  set +f\n  for dir in \"$TMP_DOWNLOAD_DIR\"/*; do\n    if [ -d \"$dir\" ]; then\n      if [ -f \"$dir/bin/$MVN_CMD\" ]; then\n        actualDistributionDir=\"$(basename \"$dir\")\"\n        break\n      fi\n    fi\n  done\n  set -f\nfi\n\nif [ -z \"$actualDistributionDir\" ]; then\n  verbose \"Contents of $TMP_DOWNLOAD_DIR:\"\n  verbose \"$(ls -la \"$TMP_DOWNLOAD_DIR\")\"\n  die \"Could not find Maven distribution directory in extracted archive\"\nfi\n\nverbose \"Found extracted Maven distribution directory: $actualDistributionDir\"\nprintf %s\\\\n \"$distributionUrl\" >\"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url\"\nmv -- \"$TMP_DOWNLOAD_DIR/$actualDistributionDir\" \"$MAVEN_HOME\" || [ -d \"$MAVEN_HOME\" ] || die \"fail to move MAVEN_HOME\"\n\nclean || :\nexec_maven \"$@\"\n"
  },
  {
    "path": "mvnw.cmd",
    "content": "<# : batch portion\r\n@REM ----------------------------------------------------------------------------\r\n@REM Licensed to the Apache Software Foundation (ASF) under one\r\n@REM or more contributor license agreements.  See the NOTICE file\r\n@REM distributed with this work for additional information\r\n@REM regarding copyright ownership.  The ASF licenses this file\r\n@REM to you under the Apache License, Version 2.0 (the\r\n@REM \"License\"); you may not use this file except in compliance\r\n@REM with the License.  You may obtain a copy of the License at\r\n@REM\r\n@REM    http://www.apache.org/licenses/LICENSE-2.0\r\n@REM\r\n@REM Unless required by applicable law or agreed to in writing,\r\n@REM software distributed under the License is distributed on an\r\n@REM \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n@REM KIND, either express or implied.  See the License for the\r\n@REM specific language governing permissions and limitations\r\n@REM under the License.\r\n@REM ----------------------------------------------------------------------------\r\n\r\n@REM ----------------------------------------------------------------------------\r\n@REM Apache Maven Wrapper startup batch script, version 3.3.4\r\n@REM\r\n@REM Optional ENV vars\r\n@REM   MVNW_REPOURL - repo url base for downloading maven distribution\r\n@REM   MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven\r\n@REM   MVNW_VERBOSE - true: enable verbose log; others: silence the output\r\n@REM ----------------------------------------------------------------------------\r\n\r\n@IF \"%__MVNW_ARG0_NAME__%\"==\"\" (SET __MVNW_ARG0_NAME__=%~nx0)\r\n@SET __MVNW_CMD__=\r\n@SET __MVNW_ERROR__=\r\n@SET __MVNW_PSMODULEP_SAVE=%PSModulePath%\r\n@SET PSModulePath=\r\n@FOR /F \"usebackq tokens=1* delims==\" %%A IN (`powershell -noprofile \"& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}\"`) DO @(\r\n  IF \"%%A\"==\"MVN_CMD\" (set __MVNW_CMD__=%%B) ELSE IF \"%%B\"==\"\" (echo %%A) ELSE (echo %%A=%%B)\r\n)\r\n@SET PSModulePath=%__MVNW_PSMODULEP_SAVE%\r\n@SET __MVNW_PSMODULEP_SAVE=\r\n@SET __MVNW_ARG0_NAME__=\r\n@SET MVNW_USERNAME=\r\n@SET MVNW_PASSWORD=\r\n@IF NOT \"%__MVNW_CMD__%\"==\"\" (\"%__MVNW_CMD__%\" %*)\r\n@echo Cannot start maven from wrapper >&2 && exit /b 1\r\n@GOTO :EOF\r\n: end batch / begin powershell #>\r\n\r\n$ErrorActionPreference = \"Stop\"\r\nif ($env:MVNW_VERBOSE -eq \"true\") {\r\n  $VerbosePreference = \"Continue\"\r\n}\r\n\r\n# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties\r\n$distributionUrl = (Get-Content -Raw \"$scriptDir/.mvn/wrapper/maven-wrapper.properties\" | ConvertFrom-StringData).distributionUrl\r\nif (!$distributionUrl) {\r\n  Write-Error \"cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties\"\r\n}\r\n\r\nswitch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) {\r\n  \"maven-mvnd-*\" {\r\n    $USE_MVND = $true\r\n    $distributionUrl = $distributionUrl -replace '-bin\\.[^.]*$',\"-windows-amd64.zip\"\r\n    $MVN_CMD = \"mvnd.cmd\"\r\n    break\r\n  }\r\n  default {\r\n    $USE_MVND = $false\r\n    $MVN_CMD = $script -replace '^mvnw','mvn'\r\n    break\r\n  }\r\n}\r\n\r\n# apply MVNW_REPOURL and calculate MAVEN_HOME\r\n# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>\r\nif ($env:MVNW_REPOURL) {\r\n  $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { \"/org/apache/maven/\" } else { \"/maven/mvnd/\" }\r\n  $distributionUrl = \"$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace \"^.*$MVNW_REPO_PATTERN\",'')\"\r\n}\r\n$distributionUrlName = $distributionUrl -replace '^.*/',''\r\n$distributionUrlNameMain = $distributionUrlName -replace '\\.[^.]*$','' -replace '-bin$',''\r\n\r\n$MAVEN_M2_PATH = \"$HOME/.m2\"\r\nif ($env:MAVEN_USER_HOME) {\r\n  $MAVEN_M2_PATH = \"$env:MAVEN_USER_HOME\"\r\n}\r\n\r\nif (-not (Test-Path -Path $MAVEN_M2_PATH)) {\r\n    New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null\r\n}\r\n\r\n$MAVEN_WRAPPER_DISTS = $null\r\nif ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) {\r\n  $MAVEN_WRAPPER_DISTS = \"$MAVEN_M2_PATH/wrapper/dists\"\r\n} else {\r\n  $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + \"/wrapper/dists\"\r\n}\r\n\r\n$MAVEN_HOME_PARENT = \"$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain\"\r\n$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString(\"x2\")}) -join ''\r\n$MAVEN_HOME = \"$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME\"\r\n\r\nif (Test-Path -Path \"$MAVEN_HOME\" -PathType Container) {\r\n  Write-Verbose \"found existing MAVEN_HOME at $MAVEN_HOME\"\r\n  Write-Output \"MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD\"\r\n  exit $?\r\n}\r\n\r\nif (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) {\r\n  Write-Error \"distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl\"\r\n}\r\n\r\n# prepare tmp dir\r\n$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile\r\n$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path \"$TMP_DOWNLOAD_DIR_HOLDER.dir\"\r\n$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null\r\ntrap {\r\n  if ($TMP_DOWNLOAD_DIR.Exists) {\r\n    try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }\r\n    catch { Write-Warning \"Cannot remove $TMP_DOWNLOAD_DIR\" }\r\n  }\r\n}\r\n\r\nNew-Item -Itemtype Directory -Path \"$MAVEN_HOME_PARENT\" -Force | Out-Null\r\n\r\n# Download and Install Apache Maven\r\nWrite-Verbose \"Couldn't find MAVEN_HOME, downloading and installing it ...\"\r\nWrite-Verbose \"Downloading from: $distributionUrl\"\r\nWrite-Verbose \"Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName\"\r\n\r\n$webclient = New-Object System.Net.WebClient\r\nif ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) {\r\n  $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD)\r\n}\r\n[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12\r\n$webclient.DownloadFile($distributionUrl, \"$TMP_DOWNLOAD_DIR/$distributionUrlName\") | Out-Null\r\n\r\n# If specified, validate the SHA-256 sum of the Maven distribution zip file\r\n$distributionSha256Sum = (Get-Content -Raw \"$scriptDir/.mvn/wrapper/maven-wrapper.properties\" | ConvertFrom-StringData).distributionSha256Sum\r\nif ($distributionSha256Sum) {\r\n  if ($USE_MVND) {\r\n    Write-Error \"Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties.\"\r\n  }\r\n  Import-Module $PSHOME\\Modules\\Microsoft.PowerShell.Utility -Function Get-FileHash\r\n  if ((Get-FileHash \"$TMP_DOWNLOAD_DIR/$distributionUrlName\" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) {\r\n    Write-Error \"Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property.\"\r\n  }\r\n}\r\n\r\n# unzip and move\r\nExpand-Archive \"$TMP_DOWNLOAD_DIR/$distributionUrlName\" -DestinationPath \"$TMP_DOWNLOAD_DIR\" | Out-Null\r\n\r\n# Find the actual extracted directory name (handles snapshots where filename != directory name)\r\n$actualDistributionDir = \"\"\r\n\r\n# First try the expected directory name (for regular distributions)\r\n$expectedPath = Join-Path \"$TMP_DOWNLOAD_DIR\" \"$distributionUrlNameMain\"\r\n$expectedMvnPath = Join-Path \"$expectedPath\" \"bin/$MVN_CMD\"\r\nif ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) {\r\n  $actualDistributionDir = $distributionUrlNameMain\r\n}\r\n\r\n# If not found, search for any directory with the Maven executable (for snapshots)\r\nif (!$actualDistributionDir) {\r\n  Get-ChildItem -Path \"$TMP_DOWNLOAD_DIR\" -Directory | ForEach-Object {\r\n    $testPath = Join-Path $_.FullName \"bin/$MVN_CMD\"\r\n    if (Test-Path -Path $testPath -PathType Leaf) {\r\n      $actualDistributionDir = $_.Name\r\n    }\r\n  }\r\n}\r\n\r\nif (!$actualDistributionDir) {\r\n  Write-Error \"Could not find Maven distribution directory in extracted archive\"\r\n}\r\n\r\nWrite-Verbose \"Found extracted Maven distribution directory: $actualDistributionDir\"\r\nRename-Item -Path \"$TMP_DOWNLOAD_DIR/$actualDistributionDir\" -NewName $MAVEN_HOME_NAME | Out-Null\r\ntry {\r\n  Move-Item -Path \"$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME\" -Destination $MAVEN_HOME_PARENT | Out-Null\r\n} catch {\r\n  if (! (Test-Path -Path \"$MAVEN_HOME\" -PathType Container)) {\r\n    Write-Error \"fail to move MAVEN_HOME\"\r\n  }\r\n} finally {\r\n  try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null }\r\n  catch { Write-Warning \"Cannot remove $TMP_DOWNLOAD_DIR\" }\r\n}\r\n\r\nWrite-Output \"MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD\"\r\n"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\t<modelVersion>4.0.0</modelVersion>\n\n\t<groupId>com.devskiller</groupId>\n\t<artifactId>jfairy</artifactId>\n\t<version>${revision}</version>\n\n\t<name>jFairy</name>\n\t<description>Java fake data generator</description>\n\t<url>https://github.com/Devskiller/jfairy</url>\n\t<inceptionYear>2013</inceptionYear>\n\n\t<licenses>\n\t\t<license>\n\t\t\t<name>Apache 2</name>\n\t\t\t<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>\n\t\t\t<distribution>repo</distribution>\n\t\t\t<comments>A business-friendly OSS license</comments>\n\t\t</license>\n\t</licenses>\n\n\t<developers>\n\t\t<developer>\n\t\t\t<id>jkubrynski</id>\n\t\t\t<name>Jakub Kubrynski</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>mariuszs</id>\n\t\t\t<name>Mariusz Smykuła</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>szpak</id>\n\t\t\t<name>Marcin Zajączkowski</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>olga.maciaszek</id>\n\t\t\t<name>Olga Maciaszek-Sharma</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>kdebski85</id>\n\t\t\t<name>Krzysztof Dębski</name>\n\t\t</developer>\n\t\t<developer>\n\t\t\t<id>spannm</id>\n\t\t\t<name>Markus Spann</name>\n\t\t</developer>\n\t</developers>\n\n\t<scm>\n\t\t<connection>scm:git:https://github.com/Devskiller/jfairy</connection>\n\t\t<developerConnection>scm:git:git@github.com:Devskiller/jfairy</developerConnection>\n\t\t<url>https://github.com/Devskiller/jfairy</url>\n\t\t<tag>HEAD</tag>\n\t</scm>\n\n\t<issueManagement>\n\t\t<system>GitHub Issues</system>\n\t\t<url>https://github.com/Devskiller/jfairy/issues</url>\n\t</issueManagement>\n\n\t<ciManagement>\n\t\t<system>GitHub Actions</system>\n\t\t<url>https://github.com/SkillPanel/jfairy/actions</url>\n\t</ciManagement>\n\n\t<distributionManagement>\n\t\t<repository>\n\t\t\t<id>central</id>\n\t\t\t<name>Central Repository</name>\n\t\t\t<url>https://central.sonatype.com/api/v1/publisher</url>\n\t\t</repository>\n\t\t<snapshotRepository>\n\t\t\t<id>central</id>\n\t\t\t<name>Central Repository Snapshots</name>\n\t\t\t<url>https://central.sonatype.com/api/v1/publisher</url>\n\t\t</snapshotRepository>\n\t</distributionManagement>\n\n\t<properties>\n\t\t<revision>0.8.3-SNAPSHOT</revision>\n\n\t\t<javaVersion>17</javaVersion>\n\n\t\t<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\t\t<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n\n\t\t<maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss z</maven.build.timestamp.format>\n\n\t\t<!-- Dependency versions (ordered by usage) -->\n\t\t<dep.snakeyaml-engine.version>3.0.1</dep.snakeyaml-engine.version>\n\t\t<dep.jspecify.version>1.0.0</dep.jspecify.version>\n\t\t<dep.slf4j.version>2.0.17</dep.slf4j.version>\n\t\t<dep.iban-commons.version>1.8.4</dep.iban-commons.version>\n\t\t<dep.commons-validator.version>1.10.1</dep.commons-validator.version>\n\t\t<dep.spock.version>2.4-groovy-4.0</dep.spock.version>\n\t\t<dep.groovy.version>4.0.31</dep.groovy.version>\n\t\t<dep.byte-buddy.version>1.18.8</dep.byte-buddy.version>\n\t\t<dep.objenesis.version>3.5</dep.objenesis.version>\n\t\t<dep.junit-jupiter.version>5.14.3</dep.junit-jupiter.version>\n\n\t\t<!-- Plugin versions (ordered alphabetically) -->\n\t\t<dep.plugin.build-helper.version>3.6.1</dep.plugin.build-helper.version>\n\t\t<dep.plugin.central-publishing.version>0.10.0</dep.plugin.central-publishing.version>\n\t\t<dep.plugin.checkstyle.version>3.6.0</dep.plugin.checkstyle.version>\n\t\t<dep.plugin.compiler.version>3.15.0</dep.plugin.compiler.version>\n\t\t<dep.plugin.coveralls.version>4.3.0</dep.plugin.coveralls.version>\n\t\t<dep.plugin.deploy.version>3.1.4</dep.plugin.deploy.version>\n\t\t<dep.plugin.enforcer.version>3.6.2</dep.plugin.enforcer.version>\n\t\t<!-- last error-prone version compatible with Java 17; 2.43.0+ requires Java 21 -->\n\t\t<dep.plugin.error-prone.version>2.42.0</dep.plugin.error-prone.version>\n\t\t<dep.plugin.flatten.version>1.7.3</dep.plugin.flatten.version>\n\t\t<dep.plugin.gmavenplus.version>4.3.1</dep.plugin.gmavenplus.version>\n\t\t<dep.plugin.gpg.version>3.2.8</dep.plugin.gpg.version>\n\t\t<dep.plugin.jacoco.version>0.8.14</dep.plugin.jacoco.version>\n\t\t<dep.plugin.javadoc.version>3.12.0</dep.plugin.javadoc.version>\n\t\t<dep.plugin.jar.version>3.5.0</dep.plugin.jar.version>\n\t\t<dep.plugin.release.version>3.3.1</dep.plugin.release.version>\n\t\t<dep.plugin.resources.version>3.5.0</dep.plugin.resources.version>\n\t\t<dep.plugin.sortpom.version>4.0.0</dep.plugin.sortpom.version>\n\t\t<dep.plugin.source.version>3.4.0</dep.plugin.source.version>\n\t\t<dep.plugin.surefire.version>3.5.5</dep.plugin.surefire.version>\n\t\t<dep.plugin.versions.version>2.21.0</dep.plugin.versions.version>\n\t</properties>\n\n\t<dependencies>\n\t\t<dependency>\n\t\t\t<groupId>org.snakeyaml</groupId>\n\t\t\t<artifactId>snakeyaml-engine</artifactId>\n\t\t\t<version>${dep.snakeyaml-engine.version}</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.jspecify</groupId>\n\t\t\t<artifactId>jspecify</artifactId>\n\t\t\t<version>${dep.jspecify.version}</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>slf4j-api</artifactId>\n\t\t\t<version>${dep.slf4j.version}</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>de.speedbanking</groupId>\n\t\t\t<artifactId>iban-commons</artifactId>\n\t\t\t<version>${dep.iban-commons.version}</version>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>commons-validator</groupId>\n\t\t\t<artifactId>commons-validator</artifactId>\n\t\t\t<version>${dep.commons-validator.version}</version>\n\t\t\t<scope>test</scope>\n\t\t\t<exclusions>\n\t\t\t\t<exclusion>\n\t\t\t\t\t<groupId>commons-logging</groupId>\n\t\t\t\t\t<artifactId>commons-logging</artifactId>\n\t\t\t\t</exclusion>\n\t\t\t</exclusions>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.slf4j</groupId>\n\t\t\t<artifactId>slf4j-simple</artifactId>\n\t\t\t<version>${dep.slf4j.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.spockframework</groupId>\n\t\t\t<artifactId>spock-core</artifactId>\n\t\t\t<version>${dep.spock.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.apache.groovy</groupId>\n\t\t\t<artifactId>groovy</artifactId>\n\t\t\t<version>${dep.groovy.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>net.bytebuddy</groupId>\n\t\t\t<artifactId>byte-buddy</artifactId>\n\t\t\t<version>${dep.byte-buddy.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.objenesis</groupId>\n\t\t\t<artifactId>objenesis</artifactId>\n\t\t\t<version>${dep.objenesis.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t\t<dependency>\n\t\t\t<groupId>org.junit.jupiter</groupId>\n\t\t\t<artifactId>junit-jupiter</artifactId>\n\t\t\t<version>${dep.junit-jupiter.version}</version>\n\t\t\t<scope>test</scope>\n\t\t</dependency>\n\t</dependencies>\n\n\t<build>\n\n\t\t<defaultGoal>clean verify</defaultGoal>\n\n\t\t<pluginManagement>\n\t\t\t<plugins>\n\t\t\t\t<plugin>\n\t\t\t\t\t<groupId>com.github.ekryd.sortpom</groupId>\n\t\t\t\t\t<artifactId>sortpom-maven-plugin</artifactId>\n\t\t\t\t\t<version>${dep.plugin.sortpom.version}</version>\n\t\t\t\t\t<configuration>\n\t\t\t\t\t\t<createBackupFile>false</createBackupFile>\n\t\t\t\t\t\t<expandEmptyElements>false</expandEmptyElements>\n\t\t\t\t\t\t<nrOfIndentSpace>-1</nrOfIndentSpace>\n\t\t\t\t\t</configuration>\n\t\t\t\t</plugin>\n\t\t\t</plugins>\n\t\t</pluginManagement>\n\n\t\t<plugins>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-resources-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.resources.version}</version>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>build-helper-maven-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.build-helper.version}</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>add-test-source</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>add-test-source</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<phase>generate-test-sources</phase>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<sources>\n\t\t\t\t\t\t\t\t<source>${project.basedir}/src/test/java</source>\n\t\t\t\t\t\t\t</sources>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.compiler.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<release>${javaVersion}</release>\n\t\t\t\t\t<fork>true</fork>\n\t\t\t\t\t<showWarnings>true</showWarnings>\n\t\t\t\t\t<compilerArgs>\n\t\t\t\t\t\t<arg>-XDcompilePolicy=simple</arg>\n\t\t\t\t\t\t<arg>-XDaddTypeAnnotationsToSymbol=true</arg>\n\n\t\t\t\t\t\t<arg>--should-stop=ifError=FLOW</arg>\n\n\t\t\t\t\t\t<arg>-Xplugin:ErrorProne -Xep:MissingSummary:WARN -Xep:InvalidBlockTag:WARN</arg>\n\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg>\n\t\t\t\t\t\t<arg>-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED</arg>\n\t\t\t\t\t</compilerArgs>\n\t\t\t\t\t<annotationProcessorPaths>\n\t\t\t\t\t\t<path>\n\t\t\t\t\t\t\t<groupId>com.google.errorprone</groupId>\n\t\t\t\t\t\t\t<artifactId>error_prone_core</artifactId>\n\t\t\t\t\t\t\t<version>${dep.plugin.error-prone.version}</version>\n\t\t\t\t\t\t</path>\n\t\t\t\t\t</annotationProcessorPaths>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.gmavenplus</groupId>\n\t\t\t\t<artifactId>gmavenplus-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.gmavenplus.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<testSources>\n\t\t\t\t\t\t<testSource>\n\t\t\t\t\t\t\t<directory>${project.basedir}/src/test/groovy</directory>\n\t\t\t\t\t\t\t<includes>\n\t\t\t\t\t\t\t\t<include>**/*.groovy</include>\n\t\t\t\t\t\t\t</includes>\n\t\t\t\t\t\t</testSource>\n\t\t\t\t\t</testSources>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>compileTests</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-enforcer-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.enforcer.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<rules>\n\n\t\t\t\t\t\t<requireMavenVersion>\n\t\t\t\t\t\t\t<version>[3.9.0,)</version>\n\t\t\t\t\t\t</requireMavenVersion>\n\t\t\t\t\t\t<requireJavaVersion>\n\t\t\t\t\t\t\t<version>[${javaVersion},)</version>\n\t\t\t\t\t\t</requireJavaVersion>\n\n\t\t\t\t\t\t<requirePluginVersions>\n\t\t\t\t\t\t\t<message>Please always define Maven plugin versions</message>\n\t\t\t\t\t\t\t<banTimestamps>true</banTimestamps>\n\n\t\t\t\t\t\t\t<unCheckedPluginList>\n\t\t\t\t\t\t\t\torg.apache.maven.plugins:maven-clean-plugin,\n\t\t\t\t\t\t\t\torg.apache.maven.plugins:maven-dependency-plugin,\n\t\t\t\t\t\t\t\torg.apache.maven.plugins:maven-install-plugin,\n\t\t\t\t\t\t\t\torg.apache.maven.plugins:maven-site-plugin\n\t\t\t\t\t\t\t</unCheckedPluginList>\n\t\t\t\t\t\t</requirePluginVersions>\n\t\t\t\t\t</rules>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>default-enforce</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>enforce</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<phase>validate</phase>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-checkstyle-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.checkstyle.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<configLocation>${project.basedir}/src/test/resources/team/checkstyle-rules.xml</configLocation>\n\t\t\t\t\t<consoleOutput>true</consoleOutput>\n\t\t\t\t\t<failOnViolation>true</failOnViolation>\n\t\t\t\t\t<includeTestSourceDirectory>true</includeTestSourceDirectory>\n\t\t\t\t\t<logViolationsToConsole>true</logViolationsToConsole>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>checkstyle-check</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>check</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<phase>verify</phase>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-surefire-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.surefire.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<includes>\n\t\t\t\t\t\t<include>**/*Spec.java</include>\n\t\t\t\t\t\t<include>**/*Test.java</include>\n\t\t\t\t\t</includes>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.eluder.coveralls</groupId>\n\t\t\t\t<artifactId>coveralls-maven-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.coveralls.version}</version>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.jacoco</groupId>\n\t\t\t\t<artifactId>jacoco-maven-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.jacoco.version}</version>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>prepare-agent</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>prepare-agent</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>flatten-maven-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.flatten.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<outputDirectory>${project.build.directory}</outputDirectory>\n\t\t\t\t\t<updatePomFile>true</updatePomFile>\n\t\t\t\t\t<flattenMode>oss</flattenMode>\n\t\t\t\t</configuration>\n\t\t\t\t<executions>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>flatten</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>flatten</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<phase>prepare-package</phase>\n\t\t\t\t\t</execution>\n\t\t\t\t\t<execution>\n\t\t\t\t\t\t<id>flatten-clean</id>\n\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t<goal>clean</goal>\n\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t<phase>clean</phase>\n\t\t\t\t\t</execution>\n\t\t\t\t</executions>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-jar-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.jar.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<archive>\n\t\t\t\t\t\t<addMavenDescriptor>false</addMavenDescriptor>\n\t\t\t\t\t\t<compress>true</compress>\n\t\t\t\t\t\t<index>false</index>\n\t\t\t\t\t\t<manifest>\n\t\t\t\t\t\t\t<addClasspath>false</addClasspath>\n\t\t\t\t\t\t\t<addDefaultEntries>true</addDefaultEntries>\n\t\t\t\t\t\t\t<addDefaultImplementationEntries>true</addDefaultImplementationEntries>  <!-- Implementation-Title/Version/Vendor -->\n\t\t\t\t\t\t\t<addDefaultSpecificationEntries>false</addDefaultSpecificationEntries>\n\t\t\t\t\t\t\t<addBuildEnvironmentEntries>true</addBuildEnvironmentEntries>  <!-- Build-Jdk, Build-Os, Build-Tool -->\n\t\t\t\t\t\t</manifest>\n\n\t\t\t\t\t\t<manifestEntries>\n\t\t\t\t\t\t\t<Build-Time>${maven.build.timestamp}</Build-Time>\n\t\t\t\t\t\t\t<Project-Url>${project.url}</Project-Url>\n\t\t\t\t\t\t\t<Project-Inception-Year>${project.inceptionYear}</Project-Inception-Year>\n\t\t\t\t\t\t</manifestEntries>\n\t\t\t\t\t</archive>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-deploy-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.deploy.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<skip>true</skip>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t<artifactId>maven-release-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.release.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<releaseProfiles>release</releaseProfiles>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t\t<plugin>\n\t\t\t\t<groupId>org.codehaus.mojo</groupId>\n\t\t\t\t<artifactId>versions-maven-plugin</artifactId>\n\t\t\t\t<version>${dep.plugin.versions.version}</version>\n\t\t\t\t<configuration>\n\t\t\t\t\t<ruleSet>\n\t\t\t\t\t\t<ignoreVersions>\n\t\t\t\t\t\t\t<ignoreVersion>\n\t\t\t\t\t\t\t\t<type>regex</type>\n\t\t\t\t\t\t\t\t<version>.*(?i)(alpha|beta|rc|cr|preview|milestone|[mb][0-9]+).*</version>\n\t\t\t\t\t\t\t</ignoreVersion>\n\t\t\t\t\t\t</ignoreVersions>\n\t\t\t\t\t</ruleSet>\n\t\t\t\t</configuration>\n\t\t\t</plugin>\n\t\t</plugins>\n\t</build>\n\n\t<profiles>\n\t\t<profile>\n\t\t\t<id>fast</id>\n\t\t\t<!-- profile to skip time-consuming steps -->\n\t\t\t<activation>\n\t\t\t\t<activeByDefault>false</activeByDefault>\n\t\t\t</activation>\n\t\t\t<properties>\n\t\t\t\t<!-- skip _compiling_ the tests -->\n\t\t\t\t<maven.test.skip>true</maven.test.skip>\n\t\t\t\t<!-- skip execution of tests -->\n\t\t\t\t<skipTests>true</skipTests>\n\n\t\t\t\t<maven.javadoc.skip>true</maven.javadoc.skip>\n\t\t\t</properties>\n\t\t</profile>\n\n\t\t<!-- profile to fail the build on Error Prone findings\n             mvn clean compile -D check.fail-errorprone=true\n             https://errorprone.info/bugpattern/IncompatibleModifiers -->\n\t\t<profile>\n\t\t\t<id>errorprone-fatal</id>\n\t\t\t<activation>\n\t\t\t\t<property>\n\t\t\t\t\t<name>check.fail-errorprone</name>\n\t\t\t\t\t<value>true</value>\n\t\t\t\t</property>\n\t\t\t</activation>\n\t\t\t<build>\n\t\t\t\t<plugins>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-compiler-plugin</artifactId>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<compilerArgs combine.children=\"append\">\n\t\t\t\t\t\t\t\t<arg>-Werror</arg>\n\t\t\t\t\t\t\t</compilerArgs>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t</plugin>\n\t\t\t\t</plugins>\n\t\t\t</build>\n\t\t</profile>\n\n\t\t<profile>\n\t\t\t<id>release</id>\n\t\t\t<build>\n\t\t\t\t<plugins>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-gpg-plugin</artifactId>\n\t\t\t\t\t\t<version>${dep.plugin.gpg.version}</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>sign-artifacts</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>sign</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t\t<phase>verify</phase>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-source-plugin</artifactId>\n\t\t\t\t\t\t<version>${dep.plugin.source.version}</version>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>attach-sources</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>jar-no-fork</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.apache.maven.plugins</groupId>\n\t\t\t\t\t\t<artifactId>maven-javadoc-plugin</artifactId>\n\t\t\t\t\t\t<version>${dep.plugin.javadoc.version}</version>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<doclint>none</doclint>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>attach-javadocs</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>jar</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t\t<plugin>\n\t\t\t\t\t\t<groupId>org.sonatype.central</groupId>\n\t\t\t\t\t\t<artifactId>central-publishing-maven-plugin</artifactId>\n\t\t\t\t\t\t<version>${dep.plugin.central-publishing.version}</version>\n\t\t\t\t\t\t<extensions>true</extensions>\n\t\t\t\t\t\t<configuration>\n\t\t\t\t\t\t\t<publishingServerId>central</publishingServerId>\n\t\t\t\t\t\t\t<autoPublish>true</autoPublish>\n\t\t\t\t\t\t\t<waitUntil>published</waitUntil>\n\t\t\t\t\t\t</configuration>\n\t\t\t\t\t\t<executions>\n\t\t\t\t\t\t\t<execution>\n\t\t\t\t\t\t\t\t<id>central-publish</id>\n\t\t\t\t\t\t\t\t<goals>\n\t\t\t\t\t\t\t\t\t<goal>publish</goal>\n\t\t\t\t\t\t\t\t</goals>\n\t\t\t\t\t\t\t\t<phase>deploy</phase>\n\t\t\t\t\t\t\t</execution>\n\t\t\t\t\t\t</executions>\n\t\t\t\t\t</plugin>\n\t\t\t\t</plugins>\n\t\t\t</build>\n\t\t</profile>\n\t</profiles>\n\n</project>\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/Bootstrap.java",
    "content": "package com.devskiller.jfairy;\n\nimport java.io.IOException;\nimport java.util.Locale;\nimport java.util.function.Supplier;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.data.MapBasedDataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.RandomGenerator;\nimport com.devskiller.jfairy.producer.TimeProvider;\nimport com.devskiller.jfairy.producer.company.CompanyFactory;\nimport com.devskiller.jfairy.producer.company.CompanyFactoryImpl;\nimport com.devskiller.jfairy.producer.net.IPNumberProducer;\nimport com.devskiller.jfairy.producer.payment.CreditCardProvider;\nimport com.devskiller.jfairy.producer.payment.IBANFactory;\nimport com.devskiller.jfairy.producer.payment.IBANFactoryImpl;\nimport com.devskiller.jfairy.producer.person.PersonFactory;\nimport com.devskiller.jfairy.producer.person.PersonFactoryImpl;\nimport com.devskiller.jfairy.producer.text.TextProducerInternal;\n\n/**\n * <p>\n * Using a {@link #builder()}, you can configure the following fields:\n * <p>\n * <ul>\n * <li><tt>locale</tt>: Specifies the locale for the random data file.</li>\n * <li><tt>filePrefix</tt>: Specifies the file prefix.\n * (So if you specify \"jfairy\" here and English for Locale, the data file will be\n * \"jfairy_en.yml\" under the classpath.)\n * </li>\n * <li><tt>random</tt>: The Random object to use.</li>\n * <li><tt>randomSeed</tt>: A specific random seed to use. Use this if you want the resulting\n * data to be <strong>deterministic</strong> based on it, such as if you want the same test\n * ID in a database to always result in the same fake name.\n * </li>\n * </ul>\n * <p>\n * Obviously, don't set both <tt>random</tt> and <tt>randomSeed</tt>, only the last one you set will\n * actually take effect.\n *\n * @author Jakub Kubrynski\n * @author Olga Maciaszek-Sharma\n */\npublic final class Bootstrap {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(Bootstrap.class);\n\n\tprivate static final String DATA_FILE_PREFIX = \"jfairy\";\n\n\tprivate Bootstrap() {\n\t}\n\n\tpublic static Fairy createFairy(DataMaster dataMaster, Locale locale, RandomGenerator randomGenerator) {\n\t\tLOG.debug(\"Creating Fairy instance for locale {}\", locale);\n\n\t\t// Create base components\n\t\tBaseProducer baseProducer = new BaseProducer(randomGenerator);\n\t\tTimeProvider timeProvider = new TimeProvider();\n\t\tDateProducer dateProducer = new DateProducer(baseProducer, timeProvider);\n\n\t\t// Create locale-specific providers\n\t\tLocaleSpecificProviders localeProviders = LocaleSpecificProvidersFactory.createProvidersForLocale(\n\t\t\t\tlocale, dataMaster, baseProducer, dateProducer);\n\n\t\t// Create company factory first (needed by PersonFactory)\n\t\tCompanyFactory companyFactory = new CompanyFactoryImpl(\n\t\t\t\tbaseProducer, dataMaster, localeProviders.vatIdentificationNumberProvider()\n\t\t);\n\n\t\t// Create person factory\n\t\tPersonFactory personFactory = new PersonFactoryImpl(\n\t\t\t\tdataMaster, dateProducer, baseProducer,\n\t\t\t\tlocaleProviders.addressProvider(),\n\t\t\t\tlocaleProviders.nationalIdentificationNumberFactory(),\n\t\t\t\tlocaleProviders.nationalIdentityCardNumberProvider(),\n\t\t\t\tlocaleProviders.passportNumberProvider(),\n\t\t\t\ttimeProvider,\n\t\t\t\tcompanyFactory\n\t\t);\n\n\t\tIBANFactory ibanFactory = new IBANFactoryImpl(baseProducer, dataMaster);\n\n\t\t// Create other producers\n\t\tCreditCardProvider creditCardProvider = new CreditCardProvider(dataMaster, baseProducer, dateProducer);\n\t\tTextProducerInternal textProducerInternal = new TextProducerInternal(dataMaster, baseProducer);\n\t\tIPNumberProducer ipNumberProducer = new IPNumberProducer(baseProducer);\n\n\t\t// Create fairy factory\n\t\tFairyFactory fairyFactory = new FairyFactoryImpl(\n\t\t\t\ttextProducerInternal, baseProducer, personFactory,\n\t\t\t\tipNumberProducer, dateProducer, creditCardProvider,\n\t\t\t\tcompanyFactory, ibanFactory\n\t\t);\n\n\t\tLOG.trace(\"Fairy components initialized\");\n\t\treturn fairyFactory.createFairy();\n\t}\n\n\tprivate static void fillDefaultDataMaster(MapBasedDataMaster dataMaster, Locale locale, String filePrefix) {\n\t\ttry {\n\t\t\tString baseFile = filePrefix + \".yml\";\n\t\t\tString localeFile = filePrefix + \"_\" + locale.getLanguage() + \".yml\";\n\n\t\t\tLOG.debug(\"Loading data resources: {}, {}\", baseFile, localeFile);\n\n\t\t\tdataMaster.readResources(baseFile);\n\t\t\tdataMaster.readResources(localeFile);\n\t\t} catch (IOException ex) {\n\t\t\tLOG.error(\"Failed to load data resources for locale {}\", locale);\n\t\t\tthrow new IllegalStateException(ex);\n\t\t}\n\t}\n\n\t/**\n\t * Creates a Builder that will let you configure a Fairy's fields one by one.\n\t *\n\t * @return a Builder instance.\n\t */\n\tpublic static Builder builder() {\n\t\treturn new Builder();\n\t}\n\n\t/**\n\t * Use this factory method to create dataset containing default jfairy.yml and jfairy_{langCode}.yml files\n\t * merged with custom files with the same name\n\t *\n\t * @return Fairy instance\n\t */\n\tpublic static Fairy create() {\n\t\treturn builder().build();\n\t}\n\n\t/**\n\t * Use this factory method to create dataset containing default jfairy.yml and jfairy_{langCode}.yml files\n\t * merged with custom files with the same name\n\t *\n\t * @param locale will be used to assess langCode for data file\n\t * @return Fairy instance\n\t */\n\tpublic static Fairy create(Locale locale) {\n\t\treturn builder().withLocale(locale).build();\n\t}\n\n\t/**\n\t * Use this factory method to create your own dataset overriding bundled one\n\t *\n\t * @param locale         will be used to assess langCode for data file\n\t * @param dataFilePrefix prefix of the data file - final pattern will be jfairy.yml and dataFilePrefix_{langCode}.yml\n\t * @return Fairy instance\n\t */\n\tpublic static Fairy create(Locale locale, String dataFilePrefix) {\n\t\treturn builder().withLocale(locale)\n\t\t\t\t.withFilePrefix(dataFilePrefix)\n\t\t\t\t.build();\n\t}\n\n\tpublic static Fairy create(Supplier<DataMaster> dataMaster, Locale locale) {\n\t\treturn builder().withDataMasterProvider(dataMaster).withLocale(locale).build();\n\t}\n\n\tpublic static final class Builder {\n\n\t\tprivate Locale locale = Locale.ENGLISH;\n\t\tprivate String filePrefix = DATA_FILE_PREFIX;\n\t\tprivate RandomGenerator randomGenerator = new RandomGenerator();\n\t\tprivate DataMaster dataMaster;\n\n\t\tprivate MapBasedDataMaster getDefaultDataMaster(BaseProducer baseProducer) {\n\t\t\treturn new MapBasedDataMaster(baseProducer);\n\t\t}\n\n\t\tprivate Builder() {\n\n\t\t}\n\n\t\t/**\n\t\t * Sets the locale for the resulting Fairy.\n\t\t *\n\t\t * @param locale The Locale to set.\n\t\t * @return the same Builder (for chaining).\n\t\t */\n\t\tpublic Builder withLocale(Locale locale) {\n\t\t\tthis.locale = locale;\n\t\t\treturn this;\n\t\t}\n\n\t\t/**\n\t\t * Sets the data file prefix for the resulting Fairy.\n\t\t *\n\t\t * @param filePrefix The prefix of the file (such as \"jfairy\" for \"jfairy_en.yml\").\n\t\t * @return the same Builder (for chaining).\n\t\t */\n\t\tpublic Builder withFilePrefix(String filePrefix) {\n\t\t\tthis.filePrefix = filePrefix;\n\t\t\treturn this;\n\t\t}\n\n\t\t/**\n\t\t * Sets the random seed to use to pick things randomly. (If you set this, you will always\n\t\t * get the same result when you generate things.)\n\t\t *\n\t\t * @param randomSeed The random seed to use.\n\t\t * @return the same Builder (for chaining).\n\t\t */\n\t\tpublic Builder withRandomSeed(int randomSeed) {\n\t\t\tLOG.debug(\"Using fixed random seed: {}\", randomSeed);\n\t\t\tthis.randomGenerator = new RandomGenerator(randomSeed);\n\t\t\treturn this;\n\t\t}\n\n\t\t/**\n\t\t * Sets a custom DataMaster implementation.\n\t\t *\n\t\t * @param dataMasterProvider The DataMaster supplier to use.\n\t\t * @return the same Builder (for chaining).\n\t\t */\n\t\tpublic Builder withDataMasterProvider(Supplier<DataMaster> dataMasterProvider) {\n\t\t\tthis.dataMaster = dataMasterProvider.get();\n\t\t\treturn this;\n\t\t}\n\n\t\t/**\n\t\t * Returns the completed Fairy.\n\t\t *\n\t\t * @return Fairy instance\n\t\t */\n\t\tpublic Fairy build() {\n\t\t\tif (dataMaster == null) {\n\t\t\t\tBaseProducer baseProducer = new BaseProducer(randomGenerator);\n\t\t\t\tdataMaster = getDefaultDataMaster(baseProducer);\n\t\t\t\tfillDefaultDataMaster((MapBasedDataMaster) dataMaster, locale, filePrefix);\n\t\t\t}\n\t\t\treturn createFairy(dataMaster, locale, randomGenerator);\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/Fairy.java",
    "content": "/*\n * Copyright (c) 2013 Codearte\n */\npackage com.devskiller.jfairy;\n\nimport java.util.Locale;\nimport java.util.function.Supplier;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.company.Company;\nimport com.devskiller.jfairy.producer.company.CompanyFactory;\nimport com.devskiller.jfairy.producer.company.CompanyProperties;\nimport com.devskiller.jfairy.producer.net.NetworkProducer;\nimport com.devskiller.jfairy.producer.payment.CreditCard;\nimport com.devskiller.jfairy.producer.payment.CreditCardProvider;\nimport com.devskiller.jfairy.producer.payment.IBAN;\nimport com.devskiller.jfairy.producer.payment.IBANFactory;\nimport com.devskiller.jfairy.producer.payment.IBANProperties;\nimport com.devskiller.jfairy.producer.person.Person;\nimport com.devskiller.jfairy.producer.person.PersonFactory;\nimport com.devskiller.jfairy.producer.person.PersonProperties;\nimport com.devskiller.jfairy.producer.text.TextProducer;\n\npublic final class Fairy {\n\n\tprivate final TextProducer textProducer;\n\tprivate final PersonFactory personFactory;\n\tprivate final NetworkProducer networkProducer;\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\tprivate final CreditCardProvider creditCardProvider;\n\tprivate final CompanyFactory companyFactory;\n\tprivate final IBANFactory ibanFactory;\n\n\tFairy(TextProducer textProducer, PersonFactory personFactory, NetworkProducer networkProducer,\n\t      BaseProducer baseProducer, DateProducer dateProducer, CreditCardProvider creditCardProvider,\n\t      CompanyFactory companyFactory, IBANFactory ibanFactory) {\n\t\tthis.textProducer = textProducer;\n\t\tthis.personFactory = personFactory;\n\t\tthis.networkProducer = networkProducer;\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.creditCardProvider = creditCardProvider;\n\t\tthis.companyFactory = companyFactory;\n\t\tthis.ibanFactory = ibanFactory;\n\t}\n\n\tpublic static Fairy create() {\n\t\treturn Bootstrap.create();\n\t}\n\n\tpublic static Fairy create(Locale locale) {\n\t\treturn Bootstrap.create(locale);\n\t}\n\n\tpublic static Fairy create(Supplier<DataMaster> dataMasterProvider, Locale locale) {\n\t\treturn Bootstrap.create(dataMasterProvider, locale);\n\t}\n\n\tpublic static Bootstrap.Builder builder() {\n\t\treturn Bootstrap.builder();\n\t}\n\n\t/**\n\t * Use this method for generating texts\n\t *\n\t * @return A {@link com.devskiller.jfairy.producer.text.TextProducer} instance\n\t */\n\tpublic TextProducer textProducer() {\n\t\treturn textProducer;\n\t}\n\n\t/**\n\t * Use this method for fake persons\n\t *\n\t * @param personProperties desired person features\n\t * @return A {@link com.devskiller.jfairy.producer.person.Person} instance\n\t */\n\tpublic Person person(PersonProperties.PersonProperty... personProperties) {\n\t\treturn personFactory.producePersonProvider(personProperties).get();\n\t}\n\n\t/**\n\t * Use this method to generate fake company\n\t *\n\t * @param companyProperties desired company features\n\t * @return A {@link com.devskiller.jfairy.producer.company.CompanyProvider} instance\n\t */\n\tpublic Company company(CompanyProperties.CompanyProperty... companyProperties) {\n\t\treturn companyFactory.produceCompany(companyProperties).get();\n\t}\n\n\t/**\n\t * Use this method for get standard tools\n\t *\n\t * @return A {@link com.devskiller.jfairy.producer.BaseProducer} instance\n\t */\n\tpublic BaseProducer baseProducer() {\n\t\treturn baseProducer;\n\t}\n\n\tpublic DateProducer dateProducer() {\n\t\treturn dateProducer;\n\t}\n\n\t/**\n\t * Use this method for generating IBAN (International Bank Account Number)\n\t *\n\t * @return A {@link com.devskiller.jfairy.producer.payment.IBAN} instance\n\t */\n\tpublic IBAN iban() {\n\t\treturn ibanFactory.produceIBANProvider().get();\n\t}\n\n\t/**\n\t * Use this method for generating IBAN (International Bank Account Number)\n\t *\n\t * @param properties desired IBAN features\n\t * @return A {@link com.devskiller.jfairy.producer.payment.IBAN} instance\n\t */\n\tpublic IBAN iban(IBANProperties.Property... properties) {\n\t\treturn ibanFactory.produceIBANProvider(properties).get();\n\t}\n\n\tpublic CreditCard creditCard() {\n\t\treturn creditCardProvider.get();\n\t}\n\n\tpublic NetworkProducer networkProducer() {\n\t\treturn networkProducer;\n\t}\n\n\t/**\n\t * Returns a {@link UniqueFairy} that ensures generated objects are unique\n\t * by their natural key (email for Person, name for Company, etc.).\n\t *\n\t * @return A {@link UniqueFairy} instance\n\t */\n\tpublic UniqueFairy unique() {\n\t\treturn new UniqueFairy(this, UniqueEnforcer.DEFAULT_MAX_RETRIES);\n\t}\n\n\t/**\n\t * Returns a {@link UniqueFairy} with custom max retries.\n\t *\n\t * @param maxRetries maximum generation attempts before throwing\n\t * @return A {@link UniqueFairy} instance\n\t */\n\tpublic UniqueFairy unique(int maxRetries) {\n\t\treturn new UniqueFairy(this, maxRetries);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/FairyFactory.java",
    "content": "package com.devskiller.jfairy;\n\n/**\n * @author Jakub Kubrynski\n */\ninterface FairyFactory {\n\n\tFairy createFairy();\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/FairyFactoryImpl.java",
    "content": "package com.devskiller.jfairy;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.company.CompanyFactory;\nimport com.devskiller.jfairy.producer.net.IPNumberProducer;\nimport com.devskiller.jfairy.producer.net.NetworkProducer;\nimport com.devskiller.jfairy.producer.payment.CreditCardProvider;\nimport com.devskiller.jfairy.producer.payment.IBANFactory;\nimport com.devskiller.jfairy.producer.person.PersonFactory;\nimport com.devskiller.jfairy.producer.text.TextProducer;\nimport com.devskiller.jfairy.producer.text.TextProducerInternal;\n\nclass FairyFactoryImpl implements FairyFactory {\n\n\tprivate final TextProducerInternal textProducerInternal;\n\tprivate final BaseProducer baseProducer;\n\tprivate final PersonFactory personFactory;\n\tprivate final IPNumberProducer ipNumberProducer;\n\tprivate final DateProducer dateProducer;\n\tprivate final CreditCardProvider creditCardProvider;\n\tprivate final CompanyFactory companyFactory;\n\tprivate final IBANFactory ibanFactory;\n\n\tFairyFactoryImpl(TextProducerInternal textProducerInternal,\n\t                 BaseProducer baseProducer,\n\t                 PersonFactory personFactory,\n\t                 IPNumberProducer ipNumberProducer,\n\t                 DateProducer dateProducer,\n\t                 CreditCardProvider creditCardProvider,\n\t                 CompanyFactory companyFactory,\n\t                 IBANFactory ibanFactory) {\n\t\tthis.textProducerInternal = textProducerInternal;\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.personFactory = personFactory;\n\t\tthis.ipNumberProducer = ipNumberProducer;\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.creditCardProvider = creditCardProvider;\n\t\tthis.companyFactory = companyFactory;\n\t\tthis.ibanFactory = ibanFactory;\n\t}\n\n\t@Override\n\tpublic Fairy createFairy() {\n\t\tTextProducer textProducer = new TextProducer(textProducerInternal, baseProducer);\n\t\tNetworkProducer networkProducer = new NetworkProducer(ipNumberProducer);\n\n\t\treturn new Fairy(textProducer, personFactory, networkProducer, baseProducer,\n\t\t                 dateProducer, creditCardProvider, companyFactory, ibanFactory);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/LocaleSpecificProviders.java",
    "content": "package com.devskiller.jfairy;\n\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.AddressProvider;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\n/**\n * Container for locale-specific provider implementations\n */\nrecord LocaleSpecificProviders(\n\t\tNationalIdentificationNumberFactory nationalIdentificationNumberFactory,\n\t\tNationalIdentityCardNumberProvider nationalIdentityCardNumberProvider,\n\t\tVATIdentificationNumberProvider vatIdentificationNumberProvider,\n\t\tAddressProvider addressProvider,\n\t\tPassportNumberProvider passportNumberProvider) {\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/LocaleSpecificProvidersFactory.java",
    "content": "package com.devskiller.jfairy;\n\nimport java.util.Locale;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.company.locale.br.BrVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.de.DeVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.en.EnVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.es.EsVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.fr.FrVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.ka.KaVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.pl.PlVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.sk.SkVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.sv.SvVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.tr.TrVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.company.locale.zh.ZhVATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.locale.NoNationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.locale.br.BrAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.br.BrNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.br.BrPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.de.DeAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.de.DeNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.de.DePassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.en.EnAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.en.EnNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.en.EnPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.es.EsAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.es.EsNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.es.EsPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.fr.FrAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.fr.FrNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.fr.FrPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.ka.KaAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.ka.KaNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.ka.KaPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.pl.PlAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.pl.PlNationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.locale.pl.PlNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.pl.PlPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.sk.SkAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.sk.SkNationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.locale.sk.SkNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.sk.SkPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.sv.SvAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.sv.SvNationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.locale.sv.SvNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.sv.SvPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.tr.TrAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.tr.TrNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.tr.TrPassportNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.zh.ZhAddressProvider;\nimport com.devskiller.jfairy.producer.person.locale.zh.ZhNationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.person.locale.zh.ZhPassportNumberProvider;\nimport com.devskiller.jfairy.producer.util.LanguageCode;\n\n/**\n * Factory for creating locale-specific provider implementations\n */\nfinal class LocaleSpecificProvidersFactory {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(LocaleSpecificProvidersFactory.class);\n\n\tprivate LocaleSpecificProvidersFactory() {\n\t}\n\n\tstatic LocaleSpecificProviders createProvidersForLocale(Locale locale,\n\t                                                        DataMaster dataMaster,\n\t                                                        BaseProducer baseProducer,\n\t                                                        DateProducer dateProducer) {\n\t\tLanguageCode code;\n\t\ttry {\n\t\t\tcode = LanguageCode.valueOf(locale.getLanguage().toUpperCase(Locale.ROOT));\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\tLOG.warn(\"Unknown locale {}\", locale);\n\t\t\tcode = LanguageCode.EN;\n\t\t}\n\n\t\treturn switch (code) {\n\t\t\tcase PL -> createPlProviders(dataMaster, baseProducer, dateProducer);\n\t\t\tcase EN -> createEnProviders(dataMaster, baseProducer);\n\t\t\tcase ES -> createEsProviders(dataMaster, baseProducer);\n\t\t\tcase FR -> createFrProviders(dataMaster, baseProducer);\n\t\t\tcase IT -> createItProviders(dataMaster, baseProducer);\n\t\t\tcase SK -> createSkProviders(dataMaster, baseProducer, dateProducer);\n\t\t\tcase SV -> createSvProviders(dataMaster, baseProducer, dateProducer);\n\t\t\tcase ZH -> createZhProviders(dataMaster, baseProducer);\n\t\t\tcase DE -> createDeProviders(dataMaster, baseProducer);\n\t\t\tcase KA -> createKaProviders(dataMaster, baseProducer);\n\t\t\tcase BR -> createBrProviders(dataMaster, baseProducer);\n\t\t\tcase TR -> createTrProviders(dataMaster, baseProducer);\n\t\t};\n\t}\n\n\tprivate static LocaleSpecificProviders createPlProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer,\n\t                                                         DateProducer dateProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew PlNationalIdentificationNumberFactory(baseProducer, dateProducer),\n\t\t\t\tnew PlNationalIdentityCardNumberProvider(dateProducer, baseProducer),\n\t\t\t\tnew PlVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew PlAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew PlPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createSkProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer,\n\t                                                         DateProducer dateProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew SkNationalIdentificationNumberFactory(baseProducer, dateProducer),\n\t\t\t\tnew SkNationalIdentityCardNumberProvider(dateProducer, baseProducer),\n\t\t\t\tnew SkVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew SkAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew SkPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createEnProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew EnNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew EnVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew EnAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew EnPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\t/**\n\t * Creates providers for French locale.\n\t *\n\t * @param dataMaster   data source\n\t * @param baseProducer base producer\n\t * @return French specific providers\n\t */\n\tprivate static LocaleSpecificProviders createFrProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew FrNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew FrVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew FrAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew FrPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\t/**\n\t * Creates providers for Italian locale.\n\t * <p>\n\t * Note: Currently uses English fallbacks.\n\t *\n\t * @param dataMaster   data source\n\t * @param baseProducer base producer\n\t * @return Italian specific providers\n\t */\n\tprivate static LocaleSpecificProviders createItProviders(DataMaster dataMaster,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\tnew EnNationalIdentityCardNumberProvider(baseProducer),\n\t\t\tnew EnVATIdentificationNumberProvider(baseProducer),\n\t\t\tnew EnAddressProvider(dataMaster, baseProducer),\n\t\t\tnew EnPassportNumberProvider(baseProducer)\n\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createEsProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew EsNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew EsVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew EsAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew EsPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createSvProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer,\n\t                                                         DateProducer dateProducer) {\n\t\tNationalIdentificationNumberFactory nationalIdFactory = new SvNationalIdentificationNumberFactory(baseProducer, dateProducer);\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnationalIdFactory,\n\t\t\t\tnew SvNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew SvVATIdentificationNumberProvider(baseProducer, dateProducer, nationalIdFactory),\n\t\t\t\tnew SvAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew SvPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createZhProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew ZhNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew ZhVATIdentificationNumberProvider(),\n\t\t\t\tnew ZhAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew ZhPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createDeProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew DeNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew DeVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew DeAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew DePassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createKaProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew KaNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew KaVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew KaAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew KaPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createBrProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew BrNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew BrVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew BrAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew BrPassportNumberProvider()\n\t\t);\n\t}\n\n\tprivate static LocaleSpecificProviders createTrProviders(DataMaster dataMaster,\n\t                                                         BaseProducer baseProducer) {\n\t\treturn new LocaleSpecificProviders(\n\t\t\t\tnew NoNationalIdentificationNumberFactory(),\n\t\t\t\tnew TrNationalIdentityCardNumberProvider(baseProducer),\n\t\t\t\tnew TrVATIdentificationNumberProvider(baseProducer),\n\t\t\t\tnew TrAddressProvider(dataMaster, baseProducer),\n\t\t\t\tnew TrPassportNumberProvider(baseProducer)\n\t\t);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/UniqueEnforcer.java",
    "content": "package com.devskiller.jfairy;\n\nimport java.util.HashSet;\nimport java.util.Objects;\nimport java.util.Set;\nimport java.util.function.Function;\nimport java.util.function.Supplier;\n\n/**\n * Wraps a generator to ensure unique values based on a key extractor.\n * Throws {@link UniqueGenerationException} after max retries.\n *\n * <p>This class is not thread-safe. Each thread should use its own instance.</p>\n *\n * <pre>{@code\n * Fairy fairy = Fairy.create();\n * UniqueEnforcer<Person> unique = UniqueEnforcer.of(fairy::person, Person::getEmail);\n * Person p1 = unique.next(); // guaranteed unique email\n * Person p2 = unique.next(); // different email than p1\n * unique.reset();            // clear history\n * }</pre>\n *\n * @param <T> type of generated object\n */\npublic final class UniqueEnforcer<T> {\n\n\tstatic final int DEFAULT_MAX_RETRIES = 10_000;\n\n\tprivate final Supplier<T> defaultGenerator;\n\tprivate final Function<T, ?> keyExtractor;\n\tprivate final int maxRetries;\n\tprivate final Set<Object> seen = new HashSet<>();\n\n\tprivate UniqueEnforcer(Supplier<T> defaultGenerator, Function<T, ?> keyExtractor, int maxRetries) {\n\t\tthis.defaultGenerator = Objects.requireNonNull(defaultGenerator, \"generator must not be null\");\n\t\tthis.keyExtractor = Objects.requireNonNull(keyExtractor, \"keyExtractor must not be null\");\n\t\tif (maxRetries < 1) {\n\t\t\tthrow new IllegalArgumentException(\"maxRetries must be positive, got: \" + maxRetries);\n\t\t}\n\t\tthis.maxRetries = maxRetries;\n\t}\n\n\tpublic static <T> UniqueEnforcer<T> of(Supplier<T> generator, Function<T, ?> keyExtractor) {\n\t\treturn new UniqueEnforcer<>(generator, keyExtractor, DEFAULT_MAX_RETRIES);\n\t}\n\n\tpublic static <T> UniqueEnforcer<T> of(Supplier<T> generator, Function<T, ?> keyExtractor, int maxRetries) {\n\t\treturn new UniqueEnforcer<>(generator, keyExtractor, maxRetries);\n\t}\n\n\tpublic T next() {\n\t\treturn next(defaultGenerator);\n\t}\n\n\t/**\n\t * Generate a unique value using a custom supplier, tracking uniqueness\n\t * in the same seen-set as {@link #next()}.\n\t */\n\tpublic T next(Supplier<T> generator) {\n\t\tfor (int i = 0; i < maxRetries; i++) {\n\t\t\tT value = generator.get();\n\t\t\tObject key = keyExtractor.apply(value);\n\t\t\tif (seen.add(key)) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\tthrow new UniqueGenerationException(\n\t\t\t\t\"Could not generate a unique value after \" + maxRetries + \" retries. \"\n\t\t\t\t\t\t+ seen.size() + \" unique values were generated before exhaustion.\");\n\t}\n\n\tpublic void reset() {\n\t\tseen.clear();\n\t}\n\n\tpublic int size() {\n\t\treturn seen.size();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/UniqueFairy.java",
    "content": "package com.devskiller.jfairy;\n\nimport com.devskiller.jfairy.producer.company.Company;\nimport com.devskiller.jfairy.producer.company.CompanyProperties;\nimport com.devskiller.jfairy.producer.payment.CreditCard;\nimport com.devskiller.jfairy.producer.payment.IBAN;\nimport com.devskiller.jfairy.producer.payment.IBANProperties;\nimport com.devskiller.jfairy.producer.person.Person;\nimport com.devskiller.jfairy.producer.person.PersonProperties;\n\n/**\n * Convenience wrapper that ensures generated objects are unique by their\n * natural key (email for Person, name for Company, etc.).\n *\n * <p>Uniqueness is tracked per entity type. A person email will not conflict\n * with a company name. Call {@link #reset()} to clear all tracked values.</p>\n *\n * <p>This class is not thread-safe. Store the reference and reuse it —\n * calling {@code fairy.unique()} in a loop creates independent instances\n * with no shared tracking.</p>\n *\n * <pre>{@code\n * UniqueFairy unique = fairy.unique();\n * Person p1 = unique.person();  // unique by email\n * Person p2 = unique.person();  // different email than p1\n * Company c = unique.company(); // unique by name\n * unique.reset();\n * }</pre>\n */\npublic final class UniqueFairy {\n\n\tprivate final Fairy fairy;\n\tprivate final UniqueEnforcer<Person> personEnforcer;\n\tprivate final UniqueEnforcer<Company> companyEnforcer;\n\tprivate final UniqueEnforcer<IBAN> ibanEnforcer;\n\tprivate final UniqueEnforcer<CreditCard> creditCardEnforcer;\n\n\tUniqueFairy(Fairy fairy, int maxRetries) {\n\t\tthis.fairy = fairy;\n\t\tthis.personEnforcer = UniqueEnforcer.of(fairy::person, Person::getEmail, maxRetries);\n\t\tthis.companyEnforcer = UniqueEnforcer.of(fairy::company, Company::getName, maxRetries);\n\t\t// Lambda needed: fairy::iban is ambiguous (overloaded no-arg and vararg)\n\t\tthis.ibanEnforcer = UniqueEnforcer.of(() -> fairy.iban(), IBAN::getIbanNumber, maxRetries);\n\t\tthis.creditCardEnforcer = UniqueEnforcer.of(fairy::creditCard, CreditCard::getCardNumber, maxRetries);\n\t}\n\n\tpublic Person person(PersonProperties.PersonProperty... personProperties) {\n\t\tif (personProperties.length == 0) {\n\t\t\treturn personEnforcer.next();\n\t\t}\n\t\treturn personEnforcer.next(() -> fairy.person(personProperties));\n\t}\n\n\tpublic Company company(CompanyProperties.CompanyProperty... companyProperties) {\n\t\tif (companyProperties.length == 0) {\n\t\t\treturn companyEnforcer.next();\n\t\t}\n\t\treturn companyEnforcer.next(() -> fairy.company(companyProperties));\n\t}\n\n\tpublic IBAN iban(IBANProperties.Property... properties) {\n\t\tif (properties.length == 0) {\n\t\t\treturn ibanEnforcer.next();\n\t\t}\n\t\treturn ibanEnforcer.next(() -> fairy.iban(properties));\n\t}\n\n\tpublic CreditCard creditCard() {\n\t\treturn creditCardEnforcer.next();\n\t}\n\n\tpublic void reset() {\n\t\tpersonEnforcer.reset();\n\t\tcompanyEnforcer.reset();\n\t\tibanEnforcer.reset();\n\t\tcreditCardEnforcer.reset();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/UniqueGenerationException.java",
    "content": "package com.devskiller.jfairy;\n\npublic class UniqueGenerationException extends RuntimeException {\n\n\tprivate static final long serialVersionUID = 1L;\n\n\tpublic UniqueGenerationException(String message) {\n\t\tsuper(message);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/data/DataMaster.java",
    "content": "package com.devskiller.jfairy.data;\n\nimport java.util.List;\n\nimport com.devskiller.jfairy.producer.util.LanguageCode;\n\n/**\n * Providing access to localized data used by producers.\n * <p>\n * This master component acts as the central registry for retrieving\n * strings and structured data based on specific keys and language codes.\n *\n * @author Olga Maciaszek-Sharma\n * @since 23.04.15\n */\npublic interface DataMaster {\n\n\t/**\n\t * Returns a single string value associated with the given key.\n\t *\n\t * @param key the unique identifier for the data entry\n\t * @return the string value found for the key\n\t */\n\tString getString(String key);\n\n\t/**\n\t * Returns a list of strings associated with the given key.\n\t *\n\t * @param key the unique identifier for the data entries\n\t * @return a list of string values found for the key\n\t */\n\tList<String> getStringList(String key);\n\n\t/**\n\t * Retrieves structured data of a specific type and converts it to the requested class.\n\t *\n\t * @param dataKey the root key for the data search\n\t * @param type the specific sub-type or category\n\t * @param resultClass the class type to which the result should be cast\n\t * @param <T> the type of the result object\n\t * @return an instance of the requested type containing the values\n\t */\n\t<T> T getValuesOfType(String dataKey, String type, Class<T> resultClass);\n\n\t/**\n\t * Selects a random string value from the entries associated with the given key.\n\t *\n\t * @param key the unique identifier for the data list\n\t * @return a randomly selected string value\n\t */\n\tString getRandomValue(String key);\n\n\t/**\n\t * Returns the language code currently used by this data master.\n\t *\n\t * @return the active LanguageCode\n\t */\n\tLanguageCode getLanguage();\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/data/MapBasedDataMaster.java",
    "content": "/*\n * Copyright (c) 2013 Codearte\n */\n\npackage com.devskiller.jfairy.data;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.net.URL;\nimport java.util.Enumeration;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.Map;\n\nimport org.snakeyaml.engine.v2.api.Load;\nimport org.snakeyaml.engine.v2.api.LoadSettings;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.util.LanguageCode;\nimport com.devskiller.jfairy.producer.util.ValidateUtils;\n\npublic class MapBasedDataMaster implements DataMaster {\n\n\tpublic static final String LANGUAGE_TAG = \"language\";\n\tprivate final BaseProducer baseProducer;\n\tprivate final Map<String, Object> dataSource = new CaseInsensitiveMap();\n\n\tpublic MapBasedDataMaster(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t/**\n\t * Returns list (null safe) of elements for desired key from dataSource files\n\t *\n\t * @param key desired node key\n\t * @return list of elements for desired key\n\t * @throws IllegalArgumentException if no element for key has been found\n\t */\n\t@SuppressWarnings(\"unchecked\")\n\t@Override\n\tpublic List<String> getStringList(String key) {\n\t\treturn getData(key, List.class);\n\t}\n\n\t@Override\n\t@SuppressWarnings(\"unchecked\")\n\tpublic <T> T getValuesOfType(String dataKey, final String type, final Class<T> resultClass) {\n\t\tMap<String, List<T>> data = getData(dataKey, Map.class);\n\n\t\tList<T> entries = data.get(type);\n\n\t\treturn baseProducer.randomElement(entries);\n\t}\n\n\t/**\n\t * Returns element (null safe) for desired key from dataSource files\n\t *\n\t * @param key desired node key\n\t * @return string element for desired key\n\t * @throws IllegalArgumentException if no element for key has been found\n\t */\n\t@Override\n\tpublic String getString(String key) {\n\t\treturn getData(key, String.class);\n\t}\n\n\t@Override\n\tpublic String getRandomValue(String key) {\n\t\treturn baseProducer.randomElement(getStringList(key));\n\t}\n\n\t@Override\n\tpublic LanguageCode getLanguage() {\n\t\tString tag = getString(LANGUAGE_TAG).toUpperCase(Locale.ROOT);\n\t\ttry {\n\t\t\treturn LanguageCode.valueOf(tag);\n\t\t} catch (IllegalArgumentException ex) {\n\t\t\tthrow new IllegalArgumentException(\"Unknown language tag: \" + tag, ex);\n\t\t}\n\t}\n\n\t@SuppressWarnings(\"unchecked\")\n\t<T> T getData(String key, Class<T> type) {\n\t\tValidateUtils.notNull(key, \"key cannot be null\");\n\t\tValidateUtils.notNull(type, \"type cannot be null\");\n\n\t\tObject element = dataSource.get(key);\n\n\t\tValidateUtils.isTrue(element != null, \"No such key: %s\", key);\n\t\tValidateUtils.isTrue(type.isAssignableFrom(element.getClass()),\n\t\t\t\"Element under desired key has incorrect type - should be %s\", type.getSimpleName());\n\n\t\treturn (T) element;\n\t}\n\n\t//fixme - should be package-private\n\tpublic void readResources(String path) throws IOException {\n\t\tEnumeration<URL> resources =\n\t\t\t\tgetClass().getClassLoader().getResources(path);\n\n\t\tif (!resources.hasMoreElements()) {\n\t\t\tthrow new IllegalArgumentException(String.format(\"File %s was not found on classpath\", path));\n\t\t}\n\n\t\tfinal LoadSettings loadSettings = LoadSettings.builder().build();\n\n\t\twhile (resources.hasMoreElements()) {\n\t\t\tfinal Load load = new Load(loadSettings);\n\t\t\tfinal URL url = resources.nextElement();\n\t\t\ttry (InputStream is = url.openStream()) {\n\t\t\t\t@SuppressWarnings(\"unchecked\")\n\t\t\t\tfinal Map<String, Object> data = (Map<String, Object>) load.loadFromInputStream(is);\n\t\t\t\tappendData(data);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate void appendData(Map<String, Object> data) {\n\t\tdataSource.putAll(data);\n\t}\n\n\tprivate static final class CaseInsensitiveMap extends HashMap<String, Object> {\n\n\t\tprivate static final long serialVersionUID = 1L;\n\n\t\t@Override\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tpublic Object put(String key, Object value) {\n\t\t\tString loweredKey = key.toLowerCase(Locale.ROOT);\n\t\t\tObject valueToInsert = value;\n\n\t\t\tif (value instanceof Map) {\n\t\t\t\tvalueToInsert = new CaseInsensitiveMap();\n\t\t\t\t((CaseInsensitiveMap) valueToInsert).putAll((Map<? extends String, ?>) value);\n\t\t\t}\n\n\t\t\treturn super.put(loweredKey, valueToInsert);\n\t\t}\n\n\t\t@Override\n\t\tpublic void putAll(Map<? extends String, ?> map) {\n\t\t\tfor (Map.Entry<? extends String, ?> entry : map.entrySet()) {\n\t\t\t\tput(entry.getKey(), entry.getValue());\n\t\t\t}\n\t\t}\n\n\t\t@Override\n\t\tpublic Object get(Object key) {\n\t\t\treturn super.get(((String) key).toLowerCase(Locale.ROOT));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/package-info.java",
    "content": "/**\n * Core package of the jFairy library.\n * <p>\n * This package contains the main entry points for the library, such as the {@link com.devskiller.jfairy.Fairy}\n * facade and the {@link com.devskiller.jfairy.Bootstrap} class for initialization.\n * <p>\n * The {@link com.devskiller.jfairy.FairyFactory} provides mechanisms to create localized instances\n * of the data generators.\n */\n@NullMarked\npackage com.devskiller.jfairy;\n\nimport org.jspecify.annotations.NullMarked;\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/BaseProducer.java",
    "content": "package com.devskiller.jfairy.producer;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\npublic class BaseProducer {\n\n\tprivate final RandomGenerator random;\n\n\tpublic BaseProducer(RandomGenerator random) {\n\t\tthis.random = random;\n\t}\n\n\t/**\n\t * Generates random boolean\n\t *\n\t * @return random boolean\n\t */\n\tpublic boolean trueOrFalse() {\n\t\treturn random.nextBoolean();\n\t}\n\n\t/**\n\t * Returns random element from passed List\n\t *\n\t * @param <T>      element generic type\n\t * @param elements list to process\n\t * @return random list element\n\t */\n\tpublic <T> T randomElement(List<T> elements) {\n\t\treturn elements.get(randomBetween(0, elements.size() - 1));\n\t}\n\n\t/**\n\t * Returns random element from passed vararg\n\t *\n\t * @param elements objects to process\n\t * @return random element\n\t */\n\tpublic String randomElement(String... elements) {\n\t\treturn randomElement(Arrays.asList(elements));\n\t}\n\n\t/**\n\t * Returns random enum value\n\t *\n\t * @param <T>      element generic type\n\t * @param enumType enum class\n\t * @return random enum value\n\t */\n\tpublic <T extends Enum<?>> T randomElement(Class<T> enumType) {\n\t\treturn enumType.getEnumConstants()[randomBetween(0, enumType.getEnumConstants().length - 1)];\n\t}\n\n\t/**\n\t * Creates new list being random subset of the passed list\n\t *\n\t * @param <T>      element generic type\n\t * @param elements list to process\n\t * @param count    returned list size\n\t * @return sublist of the elements list\n\t */\n\tpublic <T> List<T> randomElements(List<T> elements, int count) {\n\t\tif (elements.size() >= count) {\n\t\t\treturn extractRandomList(elements, count);\n\t\t} else {\n\t\t\tList<T> randomElements = new ArrayList<>(extractRandomList(elements, count % elements.size()));\n\t\t\tdo {\n\t\t\t\trandomElements.addAll(extractRandomList(elements, elements.size()));\n\t\t\t} while (randomElements.size() < count);\n\t\t\treturn randomElements;\n\t\t}\n\t}\n\n\tprivate <T> List<T> extractRandomList(List<T> elements, int count) {\n\t\treturn random.shuffle(elements).subList(0, count);\n\t}\n\n\t/**\n\t * Returns random int value\n\t *\n\t * @param min value of the random number to be returned.  Must be positive.\n\t * @param max value of the random number to be returned.  Must be positive.\n\t * @return random {@code int} value between {@code min} (inclusive) and {@code max} (inclusive)\n\t */\n\tpublic int randomBetween(int min, int max) {\n\t\treturn random.nextInt(min, max);\n\t}\n\n\t/**\n\t * Returns random int value\n\t *\n\t * @param max value of the random number to be returned.  Must be positive.\n\t * @return random {@code int} value between 0 (inclusive) and {@code max} (inclusive)\n\t */\n\tpublic int randomInt(int max) {\n\t\treturn randomBetween(0, max);\n\t}\n\n\t//TODO: MZA: Duplication - should be merged into one method when consistent logic will be determined\n\tpublic char randomBetween(char min, char max) {\n\t\treturn (char) randomBetween((int) min, (int) max);\n\t}\n\n\t/**\n\t * Returns random long value from a range (including both range boundaries).\n\t * It required to satisfied condition min &lt;= max.\n\t *\n\t * @param min lower bound of a range\n\t * @param max higher bound of a range\n\t * @return pseudorandom {@code long} value between {@code mon} (inclusive) and {@code max} (inclusive)\n\t */\n\tpublic long randomBetween(long min, long max) {\n\t\treturn random.nextLong(min, max);\n\t}\n\n\t/**\n\t * Returns random double value\n\t *\n\t * @param min value of the random number to be returned.  Must be positive.\n\t * @param max value of the random number to be returned.  Must be positive.\n\t * @return random {@code double} value between {@code min} (inclusive) and {@code max} (inclusive)\n\t */\n\tpublic double randomBetween(double min, double max) {\n\t\treturn random.nextDouble(min, max);\n\t}\n\n\tpublic String randomNumeric(int length) {\n\t\treturn random.randomNumeric(length);\n\t}\n\n\tpublic String randomAlphabetic(int length) {\n\t\treturn random.randomAlphabetic(length);\n\t}\n\n\tpublic String randomAlphanumeric(int length) {\n\t\treturn random.randomAlphanumeric(length);\n\t}\n\n\t/**\n\t * Replaces all {@code '?'} characters with random chars from [a - z] range\n\t *\n\t * @param letterString text to process\n\t * @return text with replaces {@code '?'} chars\n\t */\n\tpublic String letterify(String letterString) {\n\t\treturn letterify(letterString, 'a', 'z');\n\t}\n\n\t/**\n\t * Replaces all {@code '?'} characters with random chars from [{@code from} - {@code to}] range\n\t *\n\t * @param letterString text to process\n\t * @param from         start of the range\n\t * @param to           end of the range\n\t * @return text with replaced {@code '?'} chars\n\t */\n\tpublic String letterify(String letterString, char from, char to) {\n\t\treturn replaceSymbolWithCharsFromTo(letterString, '?', from, to);\n\t}\n\n\t/**\n\t * Replaces all {@code '#'} characters with random numbers from [0 - 9] range\n\t *\n\t * @param numberString text to process\n\t * @return text with replaced '#' characters\n\t */\n\tpublic String numerify(String numberString) {\n\t\treturn numerify(numberString, 0, 9);\n\t}\n\n\t/**\n\t * Replaces all {@code '#'} characters with random numbers from [{@code from} - {@code to}] range\n\t *\n\t * @param numberString text to process\n\t * @param from         start of the range\n\t * @param to           end of the range\n\t * @return text with replaced '#' characters\n\t */\n\tpublic String numerify(String numberString, int from, int to) {\n\t\treturn replaceSymbolWithCharsFromTo(numberString, '#', Character.forDigit(from, 10), Character.forDigit(to, 10));\n\t}\n\n\t/**\n\t * Processes text with {@code numerify()} and {@code letterify()} methods\n\t *\n\t * @param string text to process\n\t * @return text with replaced '#' and '?' characters\n\t */\n\tpublic String bothify(String string) {\n\t\treturn letterify(numerify(string));\n\t}\n\n\t/**\n\t * Replaces occurrence of a specific symbol with a random character within the given range.\n\t *\n\t * @param string the template string containing symbols to be replaced\n\t * @param symbol the character to look for in the template\n\t * @param from the lower bound (inclusive) of the random character range\n\t * @param to the upper bound (inclusive) of the random character range\n\t * @return a new string with all symbols replaced by random characters\n\t */\n\tprivate String replaceSymbolWithCharsFromTo(String string, char symbol, char from, char to) {\n\t\tStringBuilder result = new StringBuilder();\n\t\tfor (int i = 0; i < string.length(); i++) {\n\t\t\tchar c = string.charAt(i);\n\t\t\tif (c == symbol) {\n\t\t\t\tresult.append(randomBetween(from, to));\n\t\t\t} else {\n\t\t\t\tresult.append(c);\n\t\t\t}\n\t\t}\n\t\treturn result.toString();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/DateProducer.java",
    "content": "/*\n * Copyright (c) 2013. Codearte\n */\npackage com.devskiller.jfairy.producer;\n\nimport java.time.Instant;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.Month;\nimport java.time.Period;\nimport java.time.ZoneOffset;\n\nimport com.devskiller.jfairy.producer.util.ValidateUtils;\n\nimport static java.time.temporal.TemporalAdjusters.firstDayOfYear;\nimport static java.time.temporal.TemporalAdjusters.lastDayOfYear;\n\npublic class DateProducer {\n\n\tstatic final int SECONDS_BEFORE_TO_BE_IN_THE_PAST = 1;\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final TimeProvider timeProvider;\n\n\tpublic DateProducer(BaseProducer baseProducer, TimeProvider timeProvider) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.timeProvider = timeProvider;\n\t}\n\n\tpublic LocalDateTime randomDateInThePast(int maxYearsEarlier) {\n\t\tValidateUtils.isTrue(maxYearsEarlier >= 0, \"%d has to be >= 0\", maxYearsEarlier);\n\t\tLocalDateTime currentDate = timeProvider.getCurrentTime();\n\t\tLocalDateTime latestDateInThePast = currentDate.minusSeconds(SECONDS_BEFORE_TO_BE_IN_THE_PAST);\n\t\tLocalDateTime maxYearsEarlierDate = currentDate.minusYears(maxYearsEarlier);\n\t\treturn randomDateBetweenTwoDates(maxYearsEarlierDate, latestDateInThePast);\n\t}\n\n\tpublic LocalDateTime randomDateBetweenYearAndNow(int fromYear) {\n\t\tint actualYear = timeProvider.getCurrentYear();\n\t\treturn randomDateInThePast(actualYear - fromYear);\n\t}\n\n\tpublic LocalDate randomDateBetweenTwoDates(LocalDate from, LocalDate to) {\n\t\tlong epochDay = baseProducer.randomBetween(from.toEpochDay(), to.toEpochDay());\n\t\treturn LocalDate.ofEpochDay(epochDay);\n\t}\n\n\tpublic LocalDateTime randomDateBetweenTwoDates(LocalDateTime from, LocalDateTime to) {\n\t\tlong between = baseProducer.randomBetween(from.toInstant(ZoneOffset.UTC).toEpochMilli(),\n\t\t\tto.toInstant(ZoneOffset.UTC).toEpochMilli());\n\t\treturn LocalDateTime.ofInstant(Instant.ofEpochMilli(between), ZoneOffset.UTC);\n\t}\n\n\tpublic LocalDateTime randomDateBetweenYears(int fromYear, int toYear) {\n\t\tValidateUtils.isTrue(fromYear <= toYear, \"%d has to be <= %d\", fromYear, toYear);\n\t\tLocalDateTime fromDate = getDateForFirstDayForGivenYear(fromYear);\n\t\tLocalDateTime toDate = getDateForLastDayForGivenYear(toYear);\n\t\treturn randomDateBetweenTwoDates(fromDate, toDate);\n\t}\n\n\tprivate LocalDateTime getDateForLastDayForGivenYear(int year) {\n\t\treturn LocalDateTime.of(year, Month.JANUARY, 1, 23, 59).with(lastDayOfYear());\n\t}\n\n\tprivate LocalDateTime getDateForFirstDayForGivenYear(int year) {\n\t\treturn LocalDateTime.of(year, Month.JANUARY, 1, 0, 0).with(firstDayOfYear());\n\t}\n\n\tpublic LocalDateTime randomDateBetweenNowAndFuturePeriod(Period futurePeriod) {\n\t\tLocalDateTime now = timeProvider.getCurrentTime();\n\t\treturn randomDateBetweenTwoDates(now, now.plus(futurePeriod));\n\t}\n\n\tpublic LocalDateTime randomDateInTheFuture(int years) {\n\t\treturn randomDateBetweenNowAndFuturePeriod(Period.ofYears(years));\n\t}\n\n\tpublic LocalDateTime randomDateInTheFuture() {\n\t\treturn randomDateInTheFuture(100);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/RandomGenerator.java",
    "content": "package com.devskiller.jfairy.producer;\n\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Random;\n\n/**\n * Source of random data for all jFairy producers.\n * <p>\n * This class encapsulates a {@link Random} instance to ensure determinism\n * when a fixed seed is provided.\n */\npublic class RandomGenerator {\n\n\tprivate static final String NUMERIC_CHARS      = \"0123456789\";\n\tprivate static final String ALPHA_CHARS        = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\tprivate static final String ALPHANUMERIC_CHARS = NUMERIC_CHARS + ALPHA_CHARS;\n\n\tprivate final Random random;\n\n\t/**\n\t * Creates a new generator with a default seed.\n\t */\n\tpublic RandomGenerator() {\n\t\tthis.random = new Random();\n\t}\n\n\t/**\n\t * Creates a new generator with a fixed seed for deterministic behavior.\n\t *\n\t * @param seed the initial seed\n\t */\n\tpublic RandomGenerator(int seed) {\n\t\tthis.random = new Random(seed);\n\t}\n\n\t/**\n\t * Returns the next pseudorandom boolean value.\n\t *\n\t * @return a random boolean\n\t */\n\tpublic boolean nextBoolean() {\n\t\treturn random.nextBoolean();\n\t}\n\n\t/**\n\t * Randomly permutes the specified list.\n\t *\n\t * @param <T>      the type of elements in the list\n\t * @param elements the list to be shuffled\n\t * @return the shuffled list\n\t */\n\tpublic <T> List<T> shuffle(List<T> elements) {\n\t\tCollections.shuffle(elements, random);\n\t\treturn elements;\n\t}\n\n\t/**\n\t * Returns a random integer between min and max (inclusive).\n\t *\n\t * @param min lower bound (inclusive)\n\t * @param max upper bound (inclusive)\n\t * @return a random integer\n\t */\n\tpublic int nextInt(int min, int max) {\n\t\treturn min == max ? min : random.nextInt(min, max + 1);\n\t}\n\n\t/**\n\t * Returns a random long between min and max (inclusive).\n\t *\n\t * @param min lower bound (inclusive)\n\t * @param max upper bound (inclusive)\n\t * @return a random long\n\t */\n\tpublic long nextLong(long min, long max) {\n\t\treturn min == max ? min : random.nextLong(min, max + 1);\n\t}\n\n\t/**\n\t * Returns a random double between min (inclusive) and max (exclusive).\n\t *\n\t * @param min lower bound (inclusive)\n\t * @param max upper bound (exclusive)\n\t * @return a random double\n\t */\n\tpublic double nextDouble(double min, double max) {\n\t\treturn min == max ? min : random.nextDouble(min, max);\n\t}\n\n\t/**\n\t * Generates a random numeric string.\n\t *\n\t * @param length desired length\n\t * @return string of digits\n\t */\n\tpublic String randomNumeric(int length) {\n\t\treturn randomString(length, NUMERIC_CHARS);\n\t}\n\n\t/**\n\t * Generates a random alphabetic string (upper-case ASCII).\n\t *\n\t * @param length desired length\n\t * @return string of letters\n\t */\n\tpublic String randomAlphabetic(int length) {\n\t\treturn randomString(length, ALPHA_CHARS);\n\t}\n\n\t/**\n\t * Generates a random alphanumeric string (upper-case ASCII).\n\t *\n\t * @param length desired length\n\t * @return string of digits and letters\n\t */\n\tpublic String randomAlphanumeric(int length) {\n\t\treturn randomString(length, ALPHANUMERIC_CHARS);\n\t}\n\n\tprivate String randomString(int length, String alphabet) {\n\t\tif (length < 0) {\n\t\t\tthrow new IllegalArgumentException(\"length must be >= 0, got: \" + length);\n\t\t}\n\t\tStringBuilder sb = new StringBuilder(length);\n\t\tfor (int i = 0; i < length; i++) {\n\t\t\tsb.append(alphabet.charAt(random.nextInt(alphabet.length())));\n\t\t}\n\t\treturn sb.toString();\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/TimeProvider.java",
    "content": "/*\n * Copyright (c) 2013. Codearte\n */\n\npackage com.devskiller.jfairy.producer;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\n\npublic class TimeProvider {\n\n\tpublic int getCurrentYear() {\n\t\treturn getCurrentTime().getYear();\n\t}\n\n\tpublic LocalDateTime getCurrentTime() {\n\t\treturn LocalDateTime.now(ZoneId.systemDefault());\n\t}\n\n\tpublic LocalDate getCurrentDate() {\n\t\treturn LocalDate.now(ZoneId.systemDefault());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/VATIdentificationNumberProvider.java",
    "content": "/*\n * Copyright (c) 2013 Codearte and authors\n */\npackage com.devskiller.jfairy.producer;\n\nimport java.util.function.Supplier;\n\n/**\n * VAT identification number (VATIN)\n *\n * @author mariuszs\n * @since 02.11.13.\n */\npublic interface VATIdentificationNumberProvider extends Supplier<String> {\n\n\t@Override\n\tString get();\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/Company.java",
    "content": "package com.devskiller.jfairy.producer.company;\n\npublic class Company {\n\n\tprivate final String name;\n\tprivate final String domain;\n\tprivate final String email;\n\tprivate final String vatIdentificationNumber;\n\n\tpublic Company(String name, String domain, String email, String vatIdentificationNumber) {\n\t\tthis.name = name;\n\t\tthis.domain = domain;\n\t\tthis.email = email;\n\t\tthis.vatIdentificationNumber = vatIdentificationNumber;\n\t}\n\n\tpublic String getName() {\n\t\treturn name;\n\t}\n\n\tpublic String getUrl() {\n\t\treturn \"http://www.\" + domain;\n\t}\n\n\tpublic String getEmail() {\n\t\treturn email + \"@\" + domain;\n\t}\n\n\tpublic String getDomain() {\n\t\treturn domain;\n\t}\n\n\tpublic String getVatIdentificationNumber() {\n\t\treturn vatIdentificationNumber;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/CompanyFactory.java",
    "content": "package com.devskiller.jfairy.producer.company;\n\npublic interface CompanyFactory {\n\n\tCompanyProvider produceCompany(CompanyProperties.CompanyProperty... companyProperties);\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/CompanyFactoryImpl.java",
    "content": "package com.devskiller.jfairy.producer.company;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\n\npublic class CompanyFactoryImpl implements CompanyFactory {\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DataMaster dataMaster;\n\tprivate final VATIdentificationNumberProvider vatIdentificationNumberProvider;\n\n\tpublic CompanyFactoryImpl(BaseProducer baseProducer,\n\t                   DataMaster dataMaster,\n\t                   VATIdentificationNumberProvider vatIdentificationNumberProvider) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dataMaster = dataMaster;\n\t\tthis.vatIdentificationNumberProvider = vatIdentificationNumberProvider;\n\t}\n\n\t@Override\n\tpublic CompanyProvider produceCompany(CompanyProperties.CompanyProperty... companyProperties) {\n\t\treturn new DefaultCompanyProvider(baseProducer, dataMaster, vatIdentificationNumberProvider, companyProperties);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/CompanyProperties.java",
    "content": "package com.devskiller.jfairy.producer.company;\n\npublic final class CompanyProperties {\n\n\tprivate CompanyProperties() {\n\t}\n\n\tpublic abstract static class CompanyProperty {\n\n\t\tpublic abstract void apply(CompanyProvider company);\n\n\t\tpublic static CompanyProperty withName(final String name) {\n\t\t\treturn new CompanyProperty() {\n\t\t\t\t@Override\n\t\t\t\tpublic void apply(CompanyProvider companyProvider) {\n\t\t\t\t\tcompanyProvider.setName(name);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tpublic static CompanyProperty withDomain(final String domain) {\n\t\t\treturn new CompanyProperty() {\n\t\t\t\t@Override\n\t\t\t\tpublic void apply(CompanyProvider companyProvider) {\n\t\t\t\t\tcompanyProvider.setDomain(domain);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tpublic static CompanyProperty withEmail(final String email) {\n\t\t\treturn new CompanyProperty() {\n\t\t\t\t@Override\n\t\t\t\tpublic void apply(CompanyProvider companyProvider) {\n\t\t\t\t\tcompanyProvider.setEmail(email);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tpublic static CompanyProperty withVatIdentificationNumber(final String vatIdentificationNumber) {\n\t\t\treturn new CompanyProperty() {\n\t\t\t\t@Override\n\t\t\t\tpublic void apply(CompanyProvider companyProvider) {\n\t\t\t\t\tcompanyProvider.setVatIdentificationNumber(vatIdentificationNumber);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/CompanyProvider.java",
    "content": "package com.devskiller.jfairy.producer.company;\nimport java.util.function.Supplier;\n\npublic interface CompanyProvider extends Supplier<Company> {\n\n\tString DOMAIN = \"domains\";\n\tString COMPANY_SUFFIX = \"companySuffixes\";\n\tString COMPANY_NAME = \"companyNames\";\n\tString COMPANY_EMAIL = \"companyEmails\";\n\n\t@Override\n\tCompany get();\n\n\tvoid generateName();\n\n\tvoid generateDomain();\n\n\tvoid generateEmail();\n\n\tvoid generateVatIdentificationNumber();\n\n\tvoid setName(String name);\n\n\tvoid setDomain(String domain);\n\n\tvoid setEmail(String email);\n\n\tvoid setVatIdentificationNumber(String vatIdentificationNumber);\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/DefaultCompanyProvider.java",
    "content": "package com.devskiller.jfairy.producer.company;\n\nimport java.util.Locale;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.deleteWhitespace;\nimport static com.devskiller.jfairy.producer.util.StringUtils.escapeNonAscii;\nimport static com.devskiller.jfairy.producer.util.StringUtils.latinize;\nimport static com.devskiller.jfairy.producer.util.StringUtils.strip;\n\npublic class DefaultCompanyProvider implements CompanyProvider {\n\n\tprotected String name;\n\tprotected String domain;\n\tprotected String email;\n\tprotected String vatIdentificationNumber;\n\n\tprotected final BaseProducer baseProducer;\n\tprotected final DataMaster dataMaster;\n\n\tprotected final VATIdentificationNumberProvider vatIdentificationNumberProvider;\n\n\tpublic DefaultCompanyProvider(BaseProducer baseProducer,\n\t\t\t\t\t\t\t  DataMaster dataMaster,\n\t\t\t\t\t\t\t  VATIdentificationNumberProvider vatIdentificationNumberProvider,\n\t\t\t\t\t\t\t  CompanyProperties.CompanyProperty... companyProperties) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dataMaster = dataMaster;\n\t\tthis.vatIdentificationNumberProvider = vatIdentificationNumberProvider;\n\n\t\tfor (CompanyProperties.CompanyProperty companyProperty : companyProperties) {\n\t\t\tcompanyProperty.apply(this);\n\t\t}\n\t}\n\n\t@Override\n\tpublic Company get() {\n\n\t\tgenerateName();\n\t\tgenerateDomain();\n\t\tgenerateEmail();\n\t\tgenerateVatIdentificationNumber();\n\n\t\treturn new Company(name, domain, email, vatIdentificationNumber);\n\t}\n\n\t@Override\n\tpublic void generateName() {\n\t\tif (name != null) {\n\t\t\treturn;\n\t\t}\n\t\tname = dataMaster.getRandomValue(COMPANY_NAME);\n\t\tif (baseProducer.trueOrFalse()) {\n\t\t\tname += \" \" + dataMaster.getRandomValue(COMPANY_SUFFIX);\n\t\t}\n\t}\n\n\t/**\n\t * In case of the illegal hostname characters in company name\n\t * and truncate it if it is too long (length &gt; 10) after escape\n\t * <p>\n\t * It is compatible with other non-latin language and will not change the original result for latin language.\n\t * <p>\n\t * P.S. Actually the best way for Chinese here is to use phonetic writing (so as Japanese or Korean)\n\t */\n\t@Override\n\tpublic void generateDomain() {\n\t\tif (domain != null) {\n\t\t\treturn;\n\t\t}\n\n\t\tString host = latinize(strip(deleteWhitespace(name.toLowerCase(Locale.ROOT)), \".\").replace(\"/\", \"\"));\n\t\tint len1 = host.length();\n\t\thost = escapeNonAscii(host).replaceAll(\"\\\\\\\\u\", \"\");\n\t\tint len2 = host.length();\n\t\tif (len2 > len1 && len2 > 10) {\n\t\t\thost = host.substring(0, 10);\n\t\t}\n\n\t\tdomain = host + \".\" + dataMaster.getRandomValue(DOMAIN);\n\t}\n\n\t@Override\n\tpublic void generateEmail() {\n\t\tif (email != null) {\n\t\t\treturn;\n\t\t}\n\t\temail = dataMaster.getRandomValue(COMPANY_EMAIL);\n\t}\n\n\t@Override\n\tpublic void generateVatIdentificationNumber() {\n\t\tif (vatIdentificationNumber != null) {\n\t\t\treturn;\n\t\t}\n\t\tvatIdentificationNumber = vatIdentificationNumberProvider.get();\n\t}\n\n\t@Override\n\tpublic void setName(String name) {\n\t\tthis.name = name;\n\t}\n\n\t@Override\n\tpublic void setDomain(String domain) {\n\t\tthis.domain = domain;\n\t}\n\n\t@Override\n\tpublic void setEmail(String email) {\n\t\tthis.email = email;\n\t}\n\n\t@Override\n\tpublic void setVatIdentificationNumber(String vatIdentificationNumber) {\n\t\tthis.vatIdentificationNumber = vatIdentificationNumber;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/br/BrVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.br;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\n\n/**\n * Brazilian CNPJ (Cadastro Nacional da Pessoa Jurídica) generator.\n */\npublic class BrVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic BrVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tint[] digits = new int[12];\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\tdigits[i] = baseProducer.randomBetween(0, 9);\n\t\t}\n\t\tdigits[8] = 0;\n\t\tdigits[9] = 0;\n\t\tdigits[10] = 0;\n\t\tdigits[11] = 1;\n\n\t\tint d1 = calculateCheckDigit(digits, 12);\n\t\tint d2 = calculateCheckDigit(digits, d1, 13);\n\n\t\treturn String.format(\"%d%d.%d%d%d.%d%d%d/%d%d%d%d-%d%d\",\n\t\t\t\tdigits[0], digits[1], digits[2], digits[3], digits[4],\n\t\t\t\tdigits[5], digits[6], digits[7], digits[8], digits[9],\n\t\t\t\tdigits[10], digits[11], d1, d2);\n\t}\n\n\tprivate static final int[] WEIGHTS = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};\n\n\tprivate int calculateCheckDigit(int[] digits, int length) {\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < length; i++) {\n\t\t\tsum += digits[i] * WEIGHTS[WEIGHTS.length - length + i];\n\t\t}\n\t\tint remainder = 11 - (sum % 11);\n\t\treturn remainder >= 10 ? 0 : remainder;\n\t}\n\n\tprivate int calculateCheckDigit(int[] digits, int previousDigit, int length) {\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < digits.length; i++) {\n\t\t\tsum += digits[i] * WEIGHTS[WEIGHTS.length - length + i];\n\t\t}\n\t\tsum += previousDigit * WEIGHTS[WEIGHTS.length - 1];\n\t\tint remainder = 11 - (sum % 11);\n\t\treturn remainder >= 10 ? 0 : remainder;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/de/DeVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.de;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\n\n/**\n * German VAT identification number (Umsatzsteuer-Identifikationsnummer or USt-IdNr.)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/VAT_identification_number\">VAT identification number</a>\n *\n * @author Roland Weisleder\n */\npublic class DeVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate static final String VALID_NUMBER_PATTERN = \"^[0-9]{9}$\";\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic DeVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomNumeric(9);\n\t}\n\n\tpublic boolean isValid(String vatIdentificationNumber) {\n\t\treturn vatIdentificationNumber.matches(VALID_NUMBER_PATTERN);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/en/EnVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.en;\n\nimport java.util.Set;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.util.StringUtils;\n\n/**\n * American VAT Identification Number (known as Employer Identification Number or EIN in the United States)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/Employer_Identification_Number\">Employer Identification Number</a>\n *\n * @author Olga Maciaszek-Sharma\n * @since 21.03.15\n */\npublic class EnVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate static final int EIN_LENGTH = 10;\n\tprivate static final int HYPHEN_INDEX = 2;\n\tprivate static final int SERIAL_NUMBER_LENGTH = 7;\n\tprivate static final int SERIAL_NUMBER_INDEX = 3;\n\tprivate static final int AREA_NUMBER_LENGTH = 2;\n\n\tprivate final BaseProducer baseProducer;\n\tprivate static final Set<Integer> EXCLUDED_NUMBERS = Set.of(7, 8, 9, 17, 18, 19, 28, 29, 41, 47, 49, 69, 70, 79, 89, 96, 97);\n\n\tpublic EnVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tchar[] ein = new char[EIN_LENGTH];\n\n\t\tfillHyphen(ein);\n\n\t\tfillAreaNumber(ein);\n\n\t\tfillSerialNumber(ein);\n\n\t\treturn String.valueOf(ein);\n\t}\n\n\tprivate void fillSerialNumber(char[] ein) {\n\t\tString number = String.valueOf(baseProducer.randomBetween(1, 9999));\n\t\tchar[] digits = StringUtils.leftPad(number, SERIAL_NUMBER_LENGTH, \"0\").toCharArray();\n\t\tSystem.arraycopy(digits, 0, ein, SERIAL_NUMBER_INDEX, digits.length);\n\t}\n\n\tprivate void fillAreaNumber(char[] ein) {\n\t\tint number;\n\t\tdo {\n\t\t\tnumber = baseProducer.randomBetween(0, 99);\n\t\t} while (EXCLUDED_NUMBERS.contains(number));\n\t\tchar[] digits = StringUtils.leftPad(Integer.toString(number), AREA_NUMBER_LENGTH, \"0\").toCharArray();\n\t\tSystem.arraycopy(digits, 0, ein, 0, digits.length);\n\n\t}\n\n\tprivate void fillHyphen(char[] ein) {\n\t\tein[HYPHEN_INDEX] = '-';\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/es/EsVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.es;\n\nimport java.util.Locale;\nimport java.util.regex.Pattern;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.Country;\n\n/**\n * Spanish VAT Identification Number (known as Número de Identificación Fiscal (for freelancers) or Código de Identificación Fiscal (for companies)\t in Spain)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/VAT_identification_number\">VAT identification number</a>\n */\npublic class EsVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate static final String REGEX_CIF = \"^[A-Z][0-9]{2}[0-9]{5}([KPQSABEH]|[0-9]|[A-Z])$\";\n\n\tprivate final BaseProducer baseProducer;\n\n\tprivate final Pattern regexCif;\n\n\tprivate final Locale primaryLocale = Country.Spain.getPrimaryLocale();\n\n\tpublic EsVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.regexCif = Pattern.compile(REGEX_CIF);\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn String.format(\"%s%s%s\",\n\t\t\tbaseProducer.randomAlphabetic(1).toUpperCase(primaryLocale),\n\t\t\tbaseProducer.randomNumeric(7),\n\t\t\tbaseProducer.randomAlphanumeric(1).toUpperCase(primaryLocale));\n\t}\n\n\tpublic boolean isValid(String cif) {\n\t\treturn this.regexCif.matcher(cif).matches();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/fr/FrVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.fr;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.Country;\n\n/**\n * Provider for French VAT identification numbers (TVA intracommunautaire).\n * <p>\n * Format: FR + 2 digits (key) + 9 digits (SIREN).<br>\n * The \"SIREN\" satisfies the Luhn algorithm.\n *\n * @author Markus Spann\n * @since 0.8.3\n */\npublic class FrVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic FrVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tString siren = generateLuhnCompliantSiren();\n\t\tint key = (12 + 3 * (Integer.parseInt(siren) % 97)) % 97;\n\n\t\treturn Country.France.getCode() + String.format(\"%02d%s\", key, siren);\n\t}\n\n\t/**\n\t * Generates a 9-digit SIREN number that satisfies the Luhn algorithm.\n\t *\n\t * @return a valid 9-digit SIREN string\n\t */\n\tprivate String generateLuhnCompliantSiren() {\n\t\tint[] digits = new int[9];\n\t\tint sum = 0;\n\n\t\t// generate first 8 digits in a single random call\n\t\tString base = baseProducer.randomNumeric(8);\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\tdigits[i] = Character.digit(base.charAt(i), 10);\n\t\t}\n\n\t\t// calculate Luhn sum for the first 8 digits\n\t\t// for a 9-digit number, doubling every second digit from the right\n\t\t// means doubling digits at indices 7, 5, 3, 1 (0-based from left).\n\t\tfor (int i = 0; i < 8; i++) {\n\t\t\tint digit = digits[i];\n\t\t\tif (i % 2 != 0) {\n\t\t\t\tdigit *= 2;\n\t\t\t\tif (digit > 9) {\n\t\t\t\t\tdigit -= 9;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsum += digit;\n\t\t}\n\n\t\t// calculate and set the check digit (9th digit)\n\t\tint checkDigit = (10 - (sum % 10)) % 10;\n\t\tdigits[8] = checkDigit;\n\n\t\t// build the resulting string\n\t\tStringBuilder sb = new StringBuilder(9);\n\t\tfor (int d : digits) {\n\t\t\tsb.append(d);\n\t\t}\n\t\treturn sb.toString();\n\t}\n\n}\n\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/ka/KaVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.ka;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\n\npublic class KaVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic KaVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomElement(\"2\", \"4\") + baseProducer.numerify(\"########\");\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/pl/PlVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.pl;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.util.StringUtils;\n\n/**\n * Polish VAT Identification Number (known as NIP Numer Identyfikacji Podatkowej in Poland)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/VAT_identification_number\">VAT identification number</a>\n */\npublic class PlVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(PlVATIdentificationNumberProvider.class);\n\n\t// ex 1234563218\n\tprivate static final int NIP_LENGTH = 10;\n\n\t// ex 123-456-32-18\n\tprivate static final int FORMATTED_NIP_LENGTH = 13;\n\n\tprivate static final int[] CODES = {\n\t\t101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123,\n\t\t124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146,\n\t\t147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 168, 169,\n\t\t171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193,\n\t\t194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, 215, 216,\n\t\t217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239,\n\t\t241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 263,\n\t\t264, 265, 266, 267, 268, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 281, 282, 283, 284, 285, 286,\n\t\t287, 288, 289, 291, 292, 293, 294, 295, 296, 297, 298, 301, 302, 311, 312, 313, 314, 315, 316, 317, 318,\n\t\t319, 321, 322, 323, 324, 325, 326, 327, 328, 329, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342,\n\t\t343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 361, 362, 363, 364, 365,\n\t\t366, 367, 368, 369, 371, 372, 373, 374, 375, 376, 377, 378, 379, 381, 382, 383, 384, 385, 386, 387, 388,\n\t\t389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 411, 412, 413, 414, 415, 416, 417, 418, 419, 421, 422,\n\t\t423, 424, 425, 426, 427, 428, 429, 431, 432, 433, 434, 435, 436, 437, 438, 439, 441, 442, 443, 444, 445,\n\t\t446, 447, 448, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468,\n\t\t469, 471, 472, 473, 474, 475, 476, 477, 478, 479, 481, 482, 483, 484, 485, 486, 487, 488, 489, 491, 492,\n\t\t493, 494, 495, 496, 497, 498, 499, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 516,\n\t\t519, 521, 522, 523, 524, 525, 526, 527, 528, 529, 531, 532, 533, 534, 535, 536, 537, 538, 539, 541, 542,\n\t\t543, 544, 545, 546, 547, 548, 549, 551, 552, 553, 554, 555, 556, 557, 558, 559, 561, 562, 563, 564, 565,\n\t\t566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 577, 578, 579, 581, 582, 583, 584, 585, 586, 587, 588,\n\t\t589, 591, 592, 593, 594, 595, 596, 597, 598, 599, 601, 602, 603, 604, 605, 606, 607, 608, 609, 611, 612,\n\t\t613, 614, 615, 616, 617, 618, 619, 621, 622, 623, 624, 625, 626, 627, 628, 629, 631, 632, 633, 634, 635,\n\t\t636, 637, 638, 639, 641, 642, 643, 644, 645, 646, 647, 648, 649, 651, 652, 653, 654, 655, 656, 657, 658,\n\t\t659, 661, 662, 663, 664, 665, 666, 667, 668, 669, 671, 672, 673, 674, 675, 676, 677, 678, 679, 681, 682,\n\t\t683, 684, 685, 686, 687, 688, 689, 691, 692, 693, 694, 695, 696, 697, 698, 699, 701, 711, 712, 713, 714,\n\t\t715, 716, 717, 718, 719, 721, 722, 723, 724, 725, 726, 727, 728, 729, 731, 732, 733, 734, 735, 736, 737,\n\t\t738, 739, 741, 742, 743, 744, 745, 746, 747, 748, 749, 751, 752, 753, 754, 755, 756, 757, 758, 759, 761,\n\t\t762, 763, 764, 765, 766, 767, 768, 769, 771, 772, 773, 774, 775, 776, 777, 778, 779, 781, 782, 783, 784,\n\t\t785, 786, 787, 788, 789, 791, 792, 793, 794, 795, 796, 797, 798, 799, 811, 812, 813, 814, 815, 816, 817,\n\t\t818, 819, 821, 822, 823, 824, 825, 826, 827, 828, 829, 831, 832, 833, 834, 835, 836, 837, 838, 839, 841,\n\t\t842, 843, 844, 845, 846, 847, 848, 849, 851, 852, 853, 854, 855, 856, 857, 858, 859, 861, 862, 863, 864,\n\t\t865, 866, 867, 868, 869, 871, 872, 873, 874, 875, 876, 877, 878, 879, 881, 882, 883, 884, 885, 886, 887,\n\t\t888, 889, 891, 892, 893, 894, 895, 896, 897, 898, 899, 911, 912, 913, 914, 915, 916, 917, 918, 919, 921,\n\t\t922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 941, 942, 943, 944,\n\t\t945, 946, 947, 948, 949, 951, 952, 953, 954, 955, 956, 957, 958, 959, 961, 962, 963, 964, 965, 966, 967,\n\t\t968, 969, 971, 972, 973, 974, 975, 976, 977, 978, 979, 981, 982, 983, 984, 985, 986, 987, 988, 989, 991,\n\t\t992, 993, 994, 995, 996, 997, 998\n\t};\n\tprivate static final int[] WEIGHTS = {6, 5, 7, 2, 3, 4, 5, 6, 7};\n\n\t// 123______8\n\tprivate static final int SERIAL_NUMBER_SIZE = 6;\n\tprivate static final int MAX_SERIAL_NUMBER = 999999;\n\n\t// 1234563_18\n\tprivate static final int CHECKSUM_CHAR_INDEX = 9;\n\tstatic final int MODULO11 = 11;\n\tpublic static final int TEN = 10;\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic PlVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tint checkSum;\n\t\tString number;\n\t\tdo {\n\t\t\tnumber = generateNumber();\n\t\t\tcheckSum = calculateChecksum(number);\n\t\t\t// numbers with checkSum == 10 are invalid\n\t\t} while (checkSum == TEN);\n\t\treturn number + checkSum;\n\t}\n\n\tprivate String generateNumber() {\n\t\tString prefix = String.valueOf(CODES[baseProducer.randomInt(CODES.length - 1)]);\n\n\t\tString number = StringUtils.leftPad(String.valueOf(baseProducer.randomInt(MAX_SERIAL_NUMBER)), SERIAL_NUMBER_SIZE, \"0\");\n\n\t\treturn prefix + number;\n\t}\n\n\t// TODO: Move to separate module\n\tpublic static boolean isValid(String nip) {\n\t\tString normalizedNip = normalizeNip(nip);\n\t\tif (normalizedNip.length() != NIP_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tint checksum = calculateChecksum(normalizedNip);\n\t\t\treturn checksum == normalizedNip.charAt(CHECKSUM_CHAR_INDEX) - '0';\n\t\t} catch (NumberFormatException ex) {\n\t\t\tLOG.debug(\"Invalid nip {}\", nip, ex);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate static String normalizeNip(String value) {\n\t\tif (value.length() == FORMATTED_NIP_LENGTH) {\n\t\t\treturn value.replaceAll(\"-\", \"\");\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate static int calculateChecksum(String nip) {\n\t\tchar[] chars = nip.toCharArray();\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < WEIGHTS.length; i++) {\n\t\t\tsum += (chars[i] - '0') * WEIGHTS[i];\n\t\t}\n\t\treturn sum % MODULO11;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/sk/SkVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.sk;\n\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.util.StringUtils;\n\n/**\n * Slovak VAT Identification Number (known as NIP)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/VAT_identification_number\">VAT identification number</a>\n */\npublic class SkVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate static final Logger LOG = LoggerFactory.getLogger(SkVATIdentificationNumberProvider.class);\n\n\t// ex 1234563218\n\tprivate static final int NIP_LENGTH = 10;\n\n\t// ex 123-456-32-18\n\tprivate static final int FORMATTED_NIP_LENGTH = 13;\n\n\tprivate static final int[] CODES = {\n\t\t101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123,\n\t\t124, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146,\n\t\t147, 148, 149, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 162, 163, 164, 165, 166, 167, 168, 169,\n\t\t171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193,\n\t\t194, 195, 196, 197, 198, 199, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 213, 214, 215, 216,\n\t\t217, 218, 219, 221, 222, 223, 224, 225, 226, 227, 228, 229, 231, 232, 233, 234, 235, 236, 237, 238, 239,\n\t\t241, 242, 243, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 262, 263,\n\t\t264, 265, 266, 267, 268, 269, 271, 272, 273, 274, 275, 276, 277, 278, 279, 281, 282, 283, 284, 285, 286,\n\t\t287, 288, 289, 291, 292, 293, 294, 295, 296, 297, 298, 301, 302, 311, 312, 313, 314, 315, 316, 317, 318,\n\t\t319, 321, 322, 323, 324, 325, 326, 327, 328, 329, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342,\n\t\t343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 356, 357, 358, 359, 361, 362, 363, 364, 365,\n\t\t366, 367, 368, 369, 371, 372, 373, 374, 375, 376, 377, 378, 379, 381, 382, 383, 384, 385, 386, 387, 388,\n\t\t389, 391, 392, 393, 394, 395, 396, 397, 398, 399, 411, 412, 413, 414, 415, 416, 417, 418, 419, 421, 422,\n\t\t423, 424, 425, 426, 427, 428, 429, 431, 432, 433, 434, 435, 436, 437, 438, 439, 441, 442, 443, 444, 445,\n\t\t446, 447, 448, 449, 451, 452, 453, 454, 455, 456, 457, 458, 459, 461, 462, 463, 464, 465, 466, 467, 468,\n\t\t469, 471, 472, 473, 474, 475, 476, 477, 478, 479, 481, 482, 483, 484, 485, 486, 487, 488, 489, 491, 492,\n\t\t493, 494, 495, 496, 497, 498, 499, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 516,\n\t\t519, 521, 522, 523, 524, 525, 526, 527, 528, 529, 531, 532, 533, 534, 535, 536, 537, 538, 539, 541, 542,\n\t\t543, 544, 545, 546, 547, 548, 549, 551, 552, 553, 554, 555, 556, 557, 558, 559, 561, 562, 563, 564, 565,\n\t\t566, 567, 568, 569, 571, 572, 573, 574, 575, 576, 577, 578, 579, 581, 582, 583, 584, 585, 586, 587, 588,\n\t\t589, 591, 592, 593, 594, 595, 596, 597, 598, 599, 601, 602, 603, 604, 605, 606, 607, 608, 609, 611, 612,\n\t\t613, 614, 615, 616, 617, 618, 619, 621, 622, 623, 624, 625, 626, 627, 628, 629, 631, 632, 633, 634, 635,\n\t\t636, 637, 638, 639, 641, 642, 643, 644, 645, 646, 647, 648, 649, 651, 652, 653, 654, 655, 656, 657, 658,\n\t\t659, 661, 662, 663, 664, 665, 666, 667, 668, 669, 671, 672, 673, 674, 675, 676, 677, 678, 679, 681, 682,\n\t\t683, 684, 685, 686, 687, 688, 689, 691, 692, 693, 694, 695, 696, 697, 698, 699, 701, 711, 712, 713, 714,\n\t\t715, 716, 717, 718, 719, 721, 722, 723, 724, 725, 726, 727, 728, 729, 731, 732, 733, 734, 735, 736, 737,\n\t\t738, 739, 741, 742, 743, 744, 745, 746, 747, 748, 749, 751, 752, 753, 754, 755, 756, 757, 758, 759, 761,\n\t\t762, 763, 764, 765, 766, 767, 768, 769, 771, 772, 773, 774, 775, 776, 777, 778, 779, 781, 782, 783, 784,\n\t\t785, 786, 787, 788, 789, 791, 792, 793, 794, 795, 796, 797, 798, 799, 811, 812, 813, 814, 815, 816, 817,\n\t\t818, 819, 821, 822, 823, 824, 825, 826, 827, 828, 829, 831, 832, 833, 834, 835, 836, 837, 838, 839, 841,\n\t\t842, 843, 844, 845, 846, 847, 848, 849, 851, 852, 853, 854, 855, 856, 857, 858, 859, 861, 862, 863, 864,\n\t\t865, 866, 867, 868, 869, 871, 872, 873, 874, 875, 876, 877, 878, 879, 881, 882, 883, 884, 885, 886, 887,\n\t\t888, 889, 891, 892, 893, 894, 895, 896, 897, 898, 899, 911, 912, 913, 914, 915, 916, 917, 918, 919, 921,\n\t\t922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 941, 942, 943, 944,\n\t\t945, 946, 947, 948, 949, 951, 952, 953, 954, 955, 956, 957, 958, 959, 961, 962, 963, 964, 965, 966, 967,\n\t\t968, 969, 971, 972, 973, 974, 975, 976, 977, 978, 979, 981, 982, 983, 984, 985, 986, 987, 988, 989, 991,\n\t\t992, 993, 994, 995, 996, 997, 998\n\t};\n\tprivate static final int[] WEIGHTS = {6, 5, 7, 2, 3, 4, 5, 6, 7};\n\n\t// 123______8\n\tprivate static final int SERIAL_NUMBER_SIZE = 6;\n\tprivate static final int MAX_SERIAL_NUMBER = 999999;\n\n\t// 1234563_18\n\tprivate static final int CHECKSUM_CHAR_INDEX = 9;\n\tstatic final int MODULO11 = 11;\n\tpublic static final int TEN = 10;\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic SkVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tint checkSum;\n\t\tString number;\n\t\tdo {\n\t\t\tnumber = generateNumber();\n\t\t\tcheckSum = calculateChecksum(number);\n\t\t\t// numbers with checkSum == 10 are invalid\n\t\t} while (checkSum == TEN);\n\t\treturn number + checkSum;\n\t}\n\n\tprivate String generateNumber() {\n\t\tString prefix = String.valueOf(CODES[baseProducer.randomInt(CODES.length - 1)]);\n\n\t\tString number = StringUtils.leftPad(String.valueOf(baseProducer.randomInt(MAX_SERIAL_NUMBER)), SERIAL_NUMBER_SIZE, \"0\");\n\n\t\treturn prefix + number;\n\t}\n\n\tpublic static boolean isValid(String nip) {\n\t\tString normalizedNip = normalizeNip(nip);\n\t\tif (normalizedNip.length() != NIP_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tint checksum = calculateChecksum(normalizedNip);\n\t\t\treturn checksum == normalizedNip.charAt(CHECKSUM_CHAR_INDEX) - '0';\n\t\t} catch (NumberFormatException ex) {\n\t\t\tLOG.debug(\"Invalid nip {}\", nip, ex);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate static String normalizeNip(String value) {\n\t\tif (value.length() == FORMATTED_NIP_LENGTH) {\n\t\t\treturn value.replaceAll(\"-\", \"\");\n\t\t}\n\t\treturn value;\n\t}\n\n\tprivate static int calculateChecksum(String nip) {\n\t\tchar[] chars = nip.toCharArray();\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < WEIGHTS.length; i++) {\n\t\t\tsum += (chars[i] - '0') * WEIGHTS[i];\n\t\t}\n\t\treturn sum % MODULO11;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/sv/SvVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.sv;\n\nimport java.time.LocalDate;\nimport java.time.ZoneId;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.util.StringUtils;\n\nimport static com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties.dateOfBirth;\nimport static com.devskiller.jfairy.producer.person.locale.sv.SvNationalIdentificationNumberProvider.calculateChecksum;\n\n/**\n * Swedish VAT Identification Number (known as Momsnummer in Sweden)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/VAT_identification_number\">VAT identification number</a>\n */\npublic class SvVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate static final int VAT_IDENTIFICATION_NUMBER_LENGTH = 14;\n\tprivate static final int SOLE_TRADER_UPPER_AGE_LIMIT = 16;\n\tprivate static final int SOLE_TRADER_LOWER_AGE_LIMIT = 100;\n\tprivate static final String SE = \"SE\";\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\tprivate final NationalIdentificationNumberFactory nationalIdentificationNumberFactory;\n\n\tpublic SvVATIdentificationNumberProvider(BaseProducer baseProducer, DateProducer dateProducer, NationalIdentificationNumberFactory nationalIdentificationNumberFactory) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.nationalIdentificationNumberFactory = nationalIdentificationNumberFactory;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tboolean isSoleTrader = baseProducer.trueOrFalse(); // Approximately 50% probability of a company to be of type sole trader (enskild firma)\n\t\tif (isSoleTrader) {\n\t\t\treturn generateVatNumberForSoleTrader();\n\t\t}\n\n\t\tint randomGroupNumber = baseProducer.randomElement(GroupNumber.class).getValue();\n\t\tString randomNumericBetween20And99 = StringUtils.leftPad(String.valueOf(baseProducer.randomBetween(20, 99)), 2, \"0\");\n\t\tString organizationNumberWithoutChecksum = randomGroupNumber + baseProducer.randomNumeric(1)\n\t\t\t+ randomNumericBetween20And99 + baseProducer.randomNumeric(5);\n\t\tString organizationNumber = organizationNumberWithoutChecksum + calculateChecksum(organizationNumberWithoutChecksum);\n\n\t\treturn SE + organizationNumber + \"01\";\n\t}\n\n\tprivate String generateVatNumberForSoleTrader() {\n\t\tLocalDate now = LocalDate.now(ZoneId.systemDefault());\n\t\tLocalDate lowerAgeLimit = now.minusYears(SOLE_TRADER_LOWER_AGE_LIMIT);\n\t\tLocalDate upperAgeLimit = now.minusYears(SOLE_TRADER_UPPER_AGE_LIMIT);\n\t\tLocalDate dateOfBirth = dateProducer.randomDateBetweenTwoDates(lowerAgeLimit, upperAgeLimit);\n\t\tNationalIdentificationNumberProvider nationalIdentificationNumberProvider =\n\t\t\tnationalIdentificationNumberFactory.produceNationalIdentificationNumberProvider(\n\t\t\t\tdateOfBirth(dateOfBirth));\n\t\tString personalIdentityNumber = nationalIdentificationNumberProvider.get().getValue();\n\t\treturn SE + personalIdentityNumber.replace(\"-\", \"\") + \"01\";\n\t}\n\n\tpublic static boolean isValid(String vatIdentificationNumber) {\n\t\tint length = vatIdentificationNumber.length();\n\t\tif (length != VAT_IDENTIFICATION_NUMBER_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\n\t\tint checksum = Integer.parseInt(Character.toString(vatIdentificationNumber.charAt(length - 3)));\n\t\tint checkDigit = calculateChecksum(vatIdentificationNumber.substring(2, vatIdentificationNumber.length() - 2));\n\n\t\treturn checkDigit == checksum;\n\n\t}\n\n\t/**\n\t * Group number used to determine the first numer in a swedish organization number\n\t * Enum is translated from swedish wiki <a href=\"https://sv.wikipedia.org/wiki/Organisationsnummer\">...</a>\n\t */\n\tprivate enum GroupNumber {\n\t\tESTATE(1),                                            // Dödsbon\n\t\tSTATE_OR_COUNTY_OR_MUNICIPALITY_OR_PARISH(2),         // Stat, landsting, kommuner, församlingar\n\t\tFOREIGN_COMPANY(3),                                   // Utländska företag som bedriver näringsverksamhet eller äger fastigheter i Sverige\n\t\tLIMITED_COMPANY(5),                                   // Aktiebolag\n\t\tPARTNERSHIP(6),                                       // Enkelt bolag\n\t\tECONOMIC_ASSOCIATION(7),                              // Ekonomiska föreningar\n\t\tNON_PROFIT_ASSOCIATION_OR_FOUNDATION(8),              // Ideella föreningar och stiftelser\n\t\tTRADING_COMPANY_OR_LIMITED_COMPANY_OR_PARTNERSHIP(9); // Handelsbolag, kommanditbolag och enkla bolag\n\n\t\tprivate final int value;\n\n\t\tGroupNumber(int value) {\n\t\t\tthis.value = value;\n\t\t}\n\n\t\tint getValue() {\n\t\t\treturn value;\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/tr/TrVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.tr;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\n\n/**\n * Turkish VKN (Vergi Kimlik Numarası) generator.\n * 10 digits.\n * Last digit is a check digit.\n */\npublic class TrVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic TrVATIdentificationNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tint[] digits = new int[10];\n\n\t\tfor (int i = 0; i < 9; i++) {\n\t\t\tdigits[i] = baseProducer.randomBetween(0, 9);\n\t\t}\n\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < 9; i++) {\n\t\t\tint p = (digits[i] + 10 - (i + 1)) % 10;\n\t\t\tif (p == 9) {\n\t\t\t\tsum += 9;\n\t\t\t} else {\n\t\t\t\tint q = (int) (p * Math.pow(2, 9 - i)) % 9;\n\t\t\t\tsum += q;\n\t\t\t}\n\t\t}\n\n\t\tint c1 = (10 - (sum % 10)) % 10;\n\t\tdigits[9] = c1;\n\n\t\tStringBuilder sb = new StringBuilder();\n\t\tfor (int digit : digits) {\n\t\t\tsb.append(digit);\n\t\t}\n\t\treturn sb.toString();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/company/locale/zh/ZhVATIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.company.locale.zh;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.RandomGenerator;\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.util.ZhFairyUtil;\n\n/**\n * com.devskiller.jfairy.producer.company.locale.zh.ZhVATIdentificationNumberProvider\n * <p>\n * 6 digit for area location, 9 char (0-9A-Z) for organization code (2 char for business type, 2 char for industry type, 5 char for order number), total 15 digit\n *\n * @author lhfcws\n * @since 2017/3/1\n */\npublic class ZhVATIdentificationNumberProvider implements VATIdentificationNumberProvider {\n\n\tprivate static final BaseProducer BASE_PRODUCER = new BaseProducer(new RandomGenerator());\n\n\t@Override\n\tpublic String get() {\n\t\tStringBuilder vatBuilder = new StringBuilder();\n\t\tvatBuilder.append(BASE_PRODUCER.randomElement(ZhFairyUtil.PROV_LIST));\n\t\tvatBuilder.append(ZhFairyUtil.getRandomNumStr(BASE_PRODUCER, ZhFairyUtil.CITY_MAX, 2));\n\t\tvatBuilder.append(ZhFairyUtil.getRandomNumStr(BASE_PRODUCER, ZhFairyUtil.DISTRICT_MAX, 2));\n\t\tvatBuilder.append(getChars(9));\n\t\treturn vatBuilder.toString();\n\t}\n\n\tprivate char getChar() {\n\t\tint rndNum = BASE_PRODUCER.randomBetween(0, 35);\n\t\tif (rndNum < 10) {\n\t\t\treturn (char) (49 + rndNum);\n\t\t} else {\n\t\t\treturn (char) (65 + rndNum - 10);\n\t\t}\n\t}\n\n\tprivate String getChars(int paddingSize) {\n\t\tStringBuilder sb = new StringBuilder();\n\t\tfor (int i = 0; i < paddingSize; i++) {\n\t\t\tsb.append(getChar());\n\t\t}\n\t\treturn sb.toString();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/net/IPNumberProducer.java",
    "content": "package com.devskiller.jfairy.producer.net;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\n\npublic class IPNumberProducer {\n\n\tprivate static final int MAX = 0xFF;\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic IPNumberProducer(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\tpublic String generate() {\n\t\treturn String.format(\"%s.%s.%s.%s\", ipNumberPart(), ipNumberPart(), ipNumberPart(), ipNumberPart());\n\t}\n\n\tprivate int ipNumberPart() {\n\t\treturn baseProducer.randomInt(MAX);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/net/NetworkProducer.java",
    "content": "package com.devskiller.jfairy.producer.net;\n\n/**\n * TODO: Add emails\n */\npublic class NetworkProducer {\n\n\tprivate final IPNumberProducer ipNumberProducer;\n\n\tpublic NetworkProducer(IPNumberProducer ipNumberProducer) {\n\t\tthis.ipNumberProducer = ipNumberProducer;\n\t}\n\n\tpublic String ipAddress() {\n\t\treturn ipNumberProducer.generate();\n\t}\n\n\t/**\n\t * Generates a faked URL based on the current IP address.\n\t * <p>\n\t * The domain name is derived by mapping the digits of the IP address\n\t * to characters starting from 'a'.\n\t *\n\t * @param isHttps specifies whether to use the {@code https} or {@code http} protocol\n\t * @return a formatted URL string, e.g., \"https://abcdefghij.com\"\n\t */\n\tpublic String url(boolean isHttps) {\n\t\tString mergedIp = ipAddress().replace(\".\", \"\");\n\t\tStringBuilder domainBuilder = new StringBuilder(mergedIp.length());\n\n\t\tfor (int i = 0; i < mergedIp.length(); i++) {\n\t\t\tchar digitChar = mergedIp.charAt(i);\n\t\t\t// Character.digit is safer and more predictable than getNumericValue\n\t\t\tint numericValue = Character.digit(digitChar, 10);\n\n\t\t\tif (numericValue != -1) {\n\t\t\t\tdomainBuilder.append((char) (numericValue + 'a'));\n\t\t\t}\n\t\t}\n\n\t\tString protocol = \"http\";\n\t\tif (isHttps) {\n\t\t\tprotocol += \"s\";\n\t\t}\n\t\treturn protocol + \"://\" + domainBuilder + \".com\";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/CreditCard.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\n\n/**\n * Representation of a faked credit card with its essential security and expiry data.\n * <p>\n * This class holds information about the card vendor, number, CVV code,\n * and the expiration date. It is designed as an immutable object.\n *\n * @author jkubrynski@gmail.com\n * @since 2013-11-17\n */\npublic class CreditCard {\n\n\tprivate final String cardVendor;\n\tprivate final String cardNumber;\n\tprivate final String cvv;\n\tprivate final LocalDateTime expiryDate;\n\n\tpublic CreditCard(String cardVendor, String cardNumber, String cvv, LocalDateTime expiryDate) {\n\t\tthis.cardVendor = cardVendor;\n\t\tthis.cardNumber = cardNumber;\n\t\tthis.cvv = cvv;\n\t\tthis.expiryDate = expiryDate;\n\t}\n\n\tpublic String getVendor() {\n\t\treturn cardVendor;\n\t}\n\n\tpublic String getCardNumber() {\n\t\treturn cardNumber;\n\t}\n\n\tpublic String getCvv() {\n\t\treturn cvv;\n\t}\n\n\tpublic LocalDateTime getExpiryDate() {\n\t\treturn expiryDate;\n\t}\n\n\tpublic String getExpiryDateAsString() {\n\t\treturn String.format(\"%02d/%s\", expiryDate.getMonthValue(), DateTimeFormatter.ofPattern(\"uu\").format(expiryDate));\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/CreditCardProvider.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\nimport java.time.LocalDateTime;\nimport java.time.Period;\nimport java.util.function.Supplier;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\n\npublic class CreditCardProvider implements Supplier<CreditCard> {\n\n\tprivate static final Period DEFAULT_VALIDITY = Period.ofMonths(36);\n\tprivate static final String DATA_KEY = \"creditCardPrefixes\";\n\tprivate static final String CARD_VENDOR = \"Visa\";\n\n\tprivate final DataMaster dataMaster;\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\n\tpublic CreditCardProvider(DataMaster dataMaster, BaseProducer baseProducer, DateProducer dateProducer) {\n\t\tthis.dataMaster = dataMaster;\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dateProducer = dateProducer;\n\t}\n\n\t@Override\n\tpublic CreditCard get() {\n\t\tString randomNumber = generateNumber();\n\n\t\tLocalDateTime expiryDate = dateProducer.randomDateBetweenNowAndFuturePeriod(DEFAULT_VALIDITY);\n\t\treturn new CreditCard(CARD_VENDOR, randomNumber, baseProducer.numerify(\"###\"), expiryDate);\n\t}\n\n\tprivate String generateNumber() {\n\t\tInteger prefix = dataMaster.getValuesOfType(DATA_KEY, CARD_VENDOR, Integer.class);\n\t\tString stringPrefix = String.valueOf(prefix);\n\t\tStringBuilder builder = new StringBuilder(stringPrefix);\n\t\tbuilder.append(\"#\".repeat(Math.max(0, 15 - stringPrefix.length())));\n\t\treturn completeNumber(baseProducer.numerify(builder.toString()));\n\t}\n\n\t/**\n\t * Completes a credit card number by calculating and appending a checksum digit.\n\t * <p>\n\t * Uses a variation of the Luhn algorithm where every second digit is doubled.\n\t * If doubling results in a number greater than 9, the digits are summed.\n\t *\n\t * @param creditCardNumber the partial credit card number to complete\n\t * @return the full credit card number including the checksum digit\n\t * @throws IllegalArgumentException if the input contains non-digit characters\n\t */\n\tprivate String completeNumber(String creditCardNumber) {\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < creditCardNumber.length(); i++) {\n\t\t\tint n = Character.digit(creditCardNumber.charAt(i), 10);\n\n\t\t\tif (n == -1) {\n\t\t\t\tthrow new IllegalArgumentException(\"Invalid character in credit card number\");\n\t\t\t}\n\n\t\t\tif (i % 2 == 0) {\n\t\t\t\tn *= 2;\n\t\t\t\tif (n > 9) {\n\t\t\t\t\t// For n > 9 (e.g., 10-18), digit sum is equivalent to n - 9\n\t\t\t\t\tn -= 9;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsum += n;\n\t\t}\n\n\t\tint checksum = (sum * 9) % 10;\n\t\treturn creditCardNumber + checksum;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/DefaultIBANProvider.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\nimport java.util.List;\nimport java.util.Optional;\n\nimport de.speedbanking.iban.Iban;\nimport de.speedbanking.iban.IbanRegistry;\nimport de.speedbanking.iban.RandomIban;\nimport org.jspecify.annotations.Nullable;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.Country;\n\n/**\n * ALPHA: Under development\n */\npublic class DefaultIBANProvider implements IBANProvider {\n\n\tprotected final DataMaster dataMaster;\n\tprotected final BaseProducer baseProducer;\n\tprotected String countryCode;\n\n\tpublic DefaultIBANProvider(BaseProducer baseProducer,\n\t\t                       DataMaster dataMaster,\n\t\t                       IBANProperties.Property... properties) {\n\t\tthis.dataMaster = dataMaster;\n\t\tthis.baseProducer = baseProducer;\n\t\tfor (IBANProperties.Property property : properties) {\n\t\t\tproperty.apply(this);\n\t\t}\n\t}\n\n\t@Override\n\tpublic @Nullable IBAN get() {\n\t\tfillCountryCode();\n\n\t\tIbanRegistry reg = IbanRegistry.getByCode(countryCode);\n\t\tif (reg == null) {\n\t\t\treturn null;\n\t\t}\n\t\tIban iban = RandomIban.of(countryCode);\n\n\t\treturn new IBAN(iban.getAccountNumber(),\n\t\t\t\t\t\tiban.getCheckDigits(),\n\t\t\t\t\t\tiban.getBankCode(),\n\t\t\t\t\t\tiban.getBban(),\n\t\t\t\t\t\tiban.getCountryCode(),\n\t\t\t\t\t\tiban.getNationalCheckDigit(),\n\t\t\t\t\t\tiban.toString());\n\t}\n\n\t@Override\n\tpublic void fillCountryCode() {\n\t\tif (countryCode == null) {\n\t\t\tList<Country> countries = Country.findCountryForLanguage(dataMaster.getLanguage());\n\t\t\tCountry country = baseProducer.randomElement(countries);\n\n\t\t\tIbanRegistry r = IbanRegistry.getByCode(country.getCode());\n\t\t\tcountryCode = Optional.ofNullable(r).map(IbanRegistry::name).orElse(null);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void setCountry(String country) {\n\t\tthis.countryCode = country;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/IBAN.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\npublic class IBAN {\n\n\tprivate final String accountNumber;\n\tprivate final String checkDigit;\n\tprivate final String bankCode;\n\tprivate final String bban;\n\tprivate final String country;\n\tprivate final String nationalCheckDigit;\n\tprivate final String ibanNumber;\n\n\tpublic IBAN(String accountNumber, String checkDigit, String bankCode, String bban,\n\t\t\t\tString country, String nationalCheckDigit, String ibanNumber) {\n\t\tthis.accountNumber = accountNumber;\n\t\tthis.checkDigit = checkDigit;\n\t\tthis.bankCode = bankCode;\n\t\tthis.bban = bban;\n\t\tthis.country = country;\n\t\tthis.nationalCheckDigit = nationalCheckDigit;\n\t\tthis.ibanNumber = ibanNumber;\n\t}\n\n\tpublic String getAccountNumber() {\n\t\treturn accountNumber;\n\t}\n\n\tpublic String getCheckDigit() {\n\t\treturn checkDigit;\n\t}\n\n\tpublic String getBankCode() {\n\t\treturn bankCode;\n\t}\n\n\tpublic String getBban() {\n\t\treturn bban;\n\t}\n\n\tpublic String getCountry() {\n\t\treturn country;\n\t}\n\n\tpublic String getNationalCheckDigit() {\n\t\treturn nationalCheckDigit;\n\t}\n\n\tpublic String getIbanNumber() {\n\t\treturn ibanNumber;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/IBANFactory.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\npublic interface IBANFactory {\n\n\tIBANProvider produceIBANProvider(IBANProperties.Property... properties);\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/IBANFactoryImpl.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\n\npublic class IBANFactoryImpl implements IBANFactory {\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DataMaster dataMaster;\n\n\tpublic IBANFactoryImpl(BaseProducer baseProducer, DataMaster dataMaster) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dataMaster = dataMaster;\n\t}\n\n\t@Override\n\tpublic IBANProvider produceIBANProvider(IBANProperties.Property... properties) {\n\t\treturn new DefaultIBANProvider(baseProducer, dataMaster, properties);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/IBANProperties.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport de.speedbanking.iban.IbanRegistry;\n\nimport com.devskiller.jfairy.producer.util.LanguageCode;\n\npublic final class IBANProperties {\n\n\tprivate static final Map<LanguageCode, IbanRegistry> COUNTRIES = new HashMap<>();\n\n\tstatic {\n\t\tCOUNTRIES.put(LanguageCode.PL, IbanRegistry.PL);\n\t\tCOUNTRIES.put(LanguageCode.EN, IbanRegistry.GB);\n\t\tCOUNTRIES.put(LanguageCode.ES, IbanRegistry.ES);\n\t\tCOUNTRIES.put(LanguageCode.FR, IbanRegistry.FR);\n\t\tCOUNTRIES.put(LanguageCode.KA, IbanRegistry.GE);\n\t\tCOUNTRIES.put(LanguageCode.IT, IbanRegistry.IT);\n\t\tCOUNTRIES.put(LanguageCode.DE, IbanRegistry.DE);\n\t\tCOUNTRIES.put(LanguageCode.SK, IbanRegistry.SK);\n\t\tCOUNTRIES.put(LanguageCode.SV, IbanRegistry.SV);\n\t}\n\n\tprivate IBANProperties() {\n\t}\n\n\tpublic abstract static class Property {\n\n\t\tpublic abstract void apply(IBANProvider provider);\n\n\t}\n\n\tpublic static Property country(final String country) {\n\t\treturn new Property() {\n\t\t\t@Override\n\t\t\tpublic void apply(IBANProvider provider) {\n\t\t\t\tprovider.setCountry(country);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static Property language(final String language) {\n\t\treturn new Property() {\n\t\t\t@Override\n\t\t\tpublic void apply(IBANProvider provider) {\n\t\t\t\tprovider.setCountry(countryFromLanguage(language));\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate static String countryFromLanguage(String lang) {\n\t\treturn COUNTRIES.entrySet().stream()\n\t\t\t.filter(locale -> locale.getKey().name().equals(lang))\n\t\t\t.map(Map.Entry::getValue)\n\t\t\t.map(IbanRegistry::name)\n\t\t\t.findFirst()\n\t\t\t.orElse(\"PL\");\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/payment/IBANProvider.java",
    "content": "package com.devskiller.jfairy.producer.payment;\n\nimport java.util.function.Supplier;\n\npublic interface IBANProvider extends Supplier<IBAN> {\n\n\t@Override\n\tIBAN get();\n\n\tvoid fillCountryCode();\n\n\tvoid setCountry(String country);\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/AbstractAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\n\npublic abstract class AbstractAddressProvider implements AddressProvider {\n\n\tprivate static final String POSTAL_CODE_FORMAT = \"postal_code\";\n\n\tprivate static final String CITY = \"city\";\n\n\tprivate static final String STREET = \"street\";\n\n\tprotected final BaseProducer baseProducer;\n\n\tprotected final DataMaster dataMaster;\n\n\tpublic AbstractAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dataMaster = dataMaster;\n\t}\n\n\tpublic String getCity() {\n\t\treturn dataMaster.getRandomValue(CITY);\n\t}\n\n\tpublic String getPostalCode() {\n\t\tString postalCodeFormat = dataMaster.getRandomValue(POSTAL_CODE_FORMAT);\n\t\treturn baseProducer.numerify(postalCodeFormat);\n\t}\n\n\tpublic String getStreet() {\n\t\treturn dataMaster.getRandomValue(STREET);\n\t}\n\n\tpublic String getStreetNumber() {\n\t\treturn String.valueOf(baseProducer.randomBetween(1, 199));\n\t}\n\n\tpublic String getApartmentNumber() {\n\t\treturn baseProducer.trueOrFalse() ? String.valueOf(baseProducer.randomBetween(1, 350)) : \"\";\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/Address.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\npublic interface Address {\n\n\tString getStreet();\n\n\tString getStreetNumber();\n\n\tString getApartmentNumber();\n\n\tString getPostalCode();\n\n\tString getCity();\n\n\tString getAddressLine1();\n\n\tString getAddressLine2();\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/AddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.util.function.Supplier;\n\npublic interface AddressProvider extends Supplier<Address> {\n\n\t@Override\n\tAddress get();\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/CompanyEmailProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.util.function.Supplier;\n\nimport com.devskiller.jfairy.producer.company.Company;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.latinize;\nimport static com.devskiller.jfairy.producer.util.StringUtils.lowerCase;\n\npublic class CompanyEmailProvider implements Supplier<String> {\n\n\tprivate final String firstName;\n\tprivate final String lastName;\n\tprivate final Company company;\n\n\tpublic CompanyEmailProvider(String firstName, String lastName, Company company) {\n\t\tthis.firstName = firstName;\n\t\tthis.lastName = lastName;\n\t\tthis.company = company;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tString email = lowerCase(firstName + '.' + lastName + '@' + company.getDomain()).replaceAll(\" \", \".\");\n\t\treturn latinize(email);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/Country.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Locale;\nimport java.util.stream.Collectors;\n\nimport com.devskiller.jfairy.producer.util.LanguageCode;\n\npublic enum Country {\n\tPoland(\"PL\", LanguageCode.PL),\n\tUnitedKingdom(\"GB\", LanguageCode.EN),\n\tAustralia(\"AU\", LanguageCode.EN),\n\tUSA(\"US\", LanguageCode.EN),\n\tCanada(\"CA\", LanguageCode.EN, LanguageCode.FR),\n\tSpain(\"ES\", LanguageCode.ES),\n\tFrance(\"FR\", LanguageCode.FR),\n\tGeorgia(\"GE\", LanguageCode.KA),\n\tItaly(\"IT\", LanguageCode.IT),\n\tGermany(\"DE\", LanguageCode.DE),\n\tSweden(\"SE\", LanguageCode.SV),\n\tChina(\"CN\", LanguageCode.ZH),\n\tBrazil(\"BR\", LanguageCode.BR),\n\tSlovakia(\"SK\", LanguageCode.SK),\n\tTurkey(\"TR\", LanguageCode.TR);\n\n\t//\tISO 3166 code\n\tprivate final String code;\n\t// ISO 639-1\n\t@SuppressWarnings(\"ImmutableEnumChecker\")\n\tprivate final LanguageCode[] languages;\n\n\tCountry(String code, LanguageCode... language) {\n\t\tthis.code = code;\n\t\tthis.languages = language == null ? new LanguageCode[0] : Arrays.copyOf(language, language.length);\n\t}\n\n\tpublic String getCode() {\n\t\treturn code;\n\t}\n\n\t/**\n\t * Returns the primary Java Locale for this country.\n\t * <p>\n\t * This method uses the first associated language code and the country's ISO code\n\t * to create a {@code Locale} using the modern {@code Locale.of()} factory.\n\t *\n\t * @return the primary {@link java.util.Locale} for this country\n\t * @throws IllegalStateException if no languages are associated with the country\n\t */\n\tpublic Locale getPrimaryLocale() {\n\t\tif (languages.length == 0) {\n\t\t\tthrow new IllegalStateException(\"No languages defined for country \" + name());\n\t\t}\n\t\treturn new Locale(languages[0].name().toLowerCase(Locale.ROOT), code);\n\t}\n\n\tpublic static List<Country> findCountryForLanguage(LanguageCode language) {\n\t\treturn Arrays.stream(Country.values())\n\t\t\t.filter(country -> List.of(country.languages).contains(language))\n\t\t\t.collect(Collectors.toList());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/DefaultPersonProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.ZoneId;\nimport java.time.temporal.ChronoUnit;\nimport java.util.List;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.TimeProvider;\nimport com.devskiller.jfairy.producer.company.Company;\nimport com.devskiller.jfairy.producer.company.CompanyFactory;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.latinize;\nimport static com.devskiller.jfairy.producer.util.StringUtils.lowerCase;\n\npublic class DefaultPersonProvider implements PersonProvider {\n\n\tprotected Person.Sex sex;\n\tprotected String telephoneNumberFormat;\n\tprotected String mobileTelephoneNumberFormat;\n\tprotected Integer age;\n\tprotected LocalDate dateOfBirth;\n\tprotected Company company;\n\tprotected Address address;\n\tprotected String firstName;\n\tprotected String middleName;\n\tprotected String lastName;\n\tprotected String email;\n\tprotected String username;\n\tprotected String telephoneNumber;\n\tprotected String mobileTelephoneNumber;\n\tprotected String password;\n\tprotected String companyEmail;\n\tprotected String nationalIdentityCardNumber;\n\tprotected String nationalIdentificationNumber;\n\tprotected String passportNumber;\n\tprotected String jobTitle;\n\tprotected Country nationality;\n\n\tprotected final DataMaster dataMaster;\n\tprotected final DateProducer dateProducer;\n\tprotected final BaseProducer baseProducer;\n\tprotected final NationalIdentificationNumberFactory nationalIdentificationNumberFactory;\n\tprotected final NationalIdentityCardNumberProvider nationalIdentityCardNumberProvider;\n\tprotected final AddressProvider addressProvider;\n\tprotected final CompanyFactory companyFactory;\n\n\tprotected final TimeProvider timeProvider;\n\tprotected final PassportNumberProvider passportNumberProvider;\n\n\tpublic DefaultPersonProvider(DataMaster dataMaster,\n\t                             DateProducer dateProducer,\n\t                             BaseProducer baseProducer,\n\t                             AddressProvider addressProvider,\n\t                             NationalIdentificationNumberFactory nationalIdentificationNumberFactory,\n\t                             NationalIdentityCardNumberProvider nationalIdentityCardNumberProvider,\n\t                             PassportNumberProvider passportNumberProvider,\n\t                             TimeProvider timeProvider,\n\t                             CompanyFactory companyFactory,\n\t                             PersonProperties.PersonProperty... personProperties) {\n\t\tthis.dataMaster = dataMaster;\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.nationalIdentificationNumberFactory = nationalIdentificationNumberFactory;\n\t\tthis.nationalIdentityCardNumberProvider = nationalIdentityCardNumberProvider;\n\t\tthis.addressProvider = addressProvider;\n\t\tthis.passportNumberProvider = passportNumberProvider;\n\t\tthis.companyFactory = companyFactory;\n\t\tthis.timeProvider = timeProvider;\n\n\t\tfor (PersonProperties.PersonProperty personProperty : personProperties) {\n\t\t\tpersonProperty.apply(this, baseProducer);\n\t\t}\n\t}\n\n\t@Override\n\tpublic Person get() {\n\n\t\tgenerateSex();\n\t\tgenerateCompany();\n\t\tgenerateFirstName();\n\t\tgenerateMiddleName();\n\t\tgenerateLastName();\n\t\tgenerateEmail();\n\t\tgenerateUsername();\n\t\tgenerateTelephoneNumber();\n\t\tgenerateAge();\n\t\tgenerateDateOfBirth();\n\t\tgenerateCompanyEmail();\n\t\tgeneratePassword();\n\t\tgenerateNationalIdentityCardNumber();\n\t\tgenerateNationalIdentificationNumber();\n\t\tgeneratePassportNumber();\n\t\tgenerateAddress();\n\t\tgenerateJobTitle();\n\t\tgenerateNationality();\n\t\tgenerateMobileTelephoneNumber();\n\n\t\treturn new Person(firstName, middleName, lastName, address, email,\n\t\t\tusername, password, sex, telephoneNumber, mobileTelephoneNumber, dateOfBirth, age,\n\t\t\tnationalIdentityCardNumber, nationalIdentificationNumber, passportNumber,\n\t\t\tcompany, companyEmail, jobTitle, nationality);\n\t}\n\n\t@Override\n\tpublic void generateSex() {\n\t\tif (sex != null) {\n\t\t\treturn;\n\t\t}\n\t\tsex = baseProducer.trueOrFalse() ? Person.Sex.MALE : Person.Sex.FEMALE;\n\t}\n\n\t@Override\n\tpublic void generateCompany() {\n\t\tif (company != null) {\n\t\t\treturn;\n\t\t}\n\t\tcompany = companyFactory.produceCompany().get();\n\t}\n\n\t@Override\n\tpublic void generateFirstName() {\n\t\tif (firstName != null) {\n\t\t\treturn;\n\t\t}\n\t\tfirstName = dataMaster.getValuesOfType(FIRST_NAME, sex.name(), String.class);\n\t}\n\n\t@Override\n\tpublic void generateMiddleName() {\n\t\tif (middleName != null) {\n\t\t\treturn;\n\t\t}\n\t\tmiddleName = baseProducer.trueOrFalse() ? dataMaster.getValuesOfType(FIRST_NAME, sex.name(), String.class) : \"\";\n\t}\n\n\t@Override\n\tpublic void generateLastName() {\n\t\tif (lastName != null) {\n\t\t\treturn;\n\t\t}\n\t\tlastName = dataMaster.getValuesOfType(LAST_NAME, sex.name(), String.class);\n\t}\n\n\t@Override\n\tpublic void generateEmail() {\n\t\tif (email != null) {\n\t\t\treturn;\n\t\t}\n\t\tEmailProvider emailProvider = new EmailProvider(dataMaster, baseProducer, firstName, lastName);\n\t\temail = emailProvider.get();\n\t}\n\n\t@Override\n\tpublic void generateUsername() {\n\t\tif (username != null) {\n\t\t\treturn;\n\t\t}\n\t\tif (baseProducer.trueOrFalse()) {\n\t\t\tusername = lowerCase(latinize(firstName.substring(0, 1) + lastName));\n\t\t} else {\n\t\t\tusername = lowerCase(latinize(firstName + lastName.substring(0, 1)));\n\t\t}\n\t}\n\n\t@Override\n\tpublic void generateTelephoneNumber() {\n\t\tif (telephoneNumber != null) {\n\t\t\treturn;\n\t\t}\n\t\tif (telephoneNumberFormat == null) {\n\t\t\ttelephoneNumberFormat = dataMaster.getRandomValue(TELEPHONE_NUMBER_FORMATS);\n\t\t}\n\t\ttelephoneNumber = baseProducer.numerify(telephoneNumberFormat);\n\t}\n\n\t@Override\n\tpublic void generateMobileTelephoneNumber() {\n\t\tif (mobileTelephoneNumber != null) {\n\t\t\treturn;\n\t\t}\n\t\tif (mobileTelephoneNumberFormat == null) {\n\t\t\tmobileTelephoneNumberFormat = dataMaster.getRandomValue(TELEPHONE_NUMBER_FORMATS);\n\t\t}\n\t\tmobileTelephoneNumber = baseProducer.numerify(mobileTelephoneNumberFormat);\n\t}\n\n\t@Override\n\tpublic void generateAge() {\n\t\tif (dateOfBirth != null) {\n\t\t\tage = (int) ChronoUnit.YEARS.between(dateOfBirth, LocalDateTime.now(ZoneId.systemDefault()));\n\t\t} else {\n\t\t\tif (age != null) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tage = baseProducer.randomBetween(MIN_AGE, MAX_AGE);\n\t\t}\n\t}\n\n\t@Override\n\tpublic void generateDateOfBirth() {\n\t\tif (dateOfBirth != null) {\n\t\t\treturn;\n\t\t}\n\t\tLocalDate maxDate = timeProvider.getCurrentDate().minusYears(age);\n\t\tLocalDate minDate = maxDate.minusYears(1).plusDays(1);\n\t\tdateOfBirth = dateProducer.randomDateBetweenTwoDates(minDate, maxDate);\n\t}\n\n\t@Override\n\tpublic void generateCompanyEmail() {\n\t\tif (companyEmail != null) {\n\t\t\treturn;\n\t\t}\n\t\tCompanyEmailProvider companyEmailProvider = new CompanyEmailProvider(firstName, lastName, company);\n\t\tcompanyEmail = companyEmailProvider.get();\n\t}\n\n\t@Override\n\tpublic void generatePassword() {\n\t\tif (password != null) {\n\t\t\treturn;\n\t\t}\n\t\tStringBuilder passwordPattern = new StringBuilder();\n\t\tfor (int i = baseProducer.randomBetween(6, 14); i > 0; i--) {\n\t\t\tpasswordPattern.append(baseProducer.randomElement(\"?\", \"#\"));\n\t\t}\n\t\tpassword = baseProducer.bothify(passwordPattern.toString());\n\t}\n\n\t@Override\n\tpublic void generateNationalIdentityCardNumber() {\n\t\tif (nationalIdentityCardNumber != null) {\n\t\t\treturn;\n\t\t}\n\t\tnationalIdentityCardNumber = nationalIdentityCardNumberProvider.get();\n\t}\n\n\t@Override\n\tpublic void generateNationalIdentificationNumber() {\n\t\tif (nationalIdentificationNumber != null) {\n\t\t\treturn;\n\t\t}\n\t\tnationalIdentificationNumber = nationalIdentificationNumberFactory.produceNationalIdentificationNumberProvider(\n\t\t\tNationalIdentificationNumberProperties.dateOfBirth(dateOfBirth),\n\t\t\tNationalIdentificationNumberProperties.sex(sex)).get().getValue();\n\t}\n\n\t@Override\n\tpublic void generateAddress() {\n\t\tif (address != null) {\n\t\t\treturn;\n\t\t}\n\t\taddress = addressProvider.get();\n\t}\n\n\t@Override\n\tpublic void generatePassportNumber() {\n\t\tif (passportNumber != null) {\n\t\t\treturn;\n\t\t}\n\t\tpassportNumber = passportNumberProvider.get();\n\t}\n\n\t@Override\n\tpublic void generateJobTitle() {\n\t\tif (jobTitle != null) {\n\t\t\treturn;\n\t\t}\n\t\tjobTitle = dataMaster.getRandomValue(JOB_TITLE);\n\t}\n\n\tprivate void generateNationality() {\n\t\tList<Country> countries = Country.findCountryForLanguage(dataMaster.getLanguage());\n\t\tnationality = !countries.isEmpty() ? baseProducer.randomElement(countries) : Country.UnitedKingdom;\n\t}\n\n\t@Override\n\tpublic void setTelephoneNumberFormat(String telephoneFormat) {\n\t\ttelephoneNumberFormat = telephoneFormat;\n\t}\n\n\t@Override\n\tpublic void setMobileTelephoneNumberFormat(String mobileTelephoneNumberFormat) {\n\t\tthis.mobileTelephoneNumberFormat = mobileTelephoneNumberFormat;\n\t}\n\n\t@Override\n\tpublic void setSex(Person.Sex sex) {\n\t\tthis.sex = sex;\n\t}\n\n\t@Override\n\tpublic void setAge(int age) {\n\t\tthis.age = age;\n\t}\n\n\t@Override\n\tpublic void setCompany(Company company) {\n\t\tthis.company = company;\n\t}\n\n\t@Override\n\tpublic void setFirstName(String firstName) {\n\t\tthis.firstName = firstName;\n\t}\n\n\t@Override\n\tpublic void setMiddleName(String middleName) {\n\t\tthis.middleName = middleName;\n\t}\n\n\t@Override\n\tpublic void setLastName(String lastName) {\n\t\tthis.lastName = lastName;\n\t}\n\n\t@Override\n\tpublic void setEmail(String email) {\n\t\tthis.email = email;\n\t}\n\n\t@Override\n\tpublic void setUsername(String username) {\n\t\tthis.username = username;\n\t}\n\n\t@Override\n\tpublic void setTelephoneNumber(String telephoneNumber) {\n\t\tthis.telephoneNumber = telephoneNumber;\n\t}\n\n\t@Override\n\tpublic void setMobileTelephoneNumber(String telephoneNumber) {\n\t\tthis.telephoneNumber = telephoneNumber;\n\t}\n\n\t@Override\n\tpublic void setDateOfBirth(LocalDate dateOfBirth) {\n\t\tthis.dateOfBirth = dateOfBirth;\n\t}\n\n\t@Override\n\tpublic void setPassword(String password) {\n\t\tthis.password = password;\n\t}\n\n\t@Override\n\tpublic void setAddress(Address address) {\n\t\tthis.address = address;\n\t}\n\n\t@Override\n\tpublic void setCompanyEmail(String companyEmail) {\n\t\tthis.companyEmail = companyEmail;\n\t}\n\n\t@Override\n\tpublic void setNationalIdentityCardNumber(String nationalIdentityCardNumber) {\n\t\tthis.nationalIdentityCardNumber = nationalIdentityCardNumber;\n\t}\n\n\t@Override\n\tpublic void setNationalIdentificationNumber(String nationalIdentificationNumber) {\n\t\tthis.nationalIdentificationNumber = nationalIdentificationNumber;\n\t}\n\n\t@Override\n\tpublic void setPassportNumber(String passportNumber) {\n\t\tthis.passportNumber = passportNumber;\n\t}\n\n\t@Override\n\tpublic void setJobTitle(String jobTitle) {\n\t\tthis.jobTitle = jobTitle;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/EmailProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.util.function.Supplier;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.util.StringUtils;\n\nimport static com.devskiller.jfairy.producer.person.PersonProvider.PERSONAL_EMAIL;\nimport static com.devskiller.jfairy.producer.util.StringUtils.latinize;\nimport static com.devskiller.jfairy.producer.util.StringUtils.lowerCase;\n\npublic class EmailProvider implements Supplier<String> {\n\n\tprivate final DataMaster dataMaster;\n\tprivate final BaseProducer baseProducer;\n\tprivate final String firstName;\n\tprivate final String lastName;\n\n\tpublic EmailProvider(DataMaster dataMaster, BaseProducer baseProducer,\n\t\t\t\t\t\t String firstName, String lastName) {\n\t\tthis.dataMaster = dataMaster;\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.firstName = firstName;\n\t\tthis.lastName = lastName;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tString prefix = switch (baseProducer.randomBetween(1, 3)) {\n\t\t\tcase 1 -> StringUtils.replace(firstName + lastName, \" \", \"\");\n\t\t\tcase 2 -> StringUtils.replace(firstName + \".\" + lastName, \" \", \".\");\n\t\t\tcase 3 -> StringUtils.replace(lastName, \" \", \"\");\n\t\t\tdefault -> throw new IllegalStateException(\"Unexpected value: \" + baseProducer.randomBetween(1, 3));\n\t\t};\n\t\tString email = lowerCase(prefix + '@' + dataMaster.getRandomValue(PERSONAL_EMAIL));\n\t\treturn latinize(email);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/NationalIdentificationNumber.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\npublic class NationalIdentificationNumber {\n\n\tprivate final String value;\n\n\tpublic NationalIdentificationNumber(String value) {\n\t\tthis.value = value;\n\t}\n\n\tpublic String getValue() {\n\t\treturn value;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/NationalIdentificationNumberFactory.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\npublic interface NationalIdentificationNumberFactory {\n\n\tNationalIdentificationNumberProvider produceNationalIdentificationNumberProvider(NationalIdentificationNumberProperties.Property... properties);\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/NationalIdentificationNumberProperties.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.time.LocalDate;\n\npublic final class NationalIdentificationNumberProperties {\n\n\tprivate NationalIdentificationNumberProperties() {\n\t}\n\n\tpublic abstract static class Property {\n\n\t\tpublic abstract void apply(NationalIdentificationNumberProvider nationalIdentificationNumberProvider);\n\t}\n\n\tpublic static Property dateOfBirth(final LocalDate dateOfBirth) {\n\t\treturn new Property() {\n\t\t\t@Override\n\t\t\tpublic void apply(NationalIdentificationNumberProvider nationalIdentificationNumberProvider) {\n\t\t\t\tnationalIdentificationNumberProvider.setIssueDate(dateOfBirth);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static Property sex(final Person.Sex sex) {\n\t\treturn new Property() {\n\t\t\t@Override\n\t\t\tpublic void apply(NationalIdentificationNumberProvider nationalIdentificationNumberProvider) {\n\t\t\t\tnationalIdentificationNumberProvider.setSex(sex);\n\t\t\t}\n\t\t};\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/NationalIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.time.LocalDate;\nimport java.util.function.Supplier;\n\npublic interface NationalIdentificationNumberProvider extends Supplier<NationalIdentificationNumber> {\n\n\t@Override\n\tNationalIdentificationNumber get();\n\n\tvoid setIssueDate(LocalDate dateOfBirth);\n\n\tvoid setSex(Person.Sex sex);\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/NationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.util.function.Supplier;\n\npublic interface NationalIdentityCardNumberProvider extends Supplier<String> {\n\n\t@Override\n\tString get();\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/PassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.util.function.Supplier;\n\n/**\n * Provider for generating localized or random passport numbers.\n * <p>\n * This functional interface extends {@link Supplier} to provide a standardized\n * way of retrieving passport identification strings for different locales.\n *\n * @author Olga Maciaszek-Sharma\n * @since 21.02.15\n */\npublic interface PassportNumberProvider extends Supplier<String> {\n\n\t@Override\n\tString get();\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/Person.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.time.LocalDate;\n\nimport com.devskiller.jfairy.producer.company.Company;\n\nimport static com.devskiller.jfairy.producer.person.Person.Sex.FEMALE;\nimport static com.devskiller.jfairy.producer.person.Person.Sex.MALE;\n\npublic class Person {\n\n\tpublic enum Sex {\n\t\tMALE, FEMALE\n\t}\n\n\tprivate final Address address;\n\tprivate final String firstName;\n\tprivate final String middleName;\n\tprivate final String lastName;\n\tprivate final String email;\n\tprivate final String username;\n\tprivate final String password;\n\tprivate final Sex sex;\n\tprivate final String telephoneNumber;\n\tprivate final String mobileTelephoneNumber;\n\tprivate final LocalDate dateOfBirth;\n\tprivate final Integer age;\n\tprivate final Company company;\n\tprivate final String companyEmail;\n\tprivate final String nationalIdentityCardNumber;\n\tprivate final String nationalIdentificationNumber;\n\tprivate final String passportNumber;\n\tprivate final String jobTitle;\n\tprivate final Country nationality;\n\n\tpublic Person(String firstName, String middleName, String lastName, Address address, String email, String username,\n\t              String password, Sex sex, String telephoneNumber, String mobileTelephoneNumber,\n\t\t\t\t  LocalDate dateOfBirth, Integer age, String nationalIdentityCardNumber,\n\t\t\t\t  String nationalIdentificationNumber, String passportNumber, Company company, String companyEmail,\n\t\t\t\t  String jobTitle, Country nationality) {\n\t\tthis.nationalIdentityCardNumber = nationalIdentityCardNumber;\n\t\tthis.address = address;\n\t\tthis.firstName = firstName;\n\t\tthis.middleName = middleName;\n\t\tthis.lastName = lastName;\n\t\tthis.email = email;\n\t\tthis.username = username;\n\t\tthis.password = password;\n\t\tthis.sex = sex;\n\t\tthis.telephoneNumber = telephoneNumber;\n\t\tthis.mobileTelephoneNumber = mobileTelephoneNumber;\n\t\tthis.dateOfBirth = dateOfBirth;\n\t\tthis.age = age;\n\t\tthis.nationalIdentificationNumber = nationalIdentificationNumber;\n\t\tthis.company = company;\n\t\tthis.companyEmail = companyEmail;\n\t\tthis.passportNumber = passportNumber;\n\t\tthis.jobTitle = jobTitle;\n\t\tthis.nationality = nationality;\n\t}\n\n\tpublic String getNationalIdentificationNumber() {\n\t\treturn nationalIdentificationNumber;\n\t}\n\n\tpublic String getFirstName() {\n\t\treturn firstName;\n\t}\n\n\tpublic String getMiddleName() {\n\t\treturn middleName;\n\t}\n\n\tpublic String getLastName() {\n\t\treturn lastName;\n\t}\n\n\tpublic String getEmail() {\n\t\treturn email;\n\t}\n\n\tpublic String getUsername() {\n\t\treturn username;\n\t}\n\n\tpublic String getPassword() {\n\t\treturn password;\n\t}\n\n\tpublic String getFullName() {\n\t\treturn firstName + \" \" + lastName;\n\t}\n\n\tpublic boolean isMale() {\n\t\treturn sex == MALE;\n\t}\n\n\tpublic boolean isFemale() {\n\t\treturn sex == FEMALE;\n\t}\n\n\tpublic Sex getSex() {\n\t\treturn sex;\n\t}\n\n\tpublic String getTelephoneNumber() {\n\t\treturn telephoneNumber;\n\t}\n\n\tpublic String getMobileTelephoneNumber() {\n\t\treturn mobileTelephoneNumber;\n\t}\n\n\tpublic LocalDate getDateOfBirth() {\n\t\treturn dateOfBirth;\n\t}\n\n\tpublic int getAge() {\n\t\treturn age;\n\t}\n\n\tpublic String getNationalIdentityCardNumber() {\n\t\treturn nationalIdentityCardNumber;\n\t}\n\n\tpublic String getCompanyEmail() {\n\t\treturn companyEmail;\n\t}\n\n\tpublic Address getAddress() {\n\t\treturn address;\n\t}\n\n\tpublic Company getCompany() {\n\t\treturn company;\n\t}\n\n\tpublic String getPassportNumber() {\n\t\treturn passportNumber;\n\t}\n\n\tpublic String getJobTitle() {\n\t\treturn jobTitle;\n\t}\n\n\tpublic Country getNationality() {\n\t\treturn nationality;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/PersonFactory.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\n/**\n * Created by Jakub Kubrynski / 2014-05-26\n */\npublic interface PersonFactory {\n\n\tPersonProvider producePersonProvider(PersonProperties.PersonProperty... personProperties);\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/PersonFactoryImpl.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.TimeProvider;\nimport com.devskiller.jfairy.producer.company.CompanyFactory;\n\npublic class PersonFactoryImpl implements PersonFactory {\n\n\tprivate final DataMaster dataMaster;\n\tprivate final DateProducer dateProducer;\n\tprivate final BaseProducer baseProducer;\n\tprivate final AddressProvider addressProvider;\n\tprivate final NationalIdentificationNumberFactory nationalIdentificationNumberFactory;\n\tprivate final NationalIdentityCardNumberProvider nationalIdentityCardNumberProvider;\n\tprivate final PassportNumberProvider passportNumberProvider;\n\n\tprivate final TimeProvider timeProvider;\n\tprivate final CompanyFactory companyFactory;\n\n\tpublic PersonFactoryImpl(DataMaster dataMaster,\n\t                  DateProducer dateProducer,\n\t                  BaseProducer baseProducer,\n\t                  AddressProvider addressProvider,\n\t                  NationalIdentificationNumberFactory nationalIdentificationNumberFactory,\n\t                  NationalIdentityCardNumberProvider nationalIdentityCardNumberProvider,\n\t                  PassportNumberProvider passportNumberProvider,\n\t                  TimeProvider timeProvider,\n\t                  CompanyFactory companyFactory) {\n\t\tthis.dataMaster = dataMaster;\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.addressProvider = addressProvider;\n\t\tthis.nationalIdentificationNumberFactory = nationalIdentificationNumberFactory;\n\t\tthis.nationalIdentityCardNumberProvider = nationalIdentityCardNumberProvider;\n\t\tthis.passportNumberProvider = passportNumberProvider;\n\t\tthis.timeProvider = timeProvider;\n\t\tthis.companyFactory = companyFactory;\n\t}\n\n\t@Override\n\tpublic PersonProvider producePersonProvider(PersonProperties.PersonProperty... personProperties) {\n\t\treturn new DefaultPersonProvider(dataMaster, dateProducer, baseProducer, addressProvider,\n\t\t\t\tnationalIdentificationNumberFactory, nationalIdentityCardNumberProvider,\n\t\t\t\tpassportNumberProvider, timeProvider, companyFactory, personProperties);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/PersonProperties.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.time.LocalDate;\nimport java.util.Optional;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.company.Company;\n\n/**\n * Static factory for creating {@link PersonProperty} instances to customize person generation.\n * <p>\n * This class provides a fluent interface to define specific attributes like age,\n * gender, or contact details that should be applied during the person creation process.\n *\n * @author jkubrynski@gmail.com\n * @since 2013-11-16\n */\npublic final class PersonProperties {\n\n\tprivate static Optional<Integer> minimumAge = Optional.empty();\n\tprivate static Optional<Integer> maximumAge = Optional.empty();\n\n\tprivate PersonProperties() {\n\t}\n\n\tpublic abstract static class PersonProperty {\n\n\t\tpublic abstract void apply(PersonProvider person, BaseProducer baseProducer);\n\n\t}\n\n\tpublic static PersonProperty male() {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider person, BaseProducer baseProducer) {\n\t\t\t\tperson.setSex(Person.Sex.MALE);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty female() {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider person, BaseProducer baseProducer) {\n\t\t\t\tperson.setSex(Person.Sex.FEMALE);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty ageBetween(final int minAge, final int maxAge) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider person, BaseProducer baseProducer) {\n\t\t\t\tperson.setAge(baseProducer.randomBetween(minAge, maxAge));\n\t\t\t\tminimumAge = Optional.of(minAge);\n\t\t\t\tmaximumAge = Optional.of(maxAge);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty minAge(final int minAge) {\n\t\tminimumAge = Optional.of(minAge);\n\t\treturn ageBetween(minAge, maximumAge.orElse(PersonProvider.MAX_AGE));\n\t}\n\n\tpublic static PersonProperty maxAge(final int maxAge) {\n\t\tmaximumAge = Optional.of(maxAge);\n\t\treturn ageBetween(minimumAge.orElse(PersonProvider.MIN_AGE), maxAge);\n\t}\n\n\tpublic static PersonProperty telephoneFormat(final String telephoneFormat) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider person, BaseProducer baseProducer) {\n\t\t\t\tperson.setTelephoneNumberFormat(telephoneFormat);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty mobileTelephoneFormat(final String mobileTelephoneNumberFormat) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider person, BaseProducer baseProducer) {\n\t\t\t\tperson.setMobileTelephoneNumberFormat(mobileTelephoneNumberFormat);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withCompany(final Company company) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setCompany(company);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withAddress(final Address address) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setAddress(address);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withFirstName(final String firstName) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setFirstName(firstName);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withMiddleName(final String middleName) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setMiddleName(middleName);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withLastName(final String lastName) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setLastName(lastName);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withEmail(final String email) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setEmail(email);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withUsername(final String username) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setUsername(username);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withTelephoneNumber(final String telephoneNumber) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setTelephoneNumber(telephoneNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withMobileTelephoneNumber(final String mobileTelephoneNumber) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setMobileTelephoneNumber(mobileTelephoneNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withDateOfBirth(final LocalDate dateOfBirth) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setDateOfBirth(dateOfBirth);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withAge(final Integer age) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setAge(age);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withPassword(final String password) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setPassword(password);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withCompanyEmail(final String companyEmail) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setCompanyEmail(companyEmail);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withNationalIdentityCardNumber(final String nationalIdentityCardNumber) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setNationalIdentityCardNumber(nationalIdentityCardNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withNationalIdentificationNumber(final String nationalIdentificationNumber) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setNationalIdentificationNumber(nationalIdentificationNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withPassportNumber(final String passportNumber) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setPassportNumber(passportNumber);\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic static PersonProperty withJobTitle(final String jobTitle) {\n\t\treturn new PersonProperty() {\n\t\t\t@Override\n\t\t\tpublic void apply(PersonProvider personProvider, BaseProducer baseProducer) {\n\t\t\t\tpersonProvider.setJobTitle(jobTitle);\n\t\t\t}\n\t\t};\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/PersonProvider.java",
    "content": "package com.devskiller.jfairy.producer.person;\n\nimport java.time.LocalDate;\nimport java.util.function.Supplier;\n\nimport com.devskiller.jfairy.producer.company.Company;\n\npublic interface PersonProvider extends Supplier<Person> {\n\n\tint MIN_AGE = 1;\n\tint MAX_AGE = 100;\n\tString FIRST_NAME = \"firstNames\";\n\tString LAST_NAME = \"lastNames\";\n\tString PERSONAL_EMAIL = \"personalEmails\";\n\tString TELEPHONE_NUMBER_FORMATS = \"telephone_number_formats\";\n\tString JOB_TITLE = \"jobTitles\";\n\n\t@Override\n\tPerson get();\n\n\tvoid generateSex();\n\n\tvoid generateCompany();\n\n\tvoid generateFirstName();\n\n\tvoid generateMiddleName();\n\n\tvoid generateLastName();\n\n\tvoid generateEmail();\n\n\tvoid generateUsername();\n\n\tvoid generateTelephoneNumber();\n\n\tvoid generateMobileTelephoneNumber();\n\n\tvoid generateAge();\n\n\tvoid generateDateOfBirth();\n\n\tvoid generateCompanyEmail();\n\n\tvoid generatePassword();\n\n\tvoid generateJobTitle();\n\n\tvoid generateNationalIdentityCardNumber();\n\n\tvoid generateNationalIdentificationNumber();\n\n\tvoid generateAddress();\n\n\tvoid generatePassportNumber();\n\n\tvoid setTelephoneNumberFormat(String telephoneFormat);\n\n\tvoid setMobileTelephoneNumberFormat(String telephoneFormat);\n\n\tvoid setSex(Person.Sex sex);\n\n\tvoid setAge(int age);\n\n\tvoid setCompany(Company company);\n\n\tvoid setFirstName(String firstName);\n\n\tvoid setMiddleName(String middleName);\n\n\tvoid setLastName(String lastName);\n\n\tvoid setEmail(String email);\n\n\tvoid setUsername(String username);\n\n\tvoid setTelephoneNumber(String telephoneNumber);\n\n\tvoid setMobileTelephoneNumber(String telephoneNumber);\n\n\tvoid setDateOfBirth(LocalDate dateOfBirth);\n\n\tvoid setPassword(String password);\n\n\tvoid setAddress(Address address);\n\n\tvoid setCompanyEmail(String companyEmail);\n\n\tvoid setNationalIdentityCardNumber(String nationalIdentityCardNumber);\n\n\tvoid setNationalIdentificationNumber(String nationalIdentificationNumber);\n\n\tvoid setPassportNumber(String passportNumber);\n\n\tvoid setJobTitle(String jobTitle);\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/AbstractAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale;\n\nimport com.devskiller.jfairy.producer.person.Address;\n\n/**\n * A base of all addresses. It carries all needed fields, but leaves most of the formatting to subclasses.\n */\npublic abstract class AbstractAddress implements Address {\n\tprotected final String street;\n\tprotected final String streetNumber;\n\tprotected final String apartmentNumber;\n\tprotected final String postalCode;\n\tprotected final String city;\n\n\tpublic AbstractAddress(String street, String streetNumber, String apartmentNumber, String postalCode, String city) {\n\t\tthis.street = street;\n\t\tthis.streetNumber = streetNumber;\n\t\tthis.postalCode = postalCode;\n\t\tthis.city = city;\n\t\tthis.apartmentNumber = apartmentNumber;\n\t}\n\n\t@Override\n\tpublic String getStreet() {\n\t\treturn street;\n\t}\n\n\t@Override\n\tpublic String getStreetNumber() {\n\t\treturn streetNumber;\n\t}\n\n\t@Override\n\tpublic String getApartmentNumber() {\n\t\treturn apartmentNumber;\n\t}\n\n\t@Override\n\tpublic String getPostalCode() {\n\t\treturn postalCode;\n\t}\n\n\t@Override\n\tpublic String getCity() {\n\t\treturn city;\n\t}\n\n\t@Override\n\tpublic abstract String getAddressLine1();\n\n\t@Override\n\tpublic abstract String getAddressLine2();\n\n\t@Override\n\tpublic String toString() {\n\t\treturn getAddressLine1() + System.lineSeparator() + getAddressLine2();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/ContinentalAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.isNotBlank;\n\n/**\n * An address format typical for European countries but the UK and ex-Soviet union.\n */\npublic abstract class ContinentalAddress extends AbstractAddress {\n\tpublic ContinentalAddress(String street, String streetNumber, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\tprotected abstract String getApartmentMark();\n\n\tprotected String getStreetNumberSeparator() {\n\t\treturn \" \";\n\t}\n\n\t@Override\n\tpublic String getAddressLine1() {\n\t\treturn street + getStreetNumberSeparator() + streetNumber\n\t\t\t\t+ (isNotBlank(apartmentNumber) ? getApartmentMark() + apartmentNumber : \"\");\n\t}\n\n\t@Override\n\tpublic String getAddressLine2() {\n\t\treturn postalCode + \" \" + city;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/NoNationalIdentificationNumberFactory.java",
    "content": "package com.devskiller.jfairy.producer.person.locale;\n\nimport java.time.LocalDate;\n\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumber;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.Person;\n\npublic class NoNationalIdentificationNumberFactory implements NationalIdentificationNumberFactory {\n\n\t@Override\n\tpublic NoNationalIdentificationNumberProvider produceNationalIdentificationNumberProvider(NationalIdentificationNumberProperties.Property... properties) {\n\t\treturn new NoNationalIdentificationNumberProvider();\n\t}\n\n\tpublic static class NoNationalIdentificationNumberProvider implements NationalIdentificationNumberProvider {\n\n\t\t@Override\n\t\tpublic NationalIdentificationNumber get() {\n\t\t\treturn new NationalIdentificationNumber(\"\");\n\t\t}\n\n\t\t@Override\n\t\tpublic void setIssueDate(LocalDate dateOfBirth) {\n\t\t}\n\n\t\t@Override\n\t\tpublic void setSex(Person.Sex sex) {\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/br/BrAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.br;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class BrAddress extends ContinentalAddress {\n\n\tpublic BrAddress(String streetNumber, String street, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tprotected String getStreetNumberSeparator() {\n\t\treturn \", \";\n\t}\n\n\t@Override\n\tprotected String getApartmentMark() {\n\t\treturn \" APT \";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/br/BrAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.br;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class BrAddressProvider extends AbstractAddressProvider {\n\n\tpublic BrAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic BrAddress get() {\n\t\treturn new BrAddress(getStreetNumber(), getStreet(), getApartmentNumber(),\n\t\t\t\tgetPostalCode(), getCity());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/br/BrNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.br;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\n\n/**\n * Brazilian CPF (Cadastro de Pessoas Físicas) generator.\n */\npublic class BrNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic BrNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tint[] digits = new int[9];\n\t\tfor (int i = 0; i < 9; i++) {\n\t\t\tdigits[i] = baseProducer.randomBetween(0, 9);\n\t\t}\n\n\t\tint d1 = calculateCheckDigit(digits, 9);\n\t\tint d2 = calculateCheckDigit(digits, d1, 10);\n\n\t\treturn String.format(\"%d%d%d.%d%d%d.%d%d%d-%d%d\",\n\t\t\t\tdigits[0], digits[1], digits[2],\n\t\t\t\tdigits[3], digits[4], digits[5],\n\t\t\t\tdigits[6], digits[7], digits[8],\n\t\t\t\td1, d2);\n\t}\n\n\tprivate int calculateCheckDigit(int[] digits, int length) {\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < length; i++) {\n\t\t\tsum += digits[i] * (length + 1 - i);\n\t\t}\n\t\tint remainder = 11 - (sum % 11);\n\t\treturn remainder >= 10 ? 0 : remainder;\n\t}\n\n\tprivate int calculateCheckDigit(int[] digits, int previousDigit, int length) {\n\t\tint sum = 0;\n\t\tfor (int i = 0; i < digits.length; i++) {\n\t\t\tsum += digits[i] * (length + 1 - i);\n\t\t}\n\t\tsum += previousDigit * 2;\n\t\tint remainder = 11 - (sum % 11);\n\t\treturn remainder >= 10 ? 0 : remainder;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/br/BrPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.br;\n\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\npublic class BrPassportNumberProvider implements PassportNumberProvider {\n\n\t@Override\n\tpublic String get() {\n\t\treturn \"BR\" + String.format(\"%07d\", (int) (Math.random() * 10000000));\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/de/DeAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.de;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class DeAddress extends ContinentalAddress {\n\n\tpublic DeAddress(String streetNumber, String street, String apartmentNumber, String city, String postalCode) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tprotected String getApartmentMark() {\n\t\treturn \", \";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/de/DeAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.de;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class DeAddressProvider extends AbstractAddressProvider {\n\n\tpublic DeAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic DeAddress get() {\n\t\treturn new DeAddress(getStreetNumber(), getStreet(), getApartmentNumber(),\n\t\t\tgetCity(), getPostalCode());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/de/DeNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.de;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\n\n/**\n * German Identity Card (known as Personalausweis)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/German_identity_card\">German identity card</a>\n *\n * @author Roland Weisleder\n */\npublic class DeNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate static final String[] ID_CARD_TYPE_LETTERS = {\"L\", \"M\", \"N\", \"P\", \"R\", \"T\", \"V\", \"W\", \"X\", \"Y\"};\n\n\tprivate static final String VALID_NUMBER_PATTERN = \"^[LMNPRTVWXY][0-9]{8}$\";\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic DeNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomElement(ID_CARD_TYPE_LETTERS) + baseProducer.randomNumeric(8);\n\t}\n\n\tpublic boolean isValid(String nationalIdentityCardNumber) {\n\t\treturn nationalIdentityCardNumber.matches(VALID_NUMBER_PATTERN);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/de/DePassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.de;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\n/**\n * German passport (known as Reisepass)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/German_passport\">German passport</a>\n *\n * @author Roland Weisleder\n */\npublic class DePassportNumberProvider implements PassportNumberProvider {\n\n\tprivate static final String[] PASSPORT_TYPE_LETTERS = {\"C\", \"F\", \"G\", \"H\", \"J\", \"K\"};\n\n\tprivate static final String VALID_NUMBER_PATTERN = \"^[CFGHJK][0-9]{8}$\";\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic DePassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomElement(PASSPORT_TYPE_LETTERS) + baseProducer.randomNumeric(8);\n\t}\n\n\tpublic boolean isValid(String passportNumber) {\n\t\treturn passportNumber.matches(VALID_NUMBER_PATTERN);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/en/EnAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.en;\n\nimport com.devskiller.jfairy.producer.person.locale.AbstractAddress;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.isNotBlank;\n\npublic class EnAddress extends AbstractAddress {\n\n\tpublic EnAddress(String streetNumber, String street, String apartmentNumber, String city, String postalCode) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tpublic String getAddressLine1() {\n\t\treturn streetNumber + \" \" + street\n\t\t\t\t+ (isNotBlank(apartmentNumber) ? \" APT \" + apartmentNumber : \"\");\n\t}\n\n\t@Override\n\tpublic String getAddressLine2() {\n\t\treturn city + \" \" + postalCode;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/en/EnAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.en;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class EnAddressProvider extends AbstractAddressProvider {\n\n\tpublic EnAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic EnAddress get() {\n\t\treturn new EnAddress(getStreetNumber(), getStreet(), getApartmentNumber(),\n\t\t\t\tgetCity(), getPostalCode());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/en/EnNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.en;\n\nimport java.util.List;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.util.StringUtils;\n\n/**\n * English National Identity Card Number (known as Social Security Number)\n *\n * @author Olga Maciaszek-Sharma\n * @since 15.03.15\n */\npublic class EnNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate static final int SSN_LENGTH = 11;\n\tprivate static final int AREA_NUMBER_LENGTH = 3;\n\tprivate static final int GROUP_NUMBER_LENGTH = 2;\n\tprivate static final int GROUP_NUMBER_INDEX = 4;\n\tprivate static final List<Integer> HYPHEN_INDEXES = List.of(3, 6);\n\tprivate static final int SERIAL_NUMBER_LENGTH = 4;\n\tprivate static final int SERIAL_NUMBER_INDEX = 7;\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic EnNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tchar[] ssn = new char[SSN_LENGTH];\n\n\t\tfillHyphens(ssn);\n\n\t\tfillAreaNumber(ssn);\n\n\t\tfillGroupNumber(ssn);\n\n\t\tfillSerialNumber(ssn);\n\n\t\treturn String.valueOf(ssn);\n\t}\n\n\tprivate void fillHyphens(char[] ssn) {\n\t\tfor (Integer index : HYPHEN_INDEXES) {\n\t\t\tssn[index] = '-';\n\t\t}\n\t}\n\n\tprivate void fillAreaNumber(char[] ssn) {\n\t\tString number;\n\t\tdo {\n\t\t\tnumber = String.valueOf(baseProducer.randomBetween(1, 899));\n\t\t} while (\"666\".equals(number));\n\t\tchar[] digits = StringUtils.leftPad(number, AREA_NUMBER_LENGTH, \"0\").toCharArray();\n\t\tSystem.arraycopy(digits, 0, ssn, 0, digits.length);\n\t}\n\n\tprivate void fillGroupNumber(char[] ssn) {\n\t\tString number = String.valueOf(baseProducer.randomBetween(1, 99));\n\t\tchar[] digits = StringUtils.leftPad(number, GROUP_NUMBER_LENGTH, \"0\").toCharArray();\n\t\tSystem.arraycopy(digits, 0, ssn, GROUP_NUMBER_INDEX, digits.length);\n\t}\n\n\tprivate void fillSerialNumber(char[] ssn) {\n\t\tString number = String.valueOf(baseProducer.randomBetween(1, 9999));\n\t\tchar[] digits = StringUtils.leftPad(number, SERIAL_NUMBER_LENGTH, \"0\").toCharArray();\n\t\tSystem.arraycopy(digits, 0, ssn, SERIAL_NUMBER_INDEX, digits.length);\n\t}\n\n}\n\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/en/EnPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.en;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\npublic class EnPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic EnPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomAlphanumeric(9);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/es/EsAddress.java",
    "content": "\npackage com.devskiller.jfairy.producer.person.locale.es;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class EsAddress extends ContinentalAddress {\n\n\tpublic EsAddress(String street, String streetNumber, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tprotected String getStreetNumberSeparator() {\n\t\treturn \", \";\n\t}\n\n\t@Override\n\tpublic String getApartmentMark() {\n\t\treturn \" \";\n\t}\n}\n\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/es/EsAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.es;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class EsAddressProvider extends AbstractAddressProvider {\n\n\tpublic EsAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic EsAddress get() {\n\t\treturn new EsAddress(getStreet(), getStreetNumber(), getApartmentNumber(),\n\t\t\t\tgetPostalCode(), getCity());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/es/EsNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.es;\n\nimport java.util.Locale;\nimport java.util.regex.Pattern;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.Country;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\n\n/**\n * Spanish National Identity Card Number (known as Documento Nacional de Identidad or DNI)\n *\n * @author graux\n * @since 26/04/2015\n * Documento Nacional de Identidad (DNI) Español\n */\npublic class EsNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate static final String REGEX_DNI = \"^\\\\d{8}([-]?)[A-Z]$\";\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final Pattern regexDni;\n\tprivate final Locale primaryLocale = Country.Spain.getPrimaryLocale();\n\n\tpublic EsNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.regexDni = Pattern.compile(REGEX_DNI);\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn String.format(\"%s-%s\", baseProducer.randomNumeric(8), baseProducer.randomAlphabetic(1).toUpperCase(primaryLocale));\n\t}\n\n\tpublic boolean isValid(String dni) {\n\t\treturn this.regexDni.matcher(dni).matches();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/es/EsPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.es;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\npublic class EsPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic EsPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomAlphanumeric(9);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/fr/FrAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.fr;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class FrAddress extends ContinentalAddress {\n\n\tpublic FrAddress(String streetNumber, String street, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tprotected String getApartmentMark() {\n\t\treturn \" Apt \";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/fr/FrAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.fr;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class FrAddressProvider extends AbstractAddressProvider {\n\n\tpublic FrAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic FrAddress get() {\n\t\treturn new FrAddress(getStreetNumber(), getStreet(), getApartmentNumber(),\n\t\t\t\tgetPostalCode(), getCity());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/fr/FrNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.fr;\n\nimport java.time.Year;\nimport java.time.ZoneId;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\n\n/**\n * Provider for French National Identity Card numbers (Carte Nationale\n * d’Identité - CNI).\n *\n * <p>\n * Generates a 12-character alphanumeric string following the biometric format\n * introduced in 2021:\n * <ul>\n *   <li>Department code (2 digits, 01-95)</li>\n *   <li>Year of issuance (last 2 digits)</li>\n *   <li>Month of issuance (01-12)</li>\n *   <li>Random serial (6 alphanumeric characters)</li>\n * </ul>\n *\n * @author Markus Spann\n * @since 0.8.3\n */\npublic class FrNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic FrNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\t// department (01-95)\n\t\tint dept = baseProducer.randomBetween(1, 95);\n\n\t\t// year (last two digits, from 2021 to current year)\n\t\tint currentYear = Year.now(ZoneId.systemDefault()).getValue() % 100;\n\t\tint year = baseProducer.randomBetween(21, currentYear);\n\n\t\t// month (01-12)\n\t\tint month = baseProducer.randomBetween(1, 12);\n\n\t\t// random suffix (6 alphanumeric chars)\n\t\tString suffix = baseProducer.randomAlphanumeric(6);\n\n\t\treturn String.format(\"%02d%02d%02d%s\", dept, year, month, suffix);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/fr/FrPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.fr;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\n/**\n * Provider for French Passport numbers.\n * <p>\n * Generates a 9-character alphanumeric string following the French biometric\n * passport format: 2 digits, 2 uppercase letters, and 5 digits (e.g., 12AB12345).\n *\n * @author Markus Spann\n * @since 0.8.3\n */\npublic class FrPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic FrPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomNumeric(2)\n\t\t\t + baseProducer.randomAlphabetic(2)\n\t\t\t + baseProducer.randomNumeric(5);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/ka/KaAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.ka;\n\nimport com.devskiller.jfairy.producer.person.locale.AbstractAddress;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.isNotBlank;\n\npublic class KaAddress extends AbstractAddress {\n\tpublic KaAddress(String street, String streetNumber, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tpublic String getAddressLine1() {\n\t\treturn postalCode + \", \" + city;\n\t}\n\n\t@Override\n\tpublic String getAddressLine2() {\n\t\treturn street + \" №\" + streetNumber + (isNotBlank(apartmentNumber) ? \", ბინა \" + apartmentNumber : \"\");\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/ka/KaAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.ka;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class KaAddressProvider extends AbstractAddressProvider {\n\n\tpublic KaAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic KaAddress get() {\n\t\treturn new KaAddress(getStreet(), getStreetNumber(), getApartmentNumber(), getPostalCode(), getCity());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/ka/KaNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.ka;\n\nimport java.util.Locale;\nimport java.util.function.Supplier;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.Country;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\n\npublic class KaNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate static class OldCardNumberProvider implements NationalIdentityCardNumberProvider {\n\t\tprivate static final char[] GEORGIAN_CHAR = \"აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ\".toCharArray();\n\n\t\tprivate final BaseProducer baseProducer;\n\n\t\tOldCardNumberProvider(BaseProducer baseProducer) {\n\t\t\tthis.baseProducer = baseProducer;\n\t\t}\n\n\t\t@Override\n\t\tpublic String get() {\n\t\t\tchar geChar = GEORGIAN_CHAR[baseProducer.randomInt(GEORGIAN_CHAR.length - 1)];\n\t\t\treturn \"N\" + geChar + baseProducer.numerify(\"#######\");\n\t\t}\n\t}\n\n\tprivate static class NewCardNumberProvider implements NationalIdentityCardNumberProvider {\n\t\tprivate static final String NEW_CARD_MASK = \"##??#####\";\n\n\t\tprivate final BaseProducer baseProducer;\n\n\t\tprivate final Locale primaryLocale = Country.Georgia.getPrimaryLocale();\n\n\t\tNewCardNumberProvider(BaseProducer baseProducer) {\n\t\t\tthis.baseProducer = baseProducer;\n\t\t}\n\n\t\t@Override\n\t\tpublic String get() {\n\t\t\treturn baseProducer.bothify(NEW_CARD_MASK).toUpperCase(primaryLocale);\n\t\t}\n\t}\n\n\tprivate final Supplier<NationalIdentityCardNumberProvider> formatPicker;\n\n\tpublic KaNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tNationalIdentityCardNumberProvider oldCardNumberProvider = new OldCardNumberProvider(baseProducer);\n\t\tNationalIdentityCardNumberProvider newCardNumberProvider = new NewCardNumberProvider(baseProducer);\n\t\tformatPicker = () -> baseProducer.trueOrFalse() ? oldCardNumberProvider : newCardNumberProvider;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tNationalIdentityCardNumberProvider numberProvider = formatPicker.get();\n\t\treturn numberProvider.get();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/ka/KaPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.ka;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\npublic class KaPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic KaPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t// District codes are not reachable at the moment.\n\tprivate String getDistrictCode() {\n\t\treturn baseProducer.numerify(\"##\");\n\t}\n\n\t// A system of Ministry of Inferior Office codes is not known at the moment.\n\tprivate String getStateOfficeCode() {\n\t\treturn baseProducer.numerify(\"###\");\n\t}\n\n\tprivate String getNationalPersonalIdentificationNumber() {\n\t\treturn baseProducer.numerify(\"######\");\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tString districtCode = getDistrictCode();\n\t\treturn districtCode + getStateOfficeCode() + getNationalPersonalIdentificationNumber();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/pl/PlAddress.java",
    "content": "\npackage com.devskiller.jfairy.producer.person.locale.pl;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class PlAddress extends ContinentalAddress {\n\n\tpublic PlAddress(String street, String streetNumber, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tprotected String getApartmentMark() {\n\t\treturn \", \";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/pl/PlAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class PlAddressProvider extends AbstractAddressProvider {\n\n\tpublic PlAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic PlAddress get() {\n\t\treturn new PlAddress(getStreet(), getStreetNumber(), getApartmentNumber(),\n\t\t\t\tgetPostalCode(), getCity());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/pl/PlNationalIdentificationNumberFactory.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties;\n\npublic class PlNationalIdentificationNumberFactory implements NationalIdentificationNumberFactory {\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\n\tpublic PlNationalIdentificationNumberFactory(BaseProducer baseProducer, DateProducer dateProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dateProducer = dateProducer;\n\t}\n\n\t@Override\n\tpublic PlNationalIdentificationNumberProvider produceNationalIdentificationNumberProvider(NationalIdentificationNumberProperties.Property... properties) {\n\t\treturn new PlNationalIdentificationNumberProvider(dateProducer, baseProducer, properties);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/pl/PlNationalIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl;\n\nimport java.time.LocalDate;\nimport java.time.format.DateTimeFormatter;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumber;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.Person;\n\n/**\n * Polish National Identification Number (known as PESEL - Powszechny Elektroniczny System Ewidencji Ludności)\n * <p>\n * Universal Electronic System for Registration of the Population in Poland.\n * The number consists of 11 digits and includes information about birth date and sex.\n * More info: <a href=\"http://en.wikipedia.org/wiki/PESEL\">PESEL</a>\n */\npublic class PlNationalIdentificationNumberProvider implements NationalIdentificationNumberProvider {\n\n\tprivate static final int NATIONAL_IDENTIFICATION_NUMBER_LENGTH = 11;\n\tprivate static final int VALIDITY_IN_YEARS = 10;\n\n\tprivate static final int[] PERIOD_WEIGHTS = {80, 0, 20, 40, 60};\n\tprivate static final int PERIOD_FACTOR = 100;\n\tprivate static final int BEGIN_YEAR = 1800;\n\n\tprivate static final int[] WEIGHTS = {1, 3, 7, 9, 1, 3, 7, 9, 1, 3};\n\tprivate static final int MAX_SERIAL_NUMBER = 999;\n\tprivate static final int TEN = 10;\n\n\tprivate static final int[] SEX_FIELDS = {0, 2, 4, 6, 8};\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\tprivate LocalDate issueDate;\n\tprivate Person.Sex sex;\n\n\t/**\n\t * Initializes a new provider for Polish PESEL numbers\n\t * <p>\n\t * @param dateProducer provider for generating dates\n\t * @param baseProducer provider for random numbers and booleans\n\t * @param properties optional properties to constrain the generated number\n\t */\n\tpublic PlNationalIdentificationNumberProvider(DateProducer dateProducer, BaseProducer baseProducer,\n\t\t\t\t\t\t\t\t\t\t\t\t   NationalIdentificationNumberProperties.Property... properties) {\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.baseProducer = baseProducer;\n\n\t\twith(properties);\n\t}\n\n\t/**\n\t * Applies specific properties to the provider\n\t * <p>\n\t * @param properties array of properties like sex or birth date\n\t */\n\tpublic void with(NationalIdentificationNumberProperties.Property[] properties) {\n\t\tfor (NationalIdentificationNumberProperties.Property property : properties) {\n\t\t\tproperty.apply(this);\n\t\t}\n\t}\n\n\t/**\n\t * Generates a random Polish National Identification Number\n\t * <p>\n\t * @return a new NationalIdentificationNumber instance containing the PESEL\n\t */\n\t@Override\n\tpublic NationalIdentificationNumber get() {\n\n\t\tif (issueDate == null) {\n\t\t\tissueDate = dateProducer.randomDateInThePast(VALIDITY_IN_YEARS).toLocalDate();\n\t\t}\n\t\tif (sex == null) {\n\t\t\tsex = baseProducer.trueOrFalse() ? Person.Sex.MALE : Person.Sex.FEMALE;\n\t\t}\n\n\t\treturn new NationalIdentificationNumber(generate());\n\t}\n\n\tprivate String generate() {\n\t\tint month = calculateMonth(issueDate.getMonthValue(), issueDate.getYear());\n\t\tint day = issueDate.getDayOfMonth();\n\t\tint serialNumber = baseProducer.randomInt(MAX_SERIAL_NUMBER);\n\t\tint sexCode = calculateSexCode(sex);\n\n\t\tString nationalIdentificationNumber = String.format(\"%s%02d%02d%03d%d\",\n\t\t\tDateTimeFormatter.ofPattern(\"uu\").format(issueDate), month, day, serialNumber, sexCode);\n\n\t\treturn nationalIdentificationNumber + calculateChecksum(nationalIdentificationNumber);\n\t}\n\n\t@Override\n\tpublic void setIssueDate(LocalDate issueDate) {\n\t\tthis.issueDate = issueDate;\n\t}\n\n\t@Override\n\tpublic void setSex(Person.Sex sex) {\n\t\tthis.sex = sex;\n\t}\n\n\t/**\n\t * Verifies the validity of a given PESEL number based on its length and checksum\n\t * <p>\n\t * @param nationalIdentificationNumber the PESEL string to verify\n\t * @return true if the number is valid, false otherwise\n\t */\n\tpublic static boolean isValid(String nationalIdentificationNumber) {\n\t\tint size = nationalIdentificationNumber.length();\n\t\tif (size != NATIONAL_IDENTIFICATION_NUMBER_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\n\t\tint checksum = Integer.parseInt(nationalIdentificationNumber.substring(size - 1));\n\t\tint checkDigit = calculateChecksum(nationalIdentificationNumber);\n\n\t\treturn checkDigit == checksum;\n\t}\n\n\tprivate int calculateMonth(int month, int year) {\n\t\treturn month + PERIOD_WEIGHTS[(year - BEGIN_YEAR) / PERIOD_FACTOR];\n\t}\n\n\tprivate int calculateSexCode(Person.Sex sex) {\n\t\treturn SEX_FIELDS[baseProducer.randomInt(SEX_FIELDS.length - 1)] + (sex == Person.Sex.MALE ? 1 : 0);\n\t}\n\n\tprivate static int calculateChecksum(String nationalIdentificationNumber) {\n\t\tint sum = 0;\n\t\tint i = 0;\n\t\tfor (int weight : WEIGHTS) {\n\t\t\tint digit = Character.digit(nationalIdentificationNumber.charAt(i++), 10);\n\t\t\tsum += digit * weight;\n\t\t}\n\n\t\tint checksum = (sum % TEN);\n\n\t\tif (0 == checksum) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn TEN - checksum;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/pl/PlNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl;\n\nimport java.time.LocalDate;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.util.AlphaNumberSystem;\nimport com.devskiller.jfairy.producer.util.ValidateUtils;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.leftPad;\n\n/**\n * Polish Identity Card Number\n * <p>\n * <a href=\"http://en.wikipedia.org/wiki/Polish_identity_card\">Polish identity card</a>\n */\npublic class PlNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tstatic final int ISSUING_BEGIN = 2000;\n\n\tprivate static final int[] WEIGHTS = new int[]{7, 3, 1, 0, 7, 3, 1, 7, 3};\n\tprivate static final int CHECKSUM_INDEX = 3;\n\n\tprivate static final int DIGITS_PART_SIZE = 5;\n\n\tstatic final int MAX_DIGITS_PART_VALUE = 99999;\n\n\tstatic final int LETTER_WEIGHT = 45;\n\tprivate static final int LETTERS_PART_SIZE = 3;\n\tprivate static final int LETTER_VALUE_MODIFIER = 10;\n\tprivate static final int ALPHABET_SIZE = 26;\n\n\tprivate static final int BASE_TEN = 10;\n\n\tprivate final DateProducer dateProducer;\n\tprivate final BaseProducer baseProducer;\n\n\tpublic PlNationalIdentityCardNumberProvider(DateProducer dateProducer, BaseProducer baseProducer) {\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\n\t\tLocalDate dateTime = dateProducer.randomDateBetweenYearAndNow(ISSUING_BEGIN).toLocalDate();\n\n\t\treturn get(dateTime);\n\t}\n\n\tpublic String get(LocalDate date) {\n\n\t\tValidateUtils.isTrue(date.getYear() >= ISSUING_BEGIN, \"Polish ID was introduced in 2000\");\n\n\t\tchar[] id = new char[WEIGHTS.length];\n\n\t\tfillLettersPart(date.getYear(), id);\n\t\tfillDigitsPart(id);\n\n\t\tchar checksum = calculateChecksum(id);\n\n\t\tid[CHECKSUM_INDEX] = checksum;\n\n\t\treturn String.copyValueOf(id);\n\n\t}\n\n\tpublic boolean isValid(String id) {\n\t\tint checksum = calculateChecksum(id.toCharArray());\n\n\t\treturn id.charAt(CHECKSUM_INDEX) == checksum;\n\t}\n\n\tprivate char calculateChecksum(char[] id) {\n\t\tint index = 0;\n\t\tint checksum = 0;\n\n\t\tfor (int weight : WEIGHTS) {\n\t\t\tint value = 0;\n\t\t\tif (index < CHECKSUM_INDEX) {\n\t\t\t\tvalue = id[index] - 'A' + LETTER_VALUE_MODIFIER;\n\t\t\t} else if (index > CHECKSUM_INDEX) {\n\t\t\t\tvalue = id[index] - '0';\n\t\t\t}\n\t\t\tindex++;\n\t\t\tchecksum += weight * value;\n\t\t}\n\n\t\treturn String.valueOf(checksum % BASE_TEN).charAt(0);\n\t}\n\n\tprivate void fillDigitsPart(char[] id) {\n\t\tString num = String.valueOf(baseProducer.randomInt(MAX_DIGITS_PART_VALUE));\n\t\tchar[] digits = leftPad(num, DIGITS_PART_SIZE, '0').toCharArray();\n\t\tSystem.arraycopy(digits, 0, id, CHECKSUM_INDEX + 1, digits.length);\n\t}\n\n\tprivate void fillLettersPart(int year, char[] id) {\n\t\tint maxPrefix = (year - ISSUING_BEGIN) * LETTER_WEIGHT;\n\t\tint range = baseProducer.randomBetween(maxPrefix, maxPrefix + LETTER_WEIGHT);\n\t\tString prefix = AlphaNumberSystem.convertToString(range, ALPHABET_SIZE);\n\t\tchar[] charArray = leftPad(prefix, LETTERS_PART_SIZE, 'A').toCharArray();\n\t\tSystem.arraycopy(charArray, 0, id, 0, charArray.length);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/pl/PlPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl;\n\nimport java.util.Collections;\nimport java.util.LinkedHashMap;\nimport java.util.Locale;\nimport java.util.Map;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\nimport com.devskiller.jfairy.producer.util.AlphaNumberSystem;\n\n/**\n * Provider for Polish passport numbers.\n * <p>\n * A Polish passport number consists of 9 characters: 2 uppercase letters followed by 7 digits.\n * The third character (index 2) is a checksum digit calculated based on the other positions.\n */\npublic class PlPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate static final int CHECKSUM_INDEX = 2;\n\tprivate static final int PASSPORT_NUMBER_LENGTH = 9;\n\tprivate static final int RADIX_TEN = 10;\n\n\t/** Map to store numeric values for letters A-Z (A=10, B=11, etc.) */\n\tprivate static final Map<Character, Integer> LETTER_DIGITS = generateLetterDigits();\n\n\tprivate static final int[] WEIGHTS = {7, 3, 9, 1, 7, 3, 1, 7, 3};\n\n\tprivate final BaseProducer baseProducer;\n\n\t/**\n\t * Creates a new provider instance.\n\t * <p>\n\t * @param baseProducer the producer used for random data generation\n\t */\n\tpublic PlPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t/**\n\t * Generates a mapping of characters to their numeric values for checksum calculation.\n\t * <p>\n\t * @return an unmodifiable map of characters to integers\n\t */\n\tprivate static Map<Character, Integer> generateLetterDigits() {\n\t\tint baseNum = 10;\n\t\tMap<Character, Integer> map = new LinkedHashMap<>();\n\t\tfor (Character letter : AlphaNumberSystem.generateAlphabetList()) {\n\t\t\tmap.put(letter, baseNum++);\n\t\t}\n\t\treturn Collections.unmodifiableMap(map);\n\t}\n\n\t/**\n\t * Returns a randomly generated Polish passport number.\n\t * <p>\n\t * @return a valid 9-character passport number string\n\t */\n\t@Override\n\tpublic String get() {\n\t\tchar[] passport = new char[PASSPORT_NUMBER_LENGTH];\n\n\t\tfillSeries(passport);\n\t\tfillDigits(passport);\n\t\tfillChecksum(passport);\n\n\t\treturn String.valueOf(passport);\n\t}\n\n\t/**\n\t * Calculates and sets the checksum digit at the appropriate index.\n\t * <p>\n\t * @param passport the character array representing the passport number\n\t */\n\tprivate void fillChecksum(char[] passport) {\n\t\t// when generating, the checksum index itself must be ignored\n\t\tint checkSum = calculateTotalWeight(passport, true);\n\t\tpassport[CHECKSUM_INDEX] = Character.forDigit(checkSum % RADIX_TEN, RADIX_TEN);\n\t}\n\n\t/**\n\t * Fills the first two positions with random uppercase letters.\n\t * <p>\n\t * @param passport the character array to modify\n\t */\n\tprivate void fillSeries(char[] passport) {\n\t\tchar[] randomSeries = baseProducer.randomAlphabetic(2).toUpperCase(Locale.ROOT).toCharArray();\n\t\tSystem.arraycopy(randomSeries, 0, passport, 0, randomSeries.length);\n\t}\n\n\t/**\n\t * Fills the numeric positions of the passport number.\n\t * <p>\n\t * @param passport the character array to modify\n\t */\n\tprivate void fillDigits(char[] passport) {\n\t\tchar[] randomDigits = baseProducer.randomNumeric(6).toCharArray();\n\t\tSystem.arraycopy(randomDigits, 0, passport, 3, randomDigits.length);\n\t}\n\n\t/**\n\t * Validates the checksum of a Polish passport number.\n\t * <p>\n\t * @param passportNumber the 9-character passport number to validate\n\t * @return true if the checksum is correct, false otherwise\n\t */\n\tpublic static boolean isPassportCheckSumValid(String passportNumber) {\n\t\tif (passportNumber == null || passportNumber.length() != PASSPORT_NUMBER_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\t\tchar[] passport = passportNumber.toCharArray();\n\t\t// when validating, the checksum index (weight 9) must be included\n\t\treturn calculateTotalWeight(passport, false) % RADIX_TEN == 0;\n\t}\n\n\t/**\n\t * Calculates the sum of weighted values for all characters in the passport number.\n\t * <p>\n\t * @param passport the character array of the passport\n\t * @param ignoreChecksumIndex whether to skip the checksum digit during calculation\n\t * @return the calculated weighted sum\n\t */\n\tprivate static int calculateTotalWeight(char[] passport, boolean ignoreChecksumIndex) {\n\t\tint totalWeight = 0;\n\t\tfor (int i = 0; i < PASSPORT_NUMBER_LENGTH; i++) {\n\t\t\tif (ignoreChecksumIndex && i == CHECKSUM_INDEX) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tint value;\n\t\t\tif (i < 2) {\n\t\t\t\tvalue = LETTER_DIGITS.getOrDefault(passport[i], 0);\n\t\t\t} else {\n\t\t\t\t// use digit for strict base-10 interpretation\n\t\t\t\tvalue = Character.digit(passport[i], RADIX_TEN);\n\t\t\t}\n\t\t\ttotalWeight += value * WEIGHTS[i];\n\t\t}\n\t\treturn totalWeight;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sk/SkAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class SkAddress extends ContinentalAddress {\n\n\tpublic SkAddress(String street, String streetNumber, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tprotected String getApartmentMark() {\n\t\treturn \", \";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sk/SkAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class SkAddressProvider extends AbstractAddressProvider {\n\n\tpublic SkAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic SkAddress get() {\n\t\treturn new SkAddress(getStreet(), getStreetNumber(), getApartmentNumber(),\n\t\t\t\tgetPostalCode(), getCity());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sk/SkNationalIdentificationNumberFactory.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties;\n\npublic class SkNationalIdentificationNumberFactory implements NationalIdentificationNumberFactory {\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\n\tpublic SkNationalIdentificationNumberFactory(BaseProducer baseProducer, DateProducer dateProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dateProducer = dateProducer;\n\t}\n\n\t@Override\n\tpublic SkNationalIdentificationNumberProvider produceNationalIdentificationNumberProvider(NationalIdentificationNumberProperties.Property... properties) {\n\t\treturn new SkNationalIdentificationNumberProvider(dateProducer, baseProducer, properties);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sk/SkNationalIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk;\n\nimport java.time.LocalDate;\nimport java.time.format.DateTimeFormatter;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumber;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.Person;\n\nimport static java.lang.String.format;\n\n/**\n * Slovak National Identification Number (known as Rodne cislo)\n * <p>\n * Based on the same algorithm as Polish PESEL\n * More info: <a href=\"http://en.wikipedia.org/wiki/PESEL\">PESEL</a>\n */\npublic class SkNationalIdentificationNumberProvider implements NationalIdentificationNumberProvider {\n\n\tprivate static final int NATIONAL_IDENTIFICATION_NUMBER_LENGTH = 11;\n\tprivate static final int VALIDITY_IN_YEARS = 10;\n\n\tprivate static final int[] PERIOD_WEIGHTS = {80, 0, 20, 40, 60};\n\tprivate static final int PERIOD_FACTOR = 100;\n\tprivate static final int BEGIN_YEAR = 1800;\n\n\tprivate static final int[] WEIGHTS = {1, 3, 7, 9, 1, 3, 7, 9, 1, 3};\n\tprivate static final int MAX_SERIAL_NUMBER = 999;\n\tprivate static final int TEN = 10;\n\n\tprivate static final int[] SEX_FIELDS = {0, 2, 4, 6, 8};\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\tprivate LocalDate issueDate;\n\tprivate Person.Sex sex;\n\n\tpublic SkNationalIdentificationNumberProvider(DateProducer dateProducer, BaseProducer baseProducer, NationalIdentificationNumberProperties.Property... properties) {\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.baseProducer = baseProducer;\n\n\t\twith(properties);\n\n\t}\n\n\tpublic void with(NationalIdentificationNumberProperties.Property[] properties) {\n\t\tfor (NationalIdentificationNumberProperties.Property property : properties) {\n\t\t\tproperty.apply(this);\n\t\t}\n\t}\n\n\t@Override\n\tpublic NationalIdentificationNumber get() {\n\n\t\tif (issueDate == null) {\n\t\t\tissueDate = dateProducer.randomDateInThePast(VALIDITY_IN_YEARS).toLocalDate();\n\t\t}\n\t\tif (sex == null) {\n\t\t\tsex = baseProducer.trueOrFalse() ? Person.Sex.MALE : Person.Sex.FEMALE;\n\t\t}\n\n\t\treturn new NationalIdentificationNumber(generate());\n\t}\n\n\tprivate String generate() {\n\t\tint month = calculateMonth(issueDate.getMonthValue(), issueDate.getYear());\n\t\tint day = issueDate.getDayOfMonth();\n\t\tint serialNumber = baseProducer.randomInt(MAX_SERIAL_NUMBER);\n\t\tint sexCode = calculateSexCode(sex);\n\n\t\tString nationalIdentificationNumber = format(\"%s%02d%02d%03d%d\",\n\t\t\tDateTimeFormatter.ofPattern(\"uu\").format(issueDate), month, day, serialNumber, sexCode);\n\n\t\treturn nationalIdentificationNumber + calculateChecksum(nationalIdentificationNumber);\n\t}\n\n\t@Override\n\tpublic void setIssueDate(LocalDate issueDate) {\n\t\tthis.issueDate = issueDate;\n\t}\n\n\t@Override\n\tpublic void setSex(Person.Sex sex) {\n\t\tthis.sex = sex;\n\t}\n\n\tpublic static boolean isValid(String nationalIdentificationNumber) {\n\t\tint size = nationalIdentificationNumber.length();\n\t\tif (size != NATIONAL_IDENTIFICATION_NUMBER_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\n\t\tint checksum = Integer.parseInt(nationalIdentificationNumber.substring(size - 1));\n\t\tint checkDigit = calculateChecksum(nationalIdentificationNumber);\n\n\t\treturn checkDigit == checksum;\n\n\t}\n\n\tprivate int calculateMonth(int month, int year) {\n\t\treturn month + PERIOD_WEIGHTS[(year - BEGIN_YEAR) / PERIOD_FACTOR];\n\t}\n\n\tprivate int calculateSexCode(Person.Sex sex) {\n\t\treturn SEX_FIELDS[baseProducer.randomInt(SEX_FIELDS.length - 1)] + (sex == Person.Sex.MALE ? 1 : 0);\n\t}\n\n\tprivate static int calculateChecksum(String nationalIdentificationNumber) {\n\t\tint sum = 0;\n\t\tint i = 0;\n\t\tfor (int weight : WEIGHTS) {\n\t\t\tint digit = Character.digit(nationalIdentificationNumber.charAt(i++), 10);\n\t\t\tsum += digit * weight;\n\t\t}\n\n\t\tint checksum = (sum % TEN);\n\n\t\tif (0 == checksum) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn TEN - checksum;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sk/SkNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk;\n\nimport java.time.LocalDate;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.util.AlphaNumberSystem;\nimport com.devskiller.jfairy.producer.util.StringUtils;\n\n/**\n * Slovak Identity Card Number\n * <p>\n * Based on the same format as Polish identity card\n * <a href=\"http://en.wikipedia.org/wiki/Polish_identity_card\">Polish identity card</a>\n */\npublic class SkNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tstatic final int ISSUING_BEGIN = 2000;\n\n\tprivate static final int[] WEIGHTS = new int[]{7, 3, 1, 0, 7, 3, 1, 7, 3};\n\tprivate static final int CHECKSUM_INDEX = 3;\n\n\tprivate static final int DIGITS_PART_SIZE = 5;\n\n\tstatic final int MAX_DIGITS_PART_VALUE = 99999;\n\n\tstatic final int LETTER_WEIGHT = 45;\n\tprivate static final int LETTERS_PART_SIZE = 3;\n\tprivate static final int LETTER_VALUE_MODIFIER = 10;\n\tprivate static final int ALPHABET_SIZE = 26;\n\n\tprivate static final int BASE_TEN = 10;\n\n\tprivate final DateProducer dateProducer;\n\tprivate final BaseProducer baseProducer;\n\n\tpublic SkNationalIdentityCardNumberProvider(DateProducer dateProducer, BaseProducer baseProducer) {\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\n\t\tLocalDate dateTime = dateProducer.randomDateBetweenYearAndNow(ISSUING_BEGIN).toLocalDate();\n\n\t\treturn get(dateTime);\n\t}\n\n\tpublic String get(LocalDate date) {\n\n\t\tif (date.getYear() < ISSUING_BEGIN) {\n\t\t\tthrow new IllegalArgumentException(\"Slovak ID card was introduced in 2000\");\n\t\t}\n\n\t\tchar[] id = new char[WEIGHTS.length];\n\n\t\tfillLettersPart(date.getYear(), id);\n\t\tfillDigitsPart(id);\n\n\t\tchar checksum = calculateChecksum(id);\n\n\t\tid[CHECKSUM_INDEX] = checksum;\n\n\t\treturn String.copyValueOf(id);\n\n\t}\n\n\tpublic boolean isValid(String id) {\n\t\tint checksum = calculateChecksum(id.toCharArray());\n\n\t\treturn id.charAt(CHECKSUM_INDEX) == checksum;\n\t}\n\n\tprivate char calculateChecksum(char[] id) {\n\t\tint index = 0;\n\t\tint checksum = 0;\n\n\t\tfor (int weight : WEIGHTS) {\n\t\t\tint value = 0;\n\t\t\tif (index < CHECKSUM_INDEX) {\n\t\t\t\tvalue = id[index] - 'A' + LETTER_VALUE_MODIFIER;\n\t\t\t} else if (index > CHECKSUM_INDEX) {\n\t\t\t\tvalue = id[index] - '0';\n\t\t\t}\n\t\t\tindex++;\n\t\t\tchecksum += weight * value;\n\t\t}\n\n\t\treturn String.valueOf(checksum % BASE_TEN).charAt(0);\n\t}\n\n\tprivate void fillDigitsPart(char[] id) {\n\t\tString num = String.valueOf(baseProducer.randomInt(MAX_DIGITS_PART_VALUE));\n\t\tchar[] digits = StringUtils.leftPad(num, DIGITS_PART_SIZE, '0').toCharArray();\n\t\tSystem.arraycopy(digits, 0, id, CHECKSUM_INDEX + 1, digits.length);\n\t}\n\n\tprivate void fillLettersPart(int year, char[] id) {\n\t\tint maxPrefix = (year - ISSUING_BEGIN) * LETTER_WEIGHT;\n\t\tint range = baseProducer.randomBetween(maxPrefix, maxPrefix + LETTER_WEIGHT);\n\t\tString prefix = AlphaNumberSystem.convertToString(range, ALPHABET_SIZE);\n\t\tchar[] charArray = StringUtils.leftPad(prefix, LETTERS_PART_SIZE, 'A').toCharArray();\n\t\tSystem.arraycopy(charArray, 0, id, 0, charArray.length);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sk/SkPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk;\n\nimport java.util.Collections;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\nimport com.devskiller.jfairy.producer.util.AlphaNumberSystem;\n\n/**\n * Slovak Passport Number Provider.\n * <p>\n * The passport number consists of 9 characters: 2 letters, 1 checksum digit, and 6 digits.\n */\npublic class SkPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate static final int CHECKSUM_INDEX = 2;\n\tprivate static final int PASSPORT_NUMBER_LENGTH = 9;\n\tprivate static final int RADIX_TEN = 10;\n\n\tprivate static final int[] WEIGHTS = {7, 3, 9, 1, 7, 3, 1, 7, 3};\n\n\t/** Map to store numeric values for letters A-Z (A=10, B=11, etc.) */\n\tprivate static final Map<Character, Integer> LETTER_DIGITS = generateLetterDigits();\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic SkPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\tprivate static Map<Character, Integer> generateLetterDigits() {\n\t\tint baseNum = 10;\n\t\tList<Character> alphabet = AlphaNumberSystem.generateAlphabetList();\n\t\tMap<Character, Integer> map = new LinkedHashMap<>(alphabet.size());\n\t\tfor (Character letter : alphabet) {\n\t\t\tmap.put(letter, baseNum++);\n\t\t}\n\t\treturn Collections.unmodifiableMap(map);\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tchar[] passport = new char[PASSPORT_NUMBER_LENGTH];\n\n\t\tfillSeries(passport);\n\n\t\tfillDigits(passport);\n\n\t\tfillChecksum(passport);\n\n\t\treturn String.valueOf(passport);\n\t}\n\n\tprivate void fillChecksum(char[] passport) {\n\t\tint checkSum = calculateTotalWeight(passport);\n\t\t// the checksum digit itself is the remainder mod 10\n\t\tpassport[CHECKSUM_INDEX] = Character.forDigit(checkSum % RADIX_TEN, RADIX_TEN);\n\t}\n\n\tprivate void fillSeries(char[] passport) {\n\t\tfor (int i = 0; i < 2; i++) {\n\t\t\tpassport[i] = (char) ('A' + baseProducer.randomInt(26));\n\t\t}\n\t}\n\n\tprivate void fillDigits(char[] passport) {\n\t\tfor (int i = 3; i < PASSPORT_NUMBER_LENGTH; i++) {\n\t\t\tpassport[i] = (char) ('0' + baseProducer.randomInt(RADIX_TEN));\n\t\t}\n\t}\n\n\t/**\n\t * Validates the checksum of a Slovak passport number\n\t * <p>\n\t * @param passportNumber the 9-character passport number string\n\t * @return true if the checksum is valid\n\t */\n\tpublic static boolean isPassportCheckSumValid(String passportNumber) {\n\t\tif (passportNumber == null || passportNumber.length() != PASSPORT_NUMBER_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\n\t\tchar[] passport = passportNumber.toCharArray();\n\t\treturn calculateTotalWeight(passport) % RADIX_TEN == 0;\n\t}\n\n\tprivate static int calculateTotalWeight(char[] passport) {\n\t\tint totalWeight = 0;\n\t\tfor (int i = 0; i < PASSPORT_NUMBER_LENGTH; i++) {\n\t\t\tif (i == CHECKSUM_INDEX) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tint value;\n\t\t\tif (i < 2) {\n\t\t\t\tvalue = LETTER_DIGITS.getOrDefault(passport[i], 0);\n\t\t\t} else {\n\t\t\t\t// errorprone: using digit(c, 10) for strict decimal interpretation\n\t\t\t\tvalue = Character.digit(passport[i], RADIX_TEN);\n\t\t\t}\n\t\t\ttotalWeight += value * WEIGHTS[i];\n\t\t}\n\t\treturn totalWeight;\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sv/SvAddress.java",
    "content": "\npackage com.devskiller.jfairy.producer.person.locale.sv;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class SvAddress extends ContinentalAddress {\n\n\tpublic SvAddress(String street, String streetNumber, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tpublic String getApartmentMark() {\n\t\treturn \" Lgh \";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sv/SvAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class SvAddressProvider extends AbstractAddressProvider {\n\n\tpublic SvAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic SvAddress get() {\n\t\treturn new SvAddress(getStreet(), getStreetNumber(), getApartmentNumber(),\n\t\t\t\tgetPostalCode(), getCity());\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sv/SvNationalIdentificationNumberFactory.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberFactory;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties;\n\npublic class SvNationalIdentificationNumberFactory implements NationalIdentificationNumberFactory {\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\n\tpublic SvNationalIdentificationNumberFactory(BaseProducer baseProducer, DateProducer dateProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dateProducer = dateProducer;\n\t}\n\n\t@Override\n\tpublic SvNationalIdentificationNumberProvider produceNationalIdentificationNumberProvider(NationalIdentificationNumberProperties.Property... properties) {\n\t\treturn new SvNationalIdentificationNumberProvider(dateProducer, baseProducer, properties);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sv/SvNationalIdentificationNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv;\n\nimport java.time.LocalDate;\nimport java.time.format.DateTimeFormatter;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumber;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties;\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumberProvider;\nimport com.devskiller.jfairy.producer.person.Person;\n\nimport static java.lang.String.format;\n\n/**\n * Swedish National Identification Number (known as Personal Identity Number or Personnummer in sweden)\n * <p>\n * <a href=\"https://en.wikipedia.org/wiki/Personal_identity_number_(Sweden)\">Personal identity number (Sweden)</a>\n * <p>\n * E.g.\n * 870508-5853\n * <p>\n * The left part of the hyphen consists of the date of birth and the right part consist of\n * three random numbers + one check digit.\n */\npublic class SvNationalIdentificationNumberProvider implements NationalIdentificationNumberProvider {\n\n\tprivate static final int NATIONAL_IDENTIFICATION_NUMBER_LENGTH = 11;\n\tprivate static final int VALIDITY_IN_YEARS = 120;\n\n\tprivate static final int[] WEIGHTS = {2, 1, 2, 1, 2, 1, 2, 1, 2};\n\tprivate static final int MAX_SERIAL_NUMBER = 99;\n\tprivate static final int TEN = 10;\n\n\tprivate static final int[] SEX_FIELDS = {0, 2, 4, 6, 8};\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\tprivate LocalDate issueDate;\n\tprivate Person.Sex sex;\n\n\tpublic SvNationalIdentificationNumberProvider(DateProducer dateProducer, BaseProducer baseProducer,\n\t                                              NationalIdentificationNumberProperties.Property... properties) {\n\t\tthis.dateProducer = dateProducer;\n\t\tthis.baseProducer = baseProducer;\n\n\t\twith(properties);\n\t}\n\n\tpublic void with(NationalIdentificationNumberProperties.Property[] properties) {\n\t\tfor (NationalIdentificationNumberProperties.Property property : properties) {\n\t\t\tproperty.apply(this);\n\t\t}\n\t}\n\n\t@Override\n\tpublic NationalIdentificationNumber get() {\n\n\t\tif (issueDate == null) {\n\t\t\tissueDate = dateProducer.randomDateInThePast(VALIDITY_IN_YEARS).toLocalDate();\n\t\t}\n\t\tif (sex == null) {\n\t\t\tsex = baseProducer.trueOrFalse() ? Person.Sex.MALE : Person.Sex.FEMALE;\n\t\t}\n\n\t\treturn new NationalIdentificationNumber(generate());\n\t}\n\n\tprivate String generate() {\n\t\tint serialNumber = baseProducer.randomInt(MAX_SERIAL_NUMBER);\n\t\tint sexCode = calculateSexCode(sex);\n\n\t\tString nationalIdentificationNumber = format(\"%s%s%s-%02d%d\",\n\t\t\tDateTimeFormatter.ofPattern(\"uu\").format(issueDate),\n\t\t\tDateTimeFormatter.ofPattern(\"MM\").format(issueDate),\n\t\t\tDateTimeFormatter.ofPattern(\"dd\").format(issueDate), serialNumber, sexCode);\n\n\t\treturn nationalIdentificationNumber + calculateChecksum(nationalIdentificationNumber);\n\t}\n\n\t@Override\n\tpublic void setIssueDate(LocalDate issueDate) {\n\t\tthis.issueDate = issueDate;\n\t}\n\n\t@Override\n\tpublic void setSex(Person.Sex sex) {\n\t\tthis.sex = sex;\n\t}\n\n\tpublic static boolean isValid(String nationalIdentificationNumber) {\n\t\tint size = nationalIdentificationNumber.length();\n\t\tif (size != NATIONAL_IDENTIFICATION_NUMBER_LENGTH) {\n\t\t\treturn false;\n\t\t}\n\n\t\tint checksum = Integer.parseInt(nationalIdentificationNumber.substring(size - 1));\n\t\tint checkDigit = calculateChecksum(nationalIdentificationNumber);\n\n\t\treturn checkDigit == checksum;\n\n\t}\n\n\tprivate int calculateSexCode(Person.Sex sex) {\n\t\treturn SEX_FIELDS[baseProducer.randomInt(SEX_FIELDS.length - 1)] + (sex == Person.Sex.MALE ? 1 : 0);\n\t}\n\n\tpublic static int calculateChecksum(String nationalIdentificationNumber) {\n\t\tString nationalIdentificationNumberWithoutHyphen = nationalIdentificationNumber.replace(\"-\", \"\");\n\t\tint sum = 0;\n\t\tint i = 0;\n\t\tfor (int weight : WEIGHTS) {\n\t\t\tint digit = Character.digit(nationalIdentificationNumberWithoutHyphen.charAt(i++), 10);\n\t\t\tint product = digit * weight;\n\t\t\tsum += (product / 10) + (product % 10);\n\t\t}\n\n\t\tif (sum % 10 == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn TEN - (sum % 10);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sv/SvNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\n\n/**\n * Swedish Identity Card Number (random number implementation)\n */\npublic class SvNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic SvNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomNumeric(8);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/sv/SvPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\n/**\n * Swedish Passport Number (random number implementation)\n */\npublic class SvPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic SvPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomNumeric(8);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/tr/TrAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.tr;\n\nimport com.devskiller.jfairy.producer.person.locale.ContinentalAddress;\n\npublic class TrAddress extends ContinentalAddress {\n\n\tpublic TrAddress(String streetNumber, String street, String apartmentNumber, String postalCode, String city) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tprotected String getStreetNumberSeparator() {\n\t\treturn \" No: \";\n\t}\n\n\t@Override\n\tprotected String getApartmentMark() {\n\t\treturn \" Daire: \";\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/tr/TrAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.tr;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\n\npublic class TrAddressProvider extends AbstractAddressProvider {\n\n\tpublic TrAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic TrAddress get() {\n\t\treturn new TrAddress(getStreetNumber(), getStreet(), getApartmentNumber(),\n\t\t\t\tgetPostalCode(), getCity());\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/tr/TrNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.tr;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\n\n/**\n * Turkish T.C. Kimlik No generator.\n * 11 digits.\n * 1st digit cannot be 0.\n * 10th digit = ((sum(1,3,5,7,9) * 7) - sum(2,4,6,8)) % 10.\n * 11th digit = (sum(1..10)) % 10.\n */\npublic class TrNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic TrNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tint[] digits = new int[11];\n\n\t\tdigits[0] = baseProducer.randomBetween(1, 9);\n\t\tfor (int i = 1; i < 9; i++) {\n\t\t\tdigits[i] = baseProducer.randomBetween(0, 9);\n\t\t}\n\n\t\tint oddSum = digits[0] + digits[2] + digits[4] + digits[6] + digits[8];\n\t\tint evenSum = digits[1] + digits[3] + digits[5] + digits[7];\n\n\t\tint d10 = ((oddSum * 7) - evenSum) % 10;\n\t\tif (d10 < 0) {\n\t\t\td10 += 10;\n\t\t}\n\t\tdigits[9] = d10;\n\n\t\tint totalSum = 0;\n\t\tfor (int i = 0; i < 10; i++) {\n\t\t\ttotalSum += digits[i];\n\t\t}\n\t\tdigits[10] = totalSum % 10;\n\n\t\tStringBuilder sb = new StringBuilder();\n\t\tfor (int digit : digits) {\n\t\t\tsb.append(digit);\n\t\t}\n\t\treturn sb.toString();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/tr/TrPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.tr;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\npublic class TrPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic TrPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn \"U\" + String.format(\"%08d\", baseProducer.randomBetween(1, 99999999));\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/zh/ZhAddress.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.zh;\n\nimport com.devskiller.jfairy.producer.person.locale.AbstractAddress;\n\n/**\n * com.devskiller.jfairy.producer.person.locale.zh.ZhAddress\n *\n * @author lhfcws\n * @since 2017/3/2\n */\npublic class ZhAddress extends AbstractAddress {\n\n\tprivate static final String CITY = \"市\";\n\tprivate static final String NUMBER = \"号\";\n\tprivate static final String ROOM = \"房\";\n\tprivate static final String POSTCODE = \"邮编\";\n\n\tpublic ZhAddress(String streetNumber, String street, String apartmentNumber, String city, String postalCode) {\n\t\tsuper(street, streetNumber, apartmentNumber, postalCode, city);\n\t}\n\n\t@Override\n\tpublic String getAddressLine1() {\n\t\tString line = city + CITY + street + streetNumber + NUMBER;\n\t\tif (!apartmentNumber.isEmpty()) {\n\t\t\treturn line + \" \" + apartmentNumber + ROOM;\n\t\t} else {\n\t\t\treturn line;\n\t\t}\n\t}\n\n\t@Override\n\tpublic String getAddressLine2() {\n\t\treturn POSTCODE + \" \" + postalCode;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/zh/ZhAddressProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.zh;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.AbstractAddressProvider;\nimport com.devskiller.jfairy.producer.person.Address;\n\n/**\n * com.devskiller.jfairy.producer.person.locale.zh.ZhAddressProvider\n *\n * @author lhfcws\n * @since 2017/3/2\n */\npublic class ZhAddressProvider extends AbstractAddressProvider {\n\n\tpublic ZhAddressProvider(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tsuper(dataMaster, baseProducer);\n\t}\n\n\t@Override\n\tpublic Address get() {\n\t\treturn new ZhAddress(getStreetNumber(), getStreet(), getApartmentNumber(),\n\t\t\tgetCity(), getPostalCode());\n\t}\n\n\t@Override\n\tpublic String getApartmentNumber() {\n\t\tif (baseProducer.trueOrFalse()) {\n\t\t\tString floor = String.valueOf(baseProducer.randomInt(38));\n\t\t\tString room = \"0\" + baseProducer.randomInt(8);\n\t\t\treturn floor + room;\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/zh/ZhNationalIdentityCardNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.zh;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.DateProducer;\nimport com.devskiller.jfairy.producer.TimeProvider;\nimport com.devskiller.jfairy.producer.person.NationalIdentityCardNumberProvider;\nimport com.devskiller.jfairy.producer.util.ZhFairyUtil;\n\n/**\n * Chinese National Identity Card Number, total 18 digits\n *\n * @author Lhfcws\n * @since 27.02.17\n */\npublic class ZhNationalIdentityCardNumberProvider implements NationalIdentityCardNumberProvider {\n\n\t/**\n\t * The last 4 digit is an order number from 0001 to 9999\n\t */\n\tprivate static final int ORDER_MAX = 9999;\n\tprivate static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern(\"yyyyMMdd\");\n\n\tprivate final BaseProducer baseProducer;\n\tprivate final DateProducer dateProducer;\n\n\tpublic ZhNationalIdentityCardNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tthis.dateProducer = new DateProducer(baseProducer, new TimeProvider());\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\tStringBuilder idBuilder = new StringBuilder();\n\t\tidBuilder.append(baseProducer.randomElement(ZhFairyUtil.PROV_LIST));\n\t\tidBuilder.append(ZhFairyUtil.getRandomNumStr(baseProducer, ZhFairyUtil.CITY_MAX, 2));\n\t\tidBuilder.append(ZhFairyUtil.getRandomNumStr(baseProducer, ZhFairyUtil.DISTRICT_MAX, 2));\n\t\tidBuilder.append(getBirthDate());\n\t\tidBuilder.append(ZhFairyUtil.getRandomNumStr(baseProducer, ORDER_MAX, 4));\n\t\treturn idBuilder.toString();\n\t}\n\n\tprivate String getBirthDate() {\n\t\tLocalDateTime birthDate = this.dateProducer.randomDateInThePast(50);\n\t\treturn FORMATTER.format(birthDate);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/person/locale/zh/ZhPassportNumberProvider.java",
    "content": "package com.devskiller.jfairy.producer.person.locale.zh;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\nimport com.devskiller.jfairy.producer.person.PassportNumberProvider;\n\n/**\n * com.devskiller.jfairy.producer.person.locale.zh.ZhPassportNumberProvider\n *\n * @author lhfcws\n * @since 2017/3/2\n */\npublic class ZhPassportNumberProvider implements PassportNumberProvider {\n\n\tprivate final BaseProducer baseProducer;\n\n\tpublic ZhPassportNumberProvider(BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\t@Override\n\tpublic String get() {\n\t\treturn baseProducer.randomAlphanumeric(9);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/text/TextProducer.java",
    "content": "/*\n * Copyright (c) 2013 Codearte\n */\npackage com.devskiller.jfairy.producer.text;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.joinWithSpace;\nimport static com.devskiller.jfairy.producer.util.StringUtils.left;\n\npublic class TextProducer {\n\n\tprivate static final int DEFAULT_WORD_COUNT = 3;\n\n\tprivate static final int DEFAULT_WORD_COUNT_IN_SENTENCE = 3;\n\n\tprivate static final int DEFAULT_SENTENCE_COUNT = 3;\n\n\tprivate static final int SENTENCE_COUNT_PRECISION_MIN = 1;\n\n\tprivate static final int SENTENCE_COUNT_PRECISION_MAX = 3;\n\n\tprivate final TextProducerInternal textProducerInternal;\n\n\tprivate final BaseProducer baseProducer;\n\n\tprivate int limit = 0;\n\n\tpublic TextProducer(TextProducerInternal textProducerInternal, BaseProducer baseProducer) {\n\t\tthis.textProducerInternal = textProducerInternal;\n\t\tthis.baseProducer = baseProducer;\n\t}\n\n\tpublic TextProducer limitedTo(int limit) {\n\t\tthis.limit = limit;\n\t\treturn this;\n\t}\n\n\tpublic String result(String result) {\n\t\tif (limit > 0) {\n\t\t\treturn left(result, limit);\n\t\t} else {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tpublic String loremIpsum() {\n\t\treturn result(textProducerInternal.loremIpsum());\n\t}\n\n\tpublic String text() {\n\t\treturn result(textProducerInternal.text());\n\t}\n\n\tpublic String word() {\n\t\treturn result(word(DEFAULT_WORD_COUNT));\n\t}\n\n\tpublic String word(int count) {\n\t\treturn result(textProducerInternal.cleanWords(count));\n\t}\n\n\tpublic String latinWord() {\n\t\treturn result(latinWord(DEFAULT_WORD_COUNT));\n\t}\n\n\tpublic String latinWord(int count) {\n\t\treturn result(textProducerInternal.cleanLatinWords(count));\n\t}\n\n\tpublic String latinSentence() {\n\t\treturn result(latinSentence(DEFAULT_SENTENCE_COUNT));\n\t}\n\n\tpublic String latinSentence(int wordCount) {\n\t\treturn result(textProducerInternal.latinSentence(wordCount));\n\t}\n\n\tpublic String sentence() {\n\t\treturn result(sentence(DEFAULT_WORD_COUNT_IN_SENTENCE));\n\t}\n\n\tpublic String sentence(int wordCount) {\n\t\treturn result(textProducerInternal.sentence(wordCount));\n\n\t}\n\n\tprivate List<String> sentences(int sentenceCount) {\n\t\tList<String> sentences = new ArrayList<>(sentenceCount);\n\t\tfor (int i = 0; i < sentenceCount; i++) {\n\t\t\tsentences.add(sentence());\n\t\t}\n\t\treturn sentences;\n\t}\n\n\tpublic String paragraph() {\n\t\treturn result(paragraph(DEFAULT_SENTENCE_COUNT));\n\t}\n\n\tpublic String paragraph(int sentenceCount) {\n\t\treturn result(joinWithSpace(sentences(sentenceCount\n\t\t\t+ baseProducer.randomBetween(SENTENCE_COUNT_PRECISION_MIN, SENTENCE_COUNT_PRECISION_MAX))));\n\t}\n\n\t/**\n\t * Generates random string with desired length\n\t *\n\t * @param charsCount string length\n\t * @return random string\n\t */\n\tpublic String randomString(int charsCount) {\n\t\treturn textProducerInternal.randomString(charsCount);\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/text/TextProducerInternal.java",
    "content": "/*\n * Copyright (c) 2013. Codearte\n */\npackage com.devskiller.jfairy.producer.text;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\nimport com.devskiller.jfairy.data.DataMaster;\nimport com.devskiller.jfairy.producer.BaseProducer;\n\nimport static com.devskiller.jfairy.producer.util.StringUtils.capitalize;\nimport static com.devskiller.jfairy.producer.util.StringUtils.joinWithSpace;\nimport static com.devskiller.jfairy.producer.util.StringUtils.replaceChars;\nimport static com.devskiller.jfairy.producer.util.StringUtils.split;\nimport static com.devskiller.jfairy.producer.util.StringUtils.uncapitalize;\n\n/**\n * Internal component for generating and formatting random text, sentences, and words.\n * <p>\n * This class handles the low-level string manipulations for both standard and\n * Latin-based (Lorem Ipsum) text generation.\n *\n * @author jkubrynski@gmail.com\n * @since 2013-11-16\n */\npublic class TextProducerInternal {\n\n\tprivate static final String LOREM_IPSUM = \"loremIpsum\";\n\n\tprivate static final String TEXT = \"text\";\n\n\tprivate static final String ALPHABET = \"alphabet\";\n\n\tprivate static final int WORD_COUNT_PRECISION_IN_SENTENCE = 6;\n\n\tprivate final BaseProducer baseProducer;\n\n\tprivate final String loremIpsum;\n\n\tprivate final String text;\n\n\tprivate final List<String> words;\n\n\tprivate final String alphabet;\n\n\tprivate final int maxAlphabetIndex;\n\n\tprivate final List<String> latinWords;\n\n\tpublic TextProducerInternal(DataMaster dataMaster, BaseProducer baseProducer) {\n\t\tthis.baseProducer = baseProducer;\n\t\tloremIpsum = dataMaster.getString(LOREM_IPSUM);\n\t\ttext = dataMaster.getString(TEXT);\n\t\twords = new ArrayList<>(Arrays.asList(split(text, ' ')));\n\t\tlatinWords = new ArrayList<>(Arrays.asList(split(loremIpsum, ' ')));\n\t\talphabet = dataMaster.getString(ALPHABET);\n\t\tmaxAlphabetIndex = alphabet.length() - 1;\n\t}\n\n\t/**\n\t * Returns the raw Lorem Ipsum template string.\n\t *\n\t * @return the full lorem ipsum text\n\t */\n\tpublic String loremIpsum() {\n\t\treturn loremIpsum;\n\t}\n\n\t/**\n\t * Generates a space-separated string of random words.\n\t *\n\t * @param words source list of words\n\t * @param count base number of words\n\t * @param precision maximum additional random words to add\n\t * @return a string containing the random words\n\t */\n\tpublic String rawWords(List<String> words, int count, int precision) {\n\t\tList<String> result = readRawWords(words, count, precision);\n\t\treturn joinWithSpace(result);\n\t}\n\n\t/**\n\t * Returns a list of cleaned Latin words without punctuation.\n\t *\n\t * @param count number of words to return\n\t * @return a space-separated string of lowercase Latin words\n\t */\n\tpublic String cleanLatinWords(int count) {\n\t\treturn cleanWords(latinWords, count);\n\t}\n\n\t/**\n\t * Returns a list of cleaned standard words without punctuation.\n\t *\n\t * @param count number of words to return\n\t * @return a space-separated string of lowercase words\n\t */\n\tpublic String cleanWords(int count) {\n\t\treturn cleanWords(words, count);\n\t}\n\n\tprivate String cleanWords(List<String> words, int count) {\n\t\tList<String> result = new ArrayList<>();\n\t\tfor (String part : readRawWords(words, count, 0)) {\n\t\t\t// efficiently remove punctuation and lowercase\n\t\t\tresult.add(uncapitalize(replaceChars(part, \"., \", \"\")));\n\t\t}\n\t\treturn joinWithSpace(result);\n\t}\n\n\t/**\n\t * Generates a random string of a specific length using the configured alphabet.\n\t *\n\t * @param charsCount the desired length of the string\n\t * @return a random string\n\t */\n\tpublic String randomString(int charsCount) {\n\t\tStringBuilder sb = new StringBuilder(charsCount);\n\t\tfor (int i = 0; i < charsCount; i++) {\n\t\t\tsb.append(alphabet.charAt(baseProducer.randomInt(maxAlphabetIndex)));\n\t\t}\n\t\treturn sb.toString();\n\t}\n\n\tprivate List<String> readRawWords(List<String> words, int count, int precision) {\n\t\treturn baseProducer.randomElements(words, baseProducer.randomBetween(count, count + precision));\n\t}\n\n\t/**\n\t * Returns the raw standard text template.\n\t *\n\t * @return the base text string\n\t */\n\tpublic String text() {\n\t\treturn text;\n\t}\n\n\t/**\n\t * Generates a formatted sentence from standard words.\n\t *\n\t * @param wordCount number of words in the sentence\n\t * @return a formatted sentence\n\t */\n\tpublic String sentence(int wordCount) {\n\t\treturn sentence(words, wordCount);\n\t}\n\n\t/**\n\t * Generates a formatted sentence from Latin words.\n\t *\n\t * @param wordCount number of words in the sentence\n\t * @return a formatted Latin sentence\n\t */\n\tpublic String latinSentence(int wordCount) {\n\t\treturn sentence(latinWords, wordCount);\n\t}\n\n\tprivate String sentence(List<String> words, int wordCount) {\n\t\tString randomWords = rawWords(words, wordCount, WORD_COUNT_PRECISION_IN_SENTENCE);\n\n\t\tif (randomWords == null || randomWords.isEmpty()) {\n\t\t\treturn \".\";\n\t\t}\n\n\t\t// simplified logic: capitalize and ensure proper ending\n\t\tString result = capitalize(randomWords).trim();\n\n\t\t// clean up trailing commas from random selection\n\t\tif (result.endsWith(\",\")) {\n\t\t\tresult = result.substring(0, result.length() - 1);\n\t\t}\n\n\t\t// enforce single trailing period\n\t\tif (!result.endsWith(\".\")) {\n\t\t\tresult += \".\";\n\t\t}\n\n\t\treturn result;\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/util/AlphaNumberSystem.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\n\n/**\n * Utility class for alpha-numeric system operations.\n * <p>\n * Provides methods to handle alphabet-based numbering and conversions.\n */\npublic final class AlphaNumberSystem {\n\n\tprivate static final int ALPHABET_SIZE = 26;\n\n\tprivate AlphaNumberSystem() {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\"Utility class \" + getClass().getSimpleName() + \" cannot be instantiated\");\n\t}\n\n\t/**\n\t * Generates an immutable list of all uppercase alphabet characters.\n\t * <p>\n\t * @return an unmodifiable list of characters from A to Z\n\t */\n\tpublic static List<Character> generateAlphabetList() {\n\t\tList<Character> alphabetList = new ArrayList<>(ALPHABET_SIZE);\n\t\tfor (char letter = 'A'; letter <= 'Z'; letter++) {\n\t\t\talphabetList.add(letter);\n\t\t}\n\t\treturn Collections.unmodifiableList(alphabetList);\n\t}\n\n\t/**\n\t * Converts a given number to a string representation based on the provided radix.\n\t * <p>\n\t * The conversion maps values to the uppercase alphabet (A-Z).\n\t *\n\t * @param numberToConvert the non-negative integer value to convert\n\t * @param base the radix to be used for conversion (1-26)\n\t * @return a string representation of the number\n\t * @throws IllegalArgumentException if numberToConvert is negative or base is out of range\n\t */\n\tpublic static String convertToString(final int numberToConvert, final int base) {\n\t\tif (numberToConvert < 0) {\n\t\t\tthrow new IllegalArgumentException(\"Number to convert must be non-negative\");\n\t\t}\n\t\tif (base <= 0 || base > ALPHABET_SIZE) {\n\t\t\tthrow new IllegalArgumentException(\"Base must be between 1 and \" + ALPHABET_SIZE);\n\t\t}\n\n\t\t// Use a safe buffer size for the conversion\n\t\t// For base 1, the length is the number itself; for others it's log based.\n\t\tint bufferLength = (base == 1) ? Math.max(1, numberToConvert) : (int) (Math.log(Math.max(1, numberToConvert)) / Math.log(base)) + 1;\n\t\tfinal char[] buffer = new char[bufferLength];\n\t\tint charPosition = buffer.length - 1;\n\n\t\tint number = numberToConvert;\n\t\tif (number == 0) {\n\t\t\tbuffer[charPosition--] = 'A';\n\t\t} else if (base == 1) {\n\t\t\tfor (int i = 0; i < numberToConvert; i++) {\n\t\t\t\tbuffer[charPosition--] = 'A';\n\t\t\t}\n\t\t} else {\n\t\t\twhile (number > 0) {\n\t\t\t\tbuffer[charPosition--] = (char) ('A' + (number % base));\n\t\t\t\tnumber /= base;\n\t\t\t}\n\t\t}\n\n\t\treturn new String(buffer, charPosition + 1, buffer.length - charPosition - 1);\n\t}\n\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/util/LanguageCode.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\n/**\n * Supported language and country codes for data localization.\n * <p>\n * This enumeration defines the available locales for which the producers\n * can generate localized data like names, addresses, or company details.\n *\n * @author Olga Maciaszek-Sharma\n * @since 21.03.15\n */\npublic enum LanguageCode {\n\tPL,\n\tEN,\n\tES,\n\tFR,\n\tKA,\n\tIT,\n\tDE,\n\tSV,\n\tZH,\n\tBR,\n\tSK,\n\tTR\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/util/StringUtils.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\nimport java.text.Normalizer;\nimport java.util.List;\nimport java.util.Locale;\n\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utility class providing string manipulation helpers used throughout jFairy.\n *\n * <p>Methods are intentionally minimal: only functionality actually required by\n * the library is implemented. The API deliberately mirrors the subset of\n * {@code org.apache.commons.lang3.StringUtils} that was in use, so migration\n * of call-sites is mechanical.\n *\n * <p>Null-handling contract: every method that accepts a {@link String}\n * parameter documents its null-behavior explicitly. Methods annotated\n * {@code @Nullable} on the parameter accept {@code null}; all others require\n * non-null input and will throw {@link NullPointerException} if passed\n * {@code null}.\n *\n * @author Markus Spann\n * @since 2026/03/14\n */\npublic final class StringUtils {\n\n\t/** Prevent instantiation of this utility class. */\n\tprivate StringUtils() {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\"Utility class \" + getClass().getSimpleName() + \" cannot be instantiated\");\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Blank / empty checks\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Returns {@code true} when the string is neither {@code null}, nor empty,\n\t * nor contains only whitespace characters.\n\t *\n\t * @param s the string to check; may be {@code null}\n\t * @return {@code true} if {@code s} has at least one non-whitespace character\n\t */\n\tpublic static boolean isNotBlank(@Nullable String s) {\n\t\treturn s != null && !s.isBlank();\n\t}\n\n\t/**\n\t * Returns {@code true} when the string is neither {@code null} nor empty\n\t * (length zero). A string containing only whitespace is considered\n\t * <em>not empty</em>.\n\t *\n\t * @param s the string to check; may be {@code null}\n\t * @return {@code true} if {@code s} is non-null and has length &gt; 0\n\t */\n\tpublic static boolean isNotEmpty(@Nullable String s) {\n\t\treturn s != null && !s.isEmpty();\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Case conversion\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Converts all characters in {@code s} to lower case using the rules of the\n\t * default locale.\n\t *\n\t * @param s the string to convert; must not be {@code null}\n\t * @return lower-case version of {@code s}\n\t */\n\tpublic static String lowerCase(String s) {\n\t\treturn s.toLowerCase(Locale.ROOT);\n\t}\n\n\t/**\n\t * Capitalizes the first character of {@code s} (converts it to upper case)\n\t * and leaves the rest unchanged.\n\t *\n\t * @param s the string to capitalize; must not be {@code null}\n\t * @return the string with its first character in upper case, or {@code s}\n\t *         unchanged if it is empty\n\t */\n\tpublic static String capitalize(String s) {\n\t\tif (s.isEmpty()) {\n\t\t\treturn s;\n\t\t}\n\t\treturn Character.toUpperCase(s.charAt(0)) + s.substring(1);\n\t}\n\n\t/**\n\t * Un-capitalizes the first character of {@code s} (converts it to lower\n\t * case) and leaves the rest unchanged.\n\t *\n\t * @param s the string to un-capitalize; must not be {@code null}\n\t * @return the string with its first character in lower case, or {@code s}\n\t *         unchanged if it is empty\n\t */\n\tpublic static String uncapitalize(String s) {\n\t\tif (s.isEmpty()) {\n\t\t\treturn s;\n\t\t}\n\t\treturn Character.toLowerCase(s.charAt(0)) + s.substring(1);\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Padding\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Left-pads {@code s} with the character {@code padChar} until its length\n\t * reaches {@code size}. If {@code s} is already at least {@code size}\n\t * characters long, it is returned unchanged.\n\t *\n\t * @param s       the string to pad; must not be {@code null}\n\t * @param size    the desired minimum length\n\t * @param padChar the padding character\n\t * @return the padded string\n\t */\n\tpublic static String leftPad(String s, int size, char padChar) {\n\t\tint pads = size - s.length();\n\t\tif (pads <= 0) {\n\t\t\treturn s;\n\t\t}\n\t\treturn String.valueOf(padChar).repeat(pads) + s;\n\t}\n\n\t/**\n\t * Left-pads {@code s} with the first character of {@code padStr} until its\n\t * length reaches {@code size}. If {@code s} is already at least {@code size}\n\t * characters long, it is returned unchanged.\n\t *\n\t * @param s      the string to pad; must not be {@code null}\n\t * @param size   the desired minimum length\n\t * @param padStr the padding string (only the first character is used);\n\t *               must not be {@code null} or empty\n\t * @return the padded string\n\t */\n\tpublic static String leftPad(String s, int size, String padStr) {\n\t\treturn leftPad(s, size, padStr.charAt(0));\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Trimming / stripping\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Removes leading and trailing occurrences of any character in\n\t * {@code stripChars} from {@code s}.\n\t *\n\t * <p>Example: {@code strip(\"...hello...\", \".\")} returns {@code \"hello\"}.\n\t *\n\t * @param s          the string to strip; must not be {@code null}\n\t * @param stripChars the characters to strip; must not be {@code null}\n\t * @return the stripped string\n\t */\n\tpublic static String strip(String s, String stripChars) {\n\t\tint start = 0;\n\t\tint end = s.length();\n\t\twhile (start < end && stripChars.indexOf(s.charAt(start)) >= 0) {\n\t\t\tstart++;\n\t\t}\n\t\twhile (end > start && stripChars.indexOf(s.charAt(end - 1)) >= 0) {\n\t\t\tend--;\n\t\t}\n\t\treturn s.substring(start, end);\n\t}\n\n\t/**\n\t * Removes all whitespace characters from {@code s}.\n\t *\n\t * <p>Whitespace is defined by {@link Character#isWhitespace(int)}.\n\t *\n\t * @param s the string; must not be {@code null}\n\t * @return the string with all whitespace removed\n\t */\n\tpublic static String deleteWhitespace(String s) {\n\t\tint len = s.length();\n\t\tStringBuilder sb = new StringBuilder(len);\n\t\tfor (int i = 0; i < len; i++) {\n\t\t\tchar c = s.charAt(i);\n\t\t\tif (!Character.isWhitespace(c)) {\n\t\t\t\tsb.append(c);\n\t\t\t}\n\t\t}\n\t\treturn sb.length() == len ? s : sb.toString();\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Splitting / joining\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Splits {@code s} on the given delimiter character and returns the parts\n\t * as an array. Unlike {@link String#split(String)} this method never\n\t * discards trailing empty strings (equivalent to passing {@code -1} as the\n\t * limit to {@link String#split(String, int)}).\n\t *\n\t * <p>Example: {@code split(\"a b c\", ' ')} returns {@code [\"a\", \"b\", \"c\"]}.\n\t *\n\t * @param s         the string to split; must not be {@code null}\n\t * @param separator the delimiter character\n\t * @return array of parts; never {@code null}, never empty\n\t */\n\tpublic static String[] split(String s, char separator) {\n\t\treturn s.split(String.valueOf(separator), -1);\n\t}\n\n\t/**\n\t * Joins the elements of {@code parts} with a single space character between\n\t * each element.\n\t *\n\t * <p>Example: {@code joinWithSpace(List.of(\"hello\", \"world\"))} returns\n\t * {@code \"hello world\"}.\n\t *\n\t * @param parts the list of strings to join; must not be {@code null}\n\t * @return the joined string; an empty string if {@code parts} is empty\n\t */\n\tpublic static String joinWithSpace(List<String> parts) {\n\t\treturn String.join(\" \", parts);\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Substring operations\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Returns the left-most {@code len} characters of {@code s}, or {@code s}\n\t * itself if its length is less than or equal to {@code len}.\n\t *\n\t * @param s   the string; must not be {@code null}\n\t * @param len the maximum number of characters to return; must be &gt;= 0\n\t * @return the left-most {@code len} characters\n\t */\n\tpublic static String left(String s, int len) {\n\t\tif (len >= s.length()) {\n\t\t\treturn s;\n\t\t}\n\t\treturn s.substring(0, len);\n\t}\n\n\t/**\n\t * Removes the given {@code suffix} from the end of {@code s}, if present.\n\t * If {@code s} does not end with {@code suffix}, it is returned unchanged.\n\t *\n\t * @param s      the string; must not be {@code null}\n\t * @param suffix the suffix to remove; must not be {@code null}\n\t * @return the string without the trailing suffix\n\t */\n\tpublic static String removeEnd(String s, String suffix) {\n\t\tif (s.endsWith(suffix)) {\n\t\t\treturn s.substring(0, s.length() - suffix.length());\n\t\t}\n\t\treturn s;\n\t}\n\n\t/**\n\t * Returns {@code true} if {@code s} ends with {@code suffix}.\n\t * Equivalent to {@link String#endsWith} but provided for API symmetry with\n\t * the other methods in this class.\n\t *\n\t * @param s      the string; must not be {@code null}\n\t * @param suffix the suffix; must not be {@code null}\n\t * @return {@code true} if {@code s} ends with {@code suffix}\n\t */\n\tpublic static boolean endsWith(String s, String suffix) {\n\t\treturn s.endsWith(suffix);\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Search / replace\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Replaces all occurrences of {@code searchString} with {@code replacement}\n\t * in {@code s}.\n\t *\n\t * @param s            the source string; must not be {@code null}\n\t * @param searchString the literal string to search for; must not be\n\t *                     {@code null}\n\t * @param replacement  the replacement string; must not be {@code null}\n\t * @return the modified string, or {@code s} if no occurrences were found\n\t */\n\tpublic static String replace(String s, String searchString, String replacement) {\n\t\treturn s.replace(searchString, replacement);\n\t}\n\n\t/**\n\t * Replaces all characters in {@code s} that appear in {@code searchChars}\n\t * with the corresponding character at the same index in\n\t * {@code replaceChars}.\n\t *\n\t * <p>Characters in {@code searchChars} that have no corresponding entry in\n\t * {@code replaceChars} are deleted from the result.\n\t *\n\t * <p>Example: {@code replaceChars(\"hello.world, \", \"., \", \"---\")} returns\n\t * {@code \"hello-world-\"}.\n\t *\n\t * @param s            the string; must not be {@code null}\n\t * @param searchChars  the characters to search for; must not be {@code null}\n\t * @param replaceChars the replacement characters; may be shorter than\n\t *                     {@code searchChars}\n\t * @return the modified string\n\t */\n\tpublic static String replaceChars(String s, String searchChars, String replaceChars) {\n\t\tStringBuilder sb = new StringBuilder(s.length());\n\t\tfor (int i = 0; i < s.length(); i++) {\n\t\t\tchar c = s.charAt(i);\n\t\t\tint idx = searchChars.indexOf(c);\n\t\t\tif (idx < 0) {\n\t\t\t\t// character not in search set – keep as-is\n\t\t\t\tsb.append(c);\n\t\t\t} else if (idx < replaceChars.length()) {\n\t\t\t\t// character has a replacement\n\t\t\t\tsb.append(replaceChars.charAt(idx));\n\t\t\t}\n\t\t\t// else: character is in search set but beyond replaceChars length – delete it\n\t\t}\n\t\treturn sb.toString();\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Unicode / accent stripping\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Converts accented and special characters to their ASCII equivalents,\n\t * e.g. for use in email addresses, usernames or domain names.\n\t *\n\t * <p>Handles characters that survive Unicode NFD normalization:\n\t * {@code ß} becomes {@code ss}, {@code ł/Ł} becomes {@code l/L}.\n\t *\n\t * @param s the string to process; must not be {@code null}\n\t * @return the latinized string\n\t */\n\tpublic static String latinize(String s) {\n\t\tif (s.isEmpty()) {\n\t\t\treturn s;\n\t\t}\n\n\t\t// handle special characters that survive NFD normalization\n\t\tString result = s.replace(\"ł\", \"l\")\n\t\t\t             .replace(\"Ł\", \"L\")\n\t\t\t             .replace(\"ß\", \"ss\");\n\n\t\t// decompose and filter remaining diacritics\n\t\tString normalized = Normalizer.normalize(result, Normalizer.Form.NFD);\n\n\t\tStringBuilder sb = new StringBuilder(normalized.length());\n\t\tfor (int i = 0; i < normalized.length(); i++) {\n\t\t\tchar c = normalized.charAt(i);\n\t\t\t// Character.getType(c) == Character.NON_SPACING_MARK corresponds to \\p{Mn}\n\t\t\tif (Character.getType(c) != Character.NON_SPACING_MARK) {\n\t\t\t\tsb.append(c);\n\t\t\t}\n\t\t}\n\n\t\treturn sb.toString();\n\t}\n\n\t// -------------------------------------------------------------------------\n\t// Non-ASCII escaping\n\t// -------------------------------------------------------------------------\n\n\t/**\n\t * Escapes all non-ASCII characters in {@code input} as Unicode escape sequences.\n\t * <p>\n\t * ASCII characters (codepoints 0x00–0x7F) are passed through unchanged.\n\t * Returns {@code null} when {@code input} is {@code null}.\n\t *\n\t * @param input the string to escape; may be {@code null}\n\t * @return the escaped string, or {@code null} if {@code input} is {@code null}\n\t */\n\tpublic static @Nullable String escapeNonAscii(@Nullable String input) {\n\t\tif (input == null) {\n\t\t\treturn null;\n\t\t}\n\t\tStringBuilder sb = new StringBuilder(input.length());\n\t\tfor (int i = 0; i < input.length(); i++) {\n\t\t\tchar c = input.charAt(i);\n\t\t\tif (c > 0x7f) {\n\t\t\t\tsb.append(String.format(\"\\\\u%04x\", (int) c));\n\t\t\t} else {\n\t\t\t\tsb.append(c);\n\t\t\t}\n\t\t}\n\t\treturn sb.toString();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/util/ValidateUtils.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\nimport org.jspecify.annotations.Nullable;\n\n/**\n * Utility class providing argument-validation helpers.\n *\n * <p>Methods throw {@link IllegalArgumentException} on failure.\n *\n * @author Markus Spann\n * @since 2026/03/14\n */\npublic final class ValidateUtils {\n\n\t/** Prevent instantiation of this utility class. */\n\tprivate ValidateUtils() {\n\t\tthrow new UnsupportedOperationException(\n\t\t\t\"Utility class \" + getClass().getSimpleName() + \" cannot be instantiated\");\n\t}\n\n\t/**\n\t * Validates that {@code value} is not {@code null}.\n\t *\n\t * @param <T>     the type of the object being validated\n\t * @param value   the value to check\n\t * @param message the detail message used in the exception; may contain\n\t *                {@link String#format} placeholders\n\t * @param args    optional arguments for {@code message}\n\t * @return {@code value}, guaranteed non-null, for convenient inline use\n\t * @throws IllegalArgumentException if {@code value} is {@code null}\n\t */\n\t@SuppressWarnings(\"AnnotateFormatMethod\")\n\tpublic static <T> T notNull(@Nullable T value, String message, Object... args) {\n\t\tif (value == null) {\n\t\t\tthrow new IllegalArgumentException(\n\t\t\t\targs.length == 0 ? message : String.format(message, args));\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Validates that {@code expression} is {@code true}.\n\t *\n\t * @param expression the boolean expression to check\n\t * @param message    the detail message used in the exception; may contain\n\t *                   {@link String#format} placeholders\n\t * @param args       optional arguments for {@code message}\n\t * @throws IllegalArgumentException if {@code expression} is {@code false}\n\t */\n\t@SuppressWarnings(\"AnnotateFormatMethod\")\n\tpublic static void isTrue(boolean expression, String message, Object... args) {\n\t\tif (!expression) {\n\t\t\tthrow new IllegalArgumentException(\n\t\t\t\targs.length == 0 ? message : String.format(message, args));\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/util/ZhFairyUtil.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\nimport java.util.List;\n\nimport com.devskiller.jfairy.producer.BaseProducer;\n\n/**\n * com.devskiller.jfairy.producer.util.ZhFairyUtil\n *\n * @author lhfcws\n * @since 2017/3/10\n */\npublic final class ZhFairyUtil {\n\n\tprivate ZhFairyUtil() {}\n\n\t/**\n\t * Codes of China provinces\n\t */\n\tpublic static final List<String> PROV_LIST = List.of(\n\t\t\"11\",    // Beijing\n\t\t\"12\",    // Tianjin\n\t\t\"13\",    // Hebei\n\t\t\"14\",    // Shanxi\n\t\t\"15\",    // Neimenggu\n\t\t\"21\",    // Liaoning\n\t\t\"22\",    // Jilin\n\t\t\"23\",    // Heilongjiang\n\t\t\"31\",    // Shanghai\n\t\t\"32\",    // Jiangsu\n\t\t\"33\",    // Zhejiang\n\t\t\"34\",    // Anhui\n\t\t\"35\",    // Fujian\n\t\t\"36\",    // Jiangxi\n\t\t\"41\",    // Henan\n\t\t\"42\",    // Hubei\n\t\t\"43\",    // Hunan\n\t\t\"44\",    // Guangdong\n\t\t\"45\",    // Guangxi\n\t\t\"46\",    // Hainan\n\t\t\"50\",    // Chongqing\n\t\t\"51\",    // Sichuan\n\t\t\"52\",    // Guizhou\n\t\t\"53\",    // Yunnan\n\t\t\"54\",    // Xizang\n\t\t\"61\",    // Shaanxi\n\t\t\"62\",    // Gansu\n\t\t\"63\",    // Qinghai\n\t\t\"64\",    // Ningxia\n\t\t\"65\",    // Xinjiang\n\t\t\"71\",    // Taiwan\n\t\t\"81\",    // Hong Kong\n\t\t\"82\"     // Macau\n\t);\n\n\t/**\n\t * Max code of city\n\t */\n\tpublic static final int CITY_MAX = 30;\n\t/**\n\t * Max code of city district\n\t */\n\tpublic static final int DISTRICT_MAX = 12;\n\n\t/**\n\t * Get random number from 1 to max in 0 leading string format.\n\t * @param baseProducer BaseProducer\n\t * @param max         upper bound of number\n\t * @param paddingSize padding size\n\t * @return A number smaller than #max with #paddingSize digits in string format\n\t */\n\tpublic static String getRandomNumStr(BaseProducer baseProducer, int max, int paddingSize) {\n\t\tint rndNum = baseProducer.randomBetween(1, max);\n\t\tStringBuilder numStr = new StringBuilder(\"\" + rndNum);\n\t\twhile (numStr.length() < paddingSize) {\n\t\t\tnumStr.insert(0, \"0\");\n\t\t}\n\t\treturn numStr.toString();\n\t}\n}\n"
  },
  {
    "path": "src/main/java/com/devskiller/jfairy/producer/util/package-info.java",
    "content": "/**\n * Internal utility classes for the jFairy fake data producer.\n *\n * <p>This package contains stateless helper utilities used across the library:\n * <ul>\n *   <li>{@link com.devskiller.jfairy.producer.util.StringUtils} – string manipulation\n *       (padding, trimming, case conversion, accent stripping, joining, splitting, …)</li>\n *   <li>{@link com.devskiller.jfairy.producer.util.ValidateUtils} – argument validation\n *       ({@code notNull}, {@code isTrue})</li>\n *   <li>{@link com.devskiller.jfairy.producer.util.AlphaNumberSystem} – base-26 encoding\n *       used for identity-card number generation</li>\n * </ul>\n *\n * <p>All classes in this package are <strong>not part of the public API</strong> and may\n * change without notice between releases.\n */\n@NullMarked\npackage com.devskiller.jfairy.producer.util;\n\nimport org.jspecify.annotations.NullMarked;\n"
  },
  {
    "path": "src/main/resources/jfairy.yml",
    "content": "creditCardPrefixes: {\n  Visa: [4]\n}\nlastNames: {\n  male: [Abbott, Acevedo, Acosta, Adams, Adkins, Aguilar, Aguirre, Albert, Alexander, Alford, Allen, Allison, Alston, Alvarado, Alvarez, Anderson, Andrews, Anthony, Armstrong, Arnold, Ashley, Atkins, Atkinson, Austin, Avery, Avila, Ayala, Ayers, Bailey, Baird, Baker, Baldwin, Ball, Ballard, Banks, Barber, Barker, Barlow, Barnes, Barnett, Barr, Barrera, Barrett, Barron, Barry, Bartlett, Barton, Bass, Bates, Battle, Bauer, Baxter, Beach, Bean, Beard, Beasley, Beck, Becker, Bell, Bender, Benjamin, Bennett, Benson, Bentley, Benton, Berg, Berger, Bernard, Berry, Best, Bird, Bishop, Black, Blackburn, Blackwell, Blair, Blake, Blanchard, Blankenship, Blevins, Bolton, Bond, Bonner, Booker, Boone, Booth, Bowen, Bowers, Bowman, Boyd, Boyer, Boyle, Bradford, Bradley, Bradshaw, Brady, Branch, Bray, Brennan, Brewer, Bridges, Briggs, Bright, Britt, Brock, Brooks, Brown, Browning, Bruce, Bryan, Bryant, Buchanan, Buck, Buckley, Buckner, Bullock, Burch, Burgess, Burke, Burks, Burnett, Burns, Burris, Burt, Burton, Bush, Butler, Byers, Byrd, Cabrera, Cain, Calderon, Caldwell, Calhoun, Callahan, Camacho, Cameron, Campbell, Campos, Cannon, Cantrell, Cantu, Cardenas, Carey, Carlson, Carney, Carpenter, Carr, Carrillo, Carroll, Carson, Carter, Carver, Case, Casey, Cash, Castaneda, Castillo, Castro, Cervantes, Chambers, Chan, Chandler, Chaney, Chang, Chapman, Charles, Chase, Chavez, Chen, Cherry, Christensen, Christian, Church, Clark, Clarke, Clay, Clayton, Clements, Clemons, Cleveland, Cline, Cobb, Cochran, Coffey, Cohen, Cole, Coleman, Collier, Collins, Colon, Combs, Compton, Conley, Conner, Conrad, Contreras, Conway, Cook, Cooke, Cooley, Cooper, Copeland, Cortez, Cote, Cotton, Cox, Craft, Craig, Crane, Crawford, Crosby, Cross, Cruz, Cummings, Cunningham, Curry, Curtis, Dale, Dalton, Daniel, Daniels, Daugherty, Davenport, David, Davidson, Davis, Dawson, Day, Dean, Decker, Dejesus, Delacruz, Delaney, Deleon, Delgado, Dennis, Diaz, Dickerson, Dickson, Dillard, Dillon, Dixon, Dodson, Dominguez, Donaldson, Donovan, Dorsey, Dotson, Douglas, Downs, Doyle, Drake, Dudley, Duffy, Duke, Duncan, Dunlap, Dunn, Duran, Durham, Dyer, Eaton, Edwards, Elliott, Ellis, Ellison, Emerson, England, English, Erickson, Espinoza, Estes, Estrada, Evans, Everett, Ewing, Farley, Farmer, Farrell, Faulkner, Ferguson, Fernandez, Ferrell, Fields, Figueroa, Finch, Finley, Fischer, Fisher, Fitzgerald, Fitzpatrick, Fleming, Fletcher, Flores, Flowers, Floyd, Flynn, Foley, Forbes, Ford, Foreman, Foster, Fowler, Fox, Francis, Franco, Frank, Franklin, Franks, Frazier, Frederick, Freeman, French, Frost, Fry, Frye, Fuentes, Fuller, Fulton, Gaines, Gallagher, Gallegos, Galloway, Gamble, Garcia, Gardner, Garner, Garrett, Garrison, Garza, Gates, Gay, Gentry, George, Gibbs, Gibson, Gilbert, Giles, Gill, Gillespie, Gilliam, Gilmore, Glass, Glenn, Glover, Goff, Golden, Gomez, Gonzales, Gonzalez, Good, Goodman, Goodwin, Gordon, Gould, Graham, Grant, Graves, Gray, Green, Greene, Greer, Gregory, Griffin, Griffith, Grimes, Gross, Guerra, Guerrero, Guthrie, Gutierrez, Guy, Guzman, Hahn, Hale, Haley, Hall, Hamilton, Hammond, Hampton, Hancock, Haney, Hansen, Hanson, Hardin, Harding, Hardy, Harmon, Harper, Harrell, Harrington, Harris, Harrison, Hart, Hartman, Harvey, Hatfield, Hawkins, Hayden, Hayes, Haynes, Hays, Head, Heath, Hebert, Henderson, Hendricks, Hendrix, Henry, Hensley, Henson, Herman, Hernandez, Herrera, Herring, Hess, Hester, Hewitt, Hickman, Hicks, Higgins, Hill, Hines, Hinton, Hobbs, Hodge, Hodges, Hoffman, Hogan, Holcomb, Holden, Holder, Holland, Holloway, Holman, Holmes, Holt, Hood, Hooper, Hoover, Hopkins, Hopper, Horn, Horne, Horton, House, Houston, Howard, Howe, Howell, Hubbard, Huber, Hudson, Huff, Huffman, Hughes, Hull, Humphrey, Hunt, Hunter, Hurley, Hurst, Hutchinson, Hyde, Ingram, Irwin, Jackson, Jacobs, Jacobson, James, Jarvis, Jefferson, Jenkins, Jennings, Jensen, Jimenez, Johns, Johnson, Johnston, Jones, Jordan, Joseph, Joyce, Joyner, Juarez, Justice, Kane, Kaufman, Keith, Keller, Kelley, Kelly, Kemp, Kennedy, Kent, Kerr, Key, Kidd, Kim, King, Kinney, Kirby, Kirk, Kirkland, Klein, Kline, Knapp, Knight, Knowles, Knox, Koch, Kramer, Lamb, Lambert, Lancaster, Landry, Lane, Lang, Langley, Lara, Larsen, Larson, Lawrence, Lawson, Le, Leach, Leblanc, Lee, Leon, Leonard, Lester, Levine, Levy, Lewis, Lindsay, Lindsey, Little, Livingston, Lloyd, Logan, Long, Lopez, Lott, Love, Lowe, Lowery, Lucas, Luna, Lynch, Lynn, Lyons, Macdonald, Macias, Mack, Madden, Maddox, Maldonado, Malone, Mann, Manning, Marks, Marquez, Marsh, Marshall, Martin, Martinez, Mason, Massey, Mathews, Mathis, Matthews, Maxwell, May, Mayer, Maynard, Mayo, Mays, Mcbride, Mccall, Mccarthy, Mccarty, Mcclain, Mcclure, Mcconnell, Mccormick, Mccoy, Mccray, Mccullough, Mcdaniel, Mcdonald, Mcdowell, Mcfadden, Mcfarland, Mcgee, Mcgowan, Mcguire, Mcintosh, Mcintyre, Mckay, Mckee, Mckenzie, Mckinney, Mcknight, Mclaughlin, Mclean, Mcleod, Mcmahon, Mcmillan, Mcneil, Mcpherson, Meadows, Medina, Mejia, Melendez, Melton, Mendez, Mendoza, Mercado, Mercer, Merrill, Merritt, Meyer, Meyers, Michael, Middleton, Miles, Miller, Mills, Miranda, Mitchell, Molina, Monroe, Montgomery, Montoya, Moody, Moon, Mooney, Moore, Morales, Moran, Moreno, Morgan, Morin, Morris, Morrison, Morrow, Morse, Morton, Moses, Mosley, Moss, Mueller, Mullen, Mullins, Munoz, Murphy, Murray, Myers, Nash, Navarro, Neal, Nelson, Newman, Newton, Nguyen, Nichols, Nicholson, Nielsen, Nieves, Nixon, Noble, Noel, Nolan, Norman, Norris, Norton, Nunez, Obrien, Ochoa, Oconnor, Odom, Odonnell, Oliver, Olsen, Olson, Oneal, Oneil, Oneill, Orr, Ortega, Ortiz, Osborn, Osborne, Owen, Owens, Pace, Pacheco, Padilla, Page, Palmer, Park, Parker, Parks, Parrish, Parsons, Pate, Patel, Patrick, Patterson, Patton, Paul, Payne, Pearson, Peck, Pena, Pennington, Perez, Perkins, Perry, Peters, Petersen, Peterson, Petty, Phelps, Phillips, Pickett, Pierce, Pittman, Pitts, Pollard, Poole, Pope, Porter, Potter, Potts, Powell, Powers, Pratt, Preston, Price, Prince, Pruitt, Puckett, Pugh, Quinn, Ramirez, Ramos, Ramsey, Randall, Randolph, Rasmussen, Ratliff, Ray, Raymond, Reed, Reese, Reeves, Reid, Reilly, Reyes, Reynolds, Rhodes, Rice, Rich, Richard, Richards, Richardson, Richmond, Riddle, Riggs, Riley, Rios, Rivas, Rivera, Rivers, Roach, Robbins, Roberson, Roberts, Robertson, Robinson, Robles, Rocha, Rodgers, Rodriguez, Rodriquez, Rogers, Rojas, Rollins, Roman, Romero, Rosa, Rosales, Rosario, Rose, Ross, Roth, Rowe, Rowland, Roy, Ruiz, Rush, Russell, Russo, Rutledge, Ryan, Salas, Salazar, Salinas, Sampson, Sanchez, Sanders, Sandoval, Santana, Santiago, Santos, Sargent, Saunders, Savage, Sawyer, Schmidt, Schneider, Schroeder, Schultz, Schwartz, Scott, Sears, Sellers, Serrano, Sexton, Shaffer, Shannon, Sharp, Sharpe, Shaw, Shelton, Shepard, Shepherd, Sheppard, Sherman, Shields, Short, Silva, Simmons, Simon, Simpson, Sims, Singleton, Skinner, Slater, Sloan, Small, Smith, Snider, Snow, Snyder, Solis, Solomon, Sosa, Soto, Sparks, Spears, Spence, Spencer, Stafford, Stanley, Stanton, Stark, Steele, Stein, Stephens, Stephenson, Stevens, Stevenson, Stewart, Stokes, Stone, Stout, Strickland, Strong, Stuart, Suarez, Sullivan, Summers, Sutton, Swanson, Sweeney, Sweet, Sykes, Talley, Tanner, Tate, Taylor, Terrell, Terry, Thomas, Thompson, Thornton, Tillman, Todd, Torres, Townsend, Tran, Travis, Trevino, Trujillo, Tucker, Turner, Tyler, Tyson, Underwood, Valdez, Valencia, Valentine, Valenzuela, Vance, Vang, Vargas, Vasquez, Vaughan, Vaughn, Vazquez, Vega, Velasquez, Velazquez, Velez, Villarreal, Vincent, Vinson, Wade, Wagner, Walker, Wall, Wallace, Waller, Walls, Walsh, Walter, Walters, Walton, Ward, Ware, Warner, Warren, Washington, Waters, Watkins, Watson, Watts, Weaver, Webb, Weber, Webster, Weeks, Weiss, Welch, Wells, West, Wheeler, Whitaker, White, Whitehead, Whitfield, Whitley, Whitney, Wiggins, Wilcox, Wilder, Wiley, Wilkerson, Wilkins, Wilkinson, William, Williams, Williamson, Willis, Wilson, Winters, Wise, Witt, Wolf, Wolfe, Wong, Wood, Woodard, Woods, Woodward, Wooten, Workman, Wright, Wyatt, Wynn, Yang, Yates, York, Young, Zamora, Zimmerman],\n  female: [Abbott, Acevedo, Acosta, Adams, Adkins, Aguilar, Aguirre, Albert, Alexander, Alford, Allen, Allison, Alston, Alvarado, Alvarez, Anderson, Andrews, Anthony, Armstrong, Arnold, Ashley, Atkins, Atkinson, Austin, Avery, Avila, Ayala, Ayers, Bailey, Baird, Baker, Baldwin, Ball, Ballard, Banks, Barber, Barker, Barlow, Barnes, Barnett, Barr, Barrera, Barrett, Barron, Barry, Bartlett, Barton, Bass, Bates, Battle, Bauer, Baxter, Beach, Bean, Beard, Beasley, Beck, Becker, Bell, Bender, Benjamin, Bennett, Benson, Bentley, Benton, Berg, Berger, Bernard, Berry, Best, Bird, Bishop, Black, Blackburn, Blackwell, Blair, Blake, Blanchard, Blankenship, Blevins, Bolton, Bond, Bonner, Booker, Boone, Booth, Bowen, Bowers, Bowman, Boyd, Boyer, Boyle, Bradford, Bradley, Bradshaw, Brady, Branch, Bray, Brennan, Brewer, Bridges, Briggs, Bright, Britt, Brock, Brooks, Brown, Browning, Bruce, Bryan, Bryant, Buchanan, Buck, Buckley, Buckner, Bullock, Burch, Burgess, Burke, Burks, Burnett, Burns, Burris, Burt, Burton, Bush, Butler, Byers, Byrd, Cabrera, Cain, Calderon, Caldwell, Calhoun, Callahan, Camacho, Cameron, Campbell, Campos, Cannon, Cantrell, Cantu, Cardenas, Carey, Carlson, Carney, Carpenter, Carr, Carrillo, Carroll, Carson, Carter, Carver, Case, Casey, Cash, Castaneda, Castillo, Castro, Cervantes, Chambers, Chan, Chandler, Chaney, Chang, Chapman, Charles, Chase, Chavez, Chen, Cherry, Christensen, Christian, Church, Clark, Clarke, Clay, Clayton, Clements, Clemons, Cleveland, Cline, Cobb, Cochran, Coffey, Cohen, Cole, Coleman, Collier, Collins, Colon, Combs, Compton, Conley, Conner, Conrad, Contreras, Conway, Cook, Cooke, Cooley, Cooper, Copeland, Cortez, Cote, Cotton, Cox, Craft, Craig, Crane, Crawford, Crosby, Cross, Cruz, Cummings, Cunningham, Curry, Curtis, Dale, Dalton, Daniel, Daniels, Daugherty, Davenport, David, Davidson, Davis, Dawson, Day, Dean, Decker, Dejesus, Delacruz, Delaney, Deleon, Delgado, Dennis, Diaz, Dickerson, Dickson, Dillard, Dillon, Dixon, Dodson, Dominguez, Donaldson, Donovan, Dorsey, Dotson, Douglas, Downs, Doyle, Drake, Dudley, Duffy, Duke, Duncan, Dunlap, Dunn, Duran, Durham, Dyer, Eaton, Edwards, Elliott, Ellis, Ellison, Emerson, England, English, Erickson, Espinoza, Estes, Estrada, Evans, Everett, Ewing, Farley, Farmer, Farrell, Faulkner, Ferguson, Fernandez, Ferrell, Fields, Figueroa, Finch, Finley, Fischer, Fisher, Fitzgerald, Fitzpatrick, Fleming, Fletcher, Flores, Flowers, Floyd, Flynn, Foley, Forbes, Ford, Foreman, Foster, Fowler, Fox, Francis, Franco, Frank, Franklin, Franks, Frazier, Frederick, Freeman, French, Frost, Fry, Frye, Fuentes, Fuller, Fulton, Gaines, Gallagher, Gallegos, Galloway, Gamble, Garcia, Gardner, Garner, Garrett, Garrison, Garza, Gates, Gay, Gentry, George, Gibbs, Gibson, Gilbert, Giles, Gill, Gillespie, Gilliam, Gilmore, Glass, Glenn, Glover, Goff, Golden, Gomez, Gonzales, Gonzalez, Good, Goodman, Goodwin, Gordon, Gould, Graham, Grant, Graves, Gray, Green, Greene, Greer, Gregory, Griffin, Griffith, Grimes, Gross, Guerra, Guerrero, Guthrie, Gutierrez, Guy, Guzman, Hahn, Hale, Haley, Hall, Hamilton, Hammond, Hampton, Hancock, Haney, Hansen, Hanson, Hardin, Harding, Hardy, Harmon, Harper, Harrell, Harrington, Harris, Harrison, Hart, Hartman, Harvey, Hatfield, Hawkins, Hayden, Hayes, Haynes, Hays, Head, Heath, Hebert, Henderson, Hendricks, Hendrix, Henry, Hensley, Henson, Herman, Hernandez, Herrera, Herring, Hess, Hester, Hewitt, Hickman, Hicks, Higgins, Hill, Hines, Hinton, Hobbs, Hodge, Hodges, Hoffman, Hogan, Holcomb, Holden, Holder, Holland, Holloway, Holman, Holmes, Holt, Hood, Hooper, Hoover, Hopkins, Hopper, Horn, Horne, Horton, House, Houston, Howard, Howe, Howell, Hubbard, Huber, Hudson, Huff, Huffman, Hughes, Hull, Humphrey, Hunt, Hunter, Hurley, Hurst, Hutchinson, Hyde, Ingram, Irwin, Jackson, Jacobs, Jacobson, James, Jarvis, Jefferson, Jenkins, Jennings, Jensen, Jimenez, Johns, Johnson, Johnston, Jones, Jordan, Joseph, Joyce, Joyner, Juarez, Justice, Kane, Kaufman, Keith, Keller, Kelley, Kelly, Kemp, Kennedy, Kent, Kerr, Key, Kidd, Kim, King, Kinney, Kirby, Kirk, Kirkland, Klein, Kline, Knapp, Knight, Knowles, Knox, Koch, Kramer, Lamb, Lambert, Lancaster, Landry, Lane, Lang, Langley, Lara, Larsen, Larson, Lawrence, Lawson, Le, Leach, Leblanc, Lee, Leon, Leonard, Lester, Levine, Levy, Lewis, Lindsay, Lindsey, Little, Livingston, Lloyd, Logan, Long, Lopez, Lott, Love, Lowe, Lowery, Lucas, Luna, Lynch, Lynn, Lyons, Macdonald, Macias, Mack, Madden, Maddox, Maldonado, Malone, Mann, Manning, Marks, Marquez, Marsh, Marshall, Martin, Martinez, Mason, Massey, Mathews, Mathis, Matthews, Maxwell, May, Mayer, Maynard, Mayo, Mays, Mcbride, Mccall, Mccarthy, Mccarty, Mcclain, Mcclure, Mcconnell, Mccormick, Mccoy, Mccray, Mccullough, Mcdaniel, Mcdonald, Mcdowell, Mcfadden, Mcfarland, Mcgee, Mcgowan, Mcguire, Mcintosh, Mcintyre, Mckay, Mckee, Mckenzie, Mckinney, Mcknight, Mclaughlin, Mclean, Mcleod, Mcmahon, Mcmillan, Mcneil, Mcpherson, Meadows, Medina, Mejia, Melendez, Melton, Mendez, Mendoza, Mercado, Mercer, Merrill, Merritt, Meyer, Meyers, Michael, Middleton, Miles, Miller, Mills, Miranda, Mitchell, Molina, Monroe, Montgomery, Montoya, Moody, Moon, Mooney, Moore, Morales, Moran, Moreno, Morgan, Morin, Morris, Morrison, Morrow, Morse, Morton, Moses, Mosley, Moss, Mueller, Mullen, Mullins, Munoz, Murphy, Murray, Myers, Nash, Navarro, Neal, Nelson, Newman, Newton, Nguyen, Nichols, Nicholson, Nielsen, Nieves, Nixon, Noble, Noel, Nolan, Norman, Norris, Norton, Nunez, Obrien, Ochoa, Oconnor, Odom, Odonnell, Oliver, Olsen, Olson, Oneal, Oneil, Oneill, Orr, Ortega, Ortiz, Osborn, Osborne, Owen, Owens, Pace, Pacheco, Padilla, Page, Palmer, Park, Parker, Parks, Parrish, Parsons, Pate, Patel, Patrick, Patterson, Patton, Paul, Payne, Pearson, Peck, Pena, Pennington, Perez, Perkins, Perry, Peters, Petersen, Peterson, Petty, Phelps, Phillips, Pickett, Pierce, Pittman, Pitts, Pollard, Poole, Pope, Porter, Potter, Potts, Powell, Powers, Pratt, Preston, Price, Prince, Pruitt, Puckett, Pugh, Quinn, Ramirez, Ramos, Ramsey, Randall, Randolph, Rasmussen, Ratliff, Ray, Raymond, Reed, Reese, Reeves, Reid, Reilly, Reyes, Reynolds, Rhodes, Rice, Rich, Richard, Richards, Richardson, Richmond, Riddle, Riggs, Riley, Rios, Rivas, Rivera, Rivers, Roach, Robbins, Roberson, Roberts, Robertson, Robinson, Robles, Rocha, Rodgers, Rodriguez, Rodriquez, Rogers, Rojas, Rollins, Roman, Romero, Rosa, Rosales, Rosario, Rose, Ross, Roth, Rowe, Rowland, Roy, Ruiz, Rush, Russell, Russo, Rutledge, Ryan, Salas, Salazar, Salinas, Sampson, Sanchez, Sanders, Sandoval, Santana, Santiago, Santos, Sargent, Saunders, Savage, Sawyer, Schmidt, Schneider, Schroeder, Schultz, Schwartz, Scott, Sears, Sellers, Serrano, Sexton, Shaffer, Shannon, Sharp, Sharpe, Shaw, Shelton, Shepard, Shepherd, Sheppard, Sherman, Shields, Short, Silva, Simmons, Simon, Simpson, Sims, Singleton, Skinner, Slater, Sloan, Small, Smith, Snider, Snow, Snyder, Solis, Solomon, Sosa, Soto, Sparks, Spears, Spence, Spencer, Stafford, Stanley, Stanton, Stark, Steele, Stein, Stephens, Stephenson, Stevens, Stevenson, Stewart, Stokes, Stone, Stout, Strickland, Strong, Stuart, Suarez, Sullivan, Summers, Sutton, Swanson, Sweeney, Sweet, Sykes, Talley, Tanner, Tate, Taylor, Terrell, Terry, Thomas, Thompson, Thornton, Tillman, Todd, Torres, Townsend, Tran, Travis, Trevino, Trujillo, Tucker, Turner, Tyler, Tyson, Underwood, Valdez, Valencia, Valentine, Valenzuela, Vance, Vang, Vargas, Vasquez, Vaughan, Vaughn, Vazquez, Vega, Velasquez, Velazquez, Velez, Villarreal, Vincent, Vinson, Wade, Wagner, Walker, Wall, Wallace, Waller, Walls, Walsh, Walter, Walters, Walton, Ward, Ware, Warner, Warren, Washington, Waters, Watkins, Watson, Watts, Weaver, Webb, Weber, Webster, Weeks, Weiss, Welch, Wells, West, Wheeler, Whitaker, White, Whitehead, Whitfield, Whitley, Whitney, Wiggins, Wilcox, Wilder, Wiley, Wilkerson, Wilkins, Wilkinson, William, Williams, Williamson, Willis, Wilson, Winters, Wise, Witt, Wolf, Wolfe, Wong, Wood, Woodard, Woods, Woodward, Wooten, Workman, Wright, Wyatt, Wynn, Yang, Yates, York, Young, Zamora, Zimmerman]\n}\njobTitles: [Project Manager, Software Developer, Designer, QA Engineer, DevOps Engineer, Scrum Master, Business Analyst, Data Scientist, Product Owner, System Administrator]\nloremIpsum: Lorem ipsum dolor sit amet, consectetur adipisicing elit. Proin nibh augue, suscipit a, scelerisque sed, lacinia in, mi. Cras vel lorem. Etiam pellentesque aliquet tellus. Phasellus pharetra nulla ac diam. Quisque semper justo at risus. Donec venenatis, turpis vel hendrerit interdum, dui ligula ultricies purus, sed posuere libero dui id orci. Nam congue, pede vitae dapibus aliquet, elit magna vulputate arcu, vel tempus metus leo non est. Etiam sit amet lectus quis est congue mollis. Phasellus congue lacus eget neque. Phasellus ornare, ante vitae consectetuer consequat, purus sapien ultricies dolor, et mollis pede metus eget nisi. Praesent sodales velit quis augue. Cras suscipit, urna at aliquam rhoncus, urna quam viverra nisi, in interdum massa nibh nec erat.\n\nlanguage: 'PL'\n"
  },
  {
    "path": "src/main/resources/jfairy_br.yml",
    "content": "alphabet: abcdefghijklmnopqrstuvwxyz\ndomains: [ com.br, br, app.br, blog, net.br ]\nfirstNames: {\n    male: [ José, João, Antônio, Francisco, Carlos, Paulo, Pedro, Lucas, Luiz, Marcos, Luis, Gabriel, Rafael, Daniel, Marcelo, Bruno, Eduardo, Felipe, Raimundo, Rodrigo, Nelson, Manoel, Geraldo, Roberto, Mario, Joaquim, Jorge, Sebastião, Diego, Guilherme, Fernando, Davi, Rafael, Andre, Anderson, Márcio, Gustavo, Fábio, Júlio, Renato, Alex, Igor, Douglas, Vínicios, Ricardo, Leonardo, Robson, Wilson, Mauro, Jonas, Vicente, Nicolas, Osmar, Artur, Moises, Wagner, Pablo, Willian, Ivan, Celso, Breno, Junior, Sidnei, Jaime, Alisson, Ronaldo, Romário, Neymar, Nilton, Nilson, Murilo, Sandro, Isaias, Raul, Alcides, Gean, Bernado, Arlindo, Rodolfo, Armando, Lucio, Clovis, Itamar, Magno, Vilson, Dirceu, Jonata, Enzo, Afonso, Romulo, Airton, Weliton, Ednaldo, Vilmar, Rivaldo, Juan, Abel, Tite, Savio, Roni ],\n    female: [  Maria, Juraci, Lucimar, Ana, Jaci, Alcione, Ivanir, Nadir, Edir, Leoni, Edi, Valdete, Reni, Eurides, Rosimar, Clair, Antonia, Francisca, Iraci, Irani, Iris, Luzimar, Geneci, Erli, Sirlei, Fernanda, Nelci, Rosinei, Gabriela, Bruna, Taina, Adria, Darli, Derci, Silva, Joseli, Juracy, Delci, Joceli, Evanir, Elis, Adriana, Rafaela, Raimunda, Edenir, Vitoria, Gabriele, Rosemar, Solimar, Ivani, Juliana, Marlei, Marley, Daniele, Gessi, Vanir, Doraci, Aline, Marcia, Irismar, Josefa, Elci, Jessica, Amanda, Renata, Raquel, Nerci, Julia, Elionai, Camila, Luana, Jacy, Eduarda, Denir, Leonor, Luciana, Gerci, Patricia, Mariana, Leticia, Erci, Iva, Jane, Cristiane, Conceicao, Aquila, Elienai, Cleidimar, Guiomar, Michele, Paula, Sirley, Silvani, Rosario, Dagmar, Daniela, Fabiana, Beatriz, Santana, Alessandra, Carla, Edy, Vanessa, Larissa, Claudia, Eroni, Luz, Lori, Joseni, Edione, Laureci, Dalci, Jaqueline ]\n}\nlastNames: {\n    male: [ Agostinho, Aguiar, Albuquerque, Alegria, Alencastro, Almada, Almeida, Alves, Alves, Alvim, Amorim, Andrade, Antunes, Aparício, Apolinário, Aragão, Araújo, Araújo, Arruda, Assis, Assunção, Ávila, Azambuja, Baptista, Barbosa, Barreto, Barros, Barros, Beira-Mar, Belchior, Belém, Bernardes, Bittencourt, Boaventura, Bonfim, Botelho, Brites, Brito, Caetano, Caldeira, Calixto, Camacho, Camilo, Campos, Capelo, Cardoso, Cardoso, Carvalho, Carvalho, Castro, Castro, Cavalcante, Cavalcanti, Chaves, Conceição, Córdoba, Corte Real, Cortês, Costa, Coutinho, Crespo, Cunha, Curado, Custódio, D’Ávila, da Conceição, da Costa, da Cruz, da Cunha, da Luz, da Mata, da Mota, da Paz, da Rocha, da Rosa, Damásio, Dantas, das Neves, Dias, Dias, Dinís, Domingues, Dorneles, dos Reis, Drumond, Duarte, Escobar, Espinosa, Esteves, Evangelista, Farias, Farias, Félix, Fernandes, Fernandes, Ferrari, Ferreira, Figueiredo, Figueiroa, Flores, Fogaça, Fogaça, Freitas, Freitas, Frutuoso, Furtado, Galvão, Garcia, Gaspar, Gentil, Geraldes, Gil, Godinho, Góis, Gomes, Gomes, Gomes, Gonçalves, Gonzaga, Goulart, Gouveia, Guedes, Guimarães, Guterres, Hernandes, Hilário, Hipólito, Ibrahim, Ilha, Infante, Jaques, Jesus, Jesus, Jordão, Lacerda, Lancastre, Leiria, Lessa, Lima, Lopes, Machado, Maciel, Magalhães, Maia, Maldonado, Marinho, Marques, Martins, Martins, Martins, Medeiros, Meireles, Mello, Melo, Mendes, Mendes, Mendes, Menezes, Mesquita, Modesto, Monteiro, Monteiro, Moraes, Morais, Moreira, Moreira, Morgado, Moura, Moura, Muniz, Nascimento, Neves, Nóbrega, Nogueira, Nogueira, Novaes, Novais, Nunes, Oliveira, Oliveira, Ornélas, Ourique, Pacheco, Padilha, Paiva, Paraíso, Paris, Peixoto, Peixoto, Peralta, Pereira, Pereira, Peres, Pilar, Pimenta, Pinheiro, Pinto, Pires, Portela, Porto, Quaresma, Quarteira, Queiroz, Ramires, Ramos, Ramos, Rebelo, Resende, Rezende, Ribeiro, Ribeiro, Ribeiro, Rocha, Rodrigues, Rodrigues, Salazar, Sales, Sales, Salgado, Salgueiro, Sampaio, Sanches, Santana, Santos, Silva, Silveira, Siqueira, Soares, Souza, Subtil, Tavares, Taveira, Teixeira, Teixeira, Teles, Torres, Trindade, Varela, Vargas, Vasconcelos, Vasques, Veiga, Veloso, Viana, Vidal, Vieira, Vieira, Vilela, Xavier, Ximenes, Xisco, Zagalo, Zaganelli, Zanette ],\n    female: [ Agostinho, Aguiar, Albuquerque, Alegria, Alencastro, Almada, Almeida, Alves, Alves, Alvim, Amorim, Andrade, Antunes, Aparício, Apolinário, Aragão, Araújo, Araújo, Arruda, Assis, Assunção, Ávila, Azambuja, Baptista, Barbosa, Barreto, Barros, Barros, Beira-Mar, Belchior, Belém, Bernardes, Bittencourt, Boaventura, Bonfim, Botelho, Brites, Brito, Caetano, Caldeira, Calixto, Camacho, Camilo, Campos, Capelo, Cardoso, Cardoso, Carvalho, Carvalho, Castro, Castro, Cavalcante, Cavalcanti, Chaves, Conceição, Córdoba, Corte Real, Cortês, Costa, Coutinho, Crespo, Cunha, Curado, Custódio, D’Ávila, da Conceição, da Costa, da Cruz, da Cunha, da Luz, da Mata, da Mota, da Paz, da Rocha, da Rosa, Damásio, Dantas, das Neves, Dias, Dias, Dinís, Domingues, Dorneles, dos Reis, Drumond, Duarte, Escobar, Espinosa, Esteves, Evangelista, Farias, Farias, Félix, Fernandes, Fernandes, Ferrari, Ferreira, Figueiredo, Figueiroa, Flores, Fogaça, Fogaça, Freitas, Freitas, Frutuoso, Furtado, Galvão, Garcia, Gaspar, Gentil, Geraldes, Gil, Godinho, Góis, Gomes, Gomes, Gomes, Gonçalves, Gonzaga, Goulart, Gouveia, Guedes, Guimarães, Guterres, Hernandes, Hilário, Hipólito, Ibrahim, Ilha, Infante, Jaques, Jesus, Jesus, Jordão, Lacerda, Lancastre, Leiria, Lessa, Lima, Lopes, Machado, Maciel, Magalhães, Maia, Maldonado, Marinho, Marques, Martins, Martins, Martins, Medeiros, Meireles, Mello, Melo, Mendes, Mendes, Mendes, Menezes, Mesquita, Modesto, Monteiro, Monteiro, Moraes, Morais, Moreira, Moreira, Morgado, Moura, Moura, Muniz, Nascimento, Neves, Nóbrega, Nogueira, Nogueira, Novaes, Novais, Nunes, Oliveira, Oliveira, Ornélas, Ourique, Pacheco, Padilha, Paiva, Paraíso, Paris, Peixoto, Peixoto, Peralta, Pereira, Pereira, Peres, Pilar, Pimenta, Pinheiro, Pinto, Pires, Portela, Porto, Quaresma, Quarteira, Queiroz, Ramires, Ramos, Ramos, Rebelo, Resende, Rezende, Ribeiro, Ribeiro, Ribeiro, Rocha, Rodrigues, Rodrigues, Salazar, Sales, Sales, Salgado, Salgueiro, Sampaio, Sanches, Santana, Santos, Silva, Silveira, Siqueira, Soares, Souza, Subtil, Tavares, Taveira, Teixeira, Teixeira, Teles, Torres, Trindade, Varela, Vargas, Vasconcelos, Vasques, Veiga, Veloso, Viana, Vidal, Vieira, Vieira, Vilela, Xavier, Ximenes, Xisco, Zagalo, Zaganelli, Zanette ]\n}\npersonalEmails: [ gmail.com, hotmail.com, yahoo.com.br, uol.com.br ]\ncompanyNames: [ Bar, Sapataria, Mercado, Padaria, Supermercado, Farmácia, Drogaria, Loja de Conveniência, Posto de Gasolina, Açougue, Mercearia, Restaurante, Perfumaria, Loja de Roupas, Mercado Central, Lanchonete, Loja de 1.99, Atacado, Mecânica, Autopeças, Basar, Açaí, Academia, Ótica, Brinquedoteca, FastFood, Boate, Boteco ]\ncompanySuffixes: [ LTDA, Loja, Consultoria, Inc., Industria]\ncompanyEmails: [ info, contato, escritorio, faleconosco ]\n\ntext: Este hipertexto, isto é, matriz de textos potencializados em um duplo-devir virtualizante, visa proporcionar uma combinatória proto-semântica de um discurso proposicional a partir de um universo de possíveis. Sua instauração epistemológica é traçada a posteriori pela necessidade de construir-se um conhecimento teórico escamoteado em uma base glossofônica da interioridade da razão, em conssonância com a tex-tualidade apofântica sinteticamente determinável em sua exterioridade do Ser.\n\ntelephone_number_formats: [ '##-####-####' ]\n\npostal_code: [ '#####-###' ]\n\ncity: [ São Paulo, Rio de Janeiro, Salvador, Brasília, Fortaleza, Belo Horizonte, Manaus, Curitiba, Recife, Porto Alegre, Unaí ]\n\nstreet: [ Rua Gonçalo de Carvalho, Rua das Pedras, Vieira Souto, Avenida Paulista, Rua XV de Novembro, Avenida Pedro Basso, Rua Marcelino Champagnat, Avenida Júlio Castilhos, Rua Bento Gonçalves, Rua da Aurora, Rua Portugal, Avenida Silvio Carlos Viana, Avenida Dante Michelini, Avenida Getúlio Vargas,  Rua do Mucugê ]\n\ncountry: [ 'Brasil' ]\n\nlanguage: 'BR'\n"
  },
  {
    "path": "src/main/resources/jfairy_de.yml",
    "content": "alphabet: aäbcdefghijklmnoöpqrsßtuüvwxyz\ndomains: [de, eu, com, info, net, org]\ncompanyNames: [Aachener Gold-Ankauf, ABC Autoglas, Abschleppdienst Becker, Abtsäcker, Acelis, Ackermann's Der Dorfbäcker, Activ Schuhe, ADFC Fahrrad Info Zentrum, Adler Landmaschinen, Adrenalin, Aeskulap Apotheke, Afsa`s Afro Shop, AGON, AGWB Auto Nord, AH Kaufmann, Ahrweiler Straße, Airport Business Park, AK Autoteile Hattingen, A. Krämer, Aktiv Markt Rubin, Akzente Galerie, Albatros Apotheke, Albig, aldi, Alef, Alexandras Haarstudio, Alimentari i vini, Allee-Bäckerei, alles natur, Allround-Kiosk, Alpengroßmarkt, Alpinsportzentrale, al teatro, Alten und Klausen, Alte Windmühle, Altstadt-Bäckerei Richter, Altzincer Supermarket, Ambrosino, American-Shop, Amica Ambiente, Am Mühlanger, Anatomie, Änderungs-Atelier, Änderungsschneiderei Dilek, Andette, Andreas Hake, Andree, Anette Kaltenbach, Angelikas kleines Nähstübchen, Angelsport Gräfe, Anglia English Bookshop, Anja Mateschke, Ankes Haarstübchen, Anna Naturwaren, Anson's, Antike-Fundgrube, Antiquariat Zeisig, Antiquitäten Walter Breier, An und Verkauf Rostock, Apanage, Apollo, Apotheke am Doberaner Platz, Apple, Aquarium Rhynern, Arcor, Arians, Arlt, Arnold Bueroeinrichtung, Aro Teppiche, Tapeten, art club, Arthur Johannsen, Arto Team, AS Automobile, Asia Market, assenso, Astus Gamestore, Atelier Berghoff, Atlantis, A.T.S. Autohaus, atzert weber, AudioVideum, Audizentrum Dresden, Aue-Markt, Aufzüge, Augen Optik Begrich, Augenoptik Gräfe, Augusten-Apotheke, Auot Bartsch, Ausserhausverkauf, Autoagentur Potsdam, Auto Bapistella, Autocenter Neuried, Autoeck Mittelbach, AutoFIT, Autoforum Häfner, Autogas, Autoglas Sauerland, Autohandel Swoboda, Autohaus Albersdorf, Autolackiererei Theis, Autoland L&S, Automarkt Eibach, Automobile Appel, Automobilforum, Autopark Wöhner, Autoprofi Frey, Autoreparatur Fritsch, Autoservice Bernd Stich, Autowerkstatt Stettner, avanti, AVIA-Tankstelle, AWG Junior Store, AYK Sonnenstudio, B1 Baumarkt, Babarosa, Baby Kinder Jugendmoden, Bacchus, Back-Art, Bäck Drive, Bäcker Bresan, Backerei Foester, Bäckerlädle, Backhaus Bross, Backshop Gaese, Backstube Die Ähre, backwerk, Baden-Auto, Badmöbel 1b Verkauf, Baehr, Bags and more, Bahn- und Reiseagentur, Bäkerei Czech, Bäko Bäckereizubehör, ballet pauls, Balu, Bang & Olufson, Barbara's Heissmangel, Barber Shop, Bärenstark, Barnert, Bartholomé, Basement, Bastelbedarf, Bati Markt, Bauer, Bauerncafe, Bauernmarkt am Lindchen, Baufirma Gräser, Bauhof der Stadt Hemau, Baumann Haushalt Elektro, Baumarkt OBI, Baumgärtner, Baumschule Demuth, Bau-Spezi, Baustoffe Vertrieb Neu-Ulm, Baustoff Schneider, Bauunternehmung Mahlberg, Bavaria Automobile, Bäz Optik, Bear's & Friends, Bebion Blumen, Becker + Flöge, Beckmann & Schönherr, Behmann, Beiersdorfer Landbäckerei, Beireis-Apotheke, Bekleidungshaus Müller, Bella Rosa, Belmodi, Benetton Moden, Benslips, Bereket Supermarkt, Berghausener Blumentopf, Bergrath, Berkmüller, Berlin Story, Bernhard Guck, Berr, Bertram VidovicFriseursalon, Besser, Bestattungen D. Schulz, Bestattungshaus Haller, Bestellcenter Monika Hund, Betriebsgelände, Betten Fritz, Better2Gether, Beuer, Beyer Optik, bici, Biel, Bierfabrik, Biewa Getränkemarkt, Big Lebowski, Bike&More, Bike&Ride, Bilderbogen, bilgro, Bilster Berg Drive Resort, Bingo's Allerlei, Biobäckerei und Café Meffert, Bio-Eier, Biohof Böhme, Bioland Brungs Hofladen, BioMarkt Eppendorf, Birgit's Bauernladen, Birkholz Bäckerei & Stehcafé, Bisquitte, Biwer, Blackfoot Outdoor Shop, Bläserforum, Blaumann, Blessenohl, Blitz Foto, bloom's, Blumberg Mann + Mode, Blumen 2000, Blumenfachgeschäft Kleeblatt, Blumengalerie Hofer, Blumengeschäft bei Kaufland, Blumenhändler, Blumenhaus Augustaanlage, blumenhäusel (home by ASA), Blumenhof Dohmeyer, Blumenladen Ernst, BlumenMehr, Blumenstübchen, Blumenstudio Wendt, blume & stil, Blütenwerkstatt, BMW Autohaus Märtin, Bocks, BodenseeCenter, Body & Soul, Boetius, Böhlje-Sander Hilde Blumen, Boize Center, Bolten, Bonbonwasser, Bonner Küchenstudio, bonus markt, Bootsmann, Borchert Raum+Idee, Born Center, Bosbach IT-Services, Boschert, Bosh car service Ritzkowski, Bötsch, Boutique 88, B&Q Hair Design, Brandau, Brandt's Wohnwelt, Brauerei Neunspringe, Bräunig, Brautmode, Bredemeier, Bremer, Brennerei Wißler, Briefzentrum Deutsche Post, Brille 2, Brillen Fendt, Brillenmacher, Britz, Brogsitters, Brot-Boutique, Brotkorb Hatz, Bruder, Brüning, Bruno Kehder Friseursalon, Büch, Bucher, Bücherei Klein, Bücher & Kunst, Bücherschrank, Buchhandlung am Andelsbach, Buch & Kunst Hoffmann, Buchner, BUDNI, BUGO, Bülte, Bundesfinanzdirektion Mitte, Büning, buran01, Bürgerhaus Wiegleben, Burg Wäscherei/ Änderung, Bürobedarf Heim, bürohaus Janssen, Büro Schreibwaren, Buschkühle, Buss, Elektro, Butterfly three, BWW Pro Car, cab Bücherstudio, Café Adalbert, Cafe & Bäckerei Schrunz, cafeleven, C&A KidsStore, call_shop, Campbell, Camping und Freizeit Loppien, Canstatter Fässle, Cap-Markt Tamar, Caravan Thein, Car-factory, Cari-markt, Carl-Thiem-Apotheke, Carpark Audi Ahrensburg, Carsch-Haus, Carusell, Casa Natura, Caspar Fashion, Cavatappi, C. David, Cellini, Centik, Cesar Markt, Chanel, Charlott, chelsea, chicco di caffè, Chiribiri, Chris Lewis Hair Dressing, Christian Meiling, Christliche Bücherstube, Chrysler & Jeep, Cinderella, Citroën, City Blumen, CitySchuh, CJ Möbel Jaeger, Classen, Claude Cosmetics, Claudi's Blumenscheune, Clemens Galerien, Clown Backshop, cobero, Coiffeur Blickfang, Coko Cut, Colonia Shop, COMA Verbrauchermarkt, Comic-Laden, Computer Center Bünde, Conditorei am Oberhof, Confiserie Mélanie, Connys Frisurenatelier, Contessa, coop, Copy Factory, Copythek & Druckservice, Coroneo Hairdesign, cosmetics, cove & co., crea time, creHAARtiv, Cron & Lanz, CS-Meyer, Culinarium, Cut Ab, Cutedrale, CutStudio55, Cycle-Basar, Czerny-Apotheke, Dahlhoff Feinkost, Dalladas, Dance Inn, DÄNISCHES BETTENLAGER, Daphne Europe, Das Backhäusl, das.geschenk, Dat Eifel-Hüsje, Dawood Hair-Style, D'Bücherladen, Decatlon, Deepend, De gode Backstuv, Deichfrisör, Déja vu, Deko-Traum, Delikata, Delta Markt, Demm, Denker, Dent Wizard, Derpart Reisebüro Fahrmbacher, Destille & Tee, Deuter Outlet, Diakonie-Laden, Di Bö, Die Autowerkstatt, Dienstleistungspark Trimonte, Dieter's Brotkorb, DigiTrends!, Dimsat, Dirk Gerike, Discount Friseur, ditsch, Dive Community, dm Drogerie Markt, Dokuz Schneider, Doll's Zoo-Markt, Domiell, Donau-Ries-Werkstätten, Döpke, Dorfbrunnen, Dorfladen Neuburg, Döringer's Backstube, Dornheim, Dosch, DPD-Depot, Drapalla, Dreescher Markt, Dreißig, Dress, Driesener Apotheke, Drogerie Fritsch, Drogeriemarkt DM, DruckerBuffet, Druckhaus Lampe, Drunter und Drüber, D`tal Markt, Dün-Fleisch, Durchblick, Dusa Mosner, DVD XXL Discount, E aktiv Markt Brockhage, E. Arnold & König, eat&art Bäckerei&Konditorei, Ebersbacher Wachswaren, Ebner, Ecke Automobile, Eckstein - Beckshop, edeka, Eden's Fahrradinsel, Edonas Quni, Efferoth, Eggers, ehemaliger Klinikbereich I, ehem. LPG-Gelände, Ehrenstein-Apotheke, Eichenlaub, Eickhoff, Eine-Welt Laden, Einkaufsladen Luell, Einkaufszentrum Wust, Einrichtungshaus Steckel, Eiscafé Cellino, Eiscafe Venezia, Eisen-Feustel, Eis Firenze, eisweiler und temme, EKZ Gerberpark, Elbers, Electronic Revival Company, Elektro Andresen, Elektronikvertrieb Köhler, ELG Holzhandwerk, Elka Kaufhaus, Ella´s Büdchen, Elmar Sollfrank, Elshoff, Emendörfer, Emmerich, Emster-Schänke, engbers, Engelshaar und Teufelslocke, ENOTECA dell´Arte, Enztal-Express Reinigung, EP Donner, Epicerne Sociale, EP Raatz, EP Weinreich, Erdmann Ihr Zweiradprofi, Erichsen, Erlebniswelt Modellbahn, Ernst-August-Apotheke, Ernstin's family, Erotic Gigant, Erste Edeldestillerie, Erwin Weber, Escherle, ESPRIT Factory-Store, Esso Messerschmidt, ESW-Werkstattladen Allerhand, Euhus, Euro Dance Center, Euronics Schulte, Europa Reisen, Eurozone, Evelyn Jabs, E.Vogell, Exakt, Expert Arndt, Exquisit Reinigung Ehrenböck, Fa. Bergmüller (Boden), Fahrad Schult, Fahrrad Biehla, Fahrradcenter Specht‎, Fahrradhaus Möckel, FAHR'RADladen, Fahrradservice Doreen Leider, Fahrradverleih Lindemann, Fahrschule Elch, Fahrzeugbau Köpf, Fahrzeugtechnik Krueger, fair Kaufhaus, Faller, Fantomas 2000, Farbenkrauth, Farben Walter, Fasche, Fashion Uder, Fat Lady, F. Danne, FEGRO Großhandel, Feinbäckerei, feine Pralinen, Feinkost Delizie, Felder, Fels + Eis, Fernsehmeister Schulz, Ferraro-Moto, Festruhe, Feza Reisebüro, Fiat Gierlinger, Fiebiger, Figaro, Filiz, Fingerz, Firma Sauter, FISCHBACH, Fischerei Lasner, Fischers Brot & Zeit, Fisch Haus, Fischräucherei, Fischzucht Barchfeld, FitLine, fixme Laden, Flair Fashion, flash, Fleicher Scheinpflug, Fleischerei Baum, Fleischers Fahrrad Oase, Flick, Fliesen-Kreativ, Flohmatz, Florales & mehr, Floristik Art & Ambiente, flotte Fietse, Flugplatz, Föhr-Amrumer Immobilien, foncia, Ford, Forellenzucht Völmlesmühle, Forstenrieder-Lotto-Lad'l, FORUM, Fotoatelier Christiane, Foto Doppheide & Kollow, Fotohaus Seeger, Fotostudio 9mal13, Frank, Frankenwein-Centrum, Frank´s Einkaufseck, Franz Heinje, Fraunhofer-Institute, Fred Frisör, Freestyler, Freie Tankstelle, Freisingers Saure Ecke, Fresena-Apotheke, Fressnapf Tierzubehör, Frey Wille, Frida's Bioladen, Friedhofgärtner Kreuselberg, Friesisches Theehaus, Frische Eck, Frischemarkt Jungblut, Frischmarkt Breuer, Friseur 2000 (Meyer), Friseure Befurt, Friseursalon Bärbel Kernchen, Friseurstudio Monika & Sandy, Friseurteam Hefner, Frisiersalon Claudia, Frisör Albert, Frisörensen, FRISTO, Frisurenmode Dorner, Fritz Baustoffe, FRIWA Küchen, Fröllje Bäckerei, FRT Textilreinigung, Früchte-Krämer, Fruchthaus am Markt, Früh Optik Uhren Schmuck, Fuidl, FUNDUS, Funtasstisch, Fürther Dorfladen, Fußpflegestudio, Futuro, Gabis Getränkemarkt, Gaby's Haarstudio, Galaria Kaufhof, Galerie am Kloster, Galina Friseursalon, Gamestop, Gänseblümchen, Garage 53, Gardinen & Dekostudio, Garger, Gartenbau Koll, Gartencentrum Fuchs-Birkenhof, Gartenpflanzen Walz, GartenWerk Dukat, Gärtnerei Arkenau, Gärtner Leuchten, Gasthaus Loos, Gaststätte Zum Bahnhof, Gazelle, Gebers, Gebrauchtwagenhaus Mitro, Geers Hörakustik, Gegenwind, Geiers Drink in, Geißhalden, Geldautomat, Gemischtwaren Kunstreich, Gemüse & Obst, Gensler, Georg Pflefka, Geräucherte Forellen, Gerds Comicladen, Gern Reisen, Gerth am Lappan, Geschenke Wohnaccesoires, Gesundbrunnen-Center, Getraenke und Mehr, Getränkecenter Kessler, Getränkefachverlag Rowira, Getränkehandel Daum, Getränkemarkt Betke, Getränkerakete, Getränkeshop Paul, Gewerbepark Dietmannsried, Geyener Fahrradladen, GHW electronic 2000, Giesbrecht Service, Gilliar, Ginzler, Gitarren Laden, Glamorous Friseur & Kosmetik, Glaserei Franz Raab, Gläsers Gartenwelt, Glas Schmidt, Gleumes, Globus Drive, Glöckenbäckerei, glückssträhne, Gnaier, Gödde Schuhe, Goetheapotheke, Golchert, Goldene Schere, Goldnaht-Sanli, Goldschmiede Denner, Gold+Silberschmiede, Goll, Görres, Gotter, Götz Fahrzeugreparatur, G-Punkt, Graf Beust I, Gramann, Gras, Grau Schreibwaren, Gregor Kaszuba, Griesbeck Zweiräder, GRIMM Küchen, Grombach, GROSS 1866, Großmanns Minimarkt, Gründig, Grüner Leichtsinn, Grüninger, GS agri Baustoffe, GTÜ - Häberle, Guhn Kfz-Meisterwerkstatt, Gummert, Günter, Güntzel Feinkost, Gusto Antico, Güterverkerszentrum, G+W Autoservice, Haaratelier Souzan, Haardesign Steinfeldt, HAARFABRIK, Haargold, Haarmoden Krebs, Haar Paradies, Haarsträubend, Haarstudio Anne, Haarstyling Götze, Haarwaii, Haas Kies, Habla, Hackländer, Hafen, hagebaucentrum Artern, Hagebaumarkt Swerts, Hagenkötter, Hahners Einkaufszentrum, Hainichener Bäckerei, hairBell, Haircules, Hairdesign Jasmin Wagner, Hair Factory, HairGuide, hairline, Hairsisters, Hairstyle by Karina, Hairteam Excellent, Hake, Hallermeier, Hamburger Hofladen, Hammer Heimtex Fachmarkt, Hamwarde - Wiershop, Handy Insel, Hanle, Hanrieder, Hansecenter, Hans Frick, Hapag-Lloyd-Reisebüro, Happy Preis, Harbauer-Optik, Hark, Harmonie Bäckerei, Harry Wolf, Hartmann Holzmarkt, Harzer Weingut Kirmann, Hauck, hauptsache, Haus der Dienste, Häuser, Häutle, H & B Bäckerei, HeadwayJobcenter, Hecker's Sohn, Heeren, Heidbüchel, Heidjer Tee & Kaffeehus, Heike's Blumenladen, Heilemann, Heimbach Fleischerei, Heine, Heinrich Brandmeier, Heinz Letsch, Heißmangel Anni König, Heizungsbau Fischer, Heldmann, Helix Pflanzen, Hellweg-Baumarkt, Helmrich, HEM Expert, Henftling, Hennig´s Backstube, Henssler, Herberth Getränkehandel, Herder-Bude, Herkules Fachmarkt, Hermann Schmidt, Hermle Malerbetrieb, Herrenfrisör, Herrenzimmer, Hertie (geschlossen), He-Schu, hetsch Optik, Heu und Holz, HGerry Weber, Hiebers FrischeCenter, HiFi Erthel, HIKO-Candles, Hilla Haarteam, Himmel & Erde Blumenladen, Hintermayer, Hirsch-Apotheke, Historische Bauelemente, HIT Troisdorf-Sieglar, HM Racing Werkstatt, hobbyfly.de, Höche, Höderath, Hof Brüggemann, Hofgeschäft Gut Stegen, Hofmann Inge, Hofpfisterei Trudering, Högl, Hohmann, HolAb!, Holiday Reise Service, Hollister, Holstein's Backhaus, Holz & Baustoffkompanie (HBK), Holzfachmarkt Brandt, Holzhauser, Holzland Kern, Holzofenbäckerei Paul Bailer, Holzwarth, Home & Beauty Store, Honda Fensel, Höner, Honsel, Hoppert, Horex, Hörgeräte Meckler, Hornbach Moers, Hörstudio Fröhling, Hosen Löhr, Hotfiel, Houtmanns, H. Rühl Sportbekleidung, H.Tille, Hubertusapotheke, Huesmann, Huhn, humanic, Hundertwasserhaus, Hundshalde, Husqvarna Motorrad Zentrum, Hut & Kindermoden, Hyundai Autohaus Turowski, I.B. Mahler Textilpflege, idee, Ihr Bäckerjunge GmbH‎, IHW Park, ILANGA Wine Bar, Ilmbacher Hof, Il Sogno, Imbiss Skaterpoint, Imkerei Englert, Immobilien Westerwald, IN-Bus, InDrink, Industriegebiet Wengerohr-Süd, INFAM, Inges Haarmonie, Ingrid´s Haarstudio, INN-Kaufhaus, Inspiration, Intercoiffeur Fuchs, International Mini Supermarkt, Intersport Beike, inturia, Irene Schmucker, Irmscher PC, Isleker Imbiss, IVECO SERVICE Bergler, JÄCKER'S Getränkepool, Jacobs Eck, Jagels, Jahreszeiten Naturkost, Jako Sportbedarf, Jan Lay, Janssen & Kruse, Jasmin Thai-Massage, Jazzy, JEANS DELUXE, Jeetzel-Optik, Jennys Haarstudio, Jimbo-Tank, Joachim Grub, Joel Style Friseur, Johannes Sterzenbach, Johnson, Jörgs Weinshop, Josef Seibel, Joyce Merlet Puppenklinik, JUMBO ZOO-MARKT, Jung van Matt, Juri Zitrone, JUWA, Juwelier Büttke, Kaaksburg, Kadens Einkaufscenter, Kaffee Kontor, Kahlo Ramschladen, Kaiser's, Kaktus Tattoo & Piercing, Kallenbach, Kamera-Spezialwerkstatt, Kämmerei, Kampfkunstgalerie, Kankel, Käppeleswiesen, Karawane Reisen, Karin Labudda, Karl Ernst, Karlolack, Karnbaum, Karosseriebau Wachtveitl, Karstadt Stammhaus, Karussel, Kasenbacher, Käsmeier, Kästner Optik, Katja-Katrin Kewitz, Kaufe Musik Recordstore, Kaufhaus Jonass, Kaufland Glauchau, kaufpark, Kaushaus X, Keidel's Hof, Kellerhoff, Kemal's, Kenny S., Kerling's Feinbäckerei, Kerstin's Laden, Keti's Änderungsschneiderei, KFP Klassik Garage, KFZ Fersen, Kia Autohaus Wolf, Kida-Paradies, Kiesewetter, Kif Kif, kik Textildiscount, Kilbinger Neuss, Kinderausstatter, Kindermoden Lollipepp, Kinzig Corner, Kiosk Am Atzumer Busch, Kipfelsberger, Kirk's Drive-In, kiss berry, K & K, K+K-Markt, Kladow Center, Kläranlage Dresden-Kaditz, Klärwerk und Bauhof Tangstedt, Klaus Kocher, Klavier Kern, Kleff Haarstudio, Kleine Bäckerei, (kleiner) Famila, Klein KFZ Reparaturen, Klemm Car service, Klimastudio Magdeburg, Klinkenthalzentrum, Kloppenburg, Klostermann & Diekmann, Klumps, K!MO, Knauß, Knoblauch e.K., Knospe Naturkost, Knut Sander, Koch Goldschmied, Koepke, Kohler Automobile, Kojer, Koller+Schwemmer, kolor, Konditorei Behrens, König, Königsparfümerie, Konsum Kaufhalle, KOPA Computer, Kopier & Druckshop, Koppen Bäckerei, Körner & Tee, Kosmetik Christina Simoneit, Kosmetikstudio Passion, kostbar, Kral, Kranich Apotheke, Krause Markt, Kraut&Rüben, Kretschmann, Kreyen-Centrum, Kristall-Palast, Krone, Krügers Getränkewelt, Kruses Hofmilch, Küche & Keller, Küchenhaus am Rhein, Küchen-Möbel-Passage, Küchentechnik Kahle, Kuckertz, Kühler Ragge, Kumar's Minimarkt, Kunstgewerbe Georg Lindner, Kunstmann, Kunterbunt Spielwaren, Kurapotheke, Kurt Kox Grabmalkunst, Kuse, KUWE Raumausstattung, La Barrique Weinland, Lackner, Lädele, Lady Chick, Lagerhaus, Laib & Seele, Lamm Apotheke, LAMY, Landbäckerei Grundmann, Landbierparadies, Landfleischerei Grafe, Landgärtnerei Beyer, Landkarten Büchereck, Landmarkt Thaler, Landmetzgerei Bitsch, Landmetzger Lex, Langensiepen Kurt H. Blumen, Langrzik Jürgen, Las Vegas, Lauer, Laurél, Lebascha Naturkost, Lebensmittel bei Mustafa, Le Coupe, Lederhandel, Leder-Shop, Leggewie, Lehnacker, Leipziger Baumwollspinnerei, Lekkerland, Len-Fra, Leo Lammers Schuhmacherei, L'Epicerie, Lese Laden, Les Vernis Naturnagelkosmetik, Level 5, Ley Sanitätshaus, Licht Kraus, Lidl (Erlensee), Liebehenschel, Liebscher, Lila Leeze, Lilu, Lindau & Kindler, Lindenhof Bauernmarkt, Lindner, Metzgerei, Linoleum Rau, Listmann, Living2, L&N Textilien, Lock up, LOGO, Lohners Backshop, Lollypop, Lorenzen, Losse T., Lotto Annahmestelle, LOUIS, Löwencenter, LPG Untermossau, Lübbering, Lucias Hairfashion, Ludger Böckenholt, Lueg sportiva, Luisen Apotheke, Luna Reinigung, Lustige Lahnluft, Lutzes Backstube, Lydia´s Modeeck, Macaron, MAC Jeans, Madeleine Wied, Magdalenen-Apotheke, magicX, MAHAG Nutzfahrzeuge, Maier, Mainroller, Majolika Firmenpark, Mancala, Manfroid, Mannamia, Man Nutzfahrzeuge AG‎, Manuelas Frisierstube, Marc Cain, Marco's Zweirad-Shop, Margot Enzhammer, Marie Luise Börmel, Mario Gisbers, Marisol, Markant Nah & Frisch, Markgrafen-Getränkemarkt, Markt-Apotheke, Markthaus, Marktkieker Bohne, Markus Hamperl KFZ-Service, Marmor Roppelt, Martha & Lotte, Martini-Park, Marwede, Mäser Modell & Technick, Massa Musterhaus, Matheis&Klose, Matratzen Outlet, Matthias Neubauer, Mätzkow, Maurers Bäckerei, Max-Bahr-Baumarkt, Mayers Frischemarkt, Mazda Autohaus Kaschmieder, McClean, McPolster McDream, Mechau, Medien Corner, mediterraneo, Mega Bike, Mehringhöfe, Meiers Backstube, MeinersenVideo, Meirandres, Meister Kaffee, Meller's Bioland-Hof, Menges, Menz, Mercedes/Bosch, Merkur Reiseland, Merz Gemüse, Messe Niederrhein, Metallbau Pölker, Metro Cash & Carry, Metzen Sonderposten, Metzgerei am Steinberg, Metzger Treuter, Meyborg, Meyersche Buchhandlung, Mezzo Pezzo, Michael Meyer, Michelle's Specilities, Microtrend, Mielke, Mike Kühn, Milchpilz, Miller Waldemar, Minhs Asia Markt, Mini-Markt am Mühlenteich, Miong Seyb Kosmetik, MISCO Germany Inc., Mister Maker, Mitsubishi;Seat, Miyabi, Mlx Obermeier, MM`s Haarwerkstatt, Mobauplus Bauzentrum Becker, Möbel Bock, Möbelhaus Müller & Co., Mobilcom Shop Augsburg, Mochel, Mode bei Marte, Modehaus Brack, Modellbahn Broders, Modellbau-Fachmarkt, Modell Pelzer, moderne Schuhreparatur, Modetreff Heidi, mod's hair, Mohren Apotheke, Möller, Momo Kindersachen, monokel, Montimare, Mordhorst & Bockendahl, Mormann, moshi home, MOTOitaliano, Motoren-Service, Motorradbekleidung Louis, Motorrad Herzer, Motor Sport Ries, movies, Mr. Brown, M.STRUNK, Mucom, Mühlenbäckerei Fick, Mühle Schuwer, Müller, Münchner Fingerhut, Münzen, Museumshop Dujardin, Musik Aktiv Schallenberg, Musikhaus Husum, Mutterwerk, My Baker, Mythologische Spielwaren, Nachfülltinte, Naesert Fleischwaren, Nagelstudio Heck, Nagler Technik, nahkauf Langsdorf, Nähstube Cevik, Nahversorgungszentrum, Nails Diamant, Nanuk, Natoshop, Nature's Food Naturkost, Naturkost Baldham, Naturkostladen Südstadt, Naturland-Hof Ruhl, Naumburger Reifenmarkt, Nehberg, Nennhuber, Nestle, Netto Discont, Neue Apotheke, Neukauf Reisen, Neustadt Centrum Halle, New Millenium Int, Nicolas Scholz, Niebuhr, Niehaves Bäckerei, Nietmann & Höß, Nill Wohnen, Nissan Haake, Nizik & Bauer, No. 7 Schulbedarf, nola-Chemie, Nooricom, Nordertor-Apotheke, Nordstadt Kiosk, Nösel, Notzinger Lädle, NP-Discount, Nürnberger Versicherung, Nyhues, Oasis, Ober Kubsborn, OBI Lindlar, Obst Blumen, Obsthof Enders, Ockenfuß, Oecotop, Oevenumer Backstube  Mengel, Office Port Bonn, Ohler, Oil & Vinegar, Oktoberkinder, Old Krempel Ltd., Oliver Böttcher, Ölwechselservice Richter, Ommer, Only Store, Opel-Autohaus, Opel, GM, Ford, optic art, Optik am Rathaus, Optiker, Optikstudio Lamm GmbH‎, Optimal Renner, Orlemann, Orthopädie, Osnatel, Ostermann, Oststadt Super-Bio-Markt, Ottilie Wegener, Otto Meinert, Outdoor-Shop, Overmeyer, Packetshop, Page, Paletti, Panagiota, Panser, Paperpoint, Papeterie Wolf, Papier Reiss, pappert, Parati, Parfümerie Er+Sie, Parfumerie Profumo, Parkett-Forum, Party Service Gabriel, Passage an den Beeten, Patiserie La Minzbrueck, Paulig, Paul Suckow, Pax Bakery, PC-Loeh, Pedalritter, Pelze Drews, Pennings, Penny-Markt Dahn, People2Power, perfect skin, Permoser Eck, Pestel, Peter Göck, Peterno Radsport, Peters Fashion, Petra Reuther, Petra's Shop, Peugeot, Pfankuch, Pfeifle, Pfisterer, Pflanzenmarkt Seemühle, Pfoten im Revier, Philippi, PhoneFlat, Photo Müller, Physiotherapie Katrin Welz, Pianohaus Schwägerl, Pichler, Piechaczek, Pietät Martha Herrig, PimperBikes, Pistoria, Pixy Fotostudio, Planen Kimmik, Plaste+Elaste, Play & Watch, Pleuger, plus, Pneuhage Reifendienste, Podium, point S, Polo, Polster Pit, pony club hairdressers, Porsche Zentrum Berlin, Porta, Pösna-Park, Postshop, Potthoffs, Praise Christlicher Buchladen, Preisparadies 2000, Prenz'l Apotheke, Presse Heyer, Press P&B Books, Prima Flora, PrintArt, Priss, ProBoarding Kitesurfschule, pro fashion, Profi-Lützen, project H, ProOptik, Provinzial Robert Hoffmann, PS-Sport Werkstatt, Pulli-Shop, Punto Uno, Pusdorfer Radwerkstatt, Pythagoras, Quarzwerke Frechen, Querbeet Bioladen, Quick Shoes, Raab Karcher Baustoffe, Rad ab!, RäderWerk, Radhaus Berlin, Radio Bremberg, Radlager Dresden, Radl Huber, Radsport Carda, Raer, Raidt's Getränkehof, Rail Electronic, Rajeethan Traders, Ramer, Rank, Rathaus-Drogerie, RATIO Grossmarkt, Ratzek, Raumausstatter, Raumausstattung Dieter Wolf, R-bikes, Real, real; Media Markt, Rebschule Schmitt, Recyclinghof Bergedorf, redoffice, Reformhaus Dahmen, Regenbogen Apotheke, Regines Nähparadies, Reich KFZ, Reifen Böwing, Reifendienst Tanski, Reiffeisen, Reiner-Bike, Reinigung, Reinigungscenter Ding, Reipo, Reiseclub Cottbus, Reisemakler, Reisestudio, Reißenwebers Backstuben, Relles Mühle, Renata Späte Bierverlag Thiel, Renner büro actuell e.K., Renus Mate, Reptilien-Insel, Retter Schmuck und Uhren, RevierRad (tri-mobil), Rexhausen, Rhein-Energie Kundenzentrum, Rhode, Richard Wagner Apotheke, Richter's Fahrradlädchen, Riechard Kraftfahrzeuge, Rieser, Rinderbesamung, Rinklin Biomarkt, Ritchie, RN Gebäudereinigung, Robert Ley Classics, Rockers Bikeshop, Rogner's Backstube, Rohrhofer, Roland, Rollstuhl WC offen, Rondell Apotheke, RosaReich, Rosenbohm, Rosenrot, Rosi's Boutique, Roßbach-MC, Rossschlächterei Christen, Roth, Rotkehlchen Beauty Nest, Rotzoll, R&S Automobile, R+T-Werkzeugverleih, Ruda, Rudolf Konik Metallhandel, Rügener Bauernmarkt, Ruma, Rund ums Korn, Rupprecht, Russ Jesinger, SAAB, Subaru, Sabbaz, Sabrinas Haarstudio, Safa Mode, Sägewerk Kaa, Saki Haircut, Salon 58, Salzladen, Samet Telecom, Sandmann - Hyundai, Sänger, Sanitätshaus am Oberen Tor, Santen, Sari Berner, Sattelfest, Sauer Bäcker, Sawis Getränkemarkt, SB Back Shop, SBK Supermarkt, Schachenmeier, Schaller Bäcker, Scharly's Getränke SB, Schätzmüller, Scheck-In Center, Scheitle, Schenk, Scherl, Scheu + Weber, Schiemer, Schilbock, Schimmel, Schirmer, Hertle Autoteile, Schlachterei Schwarz Cranz, Schlauchomat, Schlecker Shop, Schlemmer, Schleufe, Schlocker, Schloss-Sport, Schlüsseldienst Hühnke, Schmankerl-Metzger, Schmid Bestattungen, Schmidt Getränkemarkt, Schmidt's Minigarage, Schmuckatelier Sign710, Schmuck Schroll, Schnarre, Schneider & Berger, Schneidermarkt, Schnellmarkt, Schnipp Schnapp, Schnittstelle 89, Schokoladen Haus Wienold, Scholz Haare, Schönegger Käsealm, Schönheitspflege Für Mich, Schöpf, Schrade, Schreib Shop, Schreibwaren Edelbuer, Schreiner Brillen, Schrittes Landschlachterei, Schröpf, Schucker Rennräder, Schuhaus Schulz, Schuh-Center, Schuhe Schlienkamp, Schuhgarten Rosenbaum, Schuhhaus Bayer, Schuhhof, Schuhladen Müller, Schuhmacher Meister, Schuhmode Schüle, Schuhpiraten, Schulle, Schulze, Schuppelius, Schuster Zwick, Schwaaz Vere-Buchhandlung, Schwahn-Optik, Schwanenweiher, Schwarzer Weg, Schweicher Fahrradladen, Schwericke, Schwolgau, script, Seat Beckmann, Secondhand, Second Life, Seehas-Center, Seestern Apotheke, Sehform, Seidenstraße, Selbachs, SELGROS, Senfkorn Weltladen, Senseason Friseur, Service-Center für Tiere, Sesselberg, SexDiscount, SHB Spielzeugland, Shenron Handel, Shoe Jean, SHOPIN, Sibo, Sieben, Siefert, Sieler, Siemes Schuhhandel, Sigi Renner Friseuere, Sila Thai Massage, Silke Vité, SIMMEL, Simon´s Cafe, Singer & Pfaff, Sirius, Sitt & Satt, SK-Bikes, Skiservice Höckl, Skoda Autohaus Rüdiger, Slam Records, smartino, Sobi, Soffies kleiner Supermarkt, Solaris, Solingen, Solvay Pharmaceuticals, Sonderposten Baumarkt, Sonjas Hairdesign, Sonnenhofladen, Sonnenstudio Heliopolis, Sonntag, SOSO Spirits, Souvenirs Geschenke, Spargelhof Hofladen, Sparkasse/Schulte's, Späti, Speckhardt, Speed Concept, Spenglerei Schober, SPIELE MAX, Spielpalast Calbe, Spielwaren Deuring, Spielzeug föhr alle, Spinatwachtel Tee & Naturkost, Spohr, Sport Ankirchner, Sportplatz, Sportshop Sattler, springgarden, Sroka&Langowski, Stäbelow I, Stadtbächerei Kühl, Stadtbäckerei Siemens, Stadtcafe Rosenow, städtisches Straßenbauamt, Stadtwerke Bochum, Stahlwaren Steinöckel, Stangelmayer, Starck, Star Lounge Kosmetik, Statravel, Staufen-Buchhandlung, Steeb Männermode, Stefan Rössler, Steffi's Blütenzauber, Stehcafé Kiosk, Steigerwaldbäckerei Oppel, Steineckes Bäcker, Steinkabinett, Steins, Stempel-Eckstein, Stephans, Sterntaler, St. Georg, Stiegele, StilArt, Stimpfle, Stöberstube, Stoffe&Kurzwaren, Stoff Schnäppchenmarkt, Stoltenberg, Storchenhof, Stottrop, Strandboutique Maritim, Straßenmeisterei Sandersdorf, Strauss Innovations, Street, tolle Schuhe, Strickwaren-Zentrale, Strohmeier, Strunk, Stüber & Reuner, Studio Donath, Stuhlflechterei Karekla, Stüwe, Stylissimo Hair and Nail, Südfleisch, Südstadtcenter, Sultan, Sun Box, Sunshine Sonnenstudio, Super Biomarkt, Supermercado Español, Sürken, Süßes Lädchen, Suzuki, Swars, Sylvia's Haarkult, tabacon - Lotto, Tabakshop Heidl, Tabakwaren Peter Abele, Tabula, Tailor, Talbäckerei, Tandem Personallogistik, Tankshop Druschke, Tante Market, Tarzan Automobile, Tatt Bäckerei, Taubenberger, Taya Autoteile, TDI Shop, Teamsport, Teddi, TEDI Euro Discount, Tee Fortuna, Tee, Holz und Seidenstübchen, tegut... Getränkemarkt, tekNET Computer, Telekom Shop Coburg, Temo-Markt, Teppich Hopf Raumgestaltung, Terbuyken, Ter Veen, TEVI Markt, Textilhaus Prigge, Textilpflege Barbara, Textil-Reinigung Vangelis, TGK Theresa, Theaterkostümhaus Wagner, Theiner, Theo Voss, Thibo, Thieshoper Brink, Thomas Philips, Thommy's Modellbauecke, Ticketpalette, Tierhandlung, Tiggelkamp, Timy's Friseure, tinten-flash, Tippkötter, Tischlerei Böttke, Titus Apotheke, T-Mobile, Todt, Tomas Malchau, Toms Car HiFi, Toni Haarmoden, Tony's Barbiere, toom-Getränkemarkt, Top Bau, Töpferei Potzblitz, TopHair, Toscana, Totto Lotto Kiosk, Toyota Autohaus Eitel, Toys´R us, Trabold, Tragbar, Trapp, Travel Free Shop, treff3000, Treitinger, Trendhair, Trend Shop, Treude, Trigema Werksverkauf, Trinkhalle Stefanie, Trionauten, Troika, Trossbach, Tsantsa, T+S Reisebüro, Tüller, Tüv Beckingen, TV SAT Thieme, Typosatz, Uhrenatelier, Uhren&Schmuck, Uhren & Schmuck Stritzinger, Ulla Popkeu, Ulrich Jahncke, Umkircher Fahrrad Lädele, Uni Bikes, UNited Colores of Benetton, Unlimited Hair & Care, Unterelchingen, Urdenbacher Bauernlädchen, Uschi, Ute Jonas, Uwe Kauermann, Vabene, Valentina's Schuhe, Vangelis, Vaterstettener Früchtehaus, Veigel Wohnen, Velomobile, Velo West, Vera's Copyshop, Vermietungsbüro, Verwaltung, Vey Schuhmacher, Viborg, Video-Center Prenzlau, VideoMaxx, Videothek Ebert, Videoverleih Jehnichen, Vieracker, Villigster Frischemarkt, Vinothek, VIO Berlin, Visage & Harmonie, Vital-Apotheke, VITO, Vivo, Vodafone Mobilfunk, Vögele Mode, Vogt Mode, Völkl, Volkswagen Automobile Hamburg, vollgut, Volvo Rebmann, Von Der Weppen, Vor Hair Nach Hair, Votec Bikes, VW Audi, wachsjacke24 outlet, Waffen Krauser, Waizmann Mode, Waldkiosk, Wallbrück (Renault), Walther, Wandschneider, Warsen, Wäschehaus Kroes, Wäscherei Gürtler Martina, Waschgalerie, Waschsalon Waschkorb, Wasserbetten, Watzmann-Laden, Weck Eck, Wegmann, Weichberghalle, Weiherhammer Gewerbegebiet, Weinbastion, Weinbuch, Wein-Galerie, Weingut Backendorf, Weinhandlung Dilger, Weinhaus Alte Wache, Weinkellerei Schlossgarten, Weinstube, Weis, Weißer, Weko, Weltladen & Umwelthaus, Wendorff, Werbeagentur Schäfer, Werkmarkt Eisenfinger, Werkstatt (ex ARAL-Tkst.), Werksverkauf Metten, Werner Dauth Modellbau, Werner's Radshop, Wertstoffhof Friedrichstadt, West, Westfalen, Wetterau Apotheke, WfbM Gärtnerei, Wibra Lebensmittelmarkt, Wiechel, Wienshop, Wiessmeier, Wildelau, Wilhelm, Wilholt, Willicher Uniformhaus, Willi Spiller Toyota, Wimmer, Wind und Wetter, Winski, Winzergenossenschaft Lorch, Wirsing, Wissmacher, Wittinger Pflanzenhof, W&J Mini-Markt, Wochenmarkt (Mi./Sa.), Wohlsdorff Zigarettenhaus, WohnFunktion, Wohnparadies Schlötelburg, Wolfenbütteler Backhaus, Wolfgang Temburg, Wolf Wurstwaren, Wolling, Woolworth, Wörlitz, Woyton, Wümme Bäckerei Sammann, Würmtaler Bekleidung, Wurtz, W+W Cars, Xara, Xpresso, XXX-Lutz, Yazicioglu Market, YIL-PA, Ypsilon, Zachert, Zanken, Zauberkiste, Zeeh Zeitschriften, Zeilgalerie, Zeitschriften Lotto Hefele, Zeitungsladen;Lotto, Zentral-Apotheke, Zeug, Ziegler, Zigarrenhaus Kiechle, Zimmermann, Zink Fahrrad, Zirngibl Bestattungen, Zollamt, Zoo & Angelcenter Rupp, Zoohandlung, Zoom Shop, Zuck & Kaun, Zum Grünen Thal, Zünkler, Zweirad Bönicke, Zweiradcenter Intress, Zweiradhaus Hütt, Zwickelbauer]\ncompanySuffixes: [GmbH, AG, OHG, UG, gGmbH, GbR, GmbH & Co. KG, KG, gAG]\ncompanyEmails: [info, contact, mail]\nfirstNames:\n   male: [Aaron, Abraham, Achaz, Achim, Adalbert, Adam, Adelbert, Adelfried, Adelhard, Adi, Adolf, Adolph, Adrian, Agilbert, Agilmar, Alban, Albert, Albin, Albrecht, Alex, Alexander, Alf, Alfhard, Alfinus, Alfons, Alfred, Alfried, Alhard, Allmar, Alois, Aloisius, Aloys, Aloysius, Alphonsus, Alrik, Altfried, Alwin, Amadeus, Ambros, Ambrosius, Andreas, Andree, Andy, Annik, Anrich, Ansbert, Anselm, Ansgar, Anton, Antonius, Arend, Aribert, Arist, Arkadius, Armin, Arnbert, Arnd, Arndt, Arne, Arnfred, Arnfried, Arnhart, Arnim, Arno, Arnold, Arnolf, Arnt, Arnulf, Aron, Arthur, Artur, Arved, Arwed, Arwid, Arwin, Ascan, August, Augustin, Augustinus, Augustus, Axel, Baldur, Balthasar, Baptist, Bardo, Barnabas, Bartho, Barthold, Bartold, Bartosch, Bastian, Beat, Benedict, Benedikt, Benediktus, Benjamin, Benno, Bernd, Berndt, Bernfried, Bernhard, Bernhardin, Bernhardt, Bernhart, Berni, Berno, Bernold, Bernulf, Bernward, Bert, Berthold, Berti, Bertin, Bertl, Bertold, Bertolt, Bertram, Bertwald, Bertwin, Birk, Blasius, Bodmar, Bodo, Bodomar, Bolko, Bonifaz, Boris, Borwin, Botho, Boto, Brandolf, Bringfried, Bruno, Burchard, Burckhard, Burckhardt, Burgfried, Burghard, Burghardt, Burghart, Burkard, Burkardt, Burkhard, Burkhardt, Burkhart, Cai, Carl, Carlheinz, Carsten, Caspar, Cay, Cersten, Chris, Christfried, Christhard, Christhardt, Christhart, Christhelm, Christian, Christmut, Christof, Christoph, Christopher, Christopherus, Christophorus, Christward, Claudius, Claus, Clemens, Conrad, Constantin, Corbinian, Cord, Cordian, Cordt, Cornelius, Cornell, Cuno, Curd, Curt, Cyrill, Dagobert, Dagomar, Damian, Daniel, Dankfried, Dankhard, Dankmar, Dankward, Dankwart, Danny, Darius, David, Degenhard, Degenhardt, Degenhart, Delf, Denis, Dennis, Denny, Desiderius, Dethard, Detlef, Detlev, Detmar, Detrich, Didi, Diemo, Dierk, Dietbald, Dietbert, Dieter, Dieterich, Dietfried, Dietgar, Dietger, Diethard, Diethardt, Diethart, Diethelm, Diether, Diethmar, Dietmar, Dietmund, Dietolf, Dietram, Dietrich, Dietwald, Dietwalt, Dietwolf, Dietwulf, Dietz, Dimitri, Dionys, Dirk, Ditmar, Dittmar, Dominic, Dominik, Dominikus, Donat, Donatus, Eberhard, Eberhardt, Eberhart, Eckard, Eckardt, Eckart, Eckbert, Eckehard, Eckehardt, Eckehart, Eckert, Eckfried, Eckhard, Eckhardt, Eckhart, Eckhold, Eddi, Edelbert, Edelfried, Edelhard, Edelmut, Edelwald, Edgar, Edmar, Edmund, Eduard, Eduardt, Edwin, Egbert, Egidius, Eginald, Eginhard, Eginhardt, Egmont, Egomar, Egon, Ehrenfried, Ehrenreich, Ehrhard, Ehrhardt, Ehrmut, Eik, Eike, Einhard, Einhardt, Eitelbert, Eitelfritz, Ekhard, Ekhardt, Ekkard, Ekkardt, Ekkart, Ekkehard, Ekkehardt, Ekkehart, Elbert, Elkmar, Elmar, Emanuel, Emeram, Emerich, Emil, Emmeram, Emmeran, Emmerich, Engelbert, Engelbrecht, Engelhard, Engelhardt, Engelmar, Englbert, Enrico, Erdfried, Erdmann, Erdwin, Erfried, Erhard, Erhardt, Erhart, Eric, Erich, Erik, Erk, Erkmar, Erlfried, Ermenfried, Erni, Erno, Ernst, Ernstfried, Erwin, Eugen, Eustachius, Ewald, Eyck, Fabian, Falk, Falkhard, Falkmar, Falko, Felix, Finn, Ferdi, Ferdinand, Ferdinandus, Ferfried, Ferhard, Ferhart, Fidelius, Florentin, Florentius, Florenz, Florian, Folker, Folkhard, Folkhardt, Folkhart, Folko, Follrich, Frank, Frankmut, Franz, Franziskus, Franzl, Franzpeter, Fred, Freddy, Freimund, Freimut, Freimuth, Freiwald, Fridolin, Fridulf, Fried, Friedbald, Friedberg, Friedbert, Friedebert, Friedeborn, Friedel, Friedemann, Friedemar, Frieder, Friedewald, Friedhard, Friedhardt, Friedhart, Friedhelm, Friedhold, Friedl, Friedlieb, Friedmar, Friedmut, Friedmuth, Friedolf, Friedolin, Friedrich, Friedwald, Friedwin, Frithjof, Fritz, Frohmund, Frohmut, Frohwald, Frowin, Gabriel, Gangolf, Gebhard, Gebhart, Gelbert, Georg, Gerald, Gerd, Gerdfried, Gerdt, Gereon, Gerfried, Gerhard, Gerhardt, Gerhart, Gerlach, German, Germar, Germo, Germut, Gernfried, Gernod, Gernot, Gernulf, Gero, Gerold, Gerolf, Gerrit, Gert, Gerthold, Gertmund, Gertwin, Gerwald, Gerwin, Giesbert, Gisbert, Giselbert, Giselher, Gismar, Godo, Golo, Gordian, Goswin, Gottfried, Gotthard, Gotthardt, Gotthart, Gotthelf, Gotthilf, Gotthold, Gottlieb, Gottlob, Gottreich, Gottwald, Gottwaldt, Gottwalt, Gregor, Grimbert, Guido, Gundhard, Gundhart, Gundmar, Gundolf, Gunfried, Gunhard, Gunnar, Gunter, Gunthard, Gunther, Guntmar, Guntram, Gustav, Gustel, Gustl, Hadubert, Hagen, Haimo, Hanfried, Hannes, Hanno, Hanns, Hannsgeorg, Hannspeter, Hans, Hansdieter, Hansfried, Hansfriedrich, Hansgeorg, Hansgerd, Hansheinz, Hanshelmut, Hanshermann, Hansi, Hansjakob, Hansjoachim, Hansjochen, Hanskarl, Hansl, Hansludwig, Hansmartin, Hansotto, Hanspeter, Hanswalter, Hanswerner, Hanswilhelm, Hanswolf, Harald, Hardi, Hardo, Hardy, Hariolf, Harri, Harribert, Harro, Harry, Hartfried, Hartger, Hartlieb, Hartmann, Hartmund, Hartmut, Hartmuth, Hartwald, Hartwig, Hartwin, Hasko, Hasso, Hatto, Haug, Haymo, Heidebert, Heiderich, Heidfried, Heiko, Heilmuth, Heilwig, Heimar, Heimbert, Heimfrid, Heimhart, Heimo, Heimwald, Heiner, Heinfried, Heini, Heino, Heinolf, Heinrich, Heintje, Heinz, Heinzdieter, Heinzfried, Heinzhermann, Heinzkarl, Heinzpeter, Heinzwerner, Helbert, Helfred, Helfrid, Helfried, Helge, Helgert, Helgomar, Hellfried, Hellmut, Hellmuth, Helm, Helmar, Helmbrecht, Helmfried, Helmo, Helmrich, Hellmuth, Helmut, Helmuth, Helmward, Helwart, Helwig, Helwin, Hendrik, Henning, Henrik, Henry, Herald, Herbert, Herfried, Herger, Heribert, Herko, Hermann, Hermfried, Herold, Herrmann, Herwald, Herward, Herwart, Herwarth, Herwig, Heyko, Heyo, Hieronimus, Hieronymus, Hilar, Hilarius, Hildebert, Hildebrand, Hildemar, Hildmar, Hilfried, Hilmar, Hippolytus, Hoimar, Holger, Holk, Holm, Holmer, Horst, Horstfried, Horstmar, Hubert, Hubertus, Hugo, Humbert, Ignatz, Ignaz, Ilrich, Immanuel, Ingbert, Ingfried, Inghard, Ingmar, Ingo, Ingobert, Ingolf, Ingomar, Ingowart, Ingram, Inkmar, Innozenz, Ireneus, Irmfried, Irmin, Irminfried, Irmo, Isbert, Isfried, Isidor, Iven, Ivo, Jacob, Jakob, Jan, Jannik, Janfried, Jannick, Jean, Jens, Jo, Joachim, Jobst, Jochen, Joel, Johann, Johannes, Jonas, Jonathan, Jonny, Jons, Joscha, Joschka, Josef, Joseph, Jost, Josua, Julian, Julius, Jupp, Just, Justus, Kai, Kajetan, Karl, Karlernst, Karleugen, Karlfried, Karlfrieder, Karlfriedrich, Karlgeorg, Karlhans, Karlheiner, Karlheinrich, Karlheinz, Karlhorst, Karli, Karlmann, Karlotto, Karlpeter, Karsten, Kasimir, Kaspar, Kay, Kersten, Kevin, Kilian, Klaudius, Klaus, Klausdieter, Klauspeter, Klemens, Knut, Knuth, Konrad, Konradin, Konstantin, Korbinian, Kord, Kornelius, Kristian, Kruno, Kunibert, Kuno, Kurd, Kurt, Kurth, Lambert, Landolf, Lars, Laurentius, Laurenz, Leander, Leberecht, Lebrecht, Lenard, Lenz, Leo, Leon, Leonhard, Leonhardt, Leopold, Leuthold, Lewin, Liborius, Liebhard, Liebhardt, Lienard, Lienhard, Lienhardt, Lindmar, Linhart, Lois, Loisl, Lorenz, Lothar, Louis, Lucas, Ludger, Ludolf, Ludwig, Luitpold, Luitwin, Lukas, Lutz, Maic, Maik, Malte, Manfred, Manfried, Manhard, Manhardt, Manhold, Manuel, Marbod, Marc, Marcel, Marcellus, Marco, Marcus, Marfried, Margolf, Marian, Mario, Marius, Mark, Marko, Markolf, Markus, Markward, Markwart, Marold, Martin, Marzel, Marzellus, Mathias, Mathis, Matthias, Maurus, Max, Maximilian, Maximillian, Maxl, Mayk, Medard, Medardus, Meik, Meikel, Meinard, Meinfried, Meinhard, Meinhart, Meinold, Meinolf, Meinrad, Meinulf, Melchior, Merten, Micha, Michael, Michel, Michl, Mike, Mirco, Mirko, Mischel, Moritz, Nathanael, Neidhard, Neidhardt, Neithard, Neithart, Nepomuk, Nick, Nicki, Nicky, Nico, Nicolas, Nicolaus, Niels, Niklas, Niklaus, Niko, Nikodem, Nikodemus, Nikolas, Nikolaus, Nils, Norbert, Nordfried, Norfried, Norman, Norwin, Notfried, Notker, Nunzius, Odilo, Olaf, Olf, Oliver, Olli, Ornulf, Ortfried, Ortmund, Ortwin, Oskar, Osmund, Oswald, Oswin, Otbert, Otfried, Otger, Otheinrich, Othmar, Otmar, Ottfried, Otthard, Otthart, Otthein, Ottheinrich, Ottheinz, Otthold, Ottkar, Ottmar, Otto, Ottobert, Ottokar, Ottomar, Ottwin, Otwald, Otwin, Pankratius, Pankraz, Pascal, Patrick, Paul, Paulfried, Paulinus, Paulus, Peter, Philip, Philipp, Phillip, Phillipp, Phillippus, Pierre, Pirmin, Pius, Quintus, Quirin, Raik, Raimar, Raimer, Raimond, Raimund, Rainald, Rainer, Rainhard, Rainhardt, Rainmund, Ralf, Ralph, Randolf, Randolph, Raphael, Rasso, Raymund, Reginbert, Reginhardt, Reimo, Reimund, Reinald, Reinar, Reinbert, Reiner, Reinfried, Reinhard, Reinhardt, Reinhart, Reinhold, Reinholdt, Reinmar, Reino, Reinold, Reinulf, Reinwald, Rembert, Remigius, Renald, Renatus, Renold, Rezzo, Richard, Rico, Rigbert, Rigo, Rigobert, Rimbert, Ringo, Robby, Robert, Roberto, Rochus, Roderich, Roger, Roland, Rolf, Roman, Romanus, Ronald, Ronny, Roselius, Rotger, Rothmund, Rouven, Ruben, Rudenz, Rudger, Rudi, Rudolf, Rudolph, Runald, Runfried, Rupert, Rupertus, Ruppert, Rupprecht, Ruprecht, Rutger, Ruthard, Samuel, Sascha, Schorsch, Sebald, Sebastian, Seibold, Sepp, Seppl, Sergius, Severin, Sibrand, Sidonius, Siegbert, Siegenot, Siegert, Siegfrid, Siegfried, Sieghard, Sieghardt, Sieghart, Sieghelm, Siegmar, Siegmund, Siegulf, Siegwald, Siegward, Siegwart, Sigbert, Sigenot, Sigfrid, Sigfried, Siggi, Sighard, Sighart, Sighelm, Sigi, Sigisbert, Sigishelm, Sigismund, Sigmar, Sigmund, Sigmut, Sigolf, Sigurd, Sigward, Sigwart, Silvester, Silvio, Simon, Simpert, Sixtus, Sonnfried, Sonnhard, Sonnhardt, Stanislaus, Stefan, Steff, Steffan, Steffen, Steph, Stephan, Stephanus, Steve, Steven, Sturmhard, Sturmius, Sven, Swen, Sylvester, Sylvio, Sylvius, Tankred, Tassilo, Tell, Thankmar, Thassilo, Theo, Theobald, Theobert, Theodor, Theofried, Theohold, Theophil, Theophilus, Thielo, Thiemo, Thilo, Thomas, Thoralf, Thorsten, Tiberius, Tiburtius, Tiemo, Til, Till, Tillmann, Tilman, Tilmann, Tilo, Tim, Timmo, Timo, Timon, Timotheus, Tino, Titus, Tobias, Tom, Tommy, Toni, Tony, Toralf, Torben, Torge, Torsten, Traugott, Trauhard, Treufried, Treuhard, Treuhart, Tristan, Trudbert, Trutz, Udo, Ulf, Ulfried, Uli, Ulli, Ullrich, Ulrich, Ulvi, Ulwin, Uranius, Urban, Ursus, Utho, Uto, Utto, Utz, Uve, Uwe, Valentin, Valerian, Veit, Veith, Velten, Viktor, Vincenz, Vinzent, Vinzenz, Vitalis, Vitus, Volkard, Volkart, Volkbert, Volker, Volkhard, Volkhardt, Volkhart, Volkher, Volkmar, Volkrad, Volkward, Volkwart, Vollrath, Volrad, Walbert, Waldemar, Waldfried, Walfried, Walter, Walther, Walti, Warnfried, Wastl, Wedig, Wedigo, Weikhard, Welf, Welfhard, Wendel, Wendelin, Wendelinus, Wendemar, Wennemar, Wenzel, Werner, Wernfried, Wernhard, Wernher, Wichard, Wido, Wiegand, Wiegbert, Wieghart, Wieland, Wiethold, Wigand, Wigbert, Wiglaf, Wilbert, Wilbrand, Wilbrandt, Wilderich, Wilfrid, Wilfried, Wilhard, Wilhardt, Wilhelm, Willehad, Willhart, Willi, Willibald, Willibert, Willmar, Willrich, Willy, Wilmar, Wilmhard, Wilmut, Winand, Winfrid, Winfried, Wingolf, Winnimar, Winrich, Withold, Witmar, Wittmar, Wladislaus, Woldemar, Wolf, Wolfbert, Wolfdieter, Wolfdietrich, Wolfeckart, Wolff, Wolfgang, Wolfhard, Wolfhardt, Wolfhart, Wolfhelm, Wolfhermann, Wolfmar, Wolfram, Wolfrid, Wolfried, Wolrad, Wulf, Wulfhard, Wulfhardt, Wunibald, Wunnibald, Xaver, Xaverius, York, Zacharias, Zeno]\n   female: [Adela, Adele, Adelgund, Adelgunde, Adelheid, Adelheide, Adelina, Adelinde, Adeline, Adeltraud, Adeltraut, Adina, Adolfa, Adolfine, Adriana, Adriane, Aenne, Agata, Agatha, Agathe, Agnes, Agnieszka, Albertine, Albina, Albine, Aleksandra, Alena, Alexa, Alexandra, Alheid, Alheide, Alheidis, Alice, Alicia, Alicja, Alida, Alin, Alina, Alinde, Aline, Alix, Alla, Alma, Almtrud, Almut, Almute, Almuth, Aloisia, Aloysia, Alrun, Altraud, Altrud, Alwina, Alwine, Amalia, Amalie, Amanda, Amelie, Amely, Amrei, Ana, Anastasia, Andrea, Anemone, Aneta, Anett, Anette, Anfriede, Angela, Angelica, Angelika, Angelina, Angelique, Anica, Anika, Anita, Anja, Anje, Anka, Anke, Ann, Anna, Annabell, Annagret, Annakatrin, Annalena, Anna-Lena, Annalene, Annalies, Annaliese, Anna-Luise, Annamaria, Anna-Maria, Annamarie, Anna-Marie, Annarose, Anne, Änne, Annedore, Annedoris, Annedorle, Annegold, Annegret, Annegrete, Annegreth, Anneheide, Annehild, Annehilde, Annekathrin, Anne-Kathrin, Annekatrin, Anne-Katrin, Anneke, Annekristin, Annelen, Annelene, Anneli, Annelie, Annelies, Anneliese, Annelinde, Annelise, Annelore, Annelotte, Anneluise, Annely, Annemargret, Annemaria, Annemarie, Anne-Marie, Annemie, Annemirl, Annerike, Anneros, Annerose, Anne-Rose, Anneruth, Annetraud, Annetraude, Annetrud, Annetrude, Annett, Annette, Anni, Annie, Annika, Annina, Annita, Annkathrin, Ann-Kathrin, Annkatrin, Anny, Anouschka, Ansgard, Antja, Antje, Antoinette, Antonia, Antonie, Antonietta, Antonina, Anuschka, Apollonia, Arabella, Ariane, Arite, Arlinde, Armgard, Arnhild, Arntraud, Arzu, Aslind, Asta, Astrid, Augusta, Auguste, Augustine, Aurelia, Aynur, Ayse, Aysel, Ayten, Babett, Babette, Babsi, Barbara, Bärbel, Barbi, Barbli, Beata, Beate, Beatrice, Beatrix, Belina, Belinda, Benedicta, Benedikta, Benita, Berenike, Berit, Berna, Bernadette, Bernadine, Berngard, Bernhardine, Bernhild, Bernhilde, Berta, Bertfriede, Bertha, Berthilde, Bertina, Bertlinde, Bertwalda, Betina, Betti, Bettina, Betty, Bianca, Bianka, Biggi, Biggy, Birga, Birge, Birghild, Birgid, Birgit, Birgitt, Birgitta, Birglinde, Birke, Birkhild, Birte, Birthe, Blanka, Borka, Bozena, Branka, Brigitta, Brigitte, Bringfriede, Brit, Brita, Britt, Britta, Bruna, Brunhild, Brunhilda, Brunhilde, Brunhildis, Bruni, Burga, Burgel, Burghild, Burghilde, Burgis, Burglind, Burglinde, Burgunda, Burgunde, Burkhild, Cäcilia, Cäcilie, Camilla, Canan, Caren, Carin, Carina, Carla, Carmela, Carmen, Carmine, Carola, Carolin, Carolina, Caroline, Carsta, Caterina, Catharina, Catherina, Catherine, Cathleen, Cathrin, Catrin, Cecilia, Celia, Centa, Cersten, Chantal, Charlotte, Christa, Christamaria, Christa-Maria, Christel, Christella, Christfriede, Christhild, Christhilde, Christiana, Christiane, Christin, Christina, Christine, Christl, Christliebe, Christsolde, Cilli, Cilly, Cindy, Cirsten, Claire, Clara, Cläre, Clarissa, Claudia, Clementine, Clivia, Clotilde, Concetta, Connie, Conny, Constance, Constanze, Cora, Cordelia, Cordula, Corina, Corinna, Corinne, Cornelia, Cosima, Crescentia, Cristina, Cynthia, Dagmar, Dahlia, Dajana, Damaris, Dana, Danica, Daniela, Daniele, Danielle, Danuta, Daphne, Daria, Debora, Deborah, Dela, Delia, Denise, Desiree, Diana, Diane, Diemut, Dietburg, Dietgard, Diethild, Diethilde, Dietlind, Dietlinde, Dietmute, Dina, Dinah, Dolores, Donata, Donate, Dora, Doraline, Dorchen, Dore, Doreen, Dorena, Dorette, Dorina, Doris, Dorit, Dorith, Doritha, Doritta, Dorkas, Dorle, Dorlies, Dorlinde, Dorlis, Doro, Dorota, Dorothe, Dorothea, Dorothee, Dörte, Dörthe, Dragica, Dunja, Edda, Edelburg, Edelfriede, Edelgard, Edelinde, Edeltraud, Edeltraude, Edeltraudt, Edeltraut, Edeltrud, Edeltrudis, Edit, Edith, Editha, Edwina, Edwine, Effi, Ehrengard, Ehrentraud, Ehrentraut, Ehrentrud, Ehrentrudis, Eike, Eileen, Ekaterina, Ela, Elena, Eleni, Elenore, Eleonora, Eleonore, Elfgard, Elfgund, Elfi, Elfie, Elfrieda, Elfriede, Elfrun, Elfy, Elgard, Elgine, Eli, Elia, Elif, Elisa, Elisabet, Elisabeth, Elisabetha, Elise, Elizabeth, Elke, Ella, Ellen, Ellengard, Ellentraud, Elli, Ellinor, Elly, Elma, Elrike, Elsa, Elsabe, Elsbeth, Else, Elselore, Elselotte, Elsemarie, Elsgard, Elvira, Elvire, Elwine, Elwira, Elzbieta, Emilia, Emilie, Emine, Emma, Emmaliese, Emmi, Emmy, Engelberta, Erdheide, Erdmute, Erdmuthe, Erica, Erika, Erkhild, Erla, Erlgard, Erltrud, Erlwine, Ermelinde, Ermenhild, Erna, Ernestine, Ernstine, Ester, Esther, Etta, Eugenia, Eugenie, Eunike, Eva, Evalinde, Evamaria, Eva-Maria, Evamarie, Eva-Marie, Evangelia, Evchen, Evelin, Evelinde, Eveline, Evelore, Evelyn, Evelyne, Evi, Ewa, Ewalda, Fabiane, Fabienne, Fadime, Fanny, Fatima, Fatma, Fee, Feli, Felicia, Felicitas, Felizia, Felizitas, Ferdinande, Filippina, Filiz, Finchen, Fine, Fini, Flora, Florence, Florentine, Florine, Framhild, Franca, Francesca, Francoise, Franka, Franzi, Franziska, Frauke, Frederike, Freia, Freya, Frida, Fridegund, Friderika, Friderike, Fridoline, Frieda, Friedburg, Friedeborg, Friedeburg, Friedegard, Friedegund, Friedegunde, Friedericke, Friederike, Friederun, Friedgard, Friedhild, Friedhilde, Friedl, Friedlenchen, Friedlies, Friedliese, Friedlind, Friedlinde, Friedoline, Friedrun, Frigga, Fritzi, Frohlinde, Frohmut, Frowine, Gabi, Gabriela, Gabriele, Gabriella, Gaby, Galina, Gefion, Genia, Genoveva, Georgia, Georgine, Geraldine, Gerborg, Gerburg, Gerda, Gerdhild, Gerdhilde, Gerdi, Gerfriede, Gerheide, Gerhild, Gerhilde, Gerlind, Gerlinda, Gerlinde, Gerolda, Gerritdina, Gerta, Gerthilde, Gerti, Gertraud, Gertraude, Gertraut, Gertraute, Gertrud, Gertrude, Gertrudis, Gertrudt, Gesa, Gesche, Gesine, Geza, Giesela, Gieselind, Gila, Gilda, Gina, Giovanna, Gisa, Gisela, Giselind, Giseltraud, Gislind, Gislinde, Gitta, Gitte, Gitti, Giuseppina, Gloria, Godelind, Goldina, Goldine, Goldtraud, Gönül, Gordana, Gotelind, Gotlind, Gottfrieda, Gottfriede, Gottholde, Grazyna, Greta, Gretchen, Grete, Gretel, Gretl, Gretlies, Griseldis, Grit, Gritt, Gritta, Gudrun, Gudula, Gülay, Gülsen, Gülten, Gunda, Gundel, Gundela, Gundemarie, Gundhild, Gundhilde, Gundi, Gundula, Gunhild, Gunhilde, Gunthild, Gustel, Gusti, Gustl, Hadburg, Hadmut, Hadmuthe, Hadumod, Hadwig, Halina, Hanife, Hanna, Hannah, Hannchen, Hanne, Hannegret, Hannelene, Hannelie, Hanneliese, Hannelore, Hanne-Lore, Hannelotte, Hannemarie, Hannerose, Hannetraud, Hanni, Hannmeike, Hanny, Haralda, Harda, Harriet, Hatice, Hedda, Hedi, Hedwig, Hedy, Heide, Heidegard, Heidegret, Heidegunde, Heidelies, Heideliese, Heidelind, Heidelinde, Heideline, Heidelore, Heidemaria, Heidemarie, Heide-Marie, Heiderose, Heidetraud, Heidi, Heidrun, Heidy, Heike, Heilwig, Heimgard, Heimtraud, Helen, Helena, Helene, Helga, Helgard, Helgrid, Heliane, Hella, Hellgard, Helma, Helmgard, Helmine, Helmtraud, Helmtraut, Helmtrud, Helrike, Heltrud, Henni, Henny, Henri, Henriette, Henrike, Herlind, Herlinde, Herma, Hermelinda, Hermelinde, Hermi, Hermine, Herta, Hertha, Hertraud, Herwiga, Herzlinde, Hetty, Hilda, Hildburg, Hildburga, Hilde, Hildeburg, Hildegard, Hildegardt, Hildegart, Hildegund, Hildegunde, Hildelies, Hildelind, Hildemarie, Hilderose, Hildetraud, Hildrun, Hildtraud, Hilgrun, Hilma, Hiltraud, Hiltraut, Hiltrud, Hiltrude, Hiltrun, Holdina, Holle, Huberta, Hubertina, Hubertine, Hulda, Huldine, Hülya, Ida, Idamarie, Ignatia, Ignazia, Ildiko, Ilka, Ilona, Ilonka, Ilsa, Ilsabe, Ilse, Ilsedore, Ilsefriede, Ilsegard, Ilsegret, Ilselore, Ilsemarie, Ilseruth, Ilsetraud, Ilsetraut, Imelda, Imke, Ina, Ines, Inga, Inge, Ingeborg, Ingeburg, Ingedore, Ingelene, Ingelies, Ingelinde, Ingelore, Ingelotte, Ingemarie, Ingerose, Ingeruth, Ingetraud, Ingetraut, Ingetrud, Ingolde, Ingrid, Ingried, Ingrun, Ingunde, Inka, Inken, Inna, Insa, Ira, Irena, Irene, Irina, Iris, Irlanda, Irma, Irmela, Irmelie, Irmelin, Irmelinde, Irmengard, Irmengild, Irmentraud, Irmentraut, Irmfriede, Irmgard, Irmgarda, Irmgardt, Irmhild, Irmhilde, Irmi, Irmingard, Irmintraud, Irmlind, Irmlinde, Irmtraud, Irmtraut, Irmtrud, Irmtrude, Isa, Isabel, Isabell, Isabella, Isabelle, Isedore, Iselore, Isgard, Ishild, Ishilde, Ismene, Isolde, Ivana, Ivanka, Ivette, Ivonne, Iwona, Jacqueline, Jadwiga, Jana, Jane, Janet, Janett, Janette, Janin, Janina, Janine, Janna, Jannine, Jaqueline, Jasmin, Jasmina, Jeanett, Jeanette, Jeannette, Jeannine, Jelena, Jennifer, Jenny, Jessica, Jessika, Jo, Joana, Joanna, Johanna, Johanne, Johannette, Jolanda, Jolande, Jolanta, Jolante, Jolantha, Jolanthe, Josefa, Josefine, Josepha, Josephina, Josephine, Judith, Juditha, Julia, Juliana, Juliane, Julie, Justina, Justine, Jutta, Kareen, Karen, Karena, Karin, Karina, Karla, Karola, Karolin, Karolina, Karoline, Karsta, Kassandra, Kata, Katalin, Katarina, Katarzyna, Käte, Katerina, Katharina, Katharine, Käthe, Katherina, Kathi, Käthi, Kathleen, Kathrein, Kathrin, Kathrina, Kathrinchen, Kathy, Kati, Katja, Katrein, Katrin, Katrina, Katy, Kersten, Kerstin, Kira, Kirsten, Kirstin, Klara, Kläre, Klarissa, Klaudia, Klementine, Klothilde, Klothildis, Klotilde, Konstanze, Kora, Kordelia, Kordula, Korinna, Kornelia, Kreszentia, Kreszenz, Kreszenzia, Kriemhild, Kriemhilde, Krimhild, Krimhilde, Krista, Kristiane, Kristin, Kristina, Kristine, Krystyna, Kunigunda, Kunigunde, Kyra, Laila, Lara, Larissa, Laura, Lea, Leila, Lena, Lene, Leni, Lenore, Leokadia, Leongard, Leonharda, Leoni, Leonie, Leonore, Leopoldina, Leopoldine, Lerke, Leyla, Lia, Liane, Lidia, Lidija, Lidwina, Liebgard, Liebgunde, Liesa, Liesbeth, Lieschen, Liesegret, Liesel, Lieselene, Lieselore, Lieselotte, Liesgret, Liesl, Lili, Lilia, Lilian, Liliana, Liliane, Lilibeth, Lilija, Lilli, Lilly, Lilo, Lily, Lina, Linda, Linde, Lindemarie, Lindhilde, Linhilde, Lintrud, Lioba, Lisa, Lisanne, Lisbeth, Lise, Lisel, Liselore, Liselotte, Lisette, Lisl, Lissi, Lissy, Ljiljana, Ljubica, Ljudmila, Lona, Loni, Lore, Lorelies, Loreliese, Loremarie, Loretta, Lotte, Lottelore, Lottemaria, Lotti, Louise, Lucia, Lucie, Ludmila, Ludmilla, Ludwiga, Ludwina, Luisa, Luise, Luitgard, Luitgart, Luka, Luzia, Luzie, Lydia, Lysann, Madeleine, Madita, Madleine, Madlen, Magarete, Magda, Magdalena, Magdalene, Magret, Magrit, Maike, Maja, Maleen, Malgorzata, Malve, Malwine, Mandy, Mania, Manja, Manuela, Mara, Marcella, Mareen, Marei, Mareike, Mareile, Maren, Marena, Marfriede, Marga, Margaret, Margareta, Margarete, Margareth, Margaretha, Margarethe, Margarita, Margaritta, Margit, Margita, Margitta, Margitte, Margot, Margret, Margreth, Margrid, Margrit, Margund, Margunde, Marhild, Maria, Maria-Luise, Mariana, Marianna, Marianne, Maria-Theresia, Marica, Marie, Mariechen, Mariedore, Mariegret, Mariele, Marielene, Marielies, Marieliese, Marielouise, Marie-Louise, Marieluise, Marie-Luise, Marietheres, Marie-Theres, Marie-Therese, Marietraud, Marietta, Marija, Marika, Marilen, Marilene, Marilu, Marina, Marinette, Mariola, Marion, Marisa, Marit, Marita, Maritta, Marjan, Marleen, Marlen, Marlene, Marli, Marlies, Marliese, Marlinde, Marlis, Marlit, Marlitt, Marta, Martha, Martina, Martine, Martrud, Mary, Marzena, Mathilde, Maxi, Maxie, Maximiliane, Maya, Mechthild, Mechthilde, Mechtild, Mechtilde, Meike, Meinfriede, Melanie, Melinda, Melisande, Melissa, Melita, Melitta, Meral, Mercedes, Merlind, Merlinde, Meryem, Meta, Mia, Michaela, Michaele, Michelle, Milena, Milica, Milka, Milli, Mina, Minna, Mira, Mirella, Miriam, Mirja, Mirjam, Mirjana, Miroslawa, Mona, Monica, Monika, Monique, Monja, Muthild, Myriam, Myrjam, Myrta, Nada, Nadeschda, Nadeshda, Nadia, Nadin, Nadine, Nadja, Nancy, Nanni, Natali, Natalia, Natalie, Natalija, Natalja, Natascha, Nathalie, Nelli, Nelly, Nermin, Nevenka, Nicola, Nicole, Nikola, Nina, Noa, Nora, Nordrun, Norma, Nortrud, Nortrun, Notburg, Notburga, Nuran, Nuray, Nurten, Oda, Olav, Olena, Olga, Olinde, Olivia, Ortraud, Ortrud, Ortrun, Oslinde, Otti, Ottilia, Ottilie, Oxana, Pamela, Paola, Pascale, Patricia, Patrizia, Paula, Paulina, Pauline, Peggy, Petra, Philine, Philipine, Philomena, Pia, Poldi, Polina, Priska, Rabea, Radegundis, Radmila, Rahel, Raimunde, Raingardis, Raisa, Raissa, Ramona, Raphaela, Rathgunde, Rauthgundis, Rebecca, Rebecka, Rebekka, Regelinde, Regelindis, Regina, Regine, Reglind, Reglindis, Reinburga, Reinfriede, Reingard, Reinhardine, Reinhild, Reinhilde, Reinhildis, Reinholdine, Reinlinde, Reintraud, Reintraut, Relindis, Rena, Renata, Renate, Reni, Renilde, Reny, Resel, Resi, Resie, Resilotte, Rhiane, Ria, Riana, Ribana, Ricarda, Richarda, Richardis, Rilana, Rita, Romana, Romi, Rommy, Romy, Rosa, Rosalia, Rosalie, Rosalinde, Rosa-Maria, Rosamarie, Rose, Rosegret, Rosegunde, Rosehilde, Rosel, Roselene, Roselette, Roselies, Roseliese, Roselind, Roselinde, Roseline, Roselore, Roselotte, Rosely, Rosemaria, Rosemarie, Rose-Marie, Rosemie, Rosetraut, Rosi, Rosie, Rosina, Rosita, Rositta, Rosl, Roslinda, Roslinde, Rosmarie, Roswita, Roswitha, Rotraud, Rotraut, Rudolfina, Runhild, Ruth, Ruthild, Ruthilde, Sabina, Sabinchen, Sabine, Sabrina, Sabrine, Sahra, Samira, Sandra, Sandy, Sanna, Sara, Sarah, Sarina, Saskia, Scholastika, Schwanhild, Selina, Selma, Semra, Senta, Serafine, Serpil, Sevim, Sibel, Sibilla, Sibille, Sibyl, Sibylla, Sibylle, Sidonie, Siegberta, Siegbritta, Siegfrieda, Siegfriede, Siegharda, Sieghild, Sieghilde, Sieglind, Sieglinde, Siegrid, Siegried, Siegrun, Siegtraud, Siggi, Sighild, Sighilde, Sigi, Siglind, Siglinde, Sigrid, Sigrun, Sigtraud, Sigtrud, Sigunde, Sigune, Silja, Silke, Silva, Silvana, Silvia, Simona, Simone, Simperta, Sina, Sinaida, Sindy, Siska, Sissy, Slavica, Sofia, Sofie, Solveig, Songül, Sonia, Sonja, Sonngard, Sonnhild, Sonnhilde, Sophia, Sophie, Stefani, Stefania, Stefanie, Steffi, Steffie, Stella, Stephania, Stephanie, Stilla, Sunhild, Susan, Susana, Susann, Susanna, Susanne, Suse, Susen, Susette, Susi, Suzanne, Svea, Svenja, Svetlana, Swanhild, Swanhilde, Swantje, Swetlana, Sybil, Sybill, Sybilla, Sybille, Sylke, Sylvana, Sylvelin, Sylvia, Sylvie, Sylwia, Tabea, Tamara, Tania, Tanja, Tatiana, Tatjana, Telse, Teresa, Thea, Theda, Thekla, Theobalda, Theodeline, Theodolinde, Theodora, Theodore, Theolinde, Theres, Theresa, Therese, Theresia, Thilde, Thurid, Thusnelda, Tilla, Tilli, Tilly, Tina, Traude, Traudel, Traudi, Traudl, Traudlinde, Trautchen, Traute, Trauthilde, Trautlind, Trautlinde, Trinchen, Trixi, Trude, Trudel, Trudi, Tülay, Türkan, Ula, Ulfrida, Ulla, Ulrike, Undine, Unette, Urda, Ursel, Ursl, Ursula, Ursulina, Urszula, Urta, Urte, Urthe, Uschi, Uta, Ute, Utta, Valentina, Valentine, Valeri, Valeria, Valerie, Valeska, Vanessa, Vera, Verena, Verona, Veronica, Veronika, Veronique, Vesna, Victoria, Viktoria, Viola, Violetta, Virginia, Viviane, Vreneli, Vreni, Vroni, Walburg, Walburga, Walda, Waldburga, Waldburgis, Waldfriede, Waldtraud, Waldtraut, Walentina, Walfriede, Walli, Wally, Waltraud, Waltraut, Waltrud, Waltrude, Waltrudis, Wanda, Wencke, Wendela, Wendelgard, Wendelin, Wendeline, Wenke, Wera, Werngard, Wernhild, Wibke, Wiebke, Wilfriede, Wilgard, Wilhelma, Wilhelmine, Wilja, Willma, Wilma, Wiltraud, Wiltraut, Wiltrud, Wiltrude, Wiltrudis, Winfriede, Wintrud, Witta, Wolfgard, Wolfhilde, Xenia, Yasemin, Yasmin, Yvette, Yvonne, Zdenka, Zehra, Zenta, Zenzi, Zeynep, Zilli, Zita, Zofia]\nlastNames:\n  male: [Abel, Abele, Abels, Abraham, Abt, Achatz, Achenbach, Acker, Ackermann, Adam, Adams, Adler, Adolf, Adolph, Adrian, Ahlers, Ahrens, Aigner, Alber, Albers, Albert, Albrecht, Alex, Alexander, Alles, Alt, Althaus, Althoff, Altmann, Altmeyer, Amann, Amend, Ammann, Ammon, Anders, Andersen, Andreas, Andres, Andresen, Anger, Angerer, Angermann, Anton, Apel, Appel, Appelt, Arend, Arendt, Arens, Arlt, Armbruster, Arndt, Arnold, Arslan, Artmann, Aschenbrenner, Asmus, Assmann, Aßmann, Auer, Augustin, Aust, Aydin, Bach, Bacher, Bächle, Bachmann, Bachmeier, Back, Bäcker, Backes, Backhaus, Bade, Bader, Baer, Bahr, Bähr, Baier, Baldauf, Balke, Baltes, Balzer, Bamberger, Bangert, Bär, Baron, Bartel, Bartels, Bartelt, Barth, Barthel, Bartl, Bartmann, Bartsch, Bartz, Barz, Basler, Bast, Bastian, Bätz, Bauch, Bauer, Bäuerle, Baum, Baumann, Baumbach, Baumeister, Baumer, Bäumer, Baumert, Baumgart, Baumgärtel, Baumgarten, Baumgartner, Baumgärtner, Bäumler, Baur, Bausch, Bayer, Becher, Becht, Bechtel, Bechtold, Beck, Becker, Beckers, Beckert, Beckmann, Beer, Beermann, Beetz, Behling, Behm, Behn, Behnke, Behr, Behrend, Behrends, Behrendt, Behrens, Behringer, Behrmann, Beier, Beil, Bell, Beller, Bellmann, Belz, Bendel, Bender, Bendig, Benecke, Benner, Benning, Bensch, Benz, Berberich, Berens, Berg, Bergemann, Bergen, Berger, Bergmann, Bergner, Berlin, Bernard, Berndt, Berner, Bernhard, Bernhardt, Berthold, Bertram, Bertsch, Best, Bethge, Bethke, Betz, Beutel, Beutler, Beyer, Bichler, Bickel, Bieber, Biedermann, Biehl, Bielefeld, Bienert, Bier, Biermann, Biller, Binder, Birk, Birke, Birkholz, Birkner, Birner, Bischof, Bischoff, Bitter, Bittner, Bitzer, Blank, Blanke, Blankenburg, Blaschke, Blau, Blechschmidt, Blessing, Bley, Bloch, Block, Blohm, Blome, Bluhm, Blum, Blume, Blümel, Blumenthal, Bochmann, Bock, Böck, Böcker, Böckmann, Bode, Boden, Bogner, Bohl, Bohlen, Böhler, Bohlmann, Bohm, Böhm, Böhme, Böhmer, Bohn, Bohne, Böhner, Bohnert, Böhnke, Bohr, Böhringer, Böker, Boldt, Boll, Boller, Bollmann, Bolte, Bolz, Bongartz, Böning, Bönisch, Bonk, Bonn, Boos, Bopp, Borchardt, Borchers, Borchert, Börger, Borgmann, Bork, Bormann, Born, Bornemann, Börner, Borowski, Borrmann, Bosch, Bösch, Böse, Bosse, Both, Bothe, Bott, Böttcher, Böttger, Böttner, Boy, Bracht, Brack, Brand, Brandenburg, Brandes, Brandl, Brandner, Brandstetter, Brandt, Brauer, Bräuer, Braun, Braune, Brauner, Bräutigam, Brecht, Brede, Brehm, Brehmer, Breidenbach, Breier, Breit, Breitenbach, Bremer, Brendel, Brennecke, Brenner, Bretschneider, Brettschneider, Breu, Breuer, Breunig, Breyer, Brill, Brink, Brinker, Brinkmann, Brix, Brock, Bröcker, Brockmann, Bröker, Brosch, Brose, Bruch, Brück, Brucker, Brückmann, Bruckner, Brückner, Bruder, Brüggemann, Brugger, Brühl, Bruhn, Brummer, Brümmer, Brune, Brüning, Brunke, Brunner, Bruns, Brust, Buch, Büchel, Bucher, Buchholz, Büchler, Buchmann, Buchner, Büchner, Buchwald, Buck, Bücker, Budde, Buhl, Bühler, Bühner, Buhr, Bülow, Bunge, Bünger, Bunk, Burg, Burger, Bürger, Burghardt, Burk, Burkard, Burkart, Burkert, Burkhard, Burkhardt, Burkhart, Bürkle, Burmeister, Burmester, Busch, Busche, Büscher, Buschmann, Buse, Büsing, Buss, Buß, Busse, Bußmann, Büttner, Butz, Carl, Carstens, Carstensen, Caspari, Casper, Celik, Christ, Christian, Christiansen, Christmann, Christoph, Clasen, Claßen, Claus, Clausen, Clauß, Claußen, Clemens, Coenen, Cohrs, Conrad, Conradi, Cordes, Cornelius, Cramer, Cremer, Czech, Dahl, Dahlke, Dahlmann, Dahm, Dahmen, Dahms, Dallmann, Damm, Dammann, Daniel, Daniels, Dannenberg, Danner, Daub, Daum, David, de, Debus, Decker, Deckert, Degen, Degenhardt, Degner, Dehn, Deininger, Demir, Demmer, Demuth, Denecke, Dengler, Denk, Denker, Deppe, Derksen, Dettmann, Dettmer, Deutsch, Deutschmann, Dewald, Dick, Dickmann, Dieckmann, Diederich, Diederichs, Diedrich, Diefenbach, Diehl, Diekmann, Diel, Diemer, Diener, Dierkes, Dierks, Dietel, Dieterich, Dieterle, Dietl, Dietrich, Dietz, Dietze, Dietzel, Dill, Dillmann, Dinkel, Dinter, Dippel, Dirks, Distler, Dittmann, Dittmar, Dittmer, Dittrich, Dobler, Dogan, Döhler, Dohmen, Döhring, Dohrmann, Dold, Doll, Döll, Dombrowski, Domke, Donath, Donner, Dörfler, Döring, Dorn, Dorner, Dörner, Dörr, Dorsch, Dose, Dost, Dräger, Drechsel, Drechsler, Drees, Dreher, Dreier, Drescher, Dressel, Dressler, Dreßler, Drewes, Drews, Drexler, Dreyer, Dröge, Droste, Dück, Duda, Dudek, Dunkel, Dunker, Düring, Dürr, Duwe, Dyck, Ebel, Ebeling, Eberhard, Eberhardt, Eberl, Eberle, Eberlein, Ebert, Ebner, Eck, Eckardt, Eckart, Eckel, Ecker, Eckert, Eckhardt, Eckhoff, Eckl, Eckstein, Edel, Edelmann, Eder, Edler, Effenberger, Eger, Egger, Eggers, Eggert, Egner, Ehlers, Ehlert, Ehmann, Ehrenberg, Ehret, Ehrhardt, Ehrich, Ehrlich, Ehrmann, Eibl, Eich, Eichholz, Eichhorn, Eichinger, Eichler, Eichmann, Eichner, Eickhoff, Eifler, Eilers, Eisele, Eisenmann, Eismann, Eisner, Eitel, Eller, Elsner, Emde, Emmerich, Emmert, Emrich, Ender, Enderle, Enders, Endres, Engel, Engelbrecht, Engelhard, Engelhardt, Engelke, Engelmann, Engels, Engert, Engl, Engler, Englert, Enke, Epp, Epple, Eppler, Erb, Erbe, Erben, Erdmann, Erhard, Erhardt, Erler, Ernst, Ertel, Ertl, Esch, Escher, Esser, Eßer, Essig, Euler, Evers, Ewald, Ewers, Ewert, Exner, Faber, Fabian, Falk, Falke, Falkenberg, Faller, Färber, Faßbender, Fast, Fath, Faulhaber, Faust, Fechner, Fehr, Fehrenbach, Feige, Feil, Feiler, Feist, Felber, Feld, Feldhaus, Feldmann, Feldmeier, Feller, Fellner, Fels, Fendt, Fengler, Fenske, Fenzl, Ferber, Ferstl, Fett, Fetzer, Fey, Fichtner, Fick, Fiebig, Fiedler, Figge, Findeisen, Finger, Fink, Finkbeiner, Finke, Fisch, Fischbach, Fischer, Fitz, Fix, Flach, Flaig, Fleck, Fleckenstein, Fleischer, Fleischhauer, Fleischmann, Flemming, Flick, Flohr, Flügel, Flügge, Focke, Forster, Förster, Forstner, Förtsch, Fox, Frahm, Franck, Frank, Franke, Franken, Franz, Franzen, Franzke, Frech, Freese, Frei, Freiberg, Freier, Freitag, Frenz, Frenzel, Frerichs, Frese, Freudenberg, Freund, Frey, Freyer, Freytag, Frick, Fricke, Friebe, Friedel, Friedemann, Friedl, Friedmann, Friedrich, Friedrichs, Fries, Friese, Friesen, Frieß, Frings, Frisch, Fritsch, Fritsche, Fritz, Fritze, Fritzsch, Fritzsche, Fröhlich, Fromm, Fromme, Frost, Früh, Frühauf, Fuchs, Fuhr, Führer, Fuhrmann, Funk, Funke, Fürst, Fuß, Fütterer, Gabel, Gabler, Gäbler, Gabriel, Gaida, Gaiser, Gall, Galle, Ganser, Ganter, Ganz, Garbe, Gärtner, Gassner, Gaßner, Gast, Gaul, Gaus, Gebauer, Gebel, Gebert, Gebhard, Gebhardt, Gehlen, Gehrig, Gehring, Gehrke, Gehrmann, Geib, Geier, Geiger, Geis, Geisler, Geiß, Geissler, Geißler, Geist, Gellert, Gentner, Genz, Georg, George, Georgi, Geppert, Gerber, Gerdes, Gerhard, Gerhards, Gerhardt, Gericke, Gerke, Gerken, Gerlach, Gerling, Germann, Gerner, Gerstner, Gerth, Gessner, Geßner, Geyer, Giebel, Gies, Giese, Giesecke, Giesen, Gilbert, Gille, Gilles, Glas, Glaser, Gläser, Glaß, Glatz, Gleich, Gleißner, Glock, Glöckner, Glück, Göbel, Gödde, Gödecke, Goebel, Goerke, Goertz, Göhler, Gohlke, Göhring, Gold, Goldbach, Goldberg, Goldmann, Goldschmidt, Goll, Goller, Göller, Göllner, Golz, Gölz, Göpfert, Görg, Görgen, Göring, Görlich, Görner, Görtz, Götte, Gottfried, Gotthardt, Gottschalk, Gottschlich, Gottschling, Gottwald, Götz, Götze, Gräber, Grabow, Grabowski, Gradl, Graf, Gräf, Grafe, Gräfe, Grahl, Gramlich, Grams, Graß, Graßl, Grätz, Grau, Graupner, Greb, Grebe, Greger, Gregor, Greif, Greiner, Grell, Grenz, Greulich, Greve, Grewe, Griebel, Grieger, Gries, Griese, Grill, Grimm, Grimmer, Grobe, Gröger, Groh, Grohmann, Groll, Gronau, Gröne, Grosch, Gross, Groß, Grosse, Große, Grosser, Großer, Großkopf, Grossmann, Großmann, Grote, Groth, Grothe, Grube, Gruber, Gruhn, Grün, Grünberg, Grund, Grundmann, Gruner, Grüner, Grunert, Grunewald, Grünewald, Grunwald, Grünwald, Grützner, Guhl, Gundlach, Gunkel, Günter, Günther, Günzel, Gürtler, Guse, Guth, Gutjahr, Gutmann, Gutsche, Güttler, Gutzeit, Haack, Haag, Haak, Haake, Haarmann, Haas, Haase, Habel, Haberkorn, Haberl, Haberland, Häberle, Habermann, Hack, Hackbarth, Hackenberg, Hacker, Häcker, Hackl, Hackmann, Häfele, Hafner, Häfner, Hagedorn, Hagel, Hägele, Hagemann, Hagen, Hager, Hahn, Hahne, Hähnel, Haider, Haimerl, Hain, Hake, Haller, Hallmann, Hamacher, Hamann, Hamm, Hammann, Hammel, Hammer, Hammerschmidt, Hammes, Hampe, Hampel, Handke, Hänel, Hanf, Hanisch, Hanke, Hannemann, Hannig, Hans, Hänsch, Hansel, Hänsel, Hansen, Hansmann, Hantke, Happel, Harder, Hardt, Häring, Harms, Harnisch, Harrer, Härtel, Harter, Harth, Hartig, Hartl, Härtl, Hartmann, Hartung, Hartwich, Hartwig, Hase, Hass, Haß, Hasse, Hassel, Hau, Hauber, Haubold, Hauck, Hauer, Haufe, Haug, Hauk, Hauke, Haupt, Hauptmann, Haus, Hauschild, Hauser, Häuser, Häusler, Hausmann, Hausner, Häußler, Haußmann, Haustein, Heber, Hecht, Heck, Heckel, Hecker, Heckmann, Hedrich, Heer, Heese, Hegemann, Heger, Heid, Heide, Heidemann, Heiden, Heidenreich, Heider, Heidrich, Heidt, Heigl, Heil, Heiland, Heilig, Heilmann, Heim, Heimann, Hein, Heindl, Heine, Heinecke, Heinemann, Heinen, Heinicke, Heinig, Heinisch, Heinke, Heinlein, Heinrich, Heinrichs, Heins, Heintz, Heinz, Heinze, Heinzel, Heinzelmann, Heinzmann, Heise, Heiser, Heisig, Heiß, Heitmann, Heitz, Heizmann, Helbig, Helbing, Held, Heldt, Helfrich, Hell, Heller, Hellmann, Hellmich, Hellmuth, Hellwig, Helm, Helmer, Helmke, Helms, Hemmer, Hempel, Hendricks, Hengst, Henke, Henkel, Henn, Henne, Hennecke, Hennemann, Hennig, Henning, Henninger, Hennings, Henrich, Henrichs, Henschel, Hense, Hensel, Henseler, Hentschel, Henze, Hepp, Heppner, Herb, Herber, Herbert, Herbst, Herdt, Herget, Hering, Hermann, Hermanns, Hermes, Herold, Herr, Herrmann, Hertel, Herter, Hertlein, Hertwig, Herwig, Herz, Herzberg, Herzig, Herzog, Hess, Heß, Hesse, Hessel, Heßler, Hettich, Hetzel, Heuer, Heumann, Heuser, Hey, Heyer, Heymann, Heyn, Heyne, Hieber, Hielscher, Hierl, Hilbert, Hilbig, Hild, Hildebrand, Hildebrandt, Hildenbrand, Hilger, Hilgers, Hill, Hille, Hillebrand, Hillenbrand, Hiller, Hillmann, Hilmer, Hilpert, Himmel, Hinkel, Hinrichs, Hinrichsen, Hintz, Hintze, Hinz, Hinze, Hinzmann, Hipp, Hirsch, Hirschfeld, Hirschmann, Hirt, Hirth, Hoch, Hochmuth, Hock, Hof, Hofbauer, Hofer, Höfer, Hoff, Hoffmann, Hoffmeister, Höfler, Höfling, Hofmann, Hofmeister, Hofstetter, Höft, Höger, Hohl, Hohmann, Hohn, Höhn, Höhne, Holl, Höll, Holland, Holler, Höller, Hollmann, Hollstein, Holm, Hölscher, Holst, Holstein, Holtkamp, Holtmann, Holtz, Holz, Holzapfel, Hölzel, Holzer, Hölzer, Holzinger, Hölzl, Holzmann, Holzner, Holzwarth, Homann, Hommel, Hönig, Hopf, Höpfner, Hopp, Hoppe, Höppner, Hörl, Hörmann, Horn, Hörner, Hornig, Hornung, Horst, Horstmann, Horvath, Hotz, Hoyer, Huber, Hubert, Hübner, Hübsch, Huck, Hufnagel, Hug, Hügel, Huhn, Hüls, Hülsmann, Hummel, Hümmer, Hund, Hundertmark, Hundt, Hunger, Huppertz, Husemann, Husmann, Huth, Hüther, Hutter, Hütter, Hüttner, Ihle, Ilg, Imhof, Irmer, Irrgang, Israel, Jablonski, Jäckel, Jacob, Jacobi, Jacobs, Jacobsen, Jaeger, Jäger, Jahn, Jahnke, Jahns, Jäkel, Jakob, Jakobi, Jakobs, Jänicke, Janik, Janke, Jankowski, Jansen, Janson, Janssen, Janßen, Janz, Janzen, Jäschke, Jasper, Jauch, Jehle, Jensen, Jentsch, Jentzsch, Jeschke, Jeske, Jesse, Jessen, Joachim, Jobst, Jochum, Johann, Johannes, Johannsen, John, Jonas, Joos, Jordan, Jörg, Joseph, Jost, Jünemann, Jung, Jungbluth, Junge, Jünger, Junghans, Jüngling, Jungmann, Junk, Junker, Jürgens, Jürgensen, Just, Jüttner, Kaczmarek, Kaden, Käfer, Kahl, Kahle, Kähler, Kahlert, Kaiser, Kalb, Kalinowski, Kalisch, Kallenbach, Kaltenbach, Kaluza, Kaminski, Kamm, Kammer, Kammerer, Kämmerer, Kamp, Kampe, Kämpf, Kampmann, Kamps, Kania, Kanzler, Kapp, Kappel, Kappes, Kappler, Kaps, Karcher, Karg, Karger, Karl, Karle, Karsten, Käser, Kaspar, Kasper, Kast, Kasten, Kastl, Kastner, Kästner, Katz, Katzer, Kauer, Kaufhold, Kaufmann, Kaul, Kautz, Kaya, Kayser, Keck, Kegel, Kehl, Kehr, Kehrer, Keil, Keim, Keitel, Keller, Kellermann, Kellner, Kelm, Kemmer, Kempe, Kemper, Kempf, Keppler, Kerber, Kerkhoff, Kern, Kerner, Kerscher, Kersten, Kersting, Kessel, Kessler, Keßler, Ketterer, Kettler, Kettner, Kick, Kiefer, Kiel, Kienle, Kienzle, Kiesel, Kiesewetter, Kießling, Kilian, Kilic, Kimmel, Kind, Kinder, Kindermann, Kindler, Kinzel, Kipp, Kirch, Kircher, Kirchhof, Kirchhoff, Kirchner, Kirsch, Kirschbaum, Kirschner, Kirst, Kirstein, Kirsten, Kissel, Kistner, Kittel, Klaas, Klages, Klaiber, Klapper, Klar, Klasen, Klassen, Klatt, Klaus, Kleber, Klee, Kleemann, Klein, Kleine, Kleiner, Kleinert, Kleinhans, Kleinschmidt, Klement, Klemm, Klenk, Klett, Kley, Kliem, Klier, Kling, Klingbeil, Klinge, Klingenberg, Klinger, Klingler, Klink, Klinke, Klinkhammer, Klocke, Klöckner, Kloos, Klos, Klose, Kloss, Kloß, Klostermann, Kloth, Klotz, Klug, Kluge, Klumpp, Kluth, Knab, Knabe, Knapp, Knappe, Knauer, Knauf, Knaus, Knebel, Knecht, Knittel, Knoblauch, Knobloch, Knoch, Knoche, Knödler, Knoll, Knoop, Knop, Knopf, Knopp, Knorr, Knoth, Knott, Knüppel, Knuth, Kober, Koch, Köcher, Kock, Koenen, Kögel, Kögler, Kohl, Köhl, Kohler, Köhler, Kohlmann, Kohn, Köhn, Köhne, Kohnen, Kolb, Kolbe, Kolbeck, Kolberg, Kölbl, Koll, Koller, Köller, Kölling, Kollmann, Köllner, Kolodziej, Kölsch, König, Königs, Konrad, Koop, Koopmann, Kopf, Köpke, Kopp, Koppe, Köppe, Köppel, Köppen, Köppl, Korb, Körber, Korn, Körner, Korte, Korth, Kortmann, Koslowski, Kost, Köster, Kösters, Köstler, Kothe, Kötter, Kowalewski, Kowalski, Kracht, Kraemer, Krafft, Kraft, Krah, Krahl, Krahn, Kramer, Krämer, Krammer, Kramp, Krampe, Kranz, Krapf, Krapp, Kratz, Kratzer, Kraus, Krause, Krauss, Krauß, Krauße, Krawczyk, Krebs, Kreft, Kreis, Krell, Kremer, Kremser, Krenz, Kress, Kreß, Kretschmann, Kretschmer, Kretz, Kretzer, Kretzschmar, Kreutz, Kreutzer, Kreuz, Kreuzer, Krey, Krieg, Kriegel, Krieger, Krings, Kröber, Kröger, Krohn, Kroll, Kröll, Kromer, Krone, Kröner, Kropf, Kropp, Krug, Krüger, Krull, Krumm, Krupp, Kruppa, Kruse, Kube, Kübler, Kuch, Küchler, Kuck, Kück, Kugel, Kugler, Kügler, Kuhl, Kühl, Kuhlmann, Kuhn, Kühn, Kühne, Kühnel, Kühner, Kuhnert, Kühnert, Kühnle, Kuhnt, Kuhr, Kullmann, Kümmel, Kummer, Kunath, Kunde, Kunert, Kunkel, Kunst, Kuntz, Kuntze, Kunz, Kunze, Künzel, Kunzmann, Küper, Kupfer, Kupka, Küpper, Küppers, Kürschner, Kurth, Kurtz, Kurz, Kusch, Kuschel, Küster, Küsters, Kutscher, Kutz, Kutzner, Lachmann, Lackner, Ladwig, Lambert, Lambertz, Lambrecht, Lamm, Lammers, Lampe, Lampert, Lamprecht, Landgraf, Landmann, Landwehr, Lang, Langbein, Lange, Langen, Langenbach, Langer, Langguth, Langhammer, Langhans, Langner, Lanz, Laskowski, Lau, Laub, Laube, Lauber, Laue, Lauer, Laufer, Laumann, Lautenschläger, Lauterbach, Laux, Lay, Leber, Lechner, Leder, Lederer, Lehmann, Lehmkuhl, Lehnen, Lehner, Lehnert, Lehr, Leibold, Leicht, Leinweber, Leipold, Leis, Leistner, Leitner, Lembke, Lemke, Lemm, Lemmer, Lenk, Lennartz, Lentz, Lenz, Lenzen, Leonhard, Leonhardt, Leopold, Lerch, Lesch, Leupold, Leuschner, Lewandowski, Lex, Ley, Licht, Lichtenberg, Lieb, Liebe, Liebert, Liebich, Liebig, Liebl, Liebmann, Liebscher, Lieder, Liedtke, Liese, Lieske, Lietz, Limbach, Limmer, Lind, Linde, Lindemann, Linden, Lindenau, Lindenberg, Linder, Lindner, Link, Linke, Linn, Linnemann, Linz, Lipinski, Lipp, Lippert, Lippmann, Lippold, List, Loch, Locher, Lochner, Löffler, Lohmann, Lohr, Löhr, Lohse, Loibl, Loos, Loose, Lorenz, Lorenzen, Lösch, Löser, Loth, Lotz, Löw, Löwe, Löwen, Lübben, Lübke, Lucas, Lucht, Lück, Lücke, Lüdecke, Lüdemann, Lüders, Ludewig, Lüdtke, Ludwig, Luft, Lühr, Lührs, Lukas, Lüke, Lüth, Luther, Lutter, Lutz, Lux, Maack, Maas, Maaß, Maaßen, Mack, Mader, Mäder, Mager, Mahler, Mahn, Mahnke, Mahr, Mai, Maier, Mainka, Mair, Maisch, Maiwald, Majewski, Mandel, Mang, Mangold, Manke, Mann, Manske, Manthey, Manz, Marek, Mark, Markert, Markgraf, Markmann, Marks, Markus, Marquardt, Marschall, Marschner, Marten, Martens, Martin, Martini, Marx, März, Maschke, Mast, Matern, Matheis, Mathes, Matt, Mattern, Mattes, Matthes, Matthias, Matthies, Matthiesen, Matz, Matzke, Mau, Mauch, Maucher, Mauer, Maul, Maurer, Maus, May, Mayer, Mayerhofer, Mayr, Meder, Mehl, Mehler, Mehlhorn, Mehner, Mehnert, Meier, Meindl, Meinecke, Meinel, Meiners, Meinert, Meinhardt, Meinke, Meise, Meisel, Meiser, Meissner, Meißner, Meister, Meixner, Melcher, Melchior, Melzer, Mende, Menge, Mengel, Menges, Menke, Menne, Menz, Menzel, Merk, Merkel, Merker, Merkl, Merkle, Merten, Mertens, Mertes, Merz, Messer, Messerschmidt, Messner, Mester, Metz, Metzger, Metzler, Metzner, Meurer, Meusel, Meuser, Mewes, Mey, Meyer, Mezger, Michael, Michaelis, Michalski, Michel, Michels, Michl, Michler, Middendorf, Mielke, Mies, Milde, Mildner, Miller, Milz, Mischke, Mitschke, Mittag, Mittelstädt, Mittermeier, Mittmann, Möbius, Möbus, Mock, Möckel, Möhle, Mohr, Möhring, Moldenhauer, Molitor, Moll, Möller, Möllers, Möllmann, Mönch, Montag, Moog, Moor, Moos, Moosmann, Morgenroth, Morgenstern, Moritz, Mosch, Moser, Möser, Motz, Mucha, Mück, Mücke, Mueller, Mühl, Mühlbauer, Mühlberger, Mühle, Müller, Münch, Mund, Mundt, Münster, Munz, Münz, Muth, Mutschler, Nachtigall, Nadler, Nagel, Nägele, Nagler, Nagy, Naß, Nau, Naujoks, Naumann, Nebel, Neef, Neff, Neher, Nehls, Nehring, Neitzel, Nelles, Nestler, Neu, Neubauer, Neuber, Neuberger, Neubert, Neufeld, Neugebauer, Neuhaus, Neumaier, Neumann, Neumeier, Neumeister, Neumüller, Neuner, Ney, Nickel, Nickl, Nicolai, Niebuhr, Niedermeier, Niehaus, Niehoff, Niehues, Nielsen, Niemann, Niemeier, Niemeyer, Nienhaus, Niermann, Nies, Nießen, Niggemann, Niklas, Nikolaus, Nissen, Nitsch, Nitsche, Nitschke, Nitz, Nitzsche, Nix, Noack, Noe, Nolden, Noll, Nolte, Nolting, Nordmann, Novak, Nowack, Nowak, Nürnberger, Nußbaum, Ober, Oberländer, Oberle, Obermaier, Obermeier, Obst, Ochs, Oehler, Oehme, Oertel, Oestreich, Offermann, Ohl, Ohm, Olbrich, Oldenburg, Olschewski, Oltmanns, Opitz, Oppermann, Orlowski, Orth, Ortmann, Ortner, Oßwald, Ostendorf, Oster, Osterloh, Ostermann, Ostermeier, Ostertag, Oswald, Ott, Otte, Otten, Otto, Özdemir, Öztürk, Pabst, Pagel, Pahl, Pahlke, Palm, Panzer, Pape, Papke, Paschke, Patzelt, Patzer, Pätzold, Paul, Pauli, Pauls, Paulsen, Paulus, Pauly, Pausch, Pawlik, Pawlowski, Pech, Pecher, Peetz, Peitz, Pelz, Pelzer, Penner, Pesch, Peschel, Peschke, Peter, Petermann, Peters, Petersen, Petri, Petry, Petzold, Peukert, Pfaff, Pfau, Pfeffer, Pfeifer, Pfeiffer, Pfeil, Pfennig, Pfeuffer, Pfister, Pfisterer, Pfitzner, Pflaum, Pflug, Pflüger, Philipp, Philippi, Philipps, Pichler, Pick, Pickel, Piel, Pieper, Pietsch, Pietschmann, Pietzsch, Piller, Pilz, Pingel, Piontek, Piotrowski, Pitz, Plank, Plate, Plath, Platz, Plöger, Plötz, Plum, Pohl, Pohle, Pohlmann, Pöhlmann, Pollak, Pollmann, Polster, Polzin, Pongratz, Popp, Poppe, Pöschl, Poser, Posselt, Post, Poth, Pott, Potthoff, Pötzsch, Prager, Prange, Prause, Preis, Preiß, Prell, Preuss, Preuß, Priebe, Pries, Prill, Prinz, Probst, Prüfer, Puls, Pusch, Püschel, Puschmann, Putz, Pütz, Quade, Quandt, Quast, Raab, Raabe, Raasch, Rabe, Raddatz, Rademacher, Radermacher, Radke, Radloff, Radtke, Rahm, Rahn, Raith, Ramm, Ranft, Rank, Rapp, Rasch, Rasche, Raschke, Rath, Rathmann, Rau, Rauch, Rauer, Rauh, Raupach, Rausch, Rauscher, Rautenberg, Reber, Rebmann, Rech, Reck, Recktenwald, Reder, Redlich, Reese, Reetz, Reger, Reh, Rehbein, Rehberg, Rehm, Reich, Reichardt, Reichart, Reiche, Reichel, Reichelt, Reichenbach, Reichert, Reichl, Reichle, Reichmann, Reif, Reiff, Reil, Reim, Reimann, Reimer, Reimers, Rein, Reinartz, Reindl, Reinecke, Reineke, Reiner, Reiners, Reinert, Reinhard, Reinhardt, Reinhart, Reinhold, Reinicke, Reinke, Reinsch, Reis, Reisch, Reischl, Reiser, Reisinger, Reiss, Reiß, Reiter, Reith, Reitz, Rempel, Renken, Renner, Rentsch, Renz, Repp, Resch, Reschke, Rettig, Retzlaff, Reusch, Reuß, Reuter, Reuther, Reutter, Rhein, Richert, Richter, Rick, Rickert, Ridder, Rieck, Ried, Riedel, Rieder, Riedl, Riegel, Rieger, Riehl, Rieke, Riemann, Riemer, Ries, Riese, Rieß, Ring, Ringel, Rink, Rinke, Risch, Risse, Rist, Ritschel, Ritter, Ritz, Roch, Rode, Rödel, Roder, Röder, Rödiger, Roeder, Rogge, Rohde, Rohe, Röhl, Rohleder, Rohloff, Röhm, Rohmann, Rohr, Röhr, Rohrbach, Rohrer, Röhrig, Röhrs, Rolf, Roll, Röll, Rolle, Roller, Roloff, Rombach, Römer, Rommel, Roos, Rösch, Roscher, Rose, Rosemann, Rosenbaum, Rosenberg, Rosenberger, Rosendahl, Rosenkranz, Rosenthal, Röser, Rosin, Rösler, Rosner, Rösner, Ross, Roß, Roßbach, Rössler, Rößler, Roßmann, Rößner, Rost, Roth, Rothe, Rother, Rott, Rotter, Röttger, Rottmann, Ruck, Rücker, Rückert, Rüdiger, Rudloff, Rudolf, Rudolph, Ruf, Ruff, Ruge, Rüger, Ruhl, Rühl, Ruhland, Rühle, Rummel, Rump, Rumpf, Runge, Runkel, Ruoff, Rupp, Ruppel, Ruppert, Rupprecht, Rusch, Russ, Ruß, Rust, Rüter, Ruth, Rüther, Rütten, Rutz, Saathoff, Sacher, Sachs, Sachse, Sack, Sadowski, Sager, Sahin, Sahm, Sailer, Salewski, Saller, Salomon, Salzmann, Sand, Sander, Sanders, Sandmann, Sandner, Sänger, Saß, Sasse, Sattler, Sauer, Sauermann, Saur, Sauter, Sautter, Schaaf, Schaal, Schaar, Schaarschmidt, Schacht, Schad, Schade, Schädlich, Schaefer, Schäfer, Schäfers, Schaffer, Schäffer, Schäffler, Schaffner, Schaffrath, Schaible, Schalk, Schall, Schaller, Schanz, Schaper, Schardt, Scharf, Schatz, Schätzle, Schaub, Schauer, Scheck, Scheel, Scheele, Scheer, Scheerer, Scheffel, Scheffer, Scheffler, Scheibe, Scheibel, Scheid, Scheidt, Scheler, Schell, Schellenberg, Scheller, Schenk, Schenke, Schenkel, Schepers, Scherer, Scherf, Scheu, Scheuer, Scheuermann, Scheurer, Schewe, Schick, Schiebel, Schiefer, Schiele, Schiemann, Schier, Schießl, Schiffer, Schiffmann, Schild, Schill, Schiller, Schilling, Schillinger, Schimanski, Schimmel, Schimmelpfennig, Schimpf, Schindler, Schink, Schipper, Schirmer, Schlag, Schlecht, Schlegel, Schleich, Schleicher, Schlemmer, Schlenker, Schlesinger, Schley, Schlicht, Schlichting, Schlick, Schlömer, Schlosser, Schlösser, Schlüter, Schmalz, Schmelz, Schmelzer, Schmid, Schmidbauer, Schmidl, Schmidt, Schmidtke, Schmied, Schmiedel, Schmieder, Schmitt, Schmitz, Schmoll, Schmuck, Schnabel, Schneck, Schneider, Schneiders, Schnell, Schnelle, Schneller, Schnieders, Schnitzer, Schnitzler, Schnoor, Schnur, Schnurr, Schöbel, Schober, Schoch, Schock, Schöler, Scholl, Schöll, Scholten, Scholz, Scholze, Schön, Schönberg, Schönberger, Schönborn, Schöne, Schönemann, Schöner, Schönfeld, Schönfelder, Schönherr, Schöning, Schopf, Schöpf, Schorn, Schorr, Schott, Schöttler, Schötz, Schrade, Schrader, Schrage, Schramm, Schreck, Schreiber, Schreier, Schreiner, Schreiter, Schreyer, Schröder, Schroeder, Schroer, Schröer, Schroll, Schröter, Schroth, Schubert, Schuch, Schuchardt, Schuck, Schug, Schuh, Schuhmacher, Schuhmann, Schuldt, Schüle, Schuler, Schüler, Schülke, Schuller, Schüller, Schult, Schulte, Schulten, Schultes, Schultheis, Schultheiß, Schultz, Schultze, Schulz, Schulze, Schumacher, Schumann, Schümann, Schünemann, Schunk, Schupp, Schürer, Schurig, Schürmann, Schurr, Schüssler, Schüßler, Schuster, Schütt, Schütte, Schüttler, Schütz, Schütze, Schwab, Schwabe, Schwager, Schwaiger, Schwalbe, Schwalm, Schwan, Schwandt, Schwanke, Schwartz, Schwarz, Schwarze, Schwarzer, Schwarzkopf, Schweiger, Schweigert, Schweikert, Schweitzer, Schweizer, Schwenk, Schwenke, Schwerdtfeger, Schwind, Schwinn, Sebastian, Sedlmeier, Seeger, Seel, Seelig, Seeliger, Seemann, Seewald, Seger, Seibel, Seibert, Seibold, Seibt, Seidel, Seidl, Seidler, Seifert, Seiffert, Seifried, Seiler, Seitz, Seliger, Sell, Selle, Selzer, Semmler, Senf, Senft, Senger, Seubert, Seufert, Severin, Seyfarth, Sieben, Sieber, Siebert, Siefert, Sieg, Siegel, Sieger, Siegert, Siegl, Siegmund, Siekmann, Siemens, Siemer, Siemers, Siepmann, Sievers, Sievert, Siewert, Sigl, Sikora, Simon, Simons, Singer, Sinn, Sippel, Smith, Sobotta, Sohn, Söllner, Sommer, Sommerfeld, Sondermann, Sonnenberg, Sonntag, Sorg, Sorge, Sowa, Spahn, Spangenberg, Späth, Specht, Speck, Speer, Speicher, Speidel, Spengler, Sperber, Sperl, Sperlich, Sperling, Spiegel, Spieker, Spiekermann, Spielmann, Spies, Spieß, Spiller, Spindler, Spitz, Spitzer, Spörl, Sprenger, Springer, Staab, Stach, Stadler, Stahl, Staiger, Stamm, Stang, Stange, Stangl, Stapf, Stark, Starke, Staub, Stauch, Staudinger, Staudt, Stecher, Steck, Stefan, Steffan, Steffen, Steffens, Stegemann, Steger, Stegmaier, Stegmann, Stehle, Stehr, Steidle, Steiger, Steigerwald, Stein, Steinbach, Steinberg, Steinberger, Steinborn, Steinbrecher, Steiner, Steinert, Steinhauer, Steinhauser, Steinhoff, Steininger, Steinkamp, Steinke, Steinle, Steinmann, Steinmetz, Steinmüller, Stellmacher, Stelter, Stelzer, Stemmer, Stemmler, Stender, Stengel, Stenger, Stenzel, Stephan, Stern, Sternberg, Steuer, Stevens, Stich, Stickel, Stief, Stiefel, Stiegler, Stier, Stiller, Stingl, Stobbe, Stöber, Stock, Stöckel, Stocker, Stöcker, Stöckl, Stockmann, Stoffel, Stöhr, Stoiber, Stoll, Stolle, Stolte, Stolz, Stolze, Storch, Storck, Stork, Storm, Störmer, Storz, Stotz, Stöver, Strack, Stracke, Strasser, Straßer, Stratmann, Straub, Straube, Strauch, Strauss, Strauß, Strecker, Strehl, Streich, Streicher, Streit, Stricker, Strobel, Strobl, Stroh, Strohmeier, Strube, Struck, Strunk, Strunz, Stuber, Stüber, Stumm, Stumpe, Stumpf, Sturm, Stürmer, Stutz, Suhr, Süß, Sutter, Swoboda, Sydow, Szymanski, Tacke, Tamm, Tappe, Taube, Tauber, Taubert, Tausch, Teichert, Teichmann, Temme, Tempel, Tesch, Teschner, Teske, Tetzlaff, Teuber, Teubner, Teufel, Tewes, Tews, Thaler, Thamm, Theil, Theis, Theisen, Theiß, Thelen, Theobald, Thiede, Thiel, Thiele, Thielemann, Thielen, Thielmann, Thiem, Thiemann, Thieme, Thies, Thimm, Thom, Thoma, Thomann, Thomas, Thome, Thoms, Thomsen, Thon, Thöne, Thormann, Thum, Tiede, Tiedemann, Tiemann, Tietjen, Tietz, Tietze, Till, Tillmann, Timm, Timmermann, Tischer, Tischler, Tittel, Titze, Tolksdorf, Tölle, Tonn, Töpfer, Topp, Toth, Träger, Trapp, Traub, Traut, Trautmann, Trautwein, Treiber, Tremmel, Triebel, Tröger, Trommer, Trost, Tröster, Türk, Uhl, Uhlemann, Uhlig, Uhlmann, Uhrig, Ulbrich, Ulbricht, Ullmann, Ullrich, Ulmer, Ulrich, Umbach, Unger, Unruh, Urban, Utz, Valentin, Vater, Vaupel, Veit, Veith, Velten, Vetter, Vieth, Vogel, Vögele, Vogelsang, Voges, Vogl, Vogler, Vogt, Voigt, Voigtländer, Voit, Volk, Völkel, Völker, Volkert, Völkl, Volkmann, Volkmer, Voll, Vollmer, Vollrath, Volz, Vorwerk, Voss, Voß, Wachsmuth, Wachter, Wächter, Wacker, Wagener, Wagenknecht, Wagner, Wahl, Waibel, Walch, Wald, Waldmann, Walker, Wall, Wallner, Walter, Walther, Walz, Wanke, Wanner, Warnecke, Warnke, Wassermann, Weber, Weck, Wecker, Wedekind, Wedel, Wege, Wegener, Wegmann, Wegner, Wehner, Wehr, Wehrle, Wehrmann, Weichert, Weide, Weidemann, Weidinger, Weidlich, Weidmann, Weidner, Weigand, Weigel, Weigelt, Weigert, Weigl, Weihrauch, Weil, Weiland, Weiler, Weimann, Weimer, Wein, Weinberg, Weinberger, Weiner, Weinert, Weingärtner, Weinhold, Weinmann, Weinreich, Weinrich, Weinzierl, Weirich, Weis, Weise, Weiser, Weishaupt, Weiss, Weiß, Weißbach, Weiße, Weißenborn, Weisser, Weißer, Weißmann, Weitz, Weitzel, Welker, Weller, Wellmann, Welsch, Welte, Welter, Welz, Welzel, Wende, Wendel, Wendland, Wendler, Wendt, Wenger, Wenig, Weniger, Wenk, Wenz, Wenzel, Wenzl, Werle, Werner, Wernicke, Werth, Wesemann, Wessel, Wessels, Westermann, Westhoff, Westphal, Wetzel, Weyand, Weyer, Weyers, Wichert, Wichmann, Wick, Wicke, Widmann, Wiebe, Wiechert, Wiechmann, Wieczorek, Wiedemann, Wiedenmann, Wiedmann, Wiegand, Wiegel, Wiegmann, Wieland, Wiemann, Wiemer, Wiener, Wiens, Wiese, Wieser, Wiesmann, Wiesner, Wiest, Wilczek, Wild, Wilde, Wildner, Wilhelm, Wilhelmi, Wilk, Wilke, Wilken, Wilkens, Will, Wille, Willems, Willer, Willmann, Willms, Wilms, Wimmer, Windisch, Winkel, Winkelmann, Winkler, Winter, Winzer, Wirth, Wirtz, Wischnewski, Wisniewski, Witt, Witte, Wittek, Wittenberg, Wittich, Wittig, Wittke, Wittmann, Wittwer, Witzel, Witzke, Wohlfahrt, Wohlfarth, Wohlgemuth, Wöhrle, Wolf, Wölfel, Wolff, Wölfle, Wolfram, Wolfrum, Wölk, Woll, Wollmann, Wollny, Wollschläger, Wolter, Wolters, Wörle, Worm, Wörner, Wortmann, Wrede, Wrobel, Wulf, Wulff, Wunder, Wunderlich, Wunsch, Wünsch, Wünsche, Würfel, Wurm, Wurst, Wurster, Wüst, Wuttke, Yildirim, Yildiz, Yilmaz, Zabel, Zach, Zacharias, Zacher, Zahn, Zander, Zapf, Zauner, Zech, Zeh, Zeidler, Zeiler, Zeitler, Zell, Zeller, Zellner, Zenker, Zettl, Zieger, Ziegler, Zielinski, Zielke, Ziemann, Ziemer, Zimmer, Zimmerer, Zimmermann, Zink, Zinke, Zinn, Zipfel, Zitzmann, Zobel, Zoller, Zöller, Zöllner, Zorn, Zuber, Zühlke, Zwick]\n  female: [Abel, Abele, Abels, Abraham, Abt, Achatz, Achenbach, Acker, Ackermann, Adam, Adams, Adler, Adolf, Adolph, Adrian, Ahlers, Ahrens, Aigner, Alber, Albers, Albert, Albrecht, Alex, Alexander, Alles, Alt, Althaus, Althoff, Altmann, Altmeyer, Amann, Amend, Ammann, Ammon, Anders, Andersen, Andreas, Andres, Andresen, Anger, Angerer, Angermann, Anton, Apel, Appel, Appelt, Arend, Arendt, Arens, Arlt, Armbruster, Arndt, Arnold, Arslan, Artmann, Aschenbrenner, Asmus, Assmann, Aßmann, Auer, Augustin, Aust, Aydin, Bach, Bacher, Bächle, Bachmann, Bachmeier, Back, Bäcker, Backes, Backhaus, Bade, Bader, Baer, Bahr, Bähr, Baier, Baldauf, Balke, Baltes, Balzer, Bamberger, Bangert, Bär, Baron, Bartel, Bartels, Bartelt, Barth, Barthel, Bartl, Bartmann, Bartsch, Bartz, Barz, Basler, Bast, Bastian, Bätz, Bauch, Bauer, Bäuerle, Baum, Baumann, Baumbach, Baumeister, Baumer, Bäumer, Baumert, Baumgart, Baumgärtel, Baumgarten, Baumgartner, Baumgärtner, Bäumler, Baur, Bausch, Bayer, Becher, Becht, Bechtel, Bechtold, Beck, Becker, Beckers, Beckert, Beckmann, Beer, Beermann, Beetz, Behling, Behm, Behn, Behnke, Behr, Behrend, Behrends, Behrendt, Behrens, Behringer, Behrmann, Beier, Beil, Bell, Beller, Bellmann, Belz, Bendel, Bender, Bendig, Benecke, Benner, Benning, Bensch, Benz, Berberich, Berens, Berg, Bergemann, Bergen, Berger, Bergmann, Bergner, Berlin, Bernard, Berndt, Berner, Bernhard, Bernhardt, Berthold, Bertram, Bertsch, Best, Bethge, Bethke, Betz, Beutel, Beutler, Beyer, Bichler, Bickel, Bieber, Biedermann, Biehl, Bielefeld, Bienert, Bier, Biermann, Biller, Binder, Birk, Birke, Birkholz, Birkner, Birner, Bischof, Bischoff, Bitter, Bittner, Bitzer, Blank, Blanke, Blankenburg, Blaschke, Blau, Blechschmidt, Blessing, Bley, Bloch, Block, Blohm, Blome, Bluhm, Blum, Blume, Blümel, Blumenthal, Bochmann, Bock, Böck, Böcker, Böckmann, Bode, Boden, Bogner, Bohl, Bohlen, Böhler, Bohlmann, Bohm, Böhm, Böhme, Böhmer, Bohn, Bohne, Böhner, Bohnert, Böhnke, Bohr, Böhringer, Böker, Boldt, Boll, Boller, Bollmann, Bolte, Bolz, Bongartz, Böning, Bönisch, Bonk, Bonn, Boos, Bopp, Borchardt, Borchers, Borchert, Börger, Borgmann, Bork, Bormann, Born, Bornemann, Börner, Borowski, Borrmann, Bosch, Bösch, Böse, Bosse, Both, Bothe, Bott, Böttcher, Böttger, Böttner, Boy, Bracht, Brack, Brand, Brandenburg, Brandes, Brandl, Brandner, Brandstetter, Brandt, Brauer, Bräuer, Braun, Braune, Brauner, Bräutigam, Brecht, Brede, Brehm, Brehmer, Breidenbach, Breier, Breit, Breitenbach, Bremer, Brendel, Brennecke, Brenner, Bretschneider, Brettschneider, Breu, Breuer, Breunig, Breyer, Brill, Brink, Brinker, Brinkmann, Brix, Brock, Bröcker, Brockmann, Bröker, Brosch, Brose, Bruch, Brück, Brucker, Brückmann, Bruckner, Brückner, Bruder, Brüggemann, Brugger, Brühl, Bruhn, Brummer, Brümmer, Brune, Brüning, Brunke, Brunner, Bruns, Brust, Buch, Büchel, Bucher, Buchholz, Büchler, Buchmann, Buchner, Büchner, Buchwald, Buck, Bücker, Budde, Buhl, Bühler, Bühner, Buhr, Bülow, Bunge, Bünger, Bunk, Burg, Burger, Bürger, Burghardt, Burk, Burkard, Burkart, Burkert, Burkhard, Burkhardt, Burkhart, Bürkle, Burmeister, Burmester, Busch, Busche, Büscher, Buschmann, Buse, Büsing, Buss, Buß, Busse, Bußmann, Büttner, Butz, Carl, Carstens, Carstensen, Caspari, Casper, Celik, Christ, Christian, Christiansen, Christmann, Christoph, Clasen, Claßen, Claus, Clausen, Clauß, Claußen, Clemens, Coenen, Cohrs, Conrad, Conradi, Cordes, Cornelius, Cramer, Cremer, Czech, Dahl, Dahlke, Dahlmann, Dahm, Dahmen, Dahms, Dallmann, Damm, Dammann, Daniel, Daniels, Dannenberg, Danner, Daub, Daum, David, de, Debus, Decker, Deckert, Degen, Degenhardt, Degner, Dehn, Deininger, Demir, Demmer, Demuth, Denecke, Dengler, Denk, Denker, Deppe, Derksen, Dettmann, Dettmer, Deutsch, Deutschmann, Dewald, Dick, Dickmann, Dieckmann, Diederich, Diederichs, Diedrich, Diefenbach, Diehl, Diekmann, Diel, Diemer, Diener, Dierkes, Dierks, Dietel, Dieterich, Dieterle, Dietl, Dietrich, Dietz, Dietze, Dietzel, Dill, Dillmann, Dinkel, Dinter, Dippel, Dirks, Distler, Dittmann, Dittmar, Dittmer, Dittrich, Dobler, Dogan, Döhler, Dohmen, Döhring, Dohrmann, Dold, Doll, Döll, Dombrowski, Domke, Donath, Donner, Dörfler, Döring, Dorn, Dorner, Dörner, Dörr, Dorsch, Dose, Dost, Dräger, Drechsel, Drechsler, Drees, Dreher, Dreier, Drescher, Dressel, Dressler, Dreßler, Drewes, Drews, Drexler, Dreyer, Dröge, Droste, Dück, Duda, Dudek, Dunkel, Dunker, Düring, Dürr, Duwe, Dyck, Ebel, Ebeling, Eberhard, Eberhardt, Eberl, Eberle, Eberlein, Ebert, Ebner, Eck, Eckardt, Eckart, Eckel, Ecker, Eckert, Eckhardt, Eckhoff, Eckl, Eckstein, Edel, Edelmann, Eder, Edler, Effenberger, Eger, Egger, Eggers, Eggert, Egner, Ehlers, Ehlert, Ehmann, Ehrenberg, Ehret, Ehrhardt, Ehrich, Ehrlich, Ehrmann, Eibl, Eich, Eichholz, Eichhorn, Eichinger, Eichler, Eichmann, Eichner, Eickhoff, Eifler, Eilers, Eisele, Eisenmann, Eismann, Eisner, Eitel, Eller, Elsner, Emde, Emmerich, Emmert, Emrich, Ender, Enderle, Enders, Endres, Engel, Engelbrecht, Engelhard, Engelhardt, Engelke, Engelmann, Engels, Engert, Engl, Engler, Englert, Enke, Epp, Epple, Eppler, Erb, Erbe, Erben, Erdmann, Erhard, Erhardt, Erler, Ernst, Ertel, Ertl, Esch, Escher, Esser, Eßer, Essig, Euler, Evers, Ewald, Ewers, Ewert, Exner, Faber, Fabian, Falk, Falke, Falkenberg, Faller, Färber, Faßbender, Fast, Fath, Faulhaber, Faust, Fechner, Fehr, Fehrenbach, Feige, Feil, Feiler, Feist, Felber, Feld, Feldhaus, Feldmann, Feldmeier, Feller, Fellner, Fels, Fendt, Fengler, Fenske, Fenzl, Ferber, Ferstl, Fett, Fetzer, Fey, Fichtner, Fick, Fiebig, Fiedler, Figge, Findeisen, Finger, Fink, Finkbeiner, Finke, Fisch, Fischbach, Fischer, Fitz, Fix, Flach, Flaig, Fleck, Fleckenstein, Fleischer, Fleischhauer, Fleischmann, Flemming, Flick, Flohr, Flügel, Flügge, Focke, Forster, Förster, Forstner, Förtsch, Fox, Frahm, Franck, Frank, Franke, Franken, Franz, Franzen, Franzke, Frech, Freese, Frei, Freiberg, Freier, Freitag, Frenz, Frenzel, Frerichs, Frese, Freudenberg, Freund, Frey, Freyer, Freytag, Frick, Fricke, Friebe, Friedel, Friedemann, Friedl, Friedmann, Friedrich, Friedrichs, Fries, Friese, Friesen, Frieß, Frings, Frisch, Fritsch, Fritsche, Fritz, Fritze, Fritzsch, Fritzsche, Fröhlich, Fromm, Fromme, Frost, Früh, Frühauf, Fuchs, Fuhr, Führer, Fuhrmann, Funk, Funke, Fürst, Fuß, Fütterer, Gabel, Gabler, Gäbler, Gabriel, Gaida, Gaiser, Gall, Galle, Ganser, Ganter, Ganz, Garbe, Gärtner, Gassner, Gaßner, Gast, Gaul, Gaus, Gebauer, Gebel, Gebert, Gebhard, Gebhardt, Gehlen, Gehrig, Gehring, Gehrke, Gehrmann, Geib, Geier, Geiger, Geis, Geisler, Geiß, Geissler, Geißler, Geist, Gellert, Gentner, Genz, Georg, George, Georgi, Geppert, Gerber, Gerdes, Gerhard, Gerhards, Gerhardt, Gericke, Gerke, Gerken, Gerlach, Gerling, Germann, Gerner, Gerstner, Gerth, Gessner, Geßner, Geyer, Giebel, Gies, Giese, Giesecke, Giesen, Gilbert, Gille, Gilles, Glas, Glaser, Gläser, Glaß, Glatz, Gleich, Gleißner, Glock, Glöckner, Glück, Göbel, Gödde, Gödecke, Goebel, Goerke, Goertz, Göhler, Gohlke, Göhring, Gold, Goldbach, Goldberg, Goldmann, Goldschmidt, Goll, Goller, Göller, Göllner, Golz, Gölz, Göpfert, Görg, Görgen, Göring, Görlich, Görner, Görtz, Götte, Gottfried, Gotthardt, Gottschalk, Gottschlich, Gottschling, Gottwald, Götz, Götze, Gräber, Grabow, Grabowski, Gradl, Graf, Gräf, Grafe, Gräfe, Grahl, Gramlich, Grams, Graß, Graßl, Grätz, Grau, Graupner, Greb, Grebe, Greger, Gregor, Greif, Greiner, Grell, Grenz, Greulich, Greve, Grewe, Griebel, Grieger, Gries, Griese, Grill, Grimm, Grimmer, Grobe, Gröger, Groh, Grohmann, Groll, Gronau, Gröne, Grosch, Gross, Groß, Grosse, Große, Grosser, Großer, Großkopf, Grossmann, Großmann, Grote, Groth, Grothe, Grube, Gruber, Gruhn, Grün, Grünberg, Grund, Grundmann, Gruner, Grüner, Grunert, Grunewald, Grünewald, Grunwald, Grünwald, Grützner, Guhl, Gundlach, Gunkel, Günter, Günther, Günzel, Gürtler, Guse, Guth, Gutjahr, Gutmann, Gutsche, Güttler, Gutzeit, Haack, Haag, Haak, Haake, Haarmann, Haas, Haase, Habel, Haberkorn, Haberl, Haberland, Häberle, Habermann, Hack, Hackbarth, Hackenberg, Hacker, Häcker, Hackl, Hackmann, Häfele, Hafner, Häfner, Hagedorn, Hagel, Hägele, Hagemann, Hagen, Hager, Hahn, Hahne, Hähnel, Haider, Haimerl, Hain, Hake, Haller, Hallmann, Hamacher, Hamann, Hamm, Hammann, Hammel, Hammer, Hammerschmidt, Hammes, Hampe, Hampel, Handke, Hänel, Hanf, Hanisch, Hanke, Hannemann, Hannig, Hans, Hänsch, Hansel, Hänsel, Hansen, Hansmann, Hantke, Happel, Harder, Hardt, Häring, Harms, Harnisch, Harrer, Härtel, Harter, Harth, Hartig, Hartl, Härtl, Hartmann, Hartung, Hartwich, Hartwig, Hase, Hass, Haß, Hasse, Hassel, Hau, Hauber, Haubold, Hauck, Hauer, Haufe, Haug, Hauk, Hauke, Haupt, Hauptmann, Haus, Hauschild, Hauser, Häuser, Häusler, Hausmann, Hausner, Häußler, Haußmann, Haustein, Heber, Hecht, Heck, Heckel, Hecker, Heckmann, Hedrich, Heer, Heese, Hegemann, Heger, Heid, Heide, Heidemann, Heiden, Heidenreich, Heider, Heidrich, Heidt, Heigl, Heil, Heiland, Heilig, Heilmann, Heim, Heimann, Hein, Heindl, Heine, Heinecke, Heinemann, Heinen, Heinicke, Heinig, Heinisch, Heinke, Heinlein, Heinrich, Heinrichs, Heins, Heintz, Heinz, Heinze, Heinzel, Heinzelmann, Heinzmann, Heise, Heiser, Heisig, Heiß, Heitmann, Heitz, Heizmann, Helbig, Helbing, Held, Heldt, Helfrich, Hell, Heller, Hellmann, Hellmich, Hellmuth, Hellwig, Helm, Helmer, Helmke, Helms, Hemmer, Hempel, Hendricks, Hengst, Henke, Henkel, Henn, Henne, Hennecke, Hennemann, Hennig, Henning, Henninger, Hennings, Henrich, Henrichs, Henschel, Hense, Hensel, Henseler, Hentschel, Henze, Hepp, Heppner, Herb, Herber, Herbert, Herbst, Herdt, Herget, Hering, Hermann, Hermanns, Hermes, Herold, Herr, Herrmann, Hertel, Herter, Hertlein, Hertwig, Herwig, Herz, Herzberg, Herzig, Herzog, Hess, Heß, Hesse, Hessel, Heßler, Hettich, Hetzel, Heuer, Heumann, Heuser, Hey, Heyer, Heymann, Heyn, Heyne, Hieber, Hielscher, Hierl, Hilbert, Hilbig, Hild, Hildebrand, Hildebrandt, Hildenbrand, Hilger, Hilgers, Hill, Hille, Hillebrand, Hillenbrand, Hiller, Hillmann, Hilmer, Hilpert, Himmel, Hinkel, Hinrichs, Hinrichsen, Hintz, Hintze, Hinz, Hinze, Hinzmann, Hipp, Hirsch, Hirschfeld, Hirschmann, Hirt, Hirth, Hoch, Hochmuth, Hock, Hof, Hofbauer, Hofer, Höfer, Hoff, Hoffmann, Hoffmeister, Höfler, Höfling, Hofmann, Hofmeister, Hofstetter, Höft, Höger, Hohl, Hohmann, Hohn, Höhn, Höhne, Holl, Höll, Holland, Holler, Höller, Hollmann, Hollstein, Holm, Hölscher, Holst, Holstein, Holtkamp, Holtmann, Holtz, Holz, Holzapfel, Hölzel, Holzer, Hölzer, Holzinger, Hölzl, Holzmann, Holzner, Holzwarth, Homann, Hommel, Hönig, Hopf, Höpfner, Hopp, Hoppe, Höppner, Hörl, Hörmann, Horn, Hörner, Hornig, Hornung, Horst, Horstmann, Horvath, Hotz, Hoyer, Huber, Hubert, Hübner, Hübsch, Huck, Hufnagel, Hug, Hügel, Huhn, Hüls, Hülsmann, Hummel, Hümmer, Hund, Hundertmark, Hundt, Hunger, Huppertz, Husemann, Husmann, Huth, Hüther, Hutter, Hütter, Hüttner, Ihle, Ilg, Imhof, Irmer, Irrgang, Israel, Jablonski, Jäckel, Jacob, Jacobi, Jacobs, Jacobsen, Jaeger, Jäger, Jahn, Jahnke, Jahns, Jäkel, Jakob, Jakobi, Jakobs, Jänicke, Janik, Janke, Jankowski, Jansen, Janson, Janssen, Janßen, Janz, Janzen, Jäschke, Jasper, Jauch, Jehle, Jensen, Jentsch, Jentzsch, Jeschke, Jeske, Jesse, Jessen, Joachim, Jobst, Jochum, Johann, Johannes, Johannsen, John, Jonas, Joos, Jordan, Jörg, Joseph, Jost, Jünemann, Jung, Jungbluth, Junge, Jünger, Junghans, Jüngling, Jungmann, Junk, Junker, Jürgens, Jürgensen, Just, Jüttner, Kaczmarek, Kaden, Käfer, Kahl, Kahle, Kähler, Kahlert, Kaiser, Kalb, Kalinowski, Kalisch, Kallenbach, Kaltenbach, Kaluza, Kaminski, Kamm, Kammer, Kammerer, Kämmerer, Kamp, Kampe, Kämpf, Kampmann, Kamps, Kania, Kanzler, Kapp, Kappel, Kappes, Kappler, Kaps, Karcher, Karg, Karger, Karl, Karle, Karsten, Käser, Kaspar, Kasper, Kast, Kasten, Kastl, Kastner, Kästner, Katz, Katzer, Kauer, Kaufhold, Kaufmann, Kaul, Kautz, Kaya, Kayser, Keck, Kegel, Kehl, Kehr, Kehrer, Keil, Keim, Keitel, Keller, Kellermann, Kellner, Kelm, Kemmer, Kempe, Kemper, Kempf, Keppler, Kerber, Kerkhoff, Kern, Kerner, Kerscher, Kersten, Kersting, Kessel, Kessler, Keßler, Ketterer, Kettler, Kettner, Kick, Kiefer, Kiel, Kienle, Kienzle, Kiesel, Kiesewetter, Kießling, Kilian, Kilic, Kimmel, Kind, Kinder, Kindermann, Kindler, Kinzel, Kipp, Kirch, Kircher, Kirchhof, Kirchhoff, Kirchner, Kirsch, Kirschbaum, Kirschner, Kirst, Kirstein, Kirsten, Kissel, Kistner, Kittel, Klaas, Klages, Klaiber, Klapper, Klar, Klasen, Klassen, Klatt, Klaus, Kleber, Klee, Kleemann, Klein, Kleine, Kleiner, Kleinert, Kleinhans, Kleinschmidt, Klement, Klemm, Klenk, Klett, Kley, Kliem, Klier, Kling, Klingbeil, Klinge, Klingenberg, Klinger, Klingler, Klink, Klinke, Klinkhammer, Klocke, Klöckner, Kloos, Klos, Klose, Kloss, Kloß, Klostermann, Kloth, Klotz, Klug, Kluge, Klumpp, Kluth, Knab, Knabe, Knapp, Knappe, Knauer, Knauf, Knaus, Knebel, Knecht, Knittel, Knoblauch, Knobloch, Knoch, Knoche, Knödler, Knoll, Knoop, Knop, Knopf, Knopp, Knorr, Knoth, Knott, Knüppel, Knuth, Kober, Koch, Köcher, Kock, Koenen, Kögel, Kögler, Kohl, Köhl, Kohler, Köhler, Kohlmann, Kohn, Köhn, Köhne, Kohnen, Kolb, Kolbe, Kolbeck, Kolberg, Kölbl, Koll, Koller, Köller, Kölling, Kollmann, Köllner, Kolodziej, Kölsch, König, Königs, Konrad, Koop, Koopmann, Kopf, Köpke, Kopp, Koppe, Köppe, Köppel, Köppen, Köppl, Korb, Körber, Korn, Körner, Korte, Korth, Kortmann, Koslowski, Kost, Köster, Kösters, Köstler, Kothe, Kötter, Kowalewski, Kowalski, Kracht, Kraemer, Krafft, Kraft, Krah, Krahl, Krahn, Kramer, Krämer, Krammer, Kramp, Krampe, Kranz, Krapf, Krapp, Kratz, Kratzer, Kraus, Krause, Krauss, Krauß, Krauße, Krawczyk, Krebs, Kreft, Kreis, Krell, Kremer, Kremser, Krenz, Kress, Kreß, Kretschmann, Kretschmer, Kretz, Kretzer, Kretzschmar, Kreutz, Kreutzer, Kreuz, Kreuzer, Krey, Krieg, Kriegel, Krieger, Krings, Kröber, Kröger, Krohn, Kroll, Kröll, Kromer, Krone, Kröner, Kropf, Kropp, Krug, Krüger, Krull, Krumm, Krupp, Kruppa, Kruse, Kube, Kübler, Kuch, Küchler, Kuck, Kück, Kugel, Kugler, Kügler, Kuhl, Kühl, Kuhlmann, Kuhn, Kühn, Kühne, Kühnel, Kühner, Kuhnert, Kühnert, Kühnle, Kuhnt, Kuhr, Kullmann, Kümmel, Kummer, Kunath, Kunde, Kunert, Kunkel, Kunst, Kuntz, Kuntze, Kunz, Kunze, Künzel, Kunzmann, Küper, Kupfer, Kupka, Küpper, Küppers, Kürschner, Kurth, Kurtz, Kurz, Kusch, Kuschel, Küster, Küsters, Kutscher, Kutz, Kutzner, Lachmann, Lackner, Ladwig, Lambert, Lambertz, Lambrecht, Lamm, Lammers, Lampe, Lampert, Lamprecht, Landgraf, Landmann, Landwehr, Lang, Langbein, Lange, Langen, Langenbach, Langer, Langguth, Langhammer, Langhans, Langner, Lanz, Laskowski, Lau, Laub, Laube, Lauber, Laue, Lauer, Laufer, Laumann, Lautenschläger, Lauterbach, Laux, Lay, Leber, Lechner, Leder, Lederer, Lehmann, Lehmkuhl, Lehnen, Lehner, Lehnert, Lehr, Leibold, Leicht, Leinweber, Leipold, Leis, Leistner, Leitner, Lembke, Lemke, Lemm, Lemmer, Lenk, Lennartz, Lentz, Lenz, Lenzen, Leonhard, Leonhardt, Leopold, Lerch, Lesch, Leupold, Leuschner, Lewandowski, Lex, Ley, Licht, Lichtenberg, Lieb, Liebe, Liebert, Liebich, Liebig, Liebl, Liebmann, Liebscher, Lieder, Liedtke, Liese, Lieske, Lietz, Limbach, Limmer, Lind, Linde, Lindemann, Linden, Lindenau, Lindenberg, Linder, Lindner, Link, Linke, Linn, Linnemann, Linz, Lipinski, Lipp, Lippert, Lippmann, Lippold, List, Loch, Locher, Lochner, Löffler, Lohmann, Lohr, Löhr, Lohse, Loibl, Loos, Loose, Lorenz, Lorenzen, Lösch, Löser, Loth, Lotz, Löw, Löwe, Löwen, Lübben, Lübke, Lucas, Lucht, Lück, Lücke, Lüdecke, Lüdemann, Lüders, Ludewig, Lüdtke, Ludwig, Luft, Lühr, Lührs, Lukas, Lüke, Lüth, Luther, Lutter, Lutz, Lux, Maack, Maas, Maaß, Maaßen, Mack, Mader, Mäder, Mager, Mahler, Mahn, Mahnke, Mahr, Mai, Maier, Mainka, Mair, Maisch, Maiwald, Majewski, Mandel, Mang, Mangold, Manke, Mann, Manske, Manthey, Manz, Marek, Mark, Markert, Markgraf, Markmann, Marks, Markus, Marquardt, Marschall, Marschner, Marten, Martens, Martin, Martini, Marx, März, Maschke, Mast, Matern, Matheis, Mathes, Matt, Mattern, Mattes, Matthes, Matthias, Matthies, Matthiesen, Matz, Matzke, Mau, Mauch, Maucher, Mauer, Maul, Maurer, Maus, May, Mayer, Mayerhofer, Mayr, Meder, Mehl, Mehler, Mehlhorn, Mehner, Mehnert, Meier, Meindl, Meinecke, Meinel, Meiners, Meinert, Meinhardt, Meinke, Meise, Meisel, Meiser, Meissner, Meißner, Meister, Meixner, Melcher, Melchior, Melzer, Mende, Menge, Mengel, Menges, Menke, Menne, Menz, Menzel, Merk, Merkel, Merker, Merkl, Merkle, Merten, Mertens, Mertes, Merz, Messer, Messerschmidt, Messner, Mester, Metz, Metzger, Metzler, Metzner, Meurer, Meusel, Meuser, Mewes, Mey, Meyer, Mezger, Michael, Michaelis, Michalski, Michel, Michels, Michl, Michler, Middendorf, Mielke, Mies, Milde, Mildner, Miller, Milz, Mischke, Mitschke, Mittag, Mittelstädt, Mittermeier, Mittmann, Möbius, Möbus, Mock, Möckel, Möhle, Mohr, Möhring, Moldenhauer, Molitor, Moll, Möller, Möllers, Möllmann, Mönch, Montag, Moog, Moor, Moos, Moosmann, Morgenroth, Morgenstern, Moritz, Mosch, Moser, Möser, Motz, Mucha, Mück, Mücke, Mueller, Mühl, Mühlbauer, Mühlberger, Mühle, Müller, Münch, Mund, Mundt, Münster, Munz, Münz, Muth, Mutschler, Nachtigall, Nadler, Nagel, Nägele, Nagler, Nagy, Naß, Nau, Naujoks, Naumann, Nebel, Neef, Neff, Neher, Nehls, Nehring, Neitzel, Nelles, Nestler, Neu, Neubauer, Neuber, Neuberger, Neubert, Neufeld, Neugebauer, Neuhaus, Neumaier, Neumann, Neumeier, Neumeister, Neumüller, Neuner, Ney, Nickel, Nickl, Nicolai, Niebuhr, Niedermeier, Niehaus, Niehoff, Niehues, Nielsen, Niemann, Niemeier, Niemeyer, Nienhaus, Niermann, Nies, Nießen, Niggemann, Niklas, Nikolaus, Nissen, Nitsch, Nitsche, Nitschke, Nitz, Nitzsche, Nix, Noack, Noe, Nolden, Noll, Nolte, Nolting, Nordmann, Novak, Nowack, Nowak, Nürnberger, Nußbaum, Ober, Oberländer, Oberle, Obermaier, Obermeier, Obst, Ochs, Oehler, Oehme, Oertel, Oestreich, Offermann, Ohl, Ohm, Olbrich, Oldenburg, Olschewski, Oltmanns, Opitz, Oppermann, Orlowski, Orth, Ortmann, Ortner, Oßwald, Ostendorf, Oster, Osterloh, Ostermann, Ostermeier, Ostertag, Oswald, Ott, Otte, Otten, Otto, Özdemir, Öztürk, Pabst, Pagel, Pahl, Pahlke, Palm, Panzer, Pape, Papke, Paschke, Patzelt, Patzer, Pätzold, Paul, Pauli, Pauls, Paulsen, Paulus, Pauly, Pausch, Pawlik, Pawlowski, Pech, Pecher, Peetz, Peitz, Pelz, Pelzer, Penner, Pesch, Peschel, Peschke, Peter, Petermann, Peters, Petersen, Petri, Petry, Petzold, Peukert, Pfaff, Pfau, Pfeffer, Pfeifer, Pfeiffer, Pfeil, Pfennig, Pfeuffer, Pfister, Pfisterer, Pfitzner, Pflaum, Pflug, Pflüger, Philipp, Philippi, Philipps, Pichler, Pick, Pickel, Piel, Pieper, Pietsch, Pietschmann, Pietzsch, Piller, Pilz, Pingel, Piontek, Piotrowski, Pitz, Plank, Plate, Plath, Platz, Plöger, Plötz, Plum, Pohl, Pohle, Pohlmann, Pöhlmann, Pollak, Pollmann, Polster, Polzin, Pongratz, Popp, Poppe, Pöschl, Poser, Posselt, Post, Poth, Pott, Potthoff, Pötzsch, Prager, Prange, Prause, Preis, Preiß, Prell, Preuss, Preuß, Priebe, Pries, Prill, Prinz, Probst, Prüfer, Puls, Pusch, Püschel, Puschmann, Putz, Pütz, Quade, Quandt, Quast, Raab, Raabe, Raasch, Rabe, Raddatz, Rademacher, Radermacher, Radke, Radloff, Radtke, Rahm, Rahn, Raith, Ramm, Ranft, Rank, Rapp, Rasch, Rasche, Raschke, Rath, Rathmann, Rau, Rauch, Rauer, Rauh, Raupach, Rausch, Rauscher, Rautenberg, Reber, Rebmann, Rech, Reck, Recktenwald, Reder, Redlich, Reese, Reetz, Reger, Reh, Rehbein, Rehberg, Rehm, Reich, Reichardt, Reichart, Reiche, Reichel, Reichelt, Reichenbach, Reichert, Reichl, Reichle, Reichmann, Reif, Reiff, Reil, Reim, Reimann, Reimer, Reimers, Rein, Reinartz, Reindl, Reinecke, Reineke, Reiner, Reiners, Reinert, Reinhard, Reinhardt, Reinhart, Reinhold, Reinicke, Reinke, Reinsch, Reis, Reisch, Reischl, Reiser, Reisinger, Reiss, Reiß, Reiter, Reith, Reitz, Rempel, Renken, Renner, Rentsch, Renz, Repp, Resch, Reschke, Rettig, Retzlaff, Reusch, Reuß, Reuter, Reuther, Reutter, Rhein, Richert, Richter, Rick, Rickert, Ridder, Rieck, Ried, Riedel, Rieder, Riedl, Riegel, Rieger, Riehl, Rieke, Riemann, Riemer, Ries, Riese, Rieß, Ring, Ringel, Rink, Rinke, Risch, Risse, Rist, Ritschel, Ritter, Ritz, Roch, Rode, Rödel, Roder, Röder, Rödiger, Roeder, Rogge, Rohde, Rohe, Röhl, Rohleder, Rohloff, Röhm, Rohmann, Rohr, Röhr, Rohrbach, Rohrer, Röhrig, Röhrs, Rolf, Roll, Röll, Rolle, Roller, Roloff, Rombach, Römer, Rommel, Roos, Rösch, Roscher, Rose, Rosemann, Rosenbaum, Rosenberg, Rosenberger, Rosendahl, Rosenkranz, Rosenthal, Röser, Rosin, Rösler, Rosner, Rösner, Ross, Roß, Roßbach, Rössler, Rößler, Roßmann, Rößner, Rost, Roth, Rothe, Rother, Rott, Rotter, Röttger, Rottmann, Ruck, Rücker, Rückert, Rüdiger, Rudloff, Rudolf, Rudolph, Ruf, Ruff, Ruge, Rüger, Ruhl, Rühl, Ruhland, Rühle, Rummel, Rump, Rumpf, Runge, Runkel, Ruoff, Rupp, Ruppel, Ruppert, Rupprecht, Rusch, Russ, Ruß, Rust, Rüter, Ruth, Rüther, Rütten, Rutz, Saathoff, Sacher, Sachs, Sachse, Sack, Sadowski, Sager, Sahin, Sahm, Sailer, Salewski, Saller, Salomon, Salzmann, Sand, Sander, Sanders, Sandmann, Sandner, Sänger, Saß, Sasse, Sattler, Sauer, Sauermann, Saur, Sauter, Sautter, Schaaf, Schaal, Schaar, Schaarschmidt, Schacht, Schad, Schade, Schädlich, Schaefer, Schäfer, Schäfers, Schaffer, Schäffer, Schäffler, Schaffner, Schaffrath, Schaible, Schalk, Schall, Schaller, Schanz, Schaper, Schardt, Scharf, Schatz, Schätzle, Schaub, Schauer, Scheck, Scheel, Scheele, Scheer, Scheerer, Scheffel, Scheffer, Scheffler, Scheibe, Scheibel, Scheid, Scheidt, Scheler, Schell, Schellenberg, Scheller, Schenk, Schenke, Schenkel, Schepers, Scherer, Scherf, Scheu, Scheuer, Scheuermann, Scheurer, Schewe, Schick, Schiebel, Schiefer, Schiele, Schiemann, Schier, Schießl, Schiffer, Schiffmann, Schild, Schill, Schiller, Schilling, Schillinger, Schimanski, Schimmel, Schimmelpfennig, Schimpf, Schindler, Schink, Schipper, Schirmer, Schlag, Schlecht, Schlegel, Schleich, Schleicher, Schlemmer, Schlenker, Schlesinger, Schley, Schlicht, Schlichting, Schlick, Schlömer, Schlosser, Schlösser, Schlüter, Schmalz, Schmelz, Schmelzer, Schmid, Schmidbauer, Schmidl, Schmidt, Schmidtke, Schmied, Schmiedel, Schmieder, Schmitt, Schmitz, Schmoll, Schmuck, Schnabel, Schneck, Schneider, Schneiders, Schnell, Schnelle, Schneller, Schnieders, Schnitzer, Schnitzler, Schnoor, Schnur, Schnurr, Schöbel, Schober, Schoch, Schock, Schöler, Scholl, Schöll, Scholten, Scholz, Scholze, Schön, Schönberg, Schönberger, Schönborn, Schöne, Schönemann, Schöner, Schönfeld, Schönfelder, Schönherr, Schöning, Schopf, Schöpf, Schorn, Schorr, Schott, Schöttler, Schötz, Schrade, Schrader, Schrage, Schramm, Schreck, Schreiber, Schreier, Schreiner, Schreiter, Schreyer, Schröder, Schroeder, Schroer, Schröer, Schroll, Schröter, Schroth, Schubert, Schuch, Schuchardt, Schuck, Schug, Schuh, Schuhmacher, Schuhmann, Schuldt, Schüle, Schuler, Schüler, Schülke, Schuller, Schüller, Schult, Schulte, Schulten, Schultes, Schultheis, Schultheiß, Schultz, Schultze, Schulz, Schulze, Schumacher, Schumann, Schümann, Schünemann, Schunk, Schupp, Schürer, Schurig, Schürmann, Schurr, Schüssler, Schüßler, Schuster, Schütt, Schütte, Schüttler, Schütz, Schütze, Schwab, Schwabe, Schwager, Schwaiger, Schwalbe, Schwalm, Schwan, Schwandt, Schwanke, Schwartz, Schwarz, Schwarze, Schwarzer, Schwarzkopf, Schweiger, Schweigert, Schweikert, Schweitzer, Schweizer, Schwenk, Schwenke, Schwerdtfeger, Schwind, Schwinn, Sebastian, Sedlmeier, Seeger, Seel, Seelig, Seeliger, Seemann, Seewald, Seger, Seibel, Seibert, Seibold, Seibt, Seidel, Seidl, Seidler, Seifert, Seiffert, Seifried, Seiler, Seitz, Seliger, Sell, Selle, Selzer, Semmler, Senf, Senft, Senger, Seubert, Seufert, Severin, Seyfarth, Sieben, Sieber, Siebert, Siefert, Sieg, Siegel, Sieger, Siegert, Siegl, Siegmund, Siekmann, Siemens, Siemer, Siemers, Siepmann, Sievers, Sievert, Siewert, Sigl, Sikora, Simon, Simons, Singer, Sinn, Sippel, Smith, Sobotta, Sohn, Söllner, Sommer, Sommerfeld, Sondermann, Sonnenberg, Sonntag, Sorg, Sorge, Sowa, Spahn, Spangenberg, Späth, Specht, Speck, Speer, Speicher, Speidel, Spengler, Sperber, Sperl, Sperlich, Sperling, Spiegel, Spieker, Spiekermann, Spielmann, Spies, Spieß, Spiller, Spindler, Spitz, Spitzer, Spörl, Sprenger, Springer, Staab, Stach, Stadler, Stahl, Staiger, Stamm, Stang, Stange, Stangl, Stapf, Stark, Starke, Staub, Stauch, Staudinger, Staudt, Stecher, Steck, Stefan, Steffan, Steffen, Steffens, Stegemann, Steger, Stegmaier, Stegmann, Stehle, Stehr, Steidle, Steiger, Steigerwald, Stein, Steinbach, Steinberg, Steinberger, Steinborn, Steinbrecher, Steiner, Steinert, Steinhauer, Steinhauser, Steinhoff, Steininger, Steinkamp, Steinke, Steinle, Steinmann, Steinmetz, Steinmüller, Stellmacher, Stelter, Stelzer, Stemmer, Stemmler, Stender, Stengel, Stenger, Stenzel, Stephan, Stern, Sternberg, Steuer, Stevens, Stich, Stickel, Stief, Stiefel, Stiegler, Stier, Stiller, Stingl, Stobbe, Stöber, Stock, Stöckel, Stocker, Stöcker, Stöckl, Stockmann, Stoffel, Stöhr, Stoiber, Stoll, Stolle, Stolte, Stolz, Stolze, Storch, Storck, Stork, Storm, Störmer, Storz, Stotz, Stöver, Strack, Stracke, Strasser, Straßer, Stratmann, Straub, Straube, Strauch, Strauss, Strauß, Strecker, Strehl, Streich, Streicher, Streit, Stricker, Strobel, Strobl, Stroh, Strohmeier, Strube, Struck, Strunk, Strunz, Stuber, Stüber, Stumm, Stumpe, Stumpf, Sturm, Stürmer, Stutz, Suhr, Süß, Sutter, Swoboda, Sydow, Szymanski, Tacke, Tamm, Tappe, Taube, Tauber, Taubert, Tausch, Teichert, Teichmann, Temme, Tempel, Tesch, Teschner, Teske, Tetzlaff, Teuber, Teubner, Teufel, Tewes, Tews, Thaler, Thamm, Theil, Theis, Theisen, Theiß, Thelen, Theobald, Thiede, Thiel, Thiele, Thielemann, Thielen, Thielmann, Thiem, Thiemann, Thieme, Thies, Thimm, Thom, Thoma, Thomann, Thomas, Thome, Thoms, Thomsen, Thon, Thöne, Thormann, Thum, Tiede, Tiedemann, Tiemann, Tietjen, Tietz, Tietze, Till, Tillmann, Timm, Timmermann, Tischer, Tischler, Tittel, Titze, Tolksdorf, Tölle, Tonn, Töpfer, Topp, Toth, Träger, Trapp, Traub, Traut, Trautmann, Trautwein, Treiber, Tremmel, Triebel, Tröger, Trommer, Trost, Tröster, Türk, Uhl, Uhlemann, Uhlig, Uhlmann, Uhrig, Ulbrich, Ulbricht, Ullmann, Ullrich, Ulmer, Ulrich, Umbach, Unger, Unruh, Urban, Utz, Valentin, Vater, Vaupel, Veit, Veith, Velten, Vetter, Vieth, Vogel, Vögele, Vogelsang, Voges, Vogl, Vogler, Vogt, Voigt, Voigtländer, Voit, Volk, Völkel, Völker, Volkert, Völkl, Volkmann, Volkmer, Voll, Vollmer, Vollrath, Volz, Vorwerk, Voss, Voß, Wachsmuth, Wachter, Wächter, Wacker, Wagener, Wagenknecht, Wagner, Wahl, Waibel, Walch, Wald, Waldmann, Walker, Wall, Wallner, Walter, Walther, Walz, Wanke, Wanner, Warnecke, Warnke, Wassermann, Weber, Weck, Wecker, Wedekind, Wedel, Wege, Wegener, Wegmann, Wegner, Wehner, Wehr, Wehrle, Wehrmann, Weichert, Weide, Weidemann, Weidinger, Weidlich, Weidmann, Weidner, Weigand, Weigel, Weigelt, Weigert, Weigl, Weihrauch, Weil, Weiland, Weiler, Weimann, Weimer, Wein, Weinberg, Weinberger, Weiner, Weinert, Weingärtner, Weinhold, Weinmann, Weinreich, Weinrich, Weinzierl, Weirich, Weis, Weise, Weiser, Weishaupt, Weiss, Weiß, Weißbach, Weiße, Weißenborn, Weisser, Weißer, Weißmann, Weitz, Weitzel, Welker, Weller, Wellmann, Welsch, Welte, Welter, Welz, Welzel, Wende, Wendel, Wendland, Wendler, Wendt, Wenger, Wenig, Weniger, Wenk, Wenz, Wenzel, Wenzl, Werle, Werner, Wernicke, Werth, Wesemann, Wessel, Wessels, Westermann, Westhoff, Westphal, Wetzel, Weyand, Weyer, Weyers, Wichert, Wichmann, Wick, Wicke, Widmann, Wiebe, Wiechert, Wiechmann, Wieczorek, Wiedemann, Wiedenmann, Wiedmann, Wiegand, Wiegel, Wiegmann, Wieland, Wiemann, Wiemer, Wiener, Wiens, Wiese, Wieser, Wiesmann, Wiesner, Wiest, Wilczek, Wild, Wilde, Wildner, Wilhelm, Wilhelmi, Wilk, Wilke, Wilken, Wilkens, Will, Wille, Willems, Willer, Willmann, Willms, Wilms, Wimmer, Windisch, Winkel, Winkelmann, Winkler, Winter, Winzer, Wirth, Wirtz, Wischnewski, Wisniewski, Witt, Witte, Wittek, Wittenberg, Wittich, Wittig, Wittke, Wittmann, Wittwer, Witzel, Witzke, Wohlfahrt, Wohlfarth, Wohlgemuth, Wöhrle, Wolf, Wölfel, Wolff, Wölfle, Wolfram, Wolfrum, Wölk, Woll, Wollmann, Wollny, Wollschläger, Wolter, Wolters, Wörle, Worm, Wörner, Wortmann, Wrede, Wrobel, Wulf, Wulff, Wunder, Wunderlich, Wunsch, Wünsch, Wünsche, Würfel, Wurm, Wurst, Wurster, Wüst, Wuttke, Yildirim, Yildiz, Yilmaz, Zabel, Zach, Zacharias, Zacher, Zahn, Zander, Zapf, Zauner, Zech, Zeh, Zeidler, Zeiler, Zeitler, Zell, Zeller, Zellner, Zenker, Zettl, Zieger, Ziegler, Zielinski, Zielke, Ziemann, Ziemer, Zimmer, Zimmerer, Zimmermann, Zink, Zinke, Zinn, Zipfel, Zitzmann, Zobel, Zoller, Zöller, Zöllner, Zorn, Zuber, Zühlke, Zwick]\nstreet: [Aalheitengraben, Abdenastraße, Abraham, Äbtissinsteig, Abt-Vitalis-Straße, Achenweg, Achterdörper Weg, Achtern Strand, Äckernkamp, Adalbert-Stifter-Weg, Adam-Pfeuffer-Straße, Adelgundenstraße, Adenauering, Adlerring, Adolf-Ehrtmann-Straße, AdresseFuchshofener Straße, Affenbergstraße, Aggensteinstraße, Agnes-Sapper-Straße, Ahlbecker Straße, Ahornhöhe, Ahrhutstraße, Aichener Straße, Aixer Straße, Alardusstraße, Albernauer Straße, Albert-Eise-Weg, Albertus-Magnus-Platz, Albrecht-Achilles-Straße, Aldinger Straße, Alexander-Pachmann-Straße, Alfert, Alfred-Dehlinger-Straße, Alldorn, Allerbecker Weg, Allhornstieg, Alma-Rogge-Weg, Almweg, Alpenblickstraße, Alsbacher Straße, Alsterring, Altbriesnitz, Alte Auer Straße, Altenberg, Altendettelsauer Straße, Altenhainerstraße, Altenrheiner Straße, Alter Bannweg, Altes Sonnenbad, Altgrabengässchen, Altjührdener Straße, Alt-Lübars, Altmurgweg, Altstädter Gasse, Alversloweg, Am Abendsberg, Ameke, Amelsbürener Straße, Amethyststraße, Ammerlandallee, Amtenbrinks Weg, Amthorstraße, Amtmann-Daniel-Straße, Anbaustraße, An den Behsen, Andreas-Hofer-Ring, Andreeplatz, Angelnweg, Angermunder Weg, Anhaltische Straße, Anlehen, Anna-Schneider-Steig, Annenhof, Annuntiatenbach, Anton-Aulke-Ring, Apeler Straße, Apollinarisstraße, Appelhof, ARAG-Platz, Arenastraße, Arheilger Kirchgasse, Arminiusweg, Arno-Holz-Straße, Aronweg, Arthur-Mahler-Straße, Arzbergweg, Aschebachstraße, Aschingerstraße, Asperger Straße, Atenser Allee, Atzelpfad, Auchertwiesenweg, Auenwinkel, Aueufer, Auf dem Berge, Aufderhöher Straße, Aufseßplatz, Augustaallee, August-Broemel-Straße, Augustinerbach, Aunham, Außenring, Äußere Löwenstraße, Autobahn A5, AWG-Siedlung, BAB44 Nord, Bach, Bächlingen, Bäckerberg, Backhausstraße, Baden Badener Straße, Badeteichstraße, Bad Sodener Straße, Bagers Weg, Bahnhofplatz 3,  Lenggries, Bahnstraße-alt, Baikonurweg, Balatonstraße, Balger Straße, Ballig, Baltischer Weg, Banderbacher Straße, Bännjerstraße, Barbara-Kayser-Straße, Bardenitzer Dorfstraße, Bärenriegelweg, Bargerhof, Barkower Straße, Barnstorfer Straße, Bartelbergweg, Bartholomäusstraße, Basbergstraße, Basteistraße, Batteriegasse, Bauernallee, Bauernweide, Baumbachstraße, Baumhof, Bauordenstraße, Bavariaring, Bchsatraße, Bechsteinweg, Beckersheide, Beckwitzer Straße, Beerbuschstieg, Beethovenstraße, Behmweg, Bei den Kappen, Beienheimer Straße, Beim Billing, Beindestraße, Beitterstraße, Belfortstraße, Bellmannstraße, Bembürener Weg, Benedikterstraße, Benjamin-Vogelsdorff-Straße, Benno Schilde Platz, Bentenweg, Beratgerstraße, Berdumer Weg, Bergdorfstraße, Bergerweg, Berghamm, Bergische Landstraße, Bergmühlenwehr, Bergsteiner Straße, Berkelmannweg, Berliner Promenade, Bernauerstraße, Bernhard-Becker-Straße, Bernkottstraße, Berscheid, Berthelsdorfer Straße, Bertolt-Brecht-Weg, Besengaustraße, Bether Straße, Bettina-von-Arnim-Straße, Beueler Bahnhofsplatz, Beutenfeldstraße, Beyerbachstraße, Bgm.-Schelchshorn-Straße, Bicherouxstraße, Bieberer Straße, Bielastraße, Bienertstraße, Biernatzkistraße, Bietigheimer Straße, Bilker Straße, Billwerder Steindamm, Bingergasse, Binweg, Birkenbruch, Birkensteingasse, Birkesdorfer Straße, Birkwitzer Straße, Bischheimer Straße, Bischofsackerweg, Bischof-Wolfger-Straße, Bitscher Straße, Blaffert, Blankenhornstraße, Blatzheimer Weg, Blechenstraße, Bleichenweg, Bleigasse, Bliesaue, Blockfeldstraße, Blomestraße, Blumenhagener Straße, Bluntschlistraße, Böchinger Straße, Bockhacken, Bockmühlenweg, Bodanplatz, Bodenburgallee, Bodinusstraße, Boettgerstraße, Böhlener Straße, Böhmersweg, Bohnmühlgasse, Bokeler Weg, Bolbergweg, Bollenser Weg, Bolongarostraße, Bommersfeld, bonhoeferstraße, Bonnermannsfeld, Bontkirchener Straße, Borbecker Platz, Borgersstraße, Borinskistraße, Bornheimer Straße, Bornsdorf Hasenweg, Börsenplatz, Bosauer Straße, Boslerstraße, Bothestraße, Bottwarbahnstraße, Boxberg, Brabänderweg, Brackebuschstraße, Braigstraße, Bramkoppel, Brandenburger Weg, Brandkuhlenweg, Brandweidenweg, Brauereistraße, Braukämperstraße, Bräunlinger Straße, Brautschatztwete, Breddeweg, Bredkamp, Brehtonweg, Breitegrund, Breitenhölzer Straße, Breite Straße, Brelen, Bremersweg, Brennaborstraße, Brenscheid, Bretzfelder Straße, Brieselanger Straße, Brinker Feld, Brockamp, Brockstreck, Bröhlstraße, Brokforster Weg, Brommerstraße, Brookring, Brucher Straße, Brüchtenweg, Brückenkopf, Brücklmeierstraße, Brüder-Busch-Straße, Bruderwöhrdstraße, Bruggspergerstraße, Bruhnsstraße, Brunhildenstraße, Brunnenbühl, Brunnererweg, Brünnsteinstraße, Bruno-Tesch-Straße, Brüsselstraße, Buchauer Straße, Buchenberg, Buchenring, Buchheide, Buchloe, Buchwaldweg, Buckower Damm, Budentannenweg, Buflingsried, Bühler Straße, Bulachweg, Bulmannstraße, Bundesautobahn, Büningweg, Büppeler Weg, Burgackerweg, Bürgelstollen, Burgfriedenstraße, Burghofstraße, Burgmannsweg, Burgsteinfurter Damm, Bürgweg, Bürknersfelder Straße, Burtscheider Straße, Buschgarten, Buschrosenweg, Büsnauer Platz, Butendiek, Buttenwegle, Butzweilerstraße, Cäcilienstraße, Cambener Weg, Campus Ring, Cappeler Straße, Carl-Bobach-Straße, Carmauxstraße, Carusufer, Castroper Hellweg, Celní, Champagnatplatz, Charlottenhofstraße, Chemnitzer Weg, Chransdorfer Straße, Christian-Gau-Straße, Christinenweg, Christophorusstraße, Cimbernstraße, Clarenberg, Clausiusstraße, Clemensplatz, Cliener Straat, Coesfelder Berg, Colmdorfstraße, Condomer Straße, Consulentengasse, Cornelius-Münch-Weg, Cottbusser Platz, Creglingen, Cronheim, Culmer Straße, Curt-Querner-Straße, Dachbergstraße, Dackenheimer Straße, Dahlhok 22A, Daisbachtalstraße, Dallnstraße, Damerowstwiete, Dammstraße/Stiftstraße, Daniel-Eckhardt-Straße, Dannenkoppel, Daphnestraße, Dasbecker Weg, Daubhausstraße, David-Eisenmann-Straße, Debussyweg, Dechantshof, Deelböge, Degenfeldstraße, Deichelweg, Deilinghofer Straße, Deisterweg, Delbrücker Straße, Delling, Demmelweg, Dennekamp, Deppendorfer Straße, Derner Bahnstraße, Detlef-Bremer-Straße, Deumentenstraße, Deutschherrnufer, Deverweg, Dickampstraße, Diebelbachstraße, Diederser Weg, Diekamp, Diematsweg, Diepental, Diesdorfer Privatweg, Dieterlestraße, Dietrich-Buxtehude-Straße, Diezstraße, Dimitroffstraße, Dingwall Way, Dirlenbacher Weg, Disternicher Torwall, Ditzinger Straße, Döbernsche Straße, Dodo-Wildvang-Weg, Dohrener Weg, Doktorgäßchen, Doktor-Otto-Klemp-Straße, Doldenäcker, Dolmanstraße, Domfreihof, Dompeweg, Donatusweg, Donndorfer Straße, Doomerstraße, Dörenstraße, Dorfgärten, Dorfstraße, Dormettinger Straße, Dörndichweg, Dornkamp, Dorotheenstraße, Dorschhauser Weg, Dosmühle, Drachenfelsweg, Dr.-Alfred-Schwab-Platz, Dreiburgenblick, Dreikirchenstraße, Dreirosengasse, Dreuschendorf, Dringenberger Straße, Drosselbergstraße, Drusenbergstraße, Duchcovská, Duisburger Straße, Dunckerstraße, Dünner Straße, Dürener Straße, Dürrenbacher Hütte, Dusekestraße, Düstruper Heide, Dweerkamp, Ebbinghauser Weg, Ebereschenallee, Eberner Straße, Ebertystraße, Ebsdorfer Straße, Eckardistraße, Eckendorfer Straße, Eckertstraße, Ecksweg, Edelsteig, Edgar-Scheibe-Straße, Edmund-Rieß-Straße, Eduard-Klüber-Straße, Egarten, Egertenstraße, Eggenweg, Egidienplatz, Ehenbachstraße, Ehnernstraße, Ehrental, Eichberg, Eichelseeweg, Eichenhang, Eichenwäldchen, Eichhahnweg, Eiching, Eichstraße, Eickendorfer Straße, Eiderweg, Eigenheim Siedlung, Eimersweg, Einhäuschen-Querstraße, Einsteinring, Eisenbahnlängsweg, Eisenschmiedmühle, Eiskeller, Eitzenhamer Straße, Elbenkamp, Elbstraße, Elfenbeinweg, Elhardtplatz, Elisabeth-Mara-Straße, Elitz, Ellerbittweg, Ellharter Steig, Elly-Heuss-Knapp-Platz, Elmstraße, Elsborn, Elsteraue, Eltweg, Embser Dorfstraße, Emil-Erlenmeyer-Forum, Emmelhofer Straße, Emmi-Kurzke-Straße, Emser Platz, Endertstraße, Engelbosteler Damm, Engelsgasse, Enges Gründlein, Enkweg, Enstestraße, Enzensbergstraße, Eppelborner Ecke, Erasmusstraße, Erbsenstraße, Erdmannsweilerstraße, Erfweilerstraße, Erich-Halbauer-Weg, Erika-Köster-Straße, Erlacher Hauptstraße, Erlengang, Erlhagen, Ermischstraße, Ernst-Alban-Weg, Ernsweg, Ertmarweg, Erzbischof-Buchberger-Allee, Eschborner Landstraße, Eschengasse, Escherweg, Esenser Straße, Essenberger Straße, Esteweg, Ettersbergsiedlung, Etzwiesenberg, Eugen-Herrmann-Straße, Eulenbühlweg, Europa Allee, Eutschützer Höhe, Evreuxring, Externsteiner Straße, Fackenburger Allee, Fahrenbacher Straße, Fährgrund, Faktoreistraße, Falkenburgweg, Falkenweg, Falsterring, Färbergasse, Farrenstraße, Faule Birke, Fechnerstraße, Fehmarnstraße, Feierabendweg, Feldanger, Feldgärtenstraße, Feldmannshof, Feldtor, Felix-Wankel-Straße, Felsenkellerpromenade, Fensenhöhenweg, Ferdinand-Keller-Straße, Ferrowweg, Fettweide, Feuerseeplatz, Fichtelgebirgsstraße, Fiedelerplatz, Filkuhlweg, Finkenbacher Straße, Finkstroth, Firrelerstraße, Fischerbergstraße, Fischerring, Fischmarkt, Flachsbleiche, Flamweg, Fleck, Fleineheimer Straße, Fleschützer Straße, Fließenhardtstraße, Flögelinger Straße, Florinsmarkt, Flottbektal, Flünnertzdyk, Flütjenburgstraße, Fohlenkampstraße, Föhrthofweg, Forckestraße, Förriener-Loog, Förstergang, Forstinninger Straße, Fort Worth-Platz, Franckeplatz, Frankenholzer Weg, Frankfurter Straße, Franz-Bauer-Weg, Franzenstraße, Frauenbrunner Straße, Frauenplan, Fraukircher Weg, Freerbruchstraße, Freiburgstraße, Freigarten, Freiröttenbach, Frenkingstraße, Freudeneck, Freysestraße, Frieda-Seidlitz-Straße, Friedensallee, Friedersdorfer Weg, Friedleinstraße, Friedrich-Castelle-Straße, Friedrichsfelderstraße, Friedrichstädter Straße, Friesener Weg, Friller Straße, Fritz-Bockius-Straße, Frohnepfad, Fronau, Froschlake, Frühmeßweg, Fuchsgrube, Fuchsweg, Fuhrgabel, Füllgesweg, Funkenstraße, Fürstenberg, Fürst-Franz-Joseph-Straße, Furtredder, Gablonzer Straße, Gaemsgasse, Gailertsreuth, Galappmühler Straße, Gallberger Weg, Galmeistraße, Gangelsgarten, Gänserasen, Ganzhornstraße, Gardinger Weg, Garreler Straße, Gartenstadt, Gärtnerweg, Gässle, Gatherweg, Gaupel, Gebelsbergstraße, Gebrüder-Loewe-Straße, Geenenstraße, Geheimrat-Heß-Ring, Gehrtshorst, Geigerswäldele, Geisenheimer Straße, Geißhöhe, Gelber Kreidebusen, Gelnhäuser Straße, Geminiweg, General Wever Straße, Genslerstraße, Georg-Brötz-Straße, Georgenstraße, GEPA-Weg, Gerberschanze, Gerhard-Ellrodt-Straße, Gerhart-Hauptmann-Weg, Gerlindstraße, Gernbergweg, Gersbachtalstraße, Gerstenweg, Gertrud-Eysoldt-Straße, Geschwister-Scholl-Platz, Gesundbrunnen, Gewebering, Gewerbepark Cité, Geyersberger Straße, Giebelweg, Gieseckenkamp, Gießener Straße, Gilde, Gilmerich, Ginsterstraße, Giselastraße/Kaulbachstraße, Glain, Glasfabrikstraße, Glastener Straße, Gleichenstraße, Glemsstraße, Glindower Straße, Glockenpohl, Glower Straße, Glühwürmchenweg, Gneisenauring, Göddeldorf, Goeckingkstraße, Goffineweg, Goldackerweg, Goldene Linie, Goldmannstraße, Golfplatz, Gölzstraße, Goppeltweg, Görlitzer Weg, Gosdaer Dorfstraße, Gößmannsreuth, Gotische Straße, Gottfried-Hart-Straße, Gotthelf-Leimbach-Straße, Gottlieb-Olpp-Straße, Götzen, Goystraße, Grabensprung, Grädenerstraße, Graf-Beust-Allee, Gräfenhäuslinger Straße, Grandsberg, Gräsenweg, Grasreutweg, Graudenzer Weg, Gravestraße, Grefrahterstraße, Greinstraße, Grenzhausener Straße, Gretenmühle, Grevenhecke, Griesbachstraße, Grießemer Straße, Grimlinghauser Straße, Grinauer Weg, Grochlitzer Straße, Gromischweg, Gronowskistraße, Groppstraße, Groß Döbberner Straße, Große Bleichen, Großer Griechenmarkt, Großhecker Weg, Großmehringer Straße, Großstückweg, Grotekampstraße, Grubacker, Grubweg, Grunauer Straße, Gründlacher Straße, Grüne Hoffnung, Grüner Placken, Grünfeldstraße, Grünsberger Straße, Gruppenstraße, Guckai, Güglinger Straße, Güldenkamp, Gümpelhof, Gundlachstraße, Gunther-Plüschow-Straße, Gürtelstraße, Gustav-Esche-Straße, Gut Dreisborn, Güterhallenstraße, Gütlestraße, Guts-Muths-Weg, Gwinnerstraße, Haarbergweg, Haarstrang, Haberkamps Vöhde, Habichtsring, Hachumer Straße, Haddamarstraße, Haeselerstraße, Haferfeldring, Hafnersteige, Hagelstangestraße, Hagenfeldstraße, Hagentreppe, Hagspiel, Hahnengrundweg, Hahnscher Holzweg, Haidigestraße, Haimendorfer Straße, Hainer Pfad, Hainthalstraße, Halbestadt, Haldenweg, Halle-Kasseler Straße, Halligenplatz, Halsbeker Straße, Hambrgstraße, Hamerlestraße, Hammerbergweg, Hammersberg, Hammkamp, Handal, Hanebergstraße, Hangenkamp, Hannastraße, Hanns-Eisler-Weg, Hansaweg, Hans-Claßen-Straße, Hänselmannstraße, Hansgaß, Harald-Striewski-Straße, Hardenstraße, Hardtplätzchen, Harksheider Straße, Harpener Heide, Harscheider Weg, Hartensteiner Straße, Hartlweg, Hartwarder Bruchweg, Harztorwall, Haselnußring, Hasenbrucher Weg, Hasenlohe, Haslangstraße, Hasselbreite, Hasselwisch, Hatefeld, Hatzevennstraße, Hauendorf, Haumannplatz, Hauptmann-Schöningh-Straße, Hauptwieke, Hausdorffstraße, Hausgelänge, Hausmannstraße, Haustraße, Haverkampstraße, Hebbelplatz, Hechmecker Weg, Heckenrosenstraße, Hectorstraße, Hedwig-Dransfeld-Platz, Heeper Straße, Hees, Hegeberg, Heger-Tor-Wall, Hehnstraße, Heidebroichstraße, Heidelbeerweg, Heidener Straße, Heidersdorfer Straße, Heidhörnweg, Heidschnuckenweg, Heilenbecker Straße, Heiligenhäger Straße, Heiliggeiststraße, Heimatsberg, Heimersfeld, Heimstättensiedlung, Heiner-Moll-Weg, Hein-Minkenberg-Straße, Heinrich-Brauns-Straße, heinrichstraße, Heinz-Galinski-Straße, Heischhof, Heistergarten, Hektorstraße, Helene-Mayer-Weg, Helfkamp, Hellebardenweg, Heller Weg, Helmerslohne, Helmtrudenstraße, Heltenstraße, Hemmerder Hellweg, Henershuuch, Henkenbrinker Straße, Henningsgasse, Heppenser Straße, Herbert-Kadner-Straße, Herbstbenden, Herdsteig, Herisösch, Hermann-Aust-Straße, Hermannswinkel, Herman-Uhlig-Platz, Heroldsberg, Herrendeich, Herrenkrugstraße, Herrestraße, Herrmannstädter Straße, Herschelstraße, Hertzbergstraße, Herzhorner Straße, Herzog-Johann-Albrecht-Straße, Hesebergweg, Hessenbach, Hesslerweg, Hetzelgasse, Heubruchsweg, Heumadener Straße, Heutalsweg, Heyerhoffstraße, Hiddenseestraße, Hilbertstraße, Hildegundisallee, Hilgenbusch, Hiller-von-Gertingen-Straße, Hiltruper Straße, Himmelsleiter, Hinderpatt, Hinseler Feld, Hinter dem Garten, Hintere Fischergasse, Hinterfeldstraße, Hintermayrstraße, Hinterm Reiherholz, Hiroshimastraße, Hirschenbuckel, Hirschpaß, Hirtenkate, Hitfelder Straße, Hobrechtsfelder Chaussee, Höcherbergstraße, Hochkamp, Hochrißweg, Hochtalstraße, Hockenheimer Straße, Hoeteweg, Hofbrehnweg, Höfenstraße, Hofgarten, Hof Höfen, Hofmaler-Franz-Weg, Hofreuthackerstraße, Hofweg, Höger Weg, Hohe Brücke, Hohenborner Straße, Hohenfelde, Hohenhöveler Straße, Hohenreich, Hohenstauferallee, Hohenweidener Weg, Hoherodskopfstraße, Hohetorwall, Hohlenbergstraße, Höhne, Höhwiese, Holdereggenstraße, Holländergang, Höllenwisch, Höllgrundstraße, Holmweg, Holstenhofkamp, Holter, Holtingsweg, Holzäckerweg, Holzerweg, Holzheim, Hölzleswiesen, Holzvogtweg, Hömericherstraße, Honingser Straße, Hooge Weg, Hopfenleite, Hoppendamm, Horbacher Straße, Hördter Straße, Hörmannsdorf, Horner Hellweg, Hornmühlenweg, Horscheltstraße, Horst-Fitjer-Weg, Hörwegstraße, Hosterweg, Hövelchesweg, Hoxbachstraße, Hubäckerring, Hubertusstraße, Huchtinger Straße, Hudlerstraße, Hüfnerstraße, Hugo-Eckener-Straße, Hühnlesgasse, Hülsdauer Straße, Hülsmeyer Straße, Humlanger Straße, Humsterdorf, Hundshof, Hüngert, Hunsrückweg, Hurt, Husstäenweg, Hutmacherring, Hüttenkrattweg, Hutungstraße, Hygstetter Straße, Ida-Pfeiffer-Weg, Igelstraße, Ihausener Straße, II. Vereinsstraße, Illerdamm, Ilmweg, Ilzstraße, Im Alten Holz, Immanuel-Kant-Straße, Immelnbusch, Immentunsweg, Imolastraße, In den Ackern, Indrastraße, Industriezentrum, Ingolstädter Straße, Innere Brücke, Innerstetal, Institutsstraße, Iptinger Weg, Irrenloher Damm, Isebekstraße, Isernhägener Straße, Istanbulstraße, Itzsteinstraße, Jack Wolfskin Kreisel, Jadebusenweg, Jägerhofallee, Jägerweg, Jakob-Bader-Straße, Janhnstraße, Janusz-Korczak-Weg, Jean-Burger-Straße, Jeetzelgärten, Jenseits der Aue, Jeßnitz, Jilové Straße, Jochartweg, Johanna-Hofer-Weg, Johann-Casimier-Weg, Johannes-Bock-Straße, Johanneshof, Johannesplatz, Johanniskirchstraße, Jöhlinger Straße, Jollystraße, Jorindeweg, Josef-Eisenauer-Straße, Joseph Haumann Straße, J.-S.-Bach-Straße, Juelstraße, Jülicher Ring, Julius-Hatry-Straße, Juliuspromenade, Jungchenbüchel, Jungmannstraße, Junkerweg, Jürnweg, Jutta-Balk-Straße, Kachstedter Straße, Kafkastraße, Kahlertstraße, Kaipershof, Kaiser-Joseph-Straße, Kaiserstrasse, Kalands Gang, Kaldenkirchener Straße, Kalk-Mülheimerstraße, Kallinchener Chaussee, Kalteneggolsfeld, Kalugaer Straße, Kamerstücken, Kammerlachweg, Kampener Weg, Kamsbachweg, Känerbergstraße, Kantensiek, Kanzlerstraße, Kapeller Straße, Kaplan-Höfling-Straße, Kappenberger Damm, Kaptain-Lehmann-Straße, Kardinal-Faulhaber-Straße, Karkweg, Karl-Blessing-Straße, Karlheinz-Stockhausen-Platz, Karlshöhe, Karnaper Markt, Karolinger Ring, Karstenstraße, Käsereiweg, Kaspul, Kastelburgstraße, Kastsanienstraße, Katharina-Neufang-Straße, Käthe-Paulus-Weg, Kattenbeck, Kattrepelsbrücke, Katzensteinstraße, Kaufhausstraße, Kauschaer Straße, Kederbacherstraße, Kehlstraße, Keilmannstraße, Kellenhusener Weg, Kellinghusenstraße, Keltrisstraße, Kempstraße, Keppelner Straße, Kernbergstraße, Kerststraße, Kessenhammer, Ketterschwanger Straße, Kichender Dorfweg, Kieferbachstraße, Kieler Chaussee, Kienzlestraße, Kieshecker Weg, Kilian-Leib-Straße, Kimmichsweilerweg, Kinzigstraße, Kirchbenden, Kirchdornberger Straße, Kirchenstegel, Kirchhainer Straße, Kirchhörder Kopf, Kirchrainstraße, Kirchtalstraße, Kirkwrahe, Kirschborn, Kiskerstraße, Klabundring, Klappekuhlstraße, Klarmanns Kamp, Klausenpfad, Klävemannstraße, Kleersstraße, Kleinbergstraße, Kleine Bäckerstraße, Klein Eller, Kleiner Heerter Weg, Kleines Wegfährels, Kleinflintbeker Straße, Kleinheringen, Kleinnaundorfer Straße, Kleiststraße, Klettenberggürtel, KlgV 748, Klingenhagen, Klinkberg, Klippschloß, Klopfgasse, Klosterbredde, Klostermarkt, Klostrerstraße, Klus, Knabenkrautweg, Knauffstraße, Knieperdamm, Knochstraße, Knörrgasse, Kobelstraße, Kocherwaldstraße, Koelreuterstraße, Kohlbahn, Köhlerplatte, Kohlmarkt, Köhnenstraße, Kolbenholz, Kölfhamm, Kollerbachstraße, Köln-Berliner-Straße, Kolpingsplatz, Kommerweg, König-Heinrich-Weg, Königsber Straße, Königshausen, Königsstuhl, Königsworther Platz, Konrad-Duden-Weg, Konradsreuth, Konsteiner Straße, Kopenhagener Straße, Koppelbarg, Koppersstraße, Korbstück, Kornangers, Kornhausacker, Kortemickestraße, Köschinger Straße, Kostenz, Kothlehen, Köttersweg, Krabbenweg, Kräheneckstraße, Kraichgauplatz, Kramers Kamp, Kranichfelder Straße, Kranzweg, Krautgärten, Krebsmühle, Kreienkoppel, Krementzstraße, Kressbacher Straße, Kreuzäcker, Kreuzeckweg, Kreuzkämpchen, Kreuzstraße, Kriegerdankweg, Kringelkrug, Krochmannstraße, Krölstraße, Krönkenhagen, Kroosweg, Krottorfer Straße, Krumbach, Krummen, Krumperstraße, Krützkamp, Küchenschellenweg, Küdinghovener Straße, Kuhbachweg, Kühlenbergstraße, Kuhlworth, Kuhturmstraße, Küllersberg, Kummertsreuth, Kunigundenruhstraße, Kunzenweg, Kupferschmiedshof, Kurdamm, Kurmainzring, Kurt-Eisner-Straße, Kurzer Kamp, Kußmaulstraße, Küterdamm, Kyffhäuser, Labandstraße, Lachswehrallee, Laerheider Weg, Lahnbeckestraße, Lailensäckerstraße, Lambertsgarten, Lammersfeld, Lampesteig, Landeshäuser Straße, Landgut, Landreiterstraße, Landstuhler Straße, Langbaurghstraße, Langedammstraße, Langeloh, Langenbick, Langenfeldstraße, Langenkampstraße, Langenstraße, Langermannsweg, Lange Straße, Langfurchweg, Langseer Weg, Lankwitzer Straße, Lappenberg, Lassallestraße, Laubanger, Laubwaldstraße, Lauergasse, Lauheide, Lausaer Weg, Lautenstraße, Lautlinger Straße, Lea-Grundig-Straße, Lechtenberg, Leedenstraße, Leeswig, Lehener Straße, Lehmder Straße, Lehnbergring, Lehrer-Wirth-Straße, Leibuschstraße, Leimberg, Leinefelder Straße, Leinstraße, Leising, Leitershofer Straße, Lembergerweg, Lenbachplatz, Lengmoosstraße, Lenssenstraße, Leo-Graetz-Straße, Leonhard-Moll-Bogen, Leopoldplatz, Lerchenhöhe, Les-Epesses-Straße, Lettengasse, Leubnitzer Straße, Leukeweg, Leuterschacher Straße, Leverkurser Straße, Leyenstraße, Licher Berg, Lichtenfelser Straße, Lichthof, Liebenwalder Damm, Liebknechtstraße, Liehrstraße, Lieschensruh, Lietzenburger Straße, Lilienthalweg, Limberg, Lina-Schäfer-Straße, Lindelberg, Lindenbühl, Lindenhügel, Lindenthalstraße, Lindichstraße, Lingener Straße, Linsenhofer Berg, Linzgaublick, Lipplinger Straße, Liselotte-Rückert-Straße, Littenstraße, Löbberthang, Lobstädter Straße, Lochingerstraße, Loderslebener Straße, Löfftzstraße, Lohberger Straße, Loherstraße, Lohmarer Straße, Lohorster Straße, Lohteich, Lommatzscher Platz, Lonseer Straße, Loquarder Reihe, Lorenz-Schott-Straße, Lorscher Straße, Lossaer Straße, Lotichiusstraße, Louis-Beißel-Straße, Löwentorstraße, Lübbrechtser Straße, Lucaestraße, Lückenbachstraße, Lüdenscheider Straße, Ludolf-Camphausen-Straße, Ludwig-Eckert-Straße, Ludwigsluster Straße, Lug ins Land, Luisenburgstraße, Luitpoldpark, Lundenberg, Lüningshove, Lürriper Straße, Lüssweg, Lutherweg, Lütten Damm, Lüttje Weg, Lützenkircher Straße, Luzernefeld, Machtlfinger Straße, Madlower Straße, Magdeburger Tor, Mahden, Mahnertmühle, Maierbreite, Mailbachstraße, Mainfurt, Mainzlarer Straße, Malapertstraße, Mallnitzer Weg, Malterscheidtstraße, Mandelring, Mangoldtstraße, Manningaweg, Manzweg, Marco-Polo-Weg, Margarete-Wolf-Schlomm-Straße, Maria Beinberg, Marie-Eberth-Straße, Marienburger Weg, Marienklausenbrücke, Marienwerder Straße, Marker Allee, Markircher Straße, Markt, Marktstätte, Marlene-Dietrich-Straße, Marquardtstraße, Marsopstraße, Martfelder Weg, Martin-Fischel-Straße, Martinsplatz, Mary-Krebs-Straße, Masers, Mastener Weg, Mathias-Koch-Weg, Mattentwiete, Matthias-Langen-Straße, Mauerhecke, Maurenbrecherstraße, Mauthstraße, Maxburgweg, Max-Glomsda-Straße, Maxim Gorki Straße, Maybachufer, Mechthildweg, Meddingheide, Meeraner Straße, Meeschesteg, Mehrbachstraße, Meierdingsen, Meilitz, Meinhardswindener Straße, Meiselschachtweg, Meißnerstraße, Melatener Straße, Melkbrink, Melloh, Memmingerstraße, Mengsberger Straße, Menzelweg, Mergelfeld, Merkenicher Hauptstraße, Merschwiese, Merzhauser Straße, Messelweg, Mesterfeld, Metternichstraße, Metzinger Straße, Meyersweg, Michael-Gerber-Straße, Michelsberger Weg, Miebachstraße, Milbertshofener Platz, Millauerweg, Mimosenweg, Minna-Herzlieb-Straße, Mirastraße, Mittagleite, Mittelgasse, Mittelstädter Straße, Mitterlängstraße, Mittlerer Bauernwaldweg, Mittlere Uferstraße, Modemannstraße, Möhlenkamp, Mohrengäßle, Molière-Weg, Möllenhoffstraße, Molnerweg, Mönchebergstraße, Mönchshof, Monheimer Straße, Mönsterweg, Moorblöcken, Moorkieferweg, Moosalbstraße, Moosgrund, Morahtstieg, Morgensteig, Moritz-Kabaker-Straße, Morsbacher-Straße, Mosbacher Straße, Mosheimstraße, Mottenburger Twiete, MTS-Siedlung, Müggelheimer Damm, Mühlaustraße, Mühlenauel, Mühlenecke, Mühlenkopfstraße, Mühlenworth, Mühlhofstraße, Mühlsachsen, Mühlwiesenstraße, Mülheimer-Straße, Müller-Thurgau-Weg, Müncheberger Straße, Münchowstraße, Münkselfeld, Münsterstiege, Murgstraße, Muschelweg, Mußbacher Straße, Nachtigallentwiete, Nad Údolím, Nagoldtalstraße, Na Náspu, Nassachstraße, Nathusiusstraße, Nauener Straße, Nazarethkirchstraße, Nebenweg, Neckartenzlinger Straße, Neersbroich, Neidsteiner Straße, Nellessenstraße, Neptunring, Nesselrodestraße, Nettelnburger Straße, Neubauerweg, Neubrücker Straße, Neudorf-Klösterlich, Neue Friedhofstraße, Neuenburger Straße, Neuenhöfer Allee, Neuenwegstraße, Neufferstraße, Neuhauser Hauptstraße, Neuhöhe, Neulandplatz, Neumeyerstraße, Neunmorgenstraße, Neurodestraße, Neusser Feldweg, Neustraße, Neuwerkstraße, New-York-Straße, Nicolaus-von-Dreyse-Straße, Niederadener Straße, Niederende, Niederhofer Holz, Niedermayerstraße, Niedernstraße, Niederstedter Weg, Niedwiesenstraße, Niemannsweg, Nienhöfener Weg, Niesetalstraße, Niklastorstraße, Nikolaus Kopernikus Weg, Nimwegener Straße, Nivelsteiner Weg, Nohraer Weg, Nonnendammallee, Noorstraße, Norddeichweg, Norderney, Nordhaideplatz, Nordlandstraße, Nordoog, Nordwall, Nöschenröder Straße, Nottengartenweg, Nuhtetalstraße, Nussbaumstraße, Nütheimer Straße, Ob den Gärten, Oberasbacher Straße, Oberbreite, Oberdorf, Obere Brandstraße, Oberer Bogenweg, Oberes Griesfeld, Oberetscheid, Obergutstraße, Oberhöchstädter Weg, Oberkleener Straße, Oberlinder Straße, Obermühlberg, Oberntiefer Straße, Oberreithen, Oberseener Weg, Oberste-Wilms-Straße, Oberwallstraße, Ober-Wöllstädter-Straße, Occostraße, Ochtmersleber Weg, Odenheimer Straße, Odilienstraße, Oehrenstöcker Straße, Oemkenstraße, Oestertalstraße, Ofenbergstraße, Offinger Straße, Ohlendorffs Tannen, Ohmenheimer Straße, Öjendorfer Damm, Olbernhauer Straße, Oldenstädter Straße, Ölgrabenstraße, Olof Palme-Straße, Olvenstedter Platz, Oonwai, Opfinger Straße, Opperklappe, Orchideenstraße, Orlická, Ortenbergstraße, Ortsmühle, Osdorfer Straße, Oskar-Miller-Straße, Osnabrückstraße, Ostallee, Ostenfelder Straße, Osterbrook, Osterhof, Osterminnerweg, Osterstraße (Cityring), Ostfriesenstraße, Östliche Hauptstraße, Östringer Weg, Oswald-Bieber-Weg, Ottacker, Otterbach, Öttinger Straße, Otto-Braun-Straße, Otzbergstraße, Overhagener Weg, Paarener Dorfstraße, Padkamp, Palandweg, Palmwiesen, Pannhauser Straße, Papenberger Weg, Papierstraße, Paradeisstraße, Pareyer Weg, Parksee, Parzellenstraße, Passauerstraße, Pastor-Böhm-Straße, Pastorplatz, Paterkamp, Patschinserstraße, Paul-Bleisch-Straße, Paulinenplatz, Payerstraße, Pegauer, Pelkmanns Feld, Pennigbütteler Straße, Perchstetten, Perne, Pestalozzistraße, Peter-Fischer-Allee, Petersbrunner Straße, Petershalde, Petrirodaer Straße, Petzelstraße, Pfaffenbogen, Pfaffing, Pfälzische Straße, Pfarrecke, Pfarrer-Burger-Straße, Pfarrsiedlung, Pfegersäckerle, Pferdetränke, Pfistergrund, Pfluggasse, Pfullendorferstraße, Philipp-Merck-Weg, Pickelstraße, Piepers Feld, Pilgrimstein, Pinnasberg, Pirminiusstraße, Pivitsort, Planetenring, Plärrer, Platten, Platz der Diakonie, Plauenscher Ring, Pleiser Hecke, Plinz, Plötze, Podemuser Straße, Poghausener Grenzweg, Polcher Straße, Polliusweg, Pommrück, Poppenbergweg, Porschendorfer Weg, Portugieserweg, Possenheimer Straße, Posthof, Potgasse, Pötterweg, Praetoriusbogen, Prälat-Schuh-Weg, Praterweg, Prendener Straße, Pretzscher Straße, Prickenweide, Primelstraße, Prinzipalmarkt, Pritzl, Pröbstingstraße, Prof.-Settegast-Weg, Propsteikamp, Proviantstraße, Prüßmannstraße, Pülsener Straße, Püngelerstraße, Pußta, Pützchensweg, Quadtstraße, Queichtalstraße, Querensteder Straße, Quirinsstraße, Rabatzer Straße, Rabenweg, Raddasstraße, Räderloher Weg, Radstädter Weg, Rahel-Straus-Straße, Rahnsdorfer Straße, Raimundstraße, Raitersaicher Straße, Ramhofstraße, Ramsiner Straße, Rangstraße, Rappachstraße, Raschenstraße, Rastorfer Weg, Rathenauallee, Rathsfeld, Ratsteichstraße, Rauberstraße, Rauhöd, Raustetten, Ravolzhäuser Straße, Rebhuhnstraße, Rechtensteinstraße, Reclamstraße, Redmannweg, Reesestraße, Regensburger Platz, Reginhardstraße, Rehbocktal, Rehmkestraße, Reichartstraße, Reichenhardtstraße, Reichsburgstraße, Reifenhofstraße, Reimarstraße, Reinersstraße, Reinhartshofer Straße, Reinoldstraße, Reisenbacher Straße, Reismühler Weg, Reitlingstraße, Rekumer Straße, Rempenstraße, Renften, Renneweg, Rentforter Straße, Reschkestraße, Rethfelder Straße, Reumtengrüner Weg, Reutenen, Reutstraße, Rhedaer Straße, Rheindorferstraße, Rheinischer Ring, Rheinwaldstraße, Rhönhof, Richard-Dehmel-Straße, Richteringhove, Ricklingerstraße, Riedbrunnenstraße, Riedgaustraße, Riedseeweg, Riehler Straße, Rienzistraße, Riesenstraße, Riether Straße, Rimbacher Straße, Rindweg, Ringenwalder Straße, Ringstraße, Rischenweg, Ritterbrunnen, Ritterschaftsstraße, Ritzerstraße, Robert-Blum-Straße, Rochowstraße, Rodaer Weg, Rodemannskamp, Röderfeldweg, Rodinger Straße, Roesoll, Roggenstraße, Rohrachstraße, Rohrheimer Straße, Rohwedderstraße, Rolandufer, Rolloßweg, Römerhügelweg, Rommeestraße, Ronheiderberg, Rönsahler Straße, Rosa-Schubert-Straße, Rosellener Weg, Roseneck, Rosenkavalierplatz, Rosentor, Rösrather Straße, Rossertweg, Roßlaufstraße, Roßwette, Rotdornbogen, Rötelstraße, Rotenhöfer Weg, Roter Weingartenweg, Rothemühleweg, Röthenfeld, Röthgener Straße, Rotkamp, Rottachbergweg, Rotteroderstraße, Rottmannstraße, Rötzweg, Rübenkamp, Rücker Straße, Rüdersdorfer Straße, Rudolffstraße, Rudolphstraße, Rue du Canal, Rüggeberger Straße, Ruhlohkampweg, Ruhrtalstraße, Rumbecker Straße, Rundestraße, Rupert-Bodner-Straße, Ruppiner Straße, Ruschorter Hauptdeich, Rußstraße, Rüthener Weg, Rutzhofen, Saalburgweg, Saarburger Ring, Saathainer Straße, Sachsenhof, Sadelhof, Sagerweg, Sainbacher Straße, Salenhofweg, Salmannsweilergasse, Salzachstraße, Salzgäßchen, Salzunger Tor, Samstagstraße, Sandberg, Sandeler Straße, Sandgrabenweg, Sandkaulstraße, Sandsteinweg, San Gimignano-Weg, Sankt Birgittenhof, Sarataweg, Sassenburger Weg, Sattlergasse, Sauersgang, Sautterweg, Schaarberg, Schachtelhalmweg, Schaeuffelenstraße, Schäferhütte, Schäfflerbachstraße, Schafsteinweg, Schallenkamer Straße, Schanzengarten, Scharfenberger Straße, Scharnhorstring, Scharwinkelweg, Schauenstraße, Scheederstraße, Scheffoldstraße, Scheidestraße, Schellbergstraße, Schelmenlohe, Schenefelder Platz, Schepkerweg, Scherlingstraße, Scheuerleweg, Schichauweg, Schieferöschleweg, Schießberggraben, Schiessstraße, Schiffhornfeld, Schildower Straße, Schillershöhe, Schimmelreiterweg, Schirick, Schlachterstraße, Schlager Straße, Schlattgrabenstraße, Schleglergasse, Schleider Hauptstraße, Schleißweg, Schleswigstraße, Schlichtallee, Schlierenbachstraße, Schloitweg, Schloßbleiche, Schloßgartenweg, Schlößlestraße, Schloßstraße, Schluchterner Straße, Schlutuper Straße, Schmalholz, Schmeil-Weg, Schmettererstraße, Schmidtsgäßchen, Schmiedestrang, Schmittenstraße, Schmücke, Schnampelweg, Schneebergweg, Schneidergässle, Schnellweg, Schnitterwiese, Schoeppinger Straße, Schölling, Schönangerstraße, Schönböckener Straße, Schönebecker Straße, Schöner Blick, Schönheider Straße, Schönmühle, Schönwalder Straße, Schopflocher Straße, Schorfheidestraße, Schosserstraße, Schrägweg, Schrebersiedlung, Schricker Weg, Schrötteringksweg, Schuckertdamm, Schulbuschweg, Schulhof, Schulte-Heuthaus-Straße, Schultheißstraße, Schulzeweg, Schürenkamp, Schüsselkorb, Schüttenkamp, Schützendelle, Schützweg, Schwaber Straße, Schwaketenstraße, Schwammenauel, Schwangauer Straße, Schwarwaldstraße, Schwarze Ellergasse, Schwarzmattweg, Schwedengang, Schweigstraße, Schweitzerstraße, Schwemmstraße, Schweringer Straße, Schwesternstraße, Schwindstraße, Scribastraße, Sebastianstraße, Sedanplatz, Seebenischer Straße, Seegartenstraße, Seehofweg, Seelestraße, Seerandweg, Seewaldsiedlung, Seggerweg, Seidenberger Straße, Seifgrundstraße, Seitengasse, Selhorster Straße, Selm, Semiramisstraße, Sender Straße, Senior-Blumenberg-Gang, Sentastraße, Sernowstraße, Seubersdorf, Sextrostraße, Sichelstraße, Siebenbürgener Straße, Siebenschön, Siedenweg, Siedlung Neuglück, Siegelweg, Siegfriedplatz, Siehdichfürer, Sielower Grenzstraße, Siepen, Sieweckestraße, Silberbachstraße, Silberwaldstraße, Simeonistraße, Simon-Hegele-Straße, Simsseestraße, Sinner Weg, Sitten, Skelinghörn, Smartareal, Sodweg, Söhnleinstraße, Soldnerweg, Sollingstraße, Soltwischredder, Sommerhaldenstraße, Sommersberg, Sonnebergerstraße, Sonnenburger Weg, Sonnenrainweg, Sonniger Weg, Sophie-Charlotte-Platz, Sörensenstraße, Spaakallee, Spannbrink, Späthstraße, Specklstraße, Speldorfer Straße, Sperenberger Straße, Spicherenstraße, Spiekerooger Straße, Spielleite, Spinatweg, Spittaler Straße, Spitzenstraße, Spleet, Spormühle, Spraitbacher Straße, Sprengerstraße, Springorumallee 20, Sredzkistraße, Stadelhofen, Stadskanaal, Stadtgutweg, Stadtplatz, Staffel, Stahlzwingerweg, Stammannstraße, Stangenröder STraße, Stapelager Weg, Starkenburgring, Stattengasse, Staufenberger Straße, Stauseebogen, Stecheraweg, Steegstraße, Stefan-Schwer-Straße, Stegerstraße, Stehrstraße, Steigerweg, Steinachstraße, Steinbecker Meile, Steinbrede, Steinbusch, Steinerne Kirche, Steingarten, Steinhauerstraße, Steinhügel, Steinkopfinsel, Steinmühlstraße, Steinröhrenweg, Steint, Steirische Straße, Stemberg, Stengelstraße, Stephan-Jantzen-Straße, Sterkrader Str.75, Sternsgarten, Stettiner Straße, Steyrer Straße, St. Hubertus, Stiegenweg, Stifterstraße, Stiftungsstraße, Stirnberg, Stockbrunnengasse, Stockheimer Straße, Stocksweg, Stöhrerstraße, Stölpenhof, Stöntzscher Straße, Storchsgasse, Störtebeker Straße, Stranddistelweg, Straße 103, Strauer Straße, Streifenau, Stresemannplatz, Striepentwiete, Ströher Straße, Strousbergstraße, Struppiusstraße, Stubaier Straße, Stüblehof, Stüheweg, Stürzelweg, Südallee, Suder Allee, Suderoder Straße, Südhag, Südparkallee, Suedstraße, Sulburgring, Sülzbachstraße, Sülztorstraße, Sunnerkampstege, Susannenstraße, Suttoner Weg, Sydowstraße, Tabakblütenweg, Tafingerstraße, Talbach, Talpenberger Straße, Tangelner Straße, Tannenberg, Tannenriedweg, Tannweiler, Taschenturmstraße, Taubenbrunnwiesen, Täubners Gässchen, Tauschaer Straße, Teckstraße, Teglinger Hauptstraße, Teichwiese, Tellenweg, Templergraben, Teplinger Straße, Terzkastraße, Teufelsgraben, Texas Avenue, Thaliastraße, Theaterwall, Thelengraben, Theodor-Fetköter-Straße, Theo-Vondano-Straße, Thibautstraße, Thieplatz, Tholeyer Straße, Thomas-Müntzer-Hof, Thorenfeld, Thumberg, Thüringerstraße, Tichatscheckstraße, Tiefende, Tiefwerderweg, Tilbecker Straße 34, Timmenröder Straße, Tippelsberger Straße, Tittmannstraße, Todtmooserstraße, Tomburgstraße, Toni-Schumacher-Straße, Tonweg, Tornaer Straße, Tostedter Damm, Traifelbergstraße, Tränkstraße, Traubelstraße, Trautenaustraße, Treiberstraße, Trennfurter Straße, Treuenbrietzener Straße, Trienter Straße, Trimbergstraße, Trögelsbach, Trooststraße, Trübenbachstraße, Truttenseifen, Tucholskystraße, Tulpenstiege, Türkeistraße, Turmhofschacht, Türrschmidtstraße, Twellbachtal, Über dem Heckenfeld, Überlinger Weg, Udetstraße, Uesener Feldstraße, Uhlbacher Straße, Uhlichs Weg, Ulfilasstraße, Ulmer Weg, Ulrichstraße, Umhausener Weg, Unfaltstraße, unknown, Unteranger, Unter dem Ahorn, Untere Badgasse, Unterecke, Unterer Kalk, Unterhoferstraße, Unterloh, Unterm Hagen, Unternädringen, Unterscheidentaler Straße, Unterwaldener Straße, Up de Rieth, Upsalaer Straße, Urftstraße, Ursula-Haider-Straße, Usinger Straße, Utzweg, Vahrenort, Valentinusberg, van-Brackel-Straße, Varnbülerstraße, Vechtemoe, Veilchengrund, Velgen, Vennegärten, Verdiweg, Veronika-Zorn-Straße, Vetschauer Straße, Victoria-Ufer, Viehstraße, Vierhandbank, Vierzehnheilligen, Viktor-von-Scheffel-Straße, Vilshofener Straße, Vinsebecker Weg, Vital-Daelen-Straße, Vockestraße, Vogelhainweg, Vogelsangsberg, Voglerblick, Vogt-Wells-Kamp, Voigtweg, Völkersgasse, Volksfestplatz, Vollrath-Müller-Straße, Voltmerstraße, von-Behring-Straße, Vondersweg, Vor dem Ahlsberg, Vordere Marktstraße, Vörfken, Vormbrockweg, Vorschlehern, Vorwerksgasse, Voßhorst, Vuvenstraße, Wachberg, Wachteloh, Wackenbergstraße, Wagenburgstraße, Wägnerstraße, Wahnsdorfer Weg, Waisenhausdamm, Walburgerweg, Waldbröler Straße, Waldenburger Straße, Waldgasse, Walditz, Waldowstraße, Waldschlösschenpark, Waldvogtstraße, Wälkershof, Walldorfer Straße, Wallgäßchen, Wallsdorf, Walskamp, Walter-Flex-Straße, Waltersdorfer Chaussee, Walther-Hensel-Straße, Wambacher Mühle, Wandweg, Wannackerweg, Warbruckstraße, Warmbrunner Straße, Warschauer Straße, Wartheweg, Waschweg, Wasserfallstraße, Wassermühlenstraße, Waterfohr, Wattweg, Webersplatz, Weddigenweg, Weetenkamp, Wegenkamp, Weg zum Poethen, Wehlgarten, Wehrener Straße, Weichenbergerstraße, Weidebrunner Gasse, Weidener Viehweg, Weidenweg, Weifaer Straße, Weiherbühlstraße, Weiherwiese, Weiler Weg, Weinberghof, Weinhartstraße, Weinstraße Süd, Weiskircher Straße, Weißekreuzstraße, Weissenhof, Weißer Weg, Weißwaldstraße, Weittenauerstraße, Welfenweg, Wellersbergstraße, Welsbachstraße, Wembersweg, Wendelinusstraße, Wendessener Straße, Wengen, Wenneberg, Wenzelweg, Werderstraße, Werksstraße, Werner-Bock-Straße, Wernhardsberger Straße, Werstener Friedhofsstraße, Werzenkamp, Weserstrandstraße, Wessiszeller Straße, Westendring, Westerender Straße, Westerhoven, Wester Rott, Westfriesenstraße, Westmauer, Wethener Straße, Wetterstraße, Weuenstraße, Weyrauchstraße, Wichertsweg, Wickingstraße, Widmannstal, Wiecker Straße, Wiedenthal, Wiehagen, Wiemersheide, Wienstraße, Wieselerstraße, Wiesengarten, Wiesenteich, Wiesmannstraße, Wigandstaler Straße, Wildbahn, Wildensteinstraße, Wildpoltsweiler, Wilhelm-Ammon-Straße, Wilhelmine-Fey-Straße, Willebadessener Weg, William-Watt-Straße, Willi-Hannen-Straße, Willmannstraße, Willy Brandt Straße, Wilmsberg, Wilzenweg, Winde, Windhorster Weg, Windschläger Straße, Wingertsweg, Winkelschneise, Winnender Straße, Winterfeldstraße, Wintersheide, Wippert, Wirtsfeldstraße, Wismarstraße, Witneystraße, Wittenberger Weg, Wittgensteinstraße, Wittlinger Straße, Witzendorffstraße, Woerthstraße, Wohlwillstraße, Wohrtdrift, Wolfdrossel, Wolfgang-Döring-Straße, Wölfinger Straße, Wolfsbacher Straße, Wolfshainer Straße, Wolfsteiner Straße, Wolkersdorfer Berg, Wollseifener Straße, Wolzogenstraße, Wörishofer Straße, Worpsweder Straße, Wöstewohlde, Wührden, Wülflinger Straße, Wulmstorfer Wiesen, Wupperplatz, Wurmtal, Wurzelbauerstraße, Wüstenweg, Xaveriweg, Zacharias-Löbbecke-Straße, Zamboninistraße, Zaschendorfer Straße, Zauritzweg, Zedernholzweg, Zehntnerstraße, Zeise, Zelgmadenstraße, Zellrüglingen, Zentnerstraße, Zerzabelshofstraße, Zgorzelec, Ziegelhaldenstraße, Ziegelstadel, Ziegerhäuser, Zierkirschenstraße, Zimmerecke, Zinkbergweg, Zinsgrabenweg, Zirndorfer Weg, Zochstraße, Zollkamp, Zorgestraße, Zschonerblick, Zückwolfstraße, Zu den Lüften, Zuger Straße, Zum Alten Speicher, Zur Alten Burg, Züttlinger Straße, Zweiwiedenstraße, Zwickauer Straße, Zwirnerstraße, Zypressenstraße, Zypressenweg]\npostal_code: ['#####']\ncity: [Aalen-Unterkochen, Abens, Abstetterhof, Achern-Mösbach, Adelmannsfelden, Aderstedt, Affalterbach, Aglasterhausen, Ahlum, Ahorntal, Ahrensfelde-Blumberg, Aichach-Grießbeckerzell, Aidling, Aken OT Kleinzerbst, Albshausen, Alerheim, Alfdorf-Rienharz, Alfter, Allenbach Birkenfeld, Allershagen, Almena, Alsleben, Altdorf bei Nürtingen, Altenbach, Altendiez, Altenkrempe, Altenstadt a.d.Waldnaab, Alterthiem, Althengstett, Altlandsberg, Altnuifra, Alt-Schadow, Alvesen - Rosengarten, Alzey, Amerang, Ammerbuch - Pfäffingen, Ampfing, Andechs, Angelse, Ankum, Anröchte, Apen, Apensen, Ardesdorf, Arget, Arnoltice, Arnstadt, Arzbach, Aschaffenburg-Obernau, Aschersleben, Assel, Attendorn, Auerbach Vogtland, Augenarzt, Aukrug, Aurich-Plaggenburg, Aying-Peiss, Babelsberg, Bacharach, Bad Arolsen, Badem, Badenweiler, Badingen, Bahlen, Baiern, Balderschwang, Ballenstedt, Balve-Beckum, Bansin, Barderup, Bargeshagen, Barlohe, Barnisław, Barsinghausen Holtensen, Barum, Bassenheim, Baumholder, Bayreuth-Oberkonnersreuth, Bechtsbüttel, Bedburg, Beelitz OT Wittbrietzen, Beetzendorf, Behringen, Beilngries, Belgern, Bellin, Benediktbeuern, Bensersiel, Bentfeld, Berelin, Berge, Bergfelde, Bergisch Born, Berg Pfalz, Berkenbrück, Berlstedt, Bernau OT Schönow, Bernkastel, Bersteland Niewitz, Beselich-Schupbach, Bettbrunn, Betzigau, Beutersitz, Bexbach-Oberbexbach, Biblis, Biebergemünd, Biedenkopf-Eckelshausen, Bienenbüttel, Bietigheim, Billigheim-Ingenheim, Binz, Birkenau, Birkenwerder, Bischberg, Bischofsmais, Bismark Altmark, Bitburg Biersdorf, Bitzenhofen, Blattersleben, Bleckede OT Radegast, Blender, Blomberg, Blomesche Wildnis, Blunk, Bobingen, Bochum, Bockelkarthen, Bockhorst, Bodenkirchen, Bodnegg, Böhl, Böhmfeld, Bokelberge, Bollberg, Bomlitz, Bonn-Bad Godesberg;Bonn, Borchen-Dörenhagen, Börger, Borgwedel, Borna, Bornheim-Walberberg, Borrentin, Bösdorf, Bostel, Bourheim, Boxdorf, Brackenheim, Brakel, Brandenburg, Brannenburg, Bräunlingen, Brebel, Breege, Breidenbach-Oberdieten, Breitenbronn, Breitenworbis, Bremen-Grohn, Bremm, Bretsch, Brewitz, Brieske, Brilon-Nehden, Brodau, Brokstedt, Bruchhausen-Vilsen, Bruckbach, Brüggen Bracht, Brunnen, Bubach, Büchel, Buchen-Bödigheim, Buchholz in der Nordheide, Büddenstedt, Buggingen, Bühl-Sand, Bülkau, Bunsoh, Burgau, Burgdorf-Otze, Burghasungen, Burgkirchen an der Alz, Burg OT Parchau, Burgstädt, Burgwald-Ernsthausen, Burkersdorf, Burrweiler, Busdorf, Büsum, Buttenheim, Buxheim, Calbe, Calw-Holzbronn, Cappel, Carpin, Cham, Chieming, Claussnitz, Cochem, Colno, Cospeda, Cottbus, Cremlingen, Crispendorf, Cursdorf, Dachrieden, Dahl, Dahme Mark, Dalldorf, Dammdorf, Dangenstorf, Dannstadt, Darmstadt - Arheiligen, Darze, Dattenberg, Dautphetal, Dedensen, Deidesheim, Deißlingen-Lauffen, Delecke, Delmenhost, Derching, Dessau OT Mildensee, Dettenheim, Dettmannsdorf, Deutleben, Deyelsdorf OT Fäsekow, Diedrichshagen, Diemelstadt-Neudorf, Diera-Zehren OT Kleinzadel, Diespeck - Ehe, Dietenheim, Dietfurt an der Altmühl, Dietzhölztal, Dillingen an der Donau, Dinklage, Dirlewang, Dittenheim, Doberschütz, Dodau, Dollerup, Domsühl, Dönsdorf, Dorfen, Dornburg, Dörnitz, Dorstadt, Dortmund-Mengede, Dossenheim, Drage, Dranske, Drebber, Dreieich-Dreieichenhain, Dreileben, Dresden-Cossebaude, Driedorf, Drolshagen-Essinghausen, Dubro, Duesseldorf, Duisburg-Neumühl, Dummerstorf OT Bandelstorf, Dünstekoven, Düren-Gürzenich, Dürnau, Düsseldorf-Reisholz, Ebensäge, Eberhardzell, Ebersbach Sa., Eberstadt, Ebringen, Eching Weixerau, Eckental, Ecknach, Edersleben, Edertal-Edersee, Edesheim, Edinghausen, Egenhausen, Eggenstein-Loepoldshafen, Eging, Ehingen, Ehra-Lessien, Eibelshausen, Eichen, Eicherloh, Eickendorf, Eimen, Einhausen, Eisenach   Hörschel, Eisingen, Eitorf-Baleroth, Elbtal, Elkenroth, Ellerhoop, Elmenhorst Lichtenhagen, Elsen, Elsterberg, Eltville, Emden, Emmendingen, Emmingen-Liptingen, Emstek, Engelade, Engelthal, Eningen, Ensdorf, Epfendorf, Epplings, Erdbach, Erftstadt, Erfurt-Mittelhausen, Eriskirch, Erlau, Erligheim, Ernstthal am Rennsteig, Erzbach, Eschenburg, Eschweiler, Eslohe-Bremke, Essem, Essen in Oldenburg, Estenfeld, Ettenheim, Etzelwang, Euskirchen, Eutingen im Gäu, Eydelstedt, Fahrenzhausen, Falkendorf, Fallersleben, Faulück, Feichten, Felde, Fellbach, Fermerswalde, Fichtelberg, Filsum - Lammertsfehn, Finsing   Eicherloh, Fischbach, Fischenich, Fladungen, Flein, Flintsbach am Inn, Flörsheim-Dalsheim, Fockbek, Forbach-Rote Lache, Frammersbach, Frankenroda, Franzhäuschen, Frechen-Königsdorf, Freiamt, Freidling, Freigericht-Horbach, Freinberg-Hinding, Freistett, Frensdorf-Herrnsdorf, Freudenburg, Frickenhausen, Friedberg-Wiffertshausen, Friedland, Friedrichsgrün, Friedrichstadt, Frienstedt, Friesoythe-Markhausen, Fritzlar-Obermöllrich, Frohnhausen, Frontenhausen, Fuchstal, Fulda-Südend, Fürstenau, Furth, Füsing, Gachenbach, Gaggenau-Moosbronn, Gailsbach, Gammelby, Gangkofen, Garrel, Gartz Oder, Gäufelden, Gebstedt, Gefell, Gehren, Geilertshausen, Geisenhausen, Geithain, Gelnhausen-Höchst, Gemmrigheim, Gensungen, Gera, Geratskirchen, Geringswalde, Germerswang, Gerolfingen, Gersprenz, Gerswalde, Gessertshausen, Geyer OT, Gierenderhöhe, Giggenhausen, Gilserberg-Schönstein, Girod, Gladenbach-Erdhausen, Glashütte-Reinhardtsgrimma, Glehn, Gleidingen, Glienke, Glowe, Gmund Dürnbach, Gnotzheim, Göda, Göhren-Lebbin, Goldenstedt, Gollwitz, Gomadingen, Gondsroth, Göppingen-Faurndau, Görisried, Görnitz, Gosen-Neu Zittau, Gössenheim, Gotha, Göttingen, Gowens, Grabenstedt, Gräfenberg, Grafenstadl, Grafing bei München, Graitschen, Grän, Grasellenbach, Graupa, Greding, Greifswald, Gressow, Grevenkop, Griebnitz, Grillenberg, Gröden, Grömitz, Großbadegast, Groß-Bieberau, Großbreitenbach, Großdubrau OT Särchen, Großefehn - Spetzerfehn, Großenbrode, Großenkneten Haschenbrook, Großenwörden, Großhartau, Großheide-Ostermoordorf, Grossinzemoos, Großkoschen, Großlohma, Großobringen, Großrinderfeld-Schönfeld, Großweil, Grubschütz, Grünberg, Grundsteinheim, Grünheide, Grünstadt, Gstadt a.Chiemsee, Guderhandviertel, Gulde, Gumpelstadt, Gundelshofen, Günthersdorf, Gussow, Gutach Schwarzwaldbahn, Gut Panker, Gyhum, Haarenberg, Hackenstedt, Hagen a.T.W., Hagermarsch, Hähnichen, Haigerloch-Trillfingen, Haina-Löhlbach, Hainsbach, Haldenwang, Hallenberg, Hallig Langeneß, Haltern, Hambühren, Hamburg-Moorfleet, Hämelerwald, Hammelburg, Hamminkeln-Marienthal, Hanau-Steinheim, Hanfkolm, Hannover-Lahe, Happenbach, Hardegsen OT Trögen, Harlachberg, Harschbach, Hartenthal, Harzgerode, Haselünne, Häslingen, Haßleben, Hatten - Kirchhatten, Hatzenport, Haunsheim, Hausen Wied, Hauzenberg, Havixbeck, Heberndorf, Heckelberg-Brunow, Heerstedt, heidelberg, Heidenheim, Heidesee OT Gräbendorf, Heilbad Heiligenstadt, Heiligenbronn, Heiligenroth, Heiligenstein, Heimbuchenthal, Heinersreuth, Heitersheim, Helgoland, Hemau, Hemmelsdorf, Heng, Henningsdorf, Herbern, Herbrechtingen-Hausen, Herforst, Heringsand, Hermsdorf, Herrenberg, Herrnsdorf, Herten, Herzberg Elster, Herzogenaurach, Hesel - Neuemoor, Hessisch Oldendorf, Hetzerath, Heusenstamm, Hiddenhausen, Hildesheim, Hilgertshausen-Tandern, Hiltenfingen, Himmelpforten, Hinterhof, Hipstedt, Hirschberg-Großsachsen, Hirzenhain, Hochbrück, Hochheimam Main, Höchstädt an der Donau, Hockenheim, Hofbieber, Hofheim am Taunus, Hofstetten, Hohenacker, Hohendilching, Hohenhaslach, Hohenklingen, Hohennauen, Hohenschäftlarn, Hohenstein-Mackenrode, Hohenwarthe, Hohndorf, Hoisdorf, Hollenstedt, Holstenniendorf, Holzdorf, Holzkirchen, Homberg, Honigsee, Hopferbach, Hörafing, Hordorf Cremlingen, Hörlitz, Horn-Bad Meinberg Leopoldstal, Horressen, Hörstel, Hösbach, Höver, Hoyersburg, Huckstorf, Hügelsheim, Hundersingen, Hungen, Hürup, Hüttenberg-Rechtenbach, Ibbenbüren, Idstedt, Iggenhausen, Ihringen, Illingen-Hüttigweiler, Ilmenau-Roda, Ilsfeld, Immenstaad-Kippenhausen, Ingelfingen, Ingstetten, Insingen, Irlenbusch, Iserlohn-Rheinen, Israelsdorf, Ittlingen, Jabelitz, Jägershof, Jameln, Jarplund-Weding, Jeetzel, Jena-Maua, Jesberg   Densberg, Jettingen, Joditz, Jonsdorf, Jübberde, Jülich, Jüterbog, Kahl a. Main, Kaisersesch, Kalchreuth, Kalkhorst, Kaltenkirchen, Kamenz-Wiesa, Kammlach, Kandern, Karben, Karlsdorf, Karlsruhe-Grünwettersbach, Karlstein a.Main, Karnin, Kassel, Käterhagen, Kaub, Kehl - Bodersweier, Kelberg, Kell am See, Kemberg, Kempen-Tönisberg, Kerken Aldekerk, Kerpen-Horrem, Ketten, Kicklingen, Kiel-Pries, Kindelbrück, Kirchbarkau, Kirchdorf an der Iller, Kirchentellinsfurt, Kirchheim bei München, Kirchlengern, Kirchseeon, Kirchzarten, Kirtorf, Kittlitz, Klanxbüll, Klein Bennebek, Kleinfurra, Kleinhelfendorf, Kleinrössen, Kleinsteinbach, Klensby, Klinga, Klingenthal, Klöden, Kloster Lehnin, Knappensee-Groß Särchen, Knottenried, Kochel, Köhlen, Kolkwitz, Köln, Köngen, Königsbrück, Königslutter am Elm, Königswartha, Konradsreuth, Konstanz-Fürstenberg, Körbecke, Kornhain, Korvin, Koßdorf, Kotzen OT Kriele, Kraftsdorf-Rüdersdorf, Krauchenwies, Krefeld-Uerdingen, Krempermoor, Kreuzle, Kriebstein OT Grünlichtenberg, Kritzmow, Kronau, Kronwinkl, Kropp-Heidbunge, Krumbeck, Krummin, Kuchen, Kühbach-Winden, Kuhs, Kummerfeld, Künzell, Kürnach, Kurort Seiffen, Küstelberg, Laage, Lachen-Speyerdorf, Lagesbüttel, Laipersdorf, Lampertheim, Landau an der Isar, Landolfshausen, Landshut, Langeloh, Langenberg, Langeneß, Langenhessen, Langenmosen, Langenscheid, Langenzenn, Langhagen, Langwedel, Lappersdorf, Latferde, Lauchhammer, Lauenberg, Lauf a.d. Pegnitz, Laufersweiler, Laussig, Lauterecken, Lautzenhausen, Lechbruck am See, Leer Ostfriesland, Legelshurst, Lehmkuhlen, Lehrte-H.Wald, Leiferde, Leinburg - Entenberg, Leipzig Engelsdorf, Leisnig, Lemförde, Lendsiedel, Lengerich, Lennestadt, Lenzen, Leopoldshafen, Lette, Leuna, Leutesdorf, Leverkusen-Quettingen, Lich-Steinstraß, Lichtenhain, Liebenau, Liebstadt OT Großröhrsdorf, Liepen, Liggersdorf, Limbach-Oberfrohna-Pleißa, Linda-Köthnitz, Lindenberg, Lindern, Lindstedt, Linnich, Linstow, Lippersdorf-Erdmannsdorf, Lippstadt-Esbeck, Löbau, Loch, Loffenau, Lohmar, Lohmen, Lohr a. Main, Loitz, Loop, Lörzweiler, Lotte, Lübbecke-Nettelstedt, Lübbenau Zerkwitz, Lubmin, Lüchow, Luckenwalde OT Kolzenburg, Lüdingworth, Ludwigshafen-Ruchheim, Lüftelberg, Lügde-Wörderfeld, Lüneburg, Lürschau, Lutherstadt Wittenberg, Lutter, Lützen OT Muschwitz, Macherbach, Magdeburg-Reform, Maibrun, Mainaschaff, Mainleus, Mainz-Kastel, Maitenbeth, Mallersdorf-Pfaffenberg, Mambach, Mangolding, Mansbach, March-Hugstetten, Marienfließ, Marienstedt, Markersdorf, Markkleeberg OT Wachau, Marktbreit, Marktl - Stammham, Marktsteft, Marl-Lenkerbeck, Marquardt, Marschall, Martinszell-Oberdorf, Marzling, Masserberg-Heubach, Mattenhofen, Maulbronn - Jungviehweide, Maxhütte Haidhof, Mechterstädt, Meddewade, Meerane, Meesiger, Meine, Meisenheim, Melle Bennien, Mellin, Memmendorf, Mengersgereuth-Hämmern, Meppen, Merklingen, Merzenhausen, Meßdorf, Metten, Metzelthin, Meußließen, Michelsdorf, Middoge, Mieste, Milkersdorf, Miltzow, Mintraching, Missunde, Mittelehrenbach, Mitterfirmiansreut, Moers, Möhnesee, Moisburg, Möllenhagen-Wendorf, Mömbris-Heimbach, Mönchsondheim, Mönkeberg, Monzelfeld, Moormerland - Hatshausen, Moosham, Morgenrot, Mörlenbach, Mosbach-Diedesheim, Möttingen, Müchnen, Mudersbach, Muggendorf, Mühlanger, Mühleithen, Mühlhausen Ortsteil Felchta, Mühltroff, Mülheim-an der Ruhr, Mumpf, München - Oberföhring, Münchweiler, Münsingen, Münster-Roxel, Murchin, Müschenbach, Mützen, Nackenheim, Nakendorf, Nassen, Nauheim, Nausitz, Neckarbischofsheim, Neckarwestheim, Negast, Neindorf, Nennslingen, Nerreth, Nestau, Nettersheim, Neu-Anspach-Hausen, Neubrandenburg-Weitin, Neuburg Mecklenburg, Neudrossenfeld, Neuenburg am Rhein, Neuenhaus, Neuenrade-Blintrop, Neue Tiefe, Neufinsing, Neuharlingersiel, Neuhausen a. d. F., Neuhengstett, Neukirch, Neulögow, Neumarkt-Sankt Veit, Neunkirchen am Brand, Neupotz, Neuruppin, Neuschönburg, Neuss-Holzheim, Neustadt am Main, Neustrelitz, Neuwittenbek, Nichel, Nideggen-Brück, Niederaula, Niederdorfelden, Nieder-Eschbach, Niedergottsau, Niederkassel-Mondorf, Niederlibbach, Niederndorf, Niederpöcking, Niedersonthofen, Niederzissen, Nienborstel, Niepars, Nieuweschans, Nittenau, Nohfelden-Gonnesweiler, Norddeich, Nordenham, Norderstapel, Nordhorn, Nordstrand, Nortrup, Nübel, Nünchritz OT Weißig, Nürtingen, Nuthe-Urstromtal, Oberalteich Bogen, Oberbachern, Oberboihingen, Oberdürrbach, Obererthal, Obergrombach, Oberharnsbach, Oberheldrungen, Oberhonnefeld-Gierend, Oberkail, Oberkrämer OT Bärenklau, Obermaiselstein, Obermotzing, Oberneukirchen, Oberostendorf, Oberreichenbach, Oberscheinfeld, Oberschwarzach, Oberstaufen-Thalkirchdorf, Obersulm-Eschenau, Obertiefenbach, Oberursel Taunus, Oberweschnegg, Oberwolfach, Ochtrup, Odenthal, Ödsbach, Oehna, Oelsnitz Erzgeb., Oerlinghausen, Oettingen, Offenbach-Bieber, Offstein, Ohlstadt, Öhringen - Michelbach, Oldenburg - Alexandersfeld, Oldenswort, Olsberg, Oppendorf, Ormont, Öschelbronn, Osnabrück - Sutthausen, Osten, Ostercappeln-Venne, Osternienburg, Osterwald Oberende, Ostheim, Ostritz, Ostseebad Dierhagen, Ottacker, Ottenhofen, Ottermoor, Ottmaring, Ovelgönne-Loyermoor, Owingen, Padborg, Paderborn-Sande, Palingen, Panketal OT Zepernick, Papendorf OT Sildemow, Parsau, Paska, Pattensen, Pechau, Peickwitz, Peiting, Penig OT Zinnberg, Pepelow, Perscheid, Petershagen-Lahde, Petzow, Pfäffingen, Pfeffingen, Pflach, Pforzheim, Pfrungen, Picher, Pillnitz, Pirmasens-Erlenbrunn, Planegg, Plau, Pleinfeld, Pliening, Plothen, Pogeez, Poing, Polsingen, Poppenhausen, Porta Westfalica-Hausberge, Pößneck, Potsdam-Babelsberg, Potsdam; Grube, Pöttmes, Preetz, Pressath, Preussisch Oldendorf, Prien am Chiemsee, Pristäblich, Pronstorf, Prüm, Pulheim-Brauweiler, Pulsnitz, Puttball, Pyrna, Queienfeld, Quittelsdorf, Rachelsbach, Radeburg, Radolfzell, Raduhn, Rahden, Raisdorf, Ramitz, Ramsen, Ranis, Raschau, Rastede - Hankhausen, Rastenberg, Rathjensdorf, Rattiszell, Rauhenebrach, Rech, Rechtmehring, Redefin, Referinghausen, Regnitzlosau, Rehhorst, Reichenau, Reichenhain, Reiffenhausen, Reinhardshagen, Reinsbüttel, Reischach, Reken, Remels, Remseck, Rengsdorf, Reppenstedt, Rettenbach, Reudnitz, Reutlingen-Sickenhause, Rheda-Wiedenbrück, Rheinbach-Oberdrees, Rheinbreitbach, Rheinhausen, Rheinzabern, Ribnitz Damgarten, Riedböhrungen, Riedering, Riehen, Riepen, Rietberg, Riezlerweg, Ringe Neugnadenfeld, Ringstraße, Risum-Lindholm, Röbel, Rockenhausen-Marienthal, Rodeberg, Röderaue, Rodewisch, Rödinghausen, Röhl, Rohr i.NB, Roitzsch, Römerstein, Ronnenberg, Rosdorf, Rosenfeld, Rosenthal-Bielatal, Roßbach, Roßwag, Rostock-Krummendorf, Rot am See, Rothemann, Rothenberg, Rothenburg Oberlausitz, Rothesütte, Rott am Inn, Rottenburg, Röttingen, Rövershagen, Rüde, Rüdesheim am Rhein, Ruhla, Rülzheim, Ruppertsberg, Rußheim, Rüthen-Oestereiden, Saalfeld Gorndorf, Sachsenburg, Saffig, Salderatzen, Salz, Salzhemmendorf, Samerberg, Sande, Sandhatten, Sankt Andreasberg, Sasbach, Sassnitz, Sattenhausen, Saupsdorf, Schacha, Schafstädt, Schallstadt, Scharfenberg, Schattin, Scheeßel-Abbendorf, Schelldorf, Schenkendöbern, Scherreuth, Schieder, Schifdorf, Schillingsfürst, Schinne, Schköna, Schlangen, Schleid, Schlesen, Schlieckau, Schlitz, Schloß Holte-Stukenbrock, Schlüchtern-Herolz, Schmalkalden OT Asbach, Schmersau, Schmiedeberg, Schmitten-Treisberg, Schnaittach-Hormersdorf, Schneizlreuth, Schöanich, Schöllkrippen, Schönau- Gebüg, Schönbrunn im Steigerwald, Schöneck, Schönewalde, Schönheide, Schönstedt, Schönwohld, Schöps, Schotten, Schrobenhausen-Sandizell, Schulpforte, Schüttorf, Schwäbisch Hall, Schwadenloch, Schwalbach-Elm, Schwandorf, Schwanstetten, Schwarzburg, Schwarzenberg, Schwebheim, Schweinfurt, Schwentinental, Schwerte, Schwiepke, Sechendorfq, Seebad Heringdsdorf, Seefeld, Seeheim- Jugenheim, Seelze, Seeshaupt, Seewald-Besenfeld, Seibersdorf am Inn, Selb, Selk, Selpin, Senden-Bösensell, Sennewitz, Seßlach, Seybothenreuth, Siebeldingen, Siegburg, Siegertsbrunn, Sienau, Sieversdorf, Sigmaringen-Laiz, Simmelsdorf, Simmersfeld, Sindorf, Sinn, Sinzig, Sitzenroda, Sohland, solingen, Soltau, Sommertshausen, Sonnefeld - Hassenberg, Sophienhof, Soven, Spantekow, Speinshart, Spiekeroog, Spreckel, Sprötze, Stadtallendorf, Stadtoldendorf, Stahnsdorf OT Güterfelde, Standenbühl, Starsow, Staufen, St. Blasien, Stedtfeld, Steibis, Steinau, Steinbach Taunus, Steinen, Steinhagen-Brockhagen, Steinigtwolmsdorf, Steißlingen, Steppach, Stettfeld, Stimpfach-Randenweiler, Stockach-Hoppetenzell, Stockstadt am Main, Stolberg-Breinig, Stolpen OT Helmsdorf, Stötten, Straach, Straßberg, Straubing, Streichmühle, Ströhen, Stubben, Stupferich, Stuttgart Bad Cannstatt, Stützengrün, Südbrookmerland, Süderholz, Sufferloh, Sulz, Sulzberg-Kühbach, Sülzetal, Sünching, Sünna, Süssen, Sylbach, Tacherting   Lengloh, Talheim, Tangerhütte OT Mahlpfuhl, Tannenbergsthal, Tarnow, Tauche OT Ranzig, Tautendorf, Tegernau, Teisendorf, Temmen-Ringen, Teschow, Tetz, Teutschenthal OT Angersdorf, Thalheim, Tharandt, Thelkow, Thiendorf, Tholey-Bergweiler, Thülsfelde, Thurm, Tiefenthal, Timmendorfer Strand, Titmaringhausen, Todesfelde, Tökendorf, Töpen Mödlareuth, Tosterglope, Traisa, Trassenheide, Travenbrück, Trebgast, Treinfeld, Treppendorf, Tribsees, Triebischtal OT Groitzsch, Trier-Eitelsbach, Triftern, Trittau, Troisdorf-Eschmar, Trollenhagen, Tschernitz, Tuntenhausen, Tutow, Twistetal, Überlinen, Uchte, Udersleben, Uengershausen, Uhingen, Uhsmannsdorf, Ulm-Seligweile, Ummanz-Haide, Unna, Unterbachern, Unterdolling, Untergriesbach, Unterheinriet, Unterklausen, Untermünkheim, Unterreith, Unterschneidheim, Unterwattenbach, Upahl, Uplengen - Neudorf, Ursberg, Uslar, Utting, Varnsdorf, Veinau, Velden, Velpke, Verden Eitze, Vestenbergsgreuth, Vettlehoven, Vielau, Viersen-Dülken, Vils, Virneburg, Voerde, Vohburg, Voigtstedt, Volkfien, Vollmersweiler, Vomp, Vorrade, Waakirchen, Wachsenburggemeinde, Waddewarden, Wagenfeld-Ströhen, Waging a.S, Wahnsdorf, Waitzdorf, Waldachtal, Waldbuettelbrunn, Walderbach, Waldkappel, Waldmünchen, Waldstetten, Walldürn-Rippberg, Wallersdorf, Wallstawe, Waltenhausen, Walzbachtal-Wössingen, WAngen, Wanhöden, Warbsen, Wardow, Warmsen, Warstein, Warthausen, Wasserburg, Wasserzell, Waxweiler, Wedel, Wega, Wehr, Weibern, Weidenau, Weiden in der Oberpfalz, Weihenzell, Weilach, Weiler, Weilheim in Oberbayern, Weimar Lahn, Weinheim-Rippenweier, Weischlitz, Weissach im Tal, Weißenburg in Bayern, Weißensberg, Weißwasser, Weiterstadt-Braunshardt, Welldorf, Welschneudorf, Wendeburg, Wendisch Rietz, Wennigsen, Wensin, Werben OT Räbel, Werder Havel OT Petzow, Wernau, Wernsdorf, Werther b. Nordhausen, Wesendorf, Wessobrunn, Westerdeichstrich, Westerkappeln Velpe, Westerstede - Eggeloge, Westerstetten, Wetschen, Wetter Ruhr, Wetzendorf, Weyarn, Wiblingen, Wieda, Wiefelstede - Borbeck, Wiek, Wiesau, Wiesbaden-Schierstein, Wiesenfeld, Wiesenttal, Wiggensbach, Wildenau, Wilhelmsdorf, Wiligrad, Willingen Westerwald, Wilnsdorf, Wilstedt, Windeck-Au, Windischeschenbach, Winkelhaid, Winningen, Winterberg-Mollseifen, Winzerhausen, Wirges, Wistedt, Wittenberge OT Hinzdorf, Wittgensdorf, Wittmar, Witzighausen, Wohlsdorf, Wöhrden, Wolfen, Wolfsbehringen, Wolfshagen, Wolkramshausen, Wolpertstetten, Worbis, Wörrstadt, Wörth-Maximiliansau, Wriedel, Wulfen, Wulfshagenerhütten, Wunstorf, Wuppertal-Schöller, Würselen, Wussegel, Wusterhusen OT Gustebin, Wutha-Farnroda, Xanten-Lüttingen, Zackermühle, Zargleben, Zedtlitz, Zeil am Main, Zell a.d.Mosel, Zerbst, Zescha, Zeven, Ziegenhagen, Zierzow, Zimmern, Zittau, Zöllmen, Zotzenbach, Zschorna, Zurow, Zweibrücken, Zwiefelhof, Zwota]\ncountry: [Deutschland]\npersonalEmails: [ gmail.com, yahoo.com, yahoo.de, gmx.de, gmx.com, web.de, t-online.de ]\ntelephone_number_formats: [\"0#########\"]\ntext: \"Ihr naht euch wieder, schwankende Gestalten, Die früh sich einst dem trüben Blick gezeigt. Versuch ich wohl, euch diesmal festzuhalten? Fühl ich mein Herz noch jenem Wahn geneigt? Ihr drängt euch zu!  nun gut, so mögt ihr walten, Wie ihr aus Dunst und Nebel um mich steigt; Mein Busen fühlt sich jugendlich erschüttert Vom Zauberhauch, der euren Zug umwittert.  Ihr bringt mit euch die Bilder froher Tage, Und manche liebe Schatten steigen auf; Gleich einer alten, halbverklungnen Sage Kommt erste Lieb und Freundschaft mit herauf; Der Schmerz wird neu, es wiederholt die Klage Des Lebens labyrinthisch irren Lauf, Und nennt die Guten, die, um schöne Stunden Vom Glück getäuscht, vor mir hinweggeschwunden.  Sie hören nicht die folgenden Gesänge, Die Seelen, denen ich die ersten sang; Zerstoben ist das freundliche Gedränge, Verklungen, ach!  der erste Widerklang. Mein Lied ertönt der unbekannten Menge, Ihr Beifall selbst macht meinem Herzen bang, Und was sich sonst an meinem Lied erfreuet, Wenn es noch lebt, irrt in der Welt zerstreuet.  Und mich ergreift ein längst entwöhntes Sehnen Nach jenem stillen, ernsten Geisterreich, Es schwebet nun in unbestimmten Tönen Mein lispelnd Lied, der Äolsharfe gleich, Ein Schauer faßt mich, Träne folgt den Tränen, Das strenge Herz, es fühlt sich mild und weich; Was ich besitze, seh ich wie im Weiten, Und was verschwand, wird mir zu Wirklichkeiten.\"\nlanguage: 'DE'\n"
  },
  {
    "path": "src/main/resources/jfairy_en.yml",
    "content": "alphabet: abcdefghijklmnopqrstuvwxyz\ndomains: [com, eu, biz]\nfirstNames: {\n  male: [Aaron, Adam, Adrian, Aiden, Alex, Alexander, Andrew, Angel, Anthony, Austin, Ayden, Benjamin, Bentley, Blake, Brandon, Brayden, Brody, Bryson, Caleb, Cameron, Carlos, Carson, Carter, Charles, Chase, Christian, Christopher, Colton, Connor, Cooper, Damian, Daniel, David, Dominic, Dylan, Easton, Eli, Elijah, Ethan, Evan, Gabriel, Gavin, Grayson, Henry, Hudson, Hunter, Ian, Isaac, Isaiah, Jace, Jack, Jackson, Jacob, James, Jason, Jaxon, Jayden, Jeremiah, John, Jonathan, Jordan, Jose, Joseph, Joshua, Josiah, Juan, Julian, Justin, Kayden, Kevin, Landon, Levi, Liam, Logan, Lucas, Luis, Luke, Mason, Matthew, Michael, Nathan, Nathaniel, Nicholas, Noah, Nolan, Oliver, Owen, Parker, Robert, Ryan, Ryder, Samuel, Sebastian, Thomas, Tristan, Tyler, William, Wyatt, Xavier, Zachary],\n  female: [Aaliyah, Abigail, Addison, Alexa, Alexandra, Alexis, Allison, Alyssa, Amelia, Andrea, Anna, Annabelle, Aria, Ariana, Arianna, Ashley, Aubree, Aubrey, Audrey, Autumn, Ava, Avery, Bailey, Bella, Brianna, Brooklyn, Camila, Caroline, Charlotte, Chloe, Claire, Elizabeth, Ella, Ellie, Emily, Emma, Eva, Evelyn, Faith, Gabriella, Genesis, Gianna, Grace, Hailey, Hannah, Harper, Isabella, Jasmine, Jocelyn, Julia, Katherine, Kayla, Kaylee, Kennedy, Khloe, Kimberly, Kylie, Lauren, Layla, Leah, Lillian, Lily, London, Lucy, Lydia, Mackenzie, Madeline, Madelyn, Madison, Makayla, Maya, Melanie, Mia, Molly, Morgan, Naomi, Natalie, Nevaeh, Olivia, Peyton, Piper, Reagan, Riley, Samantha, Sarah, Savannah, Scarlett, Serenity, Skylar, Sofia, Sophia, Sophie, Stella, Sydney, Taylor, Trinity, Victoria, Violet, Zoe, Zoey]\n}\nlastNames: {\n  male: [Abbott, Acevedo, Acosta, Adams, Adkins, Aguilar, Aguirre, Albert, Alexander, Alford, Allen, Allison, Alston, Alvarado, Alvarez, Anderson, Andrews, Anthony, Armstrong, Arnold, Ashley, Atkins, Atkinson, Austin, Avery, Avila, Ayala, Ayers, Bailey, Baird, Baker, Baldwin, Ball, Ballard, Banks, Barber, Barker, Barlow, Barnes, Barnett, Barr, Barrera, Barrett, Barron, Barry, Bartlett, Barton, Bass, Bates, Battle, Bauer, Baxter, Beach, Bean, Beard, Beasley, Beck, Becker, Bell, Bender, Benjamin, Bennett, Benson, Bentley, Benton, Berg, Berger, Bernard, Berry, Best, Bird, Bishop, Black, Blackburn, Blackwell, Blair, Blake, Blanchard, Blankenship, Blevins, Bolton, Bond, Bonner, Booker, Boone, Booth, Bowen, Bowers, Bowman, Boyd, Boyer, Boyle, Bradford, Bradley, Bradshaw, Brady, Branch, Bray, Brennan, Brewer, Bridges, Briggs, Bright, Britt, Brock, Brooks, Brown, Browning, Bruce, Bryan, Bryant, Buchanan, Buck, Buckley, Buckner, Bullock, Burch, Burgess, Burke, Burks, Burnett, Burns, Burris, Burt, Burton, Bush, Butler, Byers, Byrd, Cabrera, Cain, Calderon, Caldwell, Calhoun, Callahan, Camacho, Cameron, Campbell, Campos, Cannon, Cantrell, Cantu, Cardenas, Carey, Carlson, Carney, Carpenter, Carr, Carrillo, Carroll, Carson, Carter, Carver, Case, Casey, Cash, Castaneda, Castillo, Castro, Cervantes, Chambers, Chan, Chandler, Chaney, Chang, Chapman, Charles, Chase, Chavez, Chen, Cherry, Christensen, Christian, Church, Clark, Clarke, Clay, Clayton, Clements, Clemons, Cleveland, Cline, Cobb, Cochran, Coffey, Cohen, Cole, Coleman, Collier, Collins, Colon, Combs, Compton, Conley, Conner, Conrad, Contreras, Conway, Cook, Cooke, Cooley, Cooper, Copeland, Cortez, Cote, Cotton, Cox, Craft, Craig, Crane, Crawford, Crosby, Cross, Cruz, Cummings, Cunningham, Curry, Curtis, Dale, Dalton, Daniel, Daniels, Daugherty, Davenport, David, Davidson, Davis, Dawson, Day, Dean, Decker, Dejesus, Delacruz, Delaney, Deleon, Delgado, Dennis, Diaz, Dickerson, Dickson, Dillard, Dillon, Dixon, Dodson, Dominguez, Donaldson, Donovan, Dorsey, Dotson, Douglas, Downs, Doyle, Drake, Dudley, Duffy, Duke, Duncan, Dunlap, Dunn, Duran, Durham, Dyer, Eaton, Edwards, Elliott, Ellis, Ellison, Emerson, England, English, Erickson, Espinoza, Estes, Estrada, Evans, Everett, Ewing, Farley, Farmer, Farrell, Faulkner, Ferguson, Fernandez, Ferrell, Fields, Figueroa, Finch, Finley, Fischer, Fisher, Fitzgerald, Fitzpatrick, Fleming, Fletcher, Flores, Flowers, Floyd, Flynn, Foley, Forbes, Ford, Foreman, Foster, Fowler, Fox, Francis, Franco, Frank, Franklin, Franks, Frazier, Frederick, Freeman, French, Frost, Fry, Frye, Fuentes, Fuller, Fulton, Gaines, Gallagher, Gallegos, Galloway, Gamble, Garcia, Gardner, Garner, Garrett, Garrison, Garza, Gates, Gay, Gentry, George, Gibbs, Gibson, Gilbert, Giles, Gill, Gillespie, Gilliam, Gilmore, Glass, Glenn, Glover, Goff, Golden, Gomez, Gonzales, Gonzalez, Good, Goodman, Goodwin, Gordon, Gould, Graham, Grant, Graves, Gray, Green, Greene, Greer, Gregory, Griffin, Griffith, Grimes, Gross, Guerra, Guerrero, Guthrie, Gutierrez, Guy, Guzman, Hahn, Hale, Haley, Hall, Hamilton, Hammond, Hampton, Hancock, Haney, Hansen, Hanson, Hardin, Harding, Hardy, Harmon, Harper, Harrell, Harrington, Harris, Harrison, Hart, Hartman, Harvey, Hatfield, Hawkins, Hayden, Hayes, Haynes, Hays, Head, Heath, Hebert, Henderson, Hendricks, Hendrix, Henry, Hensley, Henson, Herman, Hernandez, Herrera, Herring, Hess, Hester, Hewitt, Hickman, Hicks, Higgins, Hill, Hines, Hinton, Hobbs, Hodge, Hodges, Hoffman, Hogan, Holcomb, Holden, Holder, Holland, Holloway, Holman, Holmes, Holt, Hood, Hooper, Hoover, Hopkins, Hopper, Horn, Horne, Horton, House, Houston, Howard, Howe, Howell, Hubbard, Huber, Hudson, Huff, Huffman, Hughes, Hull, Humphrey, Hunt, Hunter, Hurley, Hurst, Hutchinson, Hyde, Ingram, Irwin, Jackson, Jacobs, Jacobson, James, Jarvis, Jefferson, Jenkins, Jennings, Jensen, Jimenez, Johns, Johnson, Johnston, Jones, Jordan, Joseph, Joyce, Joyner, Juarez, Justice, Kane, Kaufman, Keith, Keller, Kelley, Kelly, Kemp, Kennedy, Kent, Kerr, Key, Kidd, Kim, King, Kinney, Kirby, Kirk, Kirkland, Klein, Kline, Knapp, Knight, Knowles, Knox, Koch, Kramer, Lamb, Lambert, Lancaster, Landry, Lane, Lang, Langley, Lara, Larsen, Larson, Lawrence, Lawson, Le, Leach, Leblanc, Lee, Leon, Leonard, Lester, Levine, Levy, Lewis, Lindsay, Lindsey, Little, Livingston, Lloyd, Logan, Long, Lopez, Lott, Love, Lowe, Lowery, Lucas, Luna, Lynch, Lynn, Lyons, Macdonald, Macias, Mack, Madden, Maddox, Maldonado, Malone, Mann, Manning, Marks, Marquez, Marsh, Marshall, Martin, Martinez, Mason, Massey, Mathews, Mathis, Matthews, Maxwell, May, Mayer, Maynard, Mayo, Mays, Mcbride, Mccall, Mccarthy, Mccarty, Mcclain, Mcclure, Mcconnell, Mccormick, Mccoy, Mccray, Mccullough, Mcdaniel, Mcdonald, Mcdowell, Mcfadden, Mcfarland, Mcgee, Mcgowan, Mcguire, Mcintosh, Mcintyre, Mckay, Mckee, Mckenzie, Mckinney, Mcknight, Mclaughlin, Mclean, Mcleod, Mcmahon, Mcmillan, Mcneil, Mcpherson, Meadows, Medina, Mejia, Melendez, Melton, Mendez, Mendoza, Mercado, Mercer, Merrill, Merritt, Meyer, Meyers, Michael, Middleton, Miles, Miller, Mills, Miranda, Mitchell, Molina, Monroe, Montgomery, Montoya, Moody, Moon, Mooney, Moore, Morales, Moran, Moreno, Morgan, Morin, Morris, Morrison, Morrow, Morse, Morton, Moses, Mosley, Moss, Mueller, Mullen, Mullins, Munoz, Murphy, Murray, Myers, Nash, Navarro, Neal, Nelson, Newman, Newton, Nguyen, Nichols, Nicholson, Nielsen, Nieves, Nixon, Noble, Noel, Nolan, Norman, Norris, Norton, Nunez, Obrien, Ochoa, Oconnor, Odom, Odonnell, Oliver, Olsen, Olson, Oneal, Oneil, Oneill, Orr, Ortega, Ortiz, Osborn, Osborne, Owen, Owens, Pace, Pacheco, Padilla, Page, Palmer, Park, Parker, Parks, Parrish, Parsons, Pate, Patel, Patrick, Patterson, Patton, Paul, Payne, Pearson, Peck, Pena, Pennington, Perez, Perkins, Perry, Peters, Petersen, Peterson, Petty, Phelps, Phillips, Pickett, Pierce, Pittman, Pitts, Pollard, Poole, Pope, Porter, Potter, Potts, Powell, Powers, Pratt, Preston, Price, Prince, Pruitt, Puckett, Pugh, Quinn, Ramirez, Ramos, Ramsey, Randall, Randolph, Rasmussen, Ratliff, Ray, Raymond, Reed, Reese, Reeves, Reid, Reilly, Reyes, Reynolds, Rhodes, Rice, Rich, Richard, Richards, Richardson, Richmond, Riddle, Riggs, Riley, Rios, Rivas, Rivera, Rivers, Roach, Robbins, Roberson, Roberts, Robertson, Robinson, Robles, Rocha, Rodgers, Rodriguez, Rodriquez, Rogers, Rojas, Rollins, Roman, Romero, Rosa, Rosales, Rosario, Rose, Ross, Roth, Rowe, Rowland, Roy, Ruiz, Rush, Russell, Russo, Rutledge, Ryan, Salas, Salazar, Salinas, Sampson, Sanchez, Sanders, Sandoval, Santana, Santiago, Santos, Sargent, Saunders, Savage, Sawyer, Schmidt, Schneider, Schroeder, Schultz, Schwartz, Scott, Sears, Sellers, Serrano, Sexton, Shaffer, Shannon, Sharp, Sharpe, Shaw, Shelton, Shepard, Shepherd, Sheppard, Sherman, Shields, Short, Silva, Simmons, Simon, Simpson, Sims, Singleton, Skinner, Slater, Sloan, Small, Smith, Snider, Snow, Snyder, Solis, Solomon, Sosa, Soto, Sparks, Spears, Spence, Spencer, Stafford, Stanley, Stanton, Stark, Steele, Stein, Stephens, Stephenson, Stevens, Stevenson, Stewart, Stokes, Stone, Stout, Strickland, Strong, Stuart, Suarez, Sullivan, Summers, Sutton, Swanson, Sweeney, Sweet, Sykes, Talley, Tanner, Tate, Taylor, Terrell, Terry, Thomas, Thompson, Thornton, Tillman, Todd, Torres, Townsend, Tran, Travis, Trevino, Trujillo, Tucker, Turner, Tyler, Tyson, Underwood, Valdez, Valencia, Valentine, Valenzuela, Vance, Vang, Vargas, Vasquez, Vaughan, Vaughn, Vazquez, Vega, Velasquez, Velazquez, Velez, Villarreal, Vincent, Vinson, Wade, Wagner, Walker, Wall, Wallace, Waller, Walls, Walsh, Walter, Walters, Walton, Ward, Ware, Warner, Warren, Washington, Waters, Watkins, Watson, Watts, Weaver, Webb, Weber, Webster, Weeks, Weiss, Welch, Wells, West, Wheeler, Whitaker, White, Whitehead, Whitfield, Whitley, Whitney, Wiggins, Wilcox, Wilder, Wiley, Wilkerson, Wilkins, Wilkinson, William, Williams, Williamson, Willis, Wilson, Winters, Wise, Witt, Wolf, Wolfe, Wong, Wood, Woodard, Woods, Woodward, Wooten, Workman, Wright, Wyatt, Wynn, Yang, Yates, York, Young, Zamora, Zimmerman],\n  female: [Abbott, Acevedo, Acosta, Adams, Adkins, Aguilar, Aguirre, Albert, Alexander, Alford, Allen, Allison, Alston, Alvarado, Alvarez, Anderson, Andrews, Anthony, Armstrong, Arnold, Ashley, Atkins, Atkinson, Austin, Avery, Avila, Ayala, Ayers, Bailey, Baird, Baker, Baldwin, Ball, Ballard, Banks, Barber, Barker, Barlow, Barnes, Barnett, Barr, Barrera, Barrett, Barron, Barry, Bartlett, Barton, Bass, Bates, Battle, Bauer, Baxter, Beach, Bean, Beard, Beasley, Beck, Becker, Bell, Bender, Benjamin, Bennett, Benson, Bentley, Benton, Berg, Berger, Bernard, Berry, Best, Bird, Bishop, Black, Blackburn, Blackwell, Blair, Blake, Blanchard, Blankenship, Blevins, Bolton, Bond, Bonner, Booker, Boone, Booth, Bowen, Bowers, Bowman, Boyd, Boyer, Boyle, Bradford, Bradley, Bradshaw, Brady, Branch, Bray, Brennan, Brewer, Bridges, Briggs, Bright, Britt, Brock, Brooks, Brown, Browning, Bruce, Bryan, Bryant, Buchanan, Buck, Buckley, Buckner, Bullock, Burch, Burgess, Burke, Burks, Burnett, Burns, Burris, Burt, Burton, Bush, Butler, Byers, Byrd, Cabrera, Cain, Calderon, Caldwell, Calhoun, Callahan, Camacho, Cameron, Campbell, Campos, Cannon, Cantrell, Cantu, Cardenas, Carey, Carlson, Carney, Carpenter, Carr, Carrillo, Carroll, Carson, Carter, Carver, Case, Casey, Cash, Castaneda, Castillo, Castro, Cervantes, Chambers, Chan, Chandler, Chaney, Chang, Chapman, Charles, Chase, Chavez, Chen, Cherry, Christensen, Christian, Church, Clark, Clarke, Clay, Clayton, Clements, Clemons, Cleveland, Cline, Cobb, Cochran, Coffey, Cohen, Cole, Coleman, Collier, Collins, Colon, Combs, Compton, Conley, Conner, Conrad, Contreras, Conway, Cook, Cooke, Cooley, Cooper, Copeland, Cortez, Cote, Cotton, Cox, Craft, Craig, Crane, Crawford, Crosby, Cross, Cruz, Cummings, Cunningham, Curry, Curtis, Dale, Dalton, Daniel, Daniels, Daugherty, Davenport, David, Davidson, Davis, Dawson, Day, Dean, Decker, Dejesus, Delacruz, Delaney, Deleon, Delgado, Dennis, Diaz, Dickerson, Dickson, Dillard, Dillon, Dixon, Dodson, Dominguez, Donaldson, Donovan, Dorsey, Dotson, Douglas, Downs, Doyle, Drake, Dudley, Duffy, Duke, Duncan, Dunlap, Dunn, Duran, Durham, Dyer, Eaton, Edwards, Elliott, Ellis, Ellison, Emerson, England, English, Erickson, Espinoza, Estes, Estrada, Evans, Everett, Ewing, Farley, Farmer, Farrell, Faulkner, Ferguson, Fernandez, Ferrell, Fields, Figueroa, Finch, Finley, Fischer, Fisher, Fitzgerald, Fitzpatrick, Fleming, Fletcher, Flores, Flowers, Floyd, Flynn, Foley, Forbes, Ford, Foreman, Foster, Fowler, Fox, Francis, Franco, Frank, Franklin, Franks, Frazier, Frederick, Freeman, French, Frost, Fry, Frye, Fuentes, Fuller, Fulton, Gaines, Gallagher, Gallegos, Galloway, Gamble, Garcia, Gardner, Garner, Garrett, Garrison, Garza, Gates, Gay, Gentry, George, Gibbs, Gibson, Gilbert, Giles, Gill, Gillespie, Gilliam, Gilmore, Glass, Glenn, Glover, Goff, Golden, Gomez, Gonzales, Gonzalez, Good, Goodman, Goodwin, Gordon, Gould, Graham, Grant, Graves, Gray, Green, Greene, Greer, Gregory, Griffin, Griffith, Grimes, Gross, Guerra, Guerrero, Guthrie, Gutierrez, Guy, Guzman, Hahn, Hale, Haley, Hall, Hamilton, Hammond, Hampton, Hancock, Haney, Hansen, Hanson, Hardin, Harding, Hardy, Harmon, Harper, Harrell, Harrington, Harris, Harrison, Hart, Hartman, Harvey, Hatfield, Hawkins, Hayden, Hayes, Haynes, Hays, Head, Heath, Hebert, Henderson, Hendricks, Hendrix, Henry, Hensley, Henson, Herman, Hernandez, Herrera, Herring, Hess, Hester, Hewitt, Hickman, Hicks, Higgins, Hill, Hines, Hinton, Hobbs, Hodge, Hodges, Hoffman, Hogan, Holcomb, Holden, Holder, Holland, Holloway, Holman, Holmes, Holt, Hood, Hooper, Hoover, Hopkins, Hopper, Horn, Horne, Horton, House, Houston, Howard, Howe, Howell, Hubbard, Huber, Hudson, Huff, Huffman, Hughes, Hull, Humphrey, Hunt, Hunter, Hurley, Hurst, Hutchinson, Hyde, Ingram, Irwin, Jackson, Jacobs, Jacobson, James, Jarvis, Jefferson, Jenkins, Jennings, Jensen, Jimenez, Johns, Johnson, Johnston, Jones, Jordan, Joseph, Joyce, Joyner, Juarez, Justice, Kane, Kaufman, Keith, Keller, Kelley, Kelly, Kemp, Kennedy, Kent, Kerr, Key, Kidd, Kim, King, Kinney, Kirby, Kirk, Kirkland, Klein, Kline, Knapp, Knight, Knowles, Knox, Koch, Kramer, Lamb, Lambert, Lancaster, Landry, Lane, Lang, Langley, Lara, Larsen, Larson, Lawrence, Lawson, Le, Leach, Leblanc, Lee, Leon, Leonard, Lester, Levine, Levy, Lewis, Lindsay, Lindsey, Little, Livingston, Lloyd, Logan, Long, Lopez, Lott, Love, Lowe, Lowery, Lucas, Luna, Lynch, Lynn, Lyons, Macdonald, Macias, Mack, Madden, Maddox, Maldonado, Malone, Mann, Manning, Marks, Marquez, Marsh, Marshall, Martin, Martinez, Mason, Massey, Mathews, Mathis, Matthews, Maxwell, May, Mayer, Maynard, Mayo, Mays, Mcbride, Mccall, Mccarthy, Mccarty, Mcclain, Mcclure, Mcconnell, Mccormick, Mccoy, Mccray, Mccullough, Mcdaniel, Mcdonald, Mcdowell, Mcfadden, Mcfarland, Mcgee, Mcgowan, Mcguire, Mcintosh, Mcintyre, Mckay, Mckee, Mckenzie, Mckinney, Mcknight, Mclaughlin, Mclean, Mcleod, Mcmahon, Mcmillan, Mcneil, Mcpherson, Meadows, Medina, Mejia, Melendez, Melton, Mendez, Mendoza, Mercado, Mercer, Merrill, Merritt, Meyer, Meyers, Michael, Middleton, Miles, Miller, Mills, Miranda, Mitchell, Molina, Monroe, Montgomery, Montoya, Moody, Moon, Mooney, Moore, Morales, Moran, Moreno, Morgan, Morin, Morris, Morrison, Morrow, Morse, Morton, Moses, Mosley, Moss, Mueller, Mullen, Mullins, Munoz, Murphy, Murray, Myers, Nash, Navarro, Neal, Nelson, Newman, Newton, Nguyen, Nichols, Nicholson, Nielsen, Nieves, Nixon, Noble, Noel, Nolan, Norman, Norris, Norton, Nunez, Obrien, Ochoa, Oconnor, Odom, Odonnell, Oliver, Olsen, Olson, Oneal, Oneil, Oneill, Orr, Ortega, Ortiz, Osborn, Osborne, Owen, Owens, Pace, Pacheco, Padilla, Page, Palmer, Park, Parker, Parks, Parrish, Parsons, Pate, Patel, Patrick, Patterson, Patton, Paul, Payne, Pearson, Peck, Pena, Pennington, Perez, Perkins, Perry, Peters, Petersen, Peterson, Petty, Phelps, Phillips, Pickett, Pierce, Pittman, Pitts, Pollard, Poole, Pope, Porter, Potter, Potts, Powell, Powers, Pratt, Preston, Price, Prince, Pruitt, Puckett, Pugh, Quinn, Ramirez, Ramos, Ramsey, Randall, Randolph, Rasmussen, Ratliff, Ray, Raymond, Reed, Reese, Reeves, Reid, Reilly, Reyes, Reynolds, Rhodes, Rice, Rich, Richard, Richards, Richardson, Richmond, Riddle, Riggs, Riley, Rios, Rivas, Rivera, Rivers, Roach, Robbins, Roberson, Roberts, Robertson, Robinson, Robles, Rocha, Rodgers, Rodriguez, Rodriquez, Rogers, Rojas, Rollins, Roman, Romero, Rosa, Rosales, Rosario, Rose, Ross, Roth, Rowe, Rowland, Roy, Ruiz, Rush, Russell, Russo, Rutledge, Ryan, Salas, Salazar, Salinas, Sampson, Sanchez, Sanders, Sandoval, Santana, Santiago, Santos, Sargent, Saunders, Savage, Sawyer, Schmidt, Schneider, Schroeder, Schultz, Schwartz, Scott, Sears, Sellers, Serrano, Sexton, Shaffer, Shannon, Sharp, Sharpe, Shaw, Shelton, Shepard, Shepherd, Sheppard, Sherman, Shields, Short, Silva, Simmons, Simon, Simpson, Sims, Singleton, Skinner, Slater, Sloan, Small, Smith, Snider, Snow, Snyder, Solis, Solomon, Sosa, Soto, Sparks, Spears, Spence, Spencer, Stafford, Stanley, Stanton, Stark, Steele, Stein, Stephens, Stephenson, Stevens, Stevenson, Stewart, Stokes, Stone, Stout, Strickland, Strong, Stuart, Suarez, Sullivan, Summers, Sutton, Swanson, Sweeney, Sweet, Sykes, Talley, Tanner, Tate, Taylor, Terrell, Terry, Thomas, Thompson, Thornton, Tillman, Todd, Torres, Townsend, Tran, Travis, Trevino, Trujillo, Tucker, Turner, Tyler, Tyson, Underwood, Valdez, Valencia, Valentine, Valenzuela, Vance, Vang, Vargas, Vasquez, Vaughan, Vaughn, Vazquez, Vega, Velasquez, Velazquez, Velez, Villarreal, Vincent, Vinson, Wade, Wagner, Walker, Wall, Wallace, Waller, Walls, Walsh, Walter, Walters, Walton, Ward, Ware, Warner, Warren, Washington, Waters, Watkins, Watson, Watts, Weaver, Webb, Weber, Webster, Weeks, Weiss, Welch, Wells, West, Wheeler, Whitaker, White, Whitehead, Whitfield, Whitley, Whitney, Wiggins, Wilcox, Wilder, Wiley, Wilkerson, Wilkins, Wilkinson, William, Williams, Williamson, Willis, Wilson, Winters, Wise, Witt, Wolf, Wolfe, Wong, Wood, Woodard, Woods, Woodward, Wooten, Workman, Wright, Wyatt, Wynn, Yang, Yates, York, Young, Zamora, Zimmerman]\n}\npersonalEmails: [gmail.com, yahoo.com, mail.com]\ncompanyNames: [Alist, Beans, Klein, Felics, Adapt, MemorTech, Porta, SuperMemo, Nonos, Vitae, Woods, Quisuc, Quicker, Interdem, Morsem, Datastore, Linger, Buapel, Terson, Gualas, Yrsa, Warst, Erntogra, Robutenia, QuickLink, Furba, Hostes, FlyHigh]\ncompanySuffixes: [Associates, Company, Consulting, Inc., Industries, Limited, LLC, Ltd]\ncompanyEmails: [info, contact, company, office]\n\ntext: But I must explain to you how all this mistaken idea of denouncing of a pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. Nor again is there anyone who loves or pursues or desires to obtain pain of itself, because it is pain, but occasionally circumstances occur in which toil and pain can procure him some great pleasure. To take a trivial example, which of us ever undertakes laborious physical exercise, except to obtain some advantage from it? But who has any right to find fault with a man who chooses to enjoy a pleasure that has no annoying consequences, or one who avoids a pain that produces no resultant pleasure?\n\ntelephone_number_formats: ['###-###-###', '###-###-####']\n\npostal_code: ['#####']\n\ncity: [New York, Washington, San Francisco, Miami]\n\nstreet: [Atkins Avenue, Aster Court, Cove Lane, Ford Street, Highland Place, Herzi Street, Tabor Court, Stillwell Avenue, Summer Place, Washington Walk]\n\ncountry: ['Canada', 'USA', 'Poland']\n\nlanguage: 'EN'\n"
  },
  {
    "path": "src/main/resources/jfairy_es.yml",
    "content": "alphabet: aábcdeéfghiíjklmnñoópqrstuvwxyz\ndomains: [es, cat, com, eu]\nfirstNames: {\n  male: [Francisco, Paco, Fran, Jose, Pepe, Antonio, Toni, Emilio, Carlos, Enrique, Manuel, Miguel, Javier, Xavi, Aaron, Alex, Alejandro, Pedro, David, Rubén, Rodrigo, Iván, Sergio, Adolfo, Fernando, Alberto, Álvaro, Alfonso],\n  female: [Alejandra, Alex, Alicia, Ana, Julia, Carolina, Claudia, Sofia, Maria, Marta, Natalia, Olivia, Patricia, Paula, Veronica, Susana, Francisca, Mónica, Estefanía, Maria Cruz, Triana, Paz, Penelope, Elisa, Rebeca]\n}\nlastNames: {\n  male: [Garcia, Lopez, Perez, Gonzalez, Sanchez, Martinez, Rodriguez, Fernandez, Gomez, Martin, Grau, Hernandez, Ruiz, Diaz, Alvarez, Jimenez, Moreno, Muñoz, Alonso, Gutierrez, Romero, Sanz, Torres, Suarez, Ramirez, Vazquez, Navarro, Dominguez, Ramos, Castro, Gil, Flores, Morales, Blanco, Serrano, Molina, Ortiz, Santos, Ortega, Morrell, Delgado, Mendez, Castillo, Marquez, Cruz, Medina, Herrera, Marin, Nunez, Vega, Iglesias, Rojas, Reyes, Luna, Campos, Rubio, Pena, Ferrer, Lozano, Garrido, Leon, Aguilar, Cano, Arias, Herrero, Gimenez, Fuentes, Diez],\n  female: [Garcia, Lopez, Perez, Gonzalez, Sanchez, Martinez, Rodriguez, Fernandez, Gomez, Martin, Grau, Hernandez, Ruiz, Diaz, Alvarez, Jimenez, Moreno, Muñoz, Alonso, Gutierrez, Romero, Sanz, Torres, Suarez, Ramirez, Vazquez, Navarro, Dominguez, Ramos, Castro, Gil, Flores, Morales, Blanco, Serrano, Molina, Ortiz, Santos, Ortega, Morrell, Delgado, Mendez, Castillo, Marquez, Cruz, Medina, Herrera, Marin, Nunez, Vega, Iglesias, Rojas, Reyes, Luna, Campos, Rubio, Pena, Ferrer, Lozano, Garrido, Leon, Aguilar, Cano, Arias, Herrero, Gimenez, Fuentes, Diez]\n}\npersonalEmails: [gmail.com, yahoo.com, yahoo.es, terra.es, telefonica.es, ono.es]\ncompanyNames: [Ibericatec, TecnoHispana, CatTech, Soluciones Martinez, Progreso e Innovación, InfoLoco, InfoLopez, TecnoSanchez, PerezPerez, BlueNube, Soluciones Marquez, Aselesic, TecnoMundo, Tecnolandia]\ncompanySuffixes: [S.A., S.L., S.Coop., S.L.N.E.]\ncompanyEmails: [info, contacto, principal, ventas, atencion]\n\ntext: >\n      Y, viéndole don Quijote de aquella manera, con muestras de tanta tristeza, le dijo: Sábete, Sancho, que no es un hombre más que otro si no hace más que otro. Todas estas borrascas que nos suceden son señales de que presto ha de serenar el tiempo y han de sucedernos bien las cosas; porque no es posible que el mal ni el bien sean durables, y de aquí se sigue que, habiendo durado mucho el mal, el bien está ya cerca. Así que, no debes congojarte por las desgracias que a mí me suceden, pues a ti no te cabe parte dellas. Y, viéndole don Quijote de aquella manera, con muestras de tanta tristeza, le dijo: Sábete, Sancho, que no es un hombre más que otro si no hace más que otro.\n\ntelephone_number_formats: ['+34 6##-###-###', '+34 9#-###-####', '+34 97#-###-###']\n\npostal_code: ['##.###']\n\ncity: [Madrid, Barcelona, Valencia, Sevilla, Zaragoza, Málaga, Murcia, Palma de Mallorca, Las Palmas de Gran Canaria, Bilbao, Alicante, Córdoba, Valladolid, Vigo, Gijón, Hospitalet de Llobregat, La Coruña, Vitoria, Granada, Elche, Oviedo, Badalona, Cartagena, Tarrasa, Jerez de la Frontera, Sabadell, Móstoles, Santa Cruz de Tenerife, Alcalá de Henares, Pamplona, Fuenlabrada, Almería, Leganés, San Sebastián, Burgos, Santander, Castellón de la Plana, Getafe, Albacete, Alcorcón, San Cristóbal de la Laguna, Logroño, Badajoz, Salamanca, Huelva, Lérida, Marbella, Tarragona, Dos Hermanas, León, Torrejón de Ardoz, Parla, Mataró, Cádiz, Santa Coloma de Gramanet, Algeciras, Jaén, Alcobendas, Orense, Reus, Telde, Baracaldo, Lugo, Gerona, San Fernando, Cáceres, Santiago de Compostela, Las Rozas de Madrid, Lorca, Roquetas de Mar, Torrevieja, Coslada, El Puerto de Santa María, San Cugat del Vallés, Talavera de la Reina, Cornellá de Llobregat, Ceuta, Melilla, Pozuelo de Alarcón, El Ejido, Guadalajara, Orihuela, Toledo, San Sebastián de los Reyes, San Baudilio de Llobregat, Pontevedra, Chiclana de la Frontera, Avilés, Torrente, Rivas-Vaciamadrid, Palencia, Arona, Guecho, Vélez-Málaga, Mijas, Gandía, Fuengirola, Manresa, Ciudad Real]\n\nstreet: [Mayor, Iglesia, Real, Nueva, San Jose, San Roque, San Juan, San Pedro, Colón, Vieja, Balmes, Doctor Gregorio Marañón, Doctor Esquerdo, Gran Vía, Alcalá, Cruz, Colegiata, Menendez Pelayo, Sagunto]\n\ncountry: ['España'] #, 'Argentina', 'Uruguay', 'Mexico', 'Chile', 'Colombia', 'Venezuela', 'Cuba', 'Ecuador', 'Honduras', 'Perú']\n\nlanguage: 'ES'\n"
  },
  {
    "path": "src/main/resources/jfairy_fr.yml",
    "content": "alphabet: aâàbcdeéèfghiïîjklmnoôöpqrstuùvwxyz\ndomains: [fr, com, gouv.fr, net, org]\ncompanyNames: [AB Science, ABC Arbitrage, Acanthe Développement, Acteos, Actia Group, Adlpartner, Adocia, Aéroports De Paris, Affine, Afone, Air France, Akka Technologies, Albioma, Altamir, Alten, Altran Technologies, Anf Immobilier, Aperam Reg., April, Archos, Areva, Argan, Artprice Com, Ask, Assystem, Ast Groupe, Atari, Ateme, Aubay, Audika, Aufeminin, Aurea, Aures Technologies, Ausy, Avanquest, Avenir Finance, Avenir Telecom, Aviation Latecoere, Awox, Axway Software, Barbara Bui, Bastide Le Confort, Belier, Belvédère, Beneteau, Bic, Bigben Interactive, Biomerieux, Blue Solutions, Boiron, Bollore, Bonduelle, Bourbon, Bourse Direct, Business Et Décision, Cafom, Canal+, Capelli, Cast, Catana Group, Catering Intl Services, Cegedim, Cegereal, Cegid Group, CGG, Chargeurs, Cibox Interactive, CNP Assurances, Coface, Coheris, Compagnie Des Alpes, Cs Communicat.  Syst, Dalet Rev. split, Dbv Technologies, Delta Plus Group, Derichebourg, Dernier, Devoteam, Dexia, Diagnostic Medical, Dnxcorp, Eca, Egide, Eiffage, Ekinops, Electricité Et Eaux Madagascar, Elior, Encres Dubuit, Eos Imaging, Eramet, Erytech Pharma, Esi Group, Esso, Euler Hermes Group, Eurazeo, Euro Disney, Euro Ressources, Eurofins Scientific, Euromedis Groupe, Euronext, Europacorp, Exel Industries A, Faiveley, Faurecia, Fermentalg, Fleury Michon, Fonc. Paris Nord, Foncière De Paris, Foncière Des Regions, Gameloft, Gascogne, Gaztrans. techn., Gea Grenobl. elect., Gecina Nominatif, Generix, Genfit, Genomic Vision, Genticel, Gerard Perrier Industrie, GFI Informatique, GL Events, GP Eurotunnel Rgpt, Groupe Crit, Groupe Flo, Groupe Fnac, Groupe Gorge, Groupe Open, Groupe Pizzorno Environnement, Guerbet, Guillemot, Haulotte Group, Havas, Hf Company, Hi Media, High Co, Hubwoo. com, Icade, ID Logistics, Ige + Xao, Imerys, Implanet, Infotel, Ingenico Group, Innate Pharma, Innelec Multimedia, Inside Secure, Interparfums, Intle Plant. heveas, Ipsen, Ipsos, It Link, Itesoft, Its Group, Jacquet Metal Sce, Jcdecaux Sa., Keyrus, Korian medica, Lacroix Sa, Lagardère Sca N, Lanson, Laurent Perrier, LDLC Com, Le Noble Age, Lectra, Lexibook Linguist., Linedata Services, Lisi, Lnc, Maisons France Confort, Manitou Bf, Manutan Intl, Mauna Kea Tech, Maurel Et Prom, Mcphy Energy, Mecelec, Medasys, Medtech, Memscap Regpt, Mercialys, Mersen, Metabolic Explorer, Metropole TV, MGI Coutier, Micropole, Mnd, Montaigne Fashion, Montupet, MPI, Mr Bricolage, N. Dentressangle, Nanobiotix, Naturex, Neopost, NetGem, Neurones, Nexans, Nexity, Nextradiotv, Nicox, NRJ Group, Numericable SFR, Oeneo, Ol Groupe, Onxeo, Orapi, Orco Property Group, Orege, Orpea, Paref, Parrot, Partouche, Pcas, Pharmagest Inter., Pierre Et Vacances, Pixium Vision, Plastic Omnium, Plastivaloire, Precia, Prologue, PSB Industries, Public Systeme Hop, Quantel, Recylex, Rémy Cointreau, Rentabiliweb Group, Rexel, Riber, Rubis, Saft, Sartorius Sted Bio, Scbsm, Seb, Sèche Environnement, Sequana Regpt, Sergeferrari Group, Sii, Soft Computing, Sogeclair, Soitec Silicon, Solocal Group, Solucom, Sopra Steria Group, Spir Communication, SQLI Regpt, St Dupont, Stallergenes, Stef, Stentys, Store Electronic, Supersonic Imagine, Sword Group, Synergie, Tarkett, Technicolor Rgpt, Téléperformance, Terreis, Tessi, TF1, Theolia, Thermador Groupe, Tivoly, Tonn. François Fres, Touax, Toupargel, Transgène, Trigano, Tunn Prado Caren, Txcell, U10, Ubisoft Entertain., Union Fin. France, Union Tech. infor., Valneva, Valtech Rev. split, Vet Affaires, Vetoquinol, Viadeo, Vicat, Vilmorin & Cie, Virbac, Vm Materiaux, Vranken pommery Monopole, Wendel, Xilam Animation, Ymagis, Zublin Immobiliere France]\ncompanySuffixes: [SA, SARL, EURL, SAS]\ncompanyEmails: [info, contact, mail, ventes, direction]\nfirstNames:\n  male: [Édouard, Élie, Émeric, Émile, Émilien, Épiphane, Éric, Étienne, Aaron, Abélard, Abdon, Abel, Abelin, Abondance, Abraham, Absalon, Acace, Achaire, Achille, Adéodat, Adalard, Adalbéron, Adalbald, Adalbert, Adalric, Adam, Adegrin, Adel, Adelin, Adelphe, Adenet, Adhémar, Adjutor, Adolphe, Adon, Adonis, Adraste, Adrien, Agénor, Agapet, Agathange, Agathon, Agilbert, Agnan, Agnel, Agrippin, Aignan, Aimé, Aimable, Alain, Albéric, Alban, Albert, Albertet, Albin, Alcée, Alcibiade, Alcide, Alcime, Aldémar, Aldéric, Aldebert, Aldegrin, Aldonce, Aldric, Aleaume, Alexandre, Alexis, Almine, Almire, Aloïs, Aloys, Alphée, Alphonse, Alpinien, Alverède, Amédée, Amélien, Amadis, Amalric, Amandin, Amant, Amaury, Amiel, Amour, Anaël, Anastase, Anatole, Ancelin, Andéol, Andelin, André, Angilbe, Angilbert, Angilran, Anglebert, Angoustan, Anicet, Anis, Annibal, Ansbert, Anselme, Antheaume, Anthelme, Anthime, Anthoine, Antide, Antoine, Antonin, Apollinaire, Apollon, Aquilin, Arcade, Archambaud, Archambeau, Archibald, Arian, Ariste, Aristide, Aristion, Armand, Armel, Armin, Arnalde, Arnaud, Arnauld, Arnault, Arnaut, Arnould, Arnoud, Arnoult, Arnout, Arolde, Arsène, Arthème, Arthaud, Arthur, Ascelin, Athanase, Athos, Aubert, Aubertin, Aubin, Aubry, Audebert, Audouin, Audran, Audric, Auguste, Augustin, Aurèle, Aurélien, Aurian, Auxence, Axel, Aymard, Aymeric, Aymon, Aymond, Azel, Bénigne, Béranger, Baptiste, Barnabé, Barthélemy, Basile, Bastien, Baudouin, Benjamin, Benoît, Bernard, Bertrand, Blaise, Bodon, Boniface, Bouchard, Brice, Brieuc, Bruno, Brunon, Côme, Cédric, Célestin, Célien, Césaire, César, Calixte, Calliste, Camélien, Camillien, Candide, Caribert, Carl, Carloman, Cassien, Chamas, Charles, Childebert, Chilpéric, Chrétien, Christian, Christodule, Christophe, Cléandre, Clément, Clarence, Claudien, Clotaire, Clovis, Colas, Colin, Constant, Constantin, Corentin, Cyprien, Cyriaque, Cyril, Désiré, Damien, Daniel, Dannick, David, Denis, Didier, Dieudonné, Dorian, Emmanuel, Ernest, Esteban, Eudes, Eudoxe, Eugène, Eusèbe, Eustache, Félicité, Félix, Fabien, Fabrice, Falba, Ferdinand, Fiacre, Firmin, Flavien, Flodoard, Florent, Florentin, Florian, Fortuné, Foulques, Frédéric, François, Francis, Franck, Fulbert, Fulcran, Fulgence, Gérald, Gérard, Géraud, Gaël, Gabin, Gabriel, Garnier, Gaspard, Gaston, Gatien, Gaud, Gautier, Geoffroy, Georges, Germain, Gervais, Ghislain, Gilbert, Gilles, Girart, Gislebert, Gondebaud, Gonthier, Gontran, Gonzague, Grégoire, Guérin, Gui, Guilhem, Guillaume, Gustave, Guy, Guyot, Gwenael, Hédelin, Hélier, Hardouin, Hector, Henri, Herbert, Herluin, Hervé, Hilaire, Hildebert, Hincmar, Honoré, Hubert, Hugo, Hugues, Igor, Innocent, Isidore, Jérôme, Jérémie, Jacques, Japhet, Jean, Jeannel, Jeannot, Joël, Joachim, Joanny, Job, Jocelyn, Johan, Jonas, Jonathan, Joseph, Josse, Josselin, Jourdain, Jude, Judicaël, Jules, Julien, Juste, Justin, Kevin, Kilian, Léandre, Léo, Léon, Léopold, Létaud, Lambert, Landry, Laurel, Laurent, Leu, Leufroy, Liétald, Lilian, Lionel, Loïc, Lorrain, Lothaire, Louis, Loup, Luc, Lucas, Lucien, Ludolphe, Ludovic, Médéric, Malo, Mamert, Manassès, Marc, Marceau, Marcel, Marcelin, Marius, Martin, Mathias, Mathieu, Mathis, Mathurin, Matthias, Matthieu, Maugis, Maurice, Mauricet, Max, Maxence, Maximilien, Mayeul, Mence, Merlin, Michel, Moïse, Morgan, Néhémie, Naël, Nathan, Naudet, Nestor, Nicolas, Noé, Noël, Noah, Norbert, Norgot, Normand, Océan, Octave, Odilon, Odon, Oger, Olivier, Oscar, Oxlene, Pépin, Pacôme, Pascal, Paterne, Patrice, Paul, Perceval, Philémon, Philibert, Philippe, Pierre, Prosper, Quentin, Régis, Réjean, Rémi, Rémy, Raoul, Raphaël, Raymond, René, Renaud, Reybaud, Richard, Robert, Roch, Rodolphe, Roger, Roland, Roméo, Romain, Romuald, Ronan, Roselin, Sébastien, Séverin, Salomon, Samuel, Savin, Serge, Sidoine, Sigebert, Sigismond, Silvère, Siméon, Simon, Sixte, Stéphan, Stéphane, Stanislas, Sylvain, Sylve, Sylvestre, Tancrède, Tanguy, Taurin, Théo, Théodebert, Théodore, Théodoric, Théophile, Théophraste, Thibault, Thibert, Thierry, Thomas, Timoléon, Timothée, Titien, Tonnin, Trajan, Tristan, Turold, Ulrich, Ulysse, Urbain, Valère, Valéry, Valentin, Venceslas, Victor, Victorien, Victorin, Vincent, Vital, Vivien, Vladimir, Waleran, Walerand, Wandrille, Xavier, Yann, Yannick, Yoann, Yves, Yvon, Zéphir, Zéphirin, Zéphyr, Zaché, Zacharie, Zakaria, Alix, Aloïse, Andoche, Ange, Angelin, Anicée, Anne, Archange, Ariel, Arsinoé, Céleste, Camille, Claude, Dominique, Dorothée, France, Hippolyte, Isabeau, Maxime, Philomène, Philothée, Sacha, Scholastique]\n  female: [Édith, Éléonore, Élia, Éliette, Éliane, Élisabeth, Élise, Éloïse, Élodie, Émeline, Émelyne, Émilie, Éva, Évangéline, Ève, Évelyne, Aélis, Abélie, Abdonie, Abdonise, Abeline, Abelle, Abigaïl, Abigaëlle, Abigaelle, Acaciane, Acacie, Acanthe, Adèle, Adélaïde, Adélice, Adélie, Adalbaude, Adalsinde, Adegrine, Adeline, Adeltrude, Adolphie, Adonise, Adrastée, Adrehilde, Adrienne, Agathe, Agilberte, Aglaé, Agnès, Agnane, Agneflète, Agrippine, Aignane, Aimée, Alaine, Albérade, Albane, Alberte, Albertine, Albine, Alcidie, Alcine, Alcyone, Aldegonde, Aleth, Alexandrine, Alexane, Alexiane, Alexie, Alexine, Aliénor, Alice, Aliette, Aline, Alizé, Aloyse, Alphonsie, Alphonsine, Althée, Améliane, Amélie, Améthyste, Amaliane, Amalthée, Amande, Amandine, Amante, Amarande, Amaranthe, Amaryllis, Amarynthe, Ambre, Ambrine, Ambroisie, Ambroisine, Ameline, Aminte, Anémone, Anaïs, Anaëlle, Anastasia, Anastasiane, Anastasie, Anatolie, Anatoline, Anceline, Andrée, Angélique, Angadrême, Angela, Angeline, Angilberte, Anicette, Annabelle, Annette, Annick, Annie, Annonciade, Ansberte, Anstrudie, Anthelmette, Anthelmine, Antigone, Antoinette, Antonine, Aphélie, Aphrodite, Apolline, Apollonie, Aquiline, Arabelle, Arcadiane, Arcadie, Argine, Ariane, Aricie, Arielle, Arlette, Armance, Armande, Armandie, Armandine, Armeline, Armelle, Armide, Armine, Arminie, Arnaude, Arsènie, Artémis, Arthurine, Asceline, Astérie, Astarté, Astrée, Astride, Athénaïs, Athalie, Athanasie, Athina, Aubane, Aube, Aubertine, Aude, Audeline, Audette, Audrey, Augustine, Aulde, Aurélia, Aurélie, Aurélienne, Aure, Aurelle, Auriane, Aurore, Automne, Auxane, Aveline, Avigaïl, Avigaëlle, Avoye, Avril, Axeline, Axellane, Axelle, Aymardine, Aymonde, Azélie, Azalée, Azeline, Azelle, Béatrice, Béatrix, Bénédicte, Bérangère, Barbe, Bernadette, Berthe, Bertille, Beuve, Blanche, Blandine, Brigitte, Brunehaut, Brunehilde, Cécile, Célestine, Célia, Céline, Capucine, Carine, Caroline, Cassandre, Catherine, Chantal, Charlaine, Charline, Charlotte, Chloé, Christelle, Christiane, Christine, Chrystèle, Clémence, Clémentine, Claire, Clara, Claudie, Clotilde, Coline, Constance, Cora, Coralie, Coraline, Corentine, Corinne, Cosette, Cyrielle, Danièle, Danielle, Daphné, Daphnée, Delphine, Denise, Diane, Dieudonnée, Doriane, Dorice, Dorine, Douce, Edwige, Elena, Ella, Elsa, Emma, Emmanuelle, Emmelie, Emmeline, Ernestine, Estelle, Esther, Eugénie, Eulalie, Eusébie, Félicie, Fanny, Fantine, Faustine, Fernande, Fiona, Flavie, Flore, Florence, Florie, Fortunée, Françoise, Francia, Gaëlle, Gabrielle, Geneviève, Georgette, Gerberge, Germaine, Gertrude, Gisèle, Gisela, Giselle, Gladys, Guenièvre, Guilhemine, Guillemette, Gustaphine, Gustavine, Gwenaëlle, Gwendoline, Gwladys, Hélène, Héloïse, Harmonie, Hedwige, Henriette, Hermione, Hortense, Huguette, Inès, Ines, Ingrid, Irène, Irina, Iris, Isabelle, Isadora, Isaline, Iseult, Isis, Isolde, Iva, Jacinthe, Jacqueline, Jade, Janine, Jeanine, Jeanne, Jehanne, Jehane, Jessica, Joëlle, Jocelyne, Johane, Johanna, Joséphine, Judith, Julia, Julie, Juliette, Justine, Karen, Karine, Léa, Léna, Lénaïc, Lénaïck, Lénaïg, Léonie, Léonne, Laëticia, Laetitia, Laurène, Laura, Laurane, Laure, Laureline, Lauren, Laurence, Lauriane, Laurine, Leila, Lilou, Lison, Lorène, Lorane, Loreline, Lorelyne, Loriane, Lorraine, Lou, Louna, Lune, Lucie, Lucienne, Lucile, Lucille, Ludivine, Luna, Lydia, Lydie, Mégane, Mélanie, Mélina, Méline, Mélisande, Mélisandre, Mélisende, Mélissa, Mélissandre, Mélodie, Mélysandre, Maëlys, Madeleine, Madyson, Magali, Maguelone, Mahault, Mahaut, Malaury, Malhaury, Mallaury, Manon, Marceline, Margaux, Margot, Marguerite, Marie, Marine, Marion, Marlène, Marthe, Martine, Mathilde, Maud, Maureen, Mauricette, Michèle, Micheline, Mireille, Miriam, Moïsette, Monique, Morgane, Muriel, Murielle, Mylène, Myriam, Nadège, Nadia, Nadine, Naomi, Natalie, Nathalie, Nicci, Nicole, Nicolette, Noémie, Noëlie, Noëlla, Noëlle, Nolwen, Nolwenn, Noyale, Océane, Odette, Odile, Olga, Olive, Olivia, Olympe, Ophélie, Oriande, Oriane, Orlane, Ozanne, Pécine, Pélagie, Pénélope, Pétronille, Pascale, Pascaline, Paule, Paulette, Pauline, Perrine, Philippine, Primerose, Priscilla, Priscille, Pulchérie, Quitterie, Régine, Réjeanne, Rachel, Raphaëlle, Raymonde, Rebecca, Renée, Rolande, Rosalie, Rose, Roseline, Roselyne, Ségolène, Séverine, Sabine, Salomé, Sandrine, Sarah, Sibylle, Simone, Sixtine, Solène, Solange, Soleine, Solenn, Soline, Sophie, Stéphanie, Stela, Stella, Suzanne, Suzette, Suzie, Suzon, Sylvaine, Sylviane, Sylvie, Syrine, Tatiana, Théodora, Thérèse, Thaïs, Tiphaine, Ursule, Véronique, Valérie, Valentine, Vanessa, Victoire, Victoria, Victorine, Vinciane, Violette, Virginie, Viviane, Xavière, Yolande, Ysé, Ysaline, Yse, Yseult, Ysoie, Yvette, Yvonne, Zélie, Zéline, Zoé, Alix, Aloïse, Andoche, Ange, Angelin, Anicée, Anne, Archange, Ariel, Arsinoé, Céleste, Camille, Claude, Dominique, Dorothée, France, Hippolyte, Isabeau, Maxime, Philomène, Philothée, Sacha, Scholastique]\nlastNames:\n  male: [ Martin, Bernard, Thomas, Petit, Robert, Richard, Durand, Dubois, Moreau, Laurent, Simon, Michel, Lefebvre, Leroy, Roux, David, Bertrand, Morel, Fournier, Girard, Bonnet, Dupont, Lambert, Fontaine, Rousseau, Vincent, Muller, Lefevre, Faure, Andre, Mercier, Blanc, Guerin, Boyer, Garnier, Chevalier, Francois, Legrand, Gauthier, Garcia, Perrin, Robin, Clement, Morin, Nicolas, Henry, Roussel, Mathieu, Gautier, Masson, Marchand, Duval, Denis, Dumont, Marie, Lemaire, Noel, Meyer, Dufour, Meunier, Brun, Blanchard, Giraud, Joly, Riviere, Lucas, Brunet, Rang, Gaillard, Barbier, Arnaud, Martinez, Gerard, Roche, Renard, Schmitt, Roy, Leroux, Colin, Vidal, Caron, Picard, Roger, Fabre, Aubert, Lemoine, Renaud, Dumas, Lacroix, Olivier, Philippe, Bourgeois, Pierre, Benoit, Rey, Leclerc, Payet, Rolland, Leclercq, Guillaume, Lecomte, Lopez, Jean, Dupuy, Guillot, Hubert, Berger, Carpentier, Sanchez, Dupuis, Moulin, Louis, Deschamps, Huet, Vasseur, Perez, Boucher, Fleury, Royer, Klein, Jacquet, Adam, Paris, Poirier, Marty, Aubry, Guyot, Carre, Charles, Renault, Charpentier, Menard, Maillard, Baron, Bertin, Rang, Bailly, Herve, Schneider, Fernandez, Le gall, Collet, Leger, Bouvier, Julien, Prevost, Millet, Perrot, Daniel, Le roux, Cousin, Germain, Breton, Besson, Langlois, Remy, Le goff, Pelletier, Leveque, Perrier, Leblanc, Barre, Lebrun, Marchal, Weber, Mallet, Hamon, Boulanger, Jacob, Monnier, Michaud, Rodriguez, Guichard, Gillet, Etienne, Grondin, Poulain, Tessier, Chevallier, Collin, Chauvin, Da silva, Bouchet, Gay, Lemaitre, Benard, Marechal, Humbert, Reynaud, Antoine, Hoarau, Perret, Barthelemy, Cordier, Pichon, Lejeune, Gilbert, Lamy, Delaunay, Pasquier, Carlier, Laporte, Gros, Hamel, Berthier, Letellier, Prevot, Grand, Grandjean, Benoist, Leblond, Gosselin, Leleu, Comte, Favier, Bellanger, Martinet, Billard, Rault, Geoffroy, Forestier, Blondeau, Roques, Ricard, Pommier, Boulet, Drouet, Poisson, Maire, Mounier, Gueguen, Combes, Huguet, Morand, Leonard, Ledoux, Prat, Dubreuil, Fortin, Ferre, Rigaud, Brossard, Picot, Granger, Merlin, Laval, Claude, Marquet, Mouton, Brault, Jeanne, Marc, Levasseur, Le roy, Guillemin, Bocquet, Constant, Pujol, Lavigne, Bauer, Hoffmann, Chatelain, Lacour, Jung, Jamet, Lallemand, Walter, Basset, Provost, Salaun, Rang, Tellier, Gibert, Martins, Rose, Navarro, Grange, Lepage, Bouquet, Keller, Techer, Jolly, Tournier, Guillard, Papin, Bataille, Lelong, Cartier, Leon, Champion, Dujardin, Dumoulin, Lasserre, Flament, Husson, Schmidt, Le bihan, Kieffer, Millot, Le guen, Ferry, Bourdin, Mangin, Gicquel, Cadet, Soulier, Mignot, Barret, Bureau, Leray, Fort, Barreau, Mas, Lafont, Bouchard, Jolivet, Savary, Foulon, Guillemot, Costa, Armand, Blaise, Binet, Montagne, Jullien, Berard, Vacher, Saunier, Dupin, Thiebaut, Schwartz, Felix, Sellier, Lagrange, Lefrancois, Andrieux, Lalanne, Berthet, Rang, Payen, Lavergne, Jouan, Cornet, Combe, Lang, Poulet, Granier, Zimmermann, Lebeau, Bayle, Vigneron, Terrier, Bon, Lecocq, Esnault, Bordes, Sarrazin, Le borgne, Jouve, Lauret, Le floch, Godefroy, Prieur, Lemarchand, Vernet, Vivier, Aubin, Faucher, Ducrocq, Dore, Lamotte, Thiery, Jacquemin, Arnould, Bastien, Thery, Couderc, Duchene, Quere, Chevrier, Cochet, Villard, Corre, Prost, Bois, Magnier, Monier, Grosjean, Tardy, Gimenez, Caillaud, Guignard, Lefranc, Beaumont, Le berre, Tissier, Rouxel, Bonnard, Le gal, Sergent, Crepin, Lesueur, Marques, Roth, Wolff, Buisson, Ollivier, Briand, Alexandre, Georges, Guillou, Besnard, Legros, Gonzalez, Coulon, Maillot, Albert, Camus, Delattre, Launay, Hebert, Lesage, Blanchet, Didier, Voisin, Pons, Bousquet, Coste, Vallee, Jacques, Martel, Maury, Raynaud, Barbe, Pascal, Bigot, Verdier, Charrier, Sauvage, Guillet, Mahe, Leduc, Lelievre, Gregoire, Joubert, Masse, Delmas, Morvan, Lebreton, Tanguy, Pineau, Lebon, Gaudin, Colas, Imbert, Paul, Raymond, Guillon, Brunel, Regnier, Ferrand, Hardy, Devaux, Courtois, Bodin, Chauvet, Allard, Blondel, Laine, Delorme, Seguin, Rang, Lenoir, Berthelot, Bonneau, Pereira, Thibault, Lacombe, Riou, Lagarde, Clerc, Bruneau, Godard, Vaillant, Couturier, Gomez, Jourdan, Pages, Valentin, Lombard, Mary, Blin, Texier, Rossi, Marion, Allain, Guilbert, Maurice, Baudry ]\n  female: [ Martin, Bernard, Thomas, Petit, Robert, Richard, Durand, Dubois, Moreau, Laurent, Simon, Michel, Lefebvre, Leroy, Roux, David, Bertrand, Morel, Fournier, Girard, Bonnet, Dupont, Lambert, Fontaine, Rousseau, Vincent, Muller, Lefevre, Faure, Andre, Mercier, Blanc, Guerin, Boyer, Garnier, Chevalier, Francois, Legrand, Gauthier, Garcia, Perrin, Robin, Clement, Morin, Nicolas, Henry, Roussel, Mathieu, Gautier, Masson, Marchand, Duval, Denis, Dumont, Marie, Lemaire, Noel, Meyer, Dufour, Meunier, Brun, Blanchard, Giraud, Joly, Riviere, Lucas, Brunet, Rang, Gaillard, Barbier, Arnaud, Martinez, Gerard, Roche, Renard, Schmitt, Roy, Leroux, Colin, Vidal, Caron, Picard, Roger, Fabre, Aubert, Lemoine, Renaud, Dumas, Lacroix, Olivier, Philippe, Bourgeois, Pierre, Benoit, Rey, Leclerc, Payet, Rolland, Leclercq, Guillaume, Lecomte, Lopez, Jean, Dupuy, Guillot, Hubert, Berger, Carpentier, Sanchez, Dupuis, Moulin, Louis, Deschamps, Huet, Vasseur, Perez, Boucher, Fleury, Royer, Klein, Jacquet, Adam, Paris, Poirier, Marty, Aubry, Guyot, Carre, Charles, Renault, Charpentier, Menard, Maillard, Baron, Bertin, Rang, Bailly, Herve, Schneider, Fernandez, Le gall, Collet, Leger, Bouvier, Julien, Prevost, Millet, Perrot, Daniel, Le roux, Cousin, Germain, Breton, Besson, Langlois, Remy, Le goff, Pelletier, Leveque, Perrier, Leblanc, Barre, Lebrun, Marchal, Weber, Mallet, Hamon, Boulanger, Jacob, Monnier, Michaud, Rodriguez, Guichard, Gillet, Etienne, Grondin, Poulain, Tessier, Chevallier, Collin, Chauvin, Da silva, Bouchet, Gay, Lemaitre, Benard, Marechal, Humbert, Reynaud, Antoine, Hoarau, Perret, Barthelemy, Cordier, Pichon, Lejeune, Gilbert, Lamy, Delaunay, Pasquier, Carlier, Laporte, Gros, Hamel, Berthier, Letellier, Prevot, Grand, Grandjean, Benoist, Leblond, Gosselin, Leleu, Comte, Favier, Bellanger, Martinet, Billard, Rault, Geoffroy, Forestier, Blondeau, Roques, Ricard, Pommier, Boulet, Drouet, Poisson, Maire, Mounier, Gueguen, Combes, Huguet, Morand, Leonard, Ledoux, Prat, Dubreuil, Fortin, Ferre, Rigaud, Brossard, Picot, Granger, Merlin, Laval, Claude, Marquet, Mouton, Brault, Jeanne, Marc, Levasseur, Le roy, Guillemin, Bocquet, Constant, Pujol, Lavigne, Bauer, Hoffmann, Chatelain, Lacour, Jung, Jamet, Lallemand, Walter, Basset, Provost, Salaun, Rang, Tellier, Gibert, Martins, Rose, Navarro, Grange, Lepage, Bouquet, Keller, Techer, Jolly, Tournier, Guillard, Papin, Bataille, Lelong, Cartier, Leon, Champion, Dujardin, Dumoulin, Lasserre, Flament, Husson, Schmidt, Le bihan, Kieffer, Millot, Le guen, Ferry, Bourdin, Mangin, Gicquel, Cadet, Soulier, Mignot, Barret, Bureau, Leray, Fort, Barreau, Mas, Lafont, Bouchard, Jolivet, Savary, Foulon, Guillemot, Costa, Armand, Blaise, Binet, Montagne, Jullien, Berard, Vacher, Saunier, Dupin, Thiebaut, Schwartz, Felix, Sellier, Lagrange, Lefrancois, Andrieux, Lalanne, Berthet, Rang, Payen, Lavergne, Jouan, Cornet, Combe, Lang, Poulet, Granier, Zimmermann, Lebeau, Bayle, Vigneron, Terrier, Bon, Lecocq, Esnault, Bordes, Sarrazin, Le borgne, Jouve, Lauret, Le floch, Godefroy, Prieur, Lemarchand, Vernet, Vivier, Aubin, Faucher, Ducrocq, Dore, Lamotte, Thiery, Jacquemin, Arnould, Bastien, Thery, Couderc, Duchene, Quere, Chevrier, Cochet, Villard, Corre, Prost, Bois, Magnier, Monier, Grosjean, Tardy, Gimenez, Caillaud, Guignard, Lefranc, Beaumont, Le berre, Tissier, Rouxel, Bonnard, Le gal, Sergent, Crepin, Lesueur, Marques, Roth, Wolff, Buisson, Ollivier, Briand, Alexandre, Georges, Guillou, Besnard, Legros, Gonzalez, Coulon, Maillot, Albert, Camus, Delattre, Launay, Hebert, Lesage, Blanchet, Didier, Voisin, Pons, Bousquet, Coste, Vallee, Jacques, Martel, Maury, Raynaud, Barbe, Pascal, Bigot, Verdier, Charrier, Sauvage, Guillet, Mahe, Leduc, Lelievre, Gregoire, Joubert, Masse, Delmas, Morvan, Lebreton, Tanguy, Pineau, Lebon, Gaudin, Colas, Imbert, Paul, Raymond, Guillon, Brunel, Regnier, Ferrand, Hardy, Devaux, Courtois, Bodin, Chauvet, Allard, Blondel, Laine, Delorme, Seguin, Rang, Lenoir, Berthelot, Bonneau, Pereira, Thibault, Lacombe, Riou, Lagarde, Clerc, Bruneau, Godard, Vaillant, Couturier, Gomez, Jourdan, Pages, Valentin, Lombard, Mary, Blin, Texier, Rossi, Marion, Allain, Guilbert, Maurice, Baudry ]\nstreet: [ \"Rue de l'Église\", \"Place de l'Église\", Grande Rue, Rue du Moulin, Place de la Mairie, Rue du Château, Rue des Écoles, Rue de la Gare, Rue de la Mairie, Rue Principale, Rue du Stade, Rue de la Fontaine, Rue Pasteur, Rue des Jardins, Rue Victor-Hugo ]\npostal_code: ['#####']\ncity: [Paris, Marseille, Lyon, Toulouse, Nice, Nantes, Strasbourg, Montpellier, Bordeaux, Lille, Rennes, Reims, Le Havre, Saint-Étienne, Toulon, Grenoble, Dijon, Angers, Nîmes, Villeurbanne, Saint-Denis, Le Mans, Clermont-Ferrand, Aix-en-Provence, Brest, Limoges, Tours, Amiens, Perpignan, Metz, Boulogne-Billancourt, Besançon, Orléans, Rouen, Mulhouse, Caen, Saint-Denis, Nancy, Argenteuil, Saint-Paul, Montreuil, Roubaix, Tourcoing, Dunkerque, Nanterre, Créteil, Avignon, Vitry-sur-Seine, Poitiers, Courbevoie, Fort-de-France, Versailles, Colombes, Asnières-sur-Seine, Aulnay-sous-Bois, Saint-Pierre, Rueil-Malmaison, Pau, Aubervilliers, Champigny-sur-Marne, Le Tampon, Antibes, Saint-Maur-des-Fossés, La Rochelle, Cannes, Béziers, Calais, Saint-Nazaire, Colmar, Drancy, Bourges, Mérignac, Ajaccio, Issy-les-Moulineaux, Levallois-Perret, La Seyne-sur-Mer, Quimper, Noisy-le-Grand, Valence, \"Villeneuve-d'Ascq\", Neuilly-sur-Seine, Antony, Vénissieux, Cergy, Troyes, Clichy, Pessac, Les Abymes, Ivry-sur-Seine, Chambéry, Lorient, Niort, Sarcelles, Montauban, Villejuif, Saint-Quentin, Hyères, Cayenne, Épinay-sur-Seine, Saint-André, Beauvais, Maisons-Alfort, Cholet, Meaux, Chelles, Pantin, Fontenay-sous-Bois, La Roche-sur-Yon, Bondy, Vannes, Saint-Louis, Fréjus, Arles, Clamart, Évry, Le Blanc-Mesnil, Narbonne, Sartrouville, Grasse, Annecy, Laval, Belfort, Vincennes, Charleville-Mézières, Évreux, Sevran, Albi, Montrouge, Bobigny, Martigues, Saint-Ouen, Brive-la-Gaillarde, Suresnes, Carcassonne, Cagnes-sur-Mer, Corbeil-Essonnes, Saint-Brieuc, Blois, Bayonne, Aubagne, Châlons-en-Champagne, Meudon, Châteauroux, Saint-Malo, Chalon-sur-Saône, Sète, Puteaux, Alfortville, Salon-de-Provence, Massy, Mantes-la-Jolie, Bastia, Vaulx-en-Velin, Saint-Herblain, Le Cannet, Valenciennes, Istres, Gennevilliers, Boulogne-sur-Mer, Livry-Gargan, Saint-Priest, Rosny-sous-Bois, Caluire-et-Cuire, Angoulême, Douai, Tarbes, Wattrelos, Castres, Choisy-le-Roi, Talence, Thionville, Arras, Alès, Garges-lès-Gonesse, Gap, Saint-Laurent-du-Maroni, Melun, Bourg-en-Bresse, Noisy-le-Sec, Compiègne, La Courneuve, Le Lamentin, Marcq-en-Barœul, Saint-Germain-en-Laye, Rezé, Bron, Anglet, Gagny, Chartres, Bagneux, \"Saint-Martin-d'Hères\", Montluçon, Pontault-Combault, Poissy, Draguignan, Joué-lès-Tours, Savigny-sur-Orge, Cherbourg-Octeville, Saint-Joseph, Le Port, Colomiers, Saint-Martin, Villefranche-sur-Saône, Stains, Saint-Benoît, Échirolles, Villepinte, Roanne, Montélimar, Saint-Chamond, Nevers, Conflans-Sainte-Honorine, Auxerre, Sainte-Geneviève-des-Bois, Châtillon, Bagnolet, Vitrolles, Thonon-les-Bains, Neuilly-sur-Marne, Haguenau, Marignane, Saint-Raphaël, Tremblay-en-France, La Ciotat, Six-Fours-les-Plages, Creil, Agen, Romans-sur-Isère, Montigny-le-Bretonneux, Le Perreux-sur-Marne, Franconville, Annemasse, Villeneuve-Saint-Georges, Saint-Leu, Mâcon, Cambrai, Lens, Houilles, Épinal, Châtenay-Malabry, Schiltigheim, Sainte-Marie, Liévin, Châtellerault, Meyzieu, Goussainville, Viry-Châtillon, Dreux, \"L'Haÿ-les-Roses\", Plaisir, Mont-de-Marsan, Maubeuge, Nogent-sur-Marne, Les Mureaux, Clichy-sous-Bois, La Possession, Dieppe, Chatou, Vandœuvre-lès-Nancy, Malakoff, Palaiseau, Pontoise, Charenton-le-Pont]\ncountry: [France]\npersonalEmails: [ gmail.com, yahoo.com, yahoo.fr, free.fr, orange.fr, laposte.net, hotmail.fr ]\ntelephone_number_formats: [\"0#########\"]\ntext: \"Quoique ce détail ne touche en aucune manière au fond même de ce que nous avons à raconter, il n’est peut-être pas inutile, ne fût-ce que pour être exact en tout, d’indiquer ici les bruits et les propos qui avaient couru sur son compte au moment où il était arrivé dans le diocèse. Vrai ou faux, ce qu’on dit des hommes tient souvent autant de place dans leur vie et souvent dans leur destinée que ce qu’ils font. M. Myriel était fils d’un conseiller au parlement d’Aix ; noblesse de robe. On contait que son père, le réservant pour hériter de sa charge, l’avait marié de fort bonne heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans les familles parlementaires. Charles Myriel, nonobstant ce mariage, avait, disait-on, beaucoup fait parler de lui. Il était bien fait de sa personne, quoique d’assez petite taille, élégant, gracieux, spirituel ; toute la première partie de sa vie avait été donnée au monde et aux galanteries. La révolution survint, les événements se précipitèrent ; les familles parlementaires, décimées, chassées, traquées, se dispersèrent. M. Charles Myriel, dès les premiers jours de la révolution, émigra en Italie. Sa femme y mourut d’une maladie de poitrine dont elle était atteinte depuis longtemps. Ils n’avaient point d’enfants. Que se passa-t-il ensuite dans la destinée de M. Myriel ? L’écroulement de l’ancienne société française, la chute de sa propre famille, les tragiques spectacles de 93, plus effrayants encore peut-être pour les émigrés qui les voyaient de loin avec le grossissement de l’épouvante, firent-ils germer en lui des idées de renoncement et de solitude ? Fut-il, au milieu d’une de ces distractions et de ces affections qui occupaient sa vie, subitement atteint d’un de ces coups mystérieux et terribles qui viennent quelquefois renverser, en le frappant au cœur, l’homme que les catastrophes publiques n’ébranleraient pas en le frappant dans son existence et dans sa fortune ? Nul n’aurait pu le dire ; tout ce qu’on savait, c’est que, lorsqu’il revint d’Italie, il était prêtre.\\n\"\ndefaultCountryCode: 'FR'\nlanguage: 'FR'\n"
  },
  {
    "path": "src/main/resources/jfairy_it.yml",
    "content": "alphabet: abcdefghijklmnopqrstuvwxyz\ndomains: [com, org, it]\nfirstNames: {\n  male: [Andrea, Luca, Marco, Francesco, Matteo, Alessandro, Davide, Simone, Federico, Lorenzo, Mattia, Stefano, Giuseppe, Riccardo, Daniele, Michele, Alessio, Antonio, Giovanni, Nicola, Gabriele, Fabio, Alberto, Giacomo, Giulio, Filippo, Gianluca, Paolo, Roberto, Salvatore, Emanuele, Edoardo, Enrico, Vincenzo, Nicolò, Leonardo, Jacopo, Manuel, Mirko, Tommaso, Pietro, Luigi, Giorgio, Angelo, Dario, Valerio, Domenico, Claudio, Alex, Christian],\n  female: [Giulia, Chiara, Francesca, Federica, Sara, Martina, Valentina, Alessia, Silvia, Elisa, Ilaria, Eleonora, Rosy, Giorgia, Elena, Laura, Alice, Alessandra, Jessica, Arianna, Marta, Veronica, Roberta, Anna, Giada, Claudia, Beatrice, Valeria, Michela, Serena, Camilla, Irene, Cristina, Simona, Maria, Noemi, Stefania, Erika, Sofia, Lucia, Vanessa, Greta, Debora, Nicole, Angela, Paola, Caterina, Monica, Erica, Lisa, Gaia]\n}\nlastNames: {\n  male: [Rossi, Russo, Ferrari, Esposito, Bianchi, Romano, Colombo, Ricci, Marino, Greco, Bruno, Gallo, Conti, De Luca, Mancini, Costa, Giordano, Rizzo, Lombardi, Moretti, Barbieri, Fontana, Santoro, Mariani, Rinaldi, Caruso, Ferrara, Galli, Martini, Leone, Longo, Gentile, Martinelli, Vitale, Lombardo, Serra, Coppola, DeSantis, D'Angelo, Marchetti, Parisi, Villa, Conte, Ferraro, Ferri, Fabbri, Bianco, Marini, Grasso, Valentini, Messina, Sala, De Angelis, Gatti, Pellegrini, Palumbo, Sanna, Farina, Rizzi, Monti, Cattaneo, Morelli, Amato, Silvestri, Mazza, Testa, Grassi, Pellegrino, Carbone, Giuliani, Benedetti, Barone, Rossetti, Caputo, Montanari, Guerra, Palmieri, Bernardi, Martino, Fiore, De Rosa, Ferretti, Bellini, Basile, Riva, Donati, Piras, Festa, Vitali, Battaglia, Sartori, Neri, Costantini, Milani, Pagano, Ruggiero, Sorrentino, D'Amico, Orlando, Negri],\n  female: [Rossi, Russo, Ferrari, Esposito, Bianchi, Romano, Colombo, Ricci, Marino, Greco, Bruno, Gallo, Conti, De Luca, Mancini, Costa, Giordano, Rizzo, Lombardi, Moretti, Barbieri, Fontana, Santoro, Mariani, Rinaldi, Caruso, Ferrara, Galli, Martini, Leone, Longo, Gentile, Martinelli, Vitale, Lombardo, Serra, Coppola, DeSantis, D'Angelo, Marchetti, Parisi, Villa, Conte, Ferraro, Ferri, Fabbri, Bianco, Marini, Grasso, Valentini, Messina, Sala, De Angelis, Gatti, Pellegrini, Palumbo, Sanna, Farina, Rizzi, Monti, Cattaneo, Morelli, Amato, Silvestri, Mazza, Testa, Grassi, Pellegrino, Carbone, Giuliani, Benedetti, Barone, Rossetti, Caputo, Montanari, Guerra, Palmieri, Bernardi, Martino, Fiore, De Rosa, Ferretti, Bellini, Basile, Riva, Donati, Piras, Festa, Vitali, Battaglia, Sartori, Neri, Costantini, Milani, Pagano, Ruggiero, Sorrentino, D'Amico, Orlando, Negri]\n}\npersonalEmails: [gmail.com, libero.it, outlook.it, virgilio.it]\ncompanyNames: [Alist, Beans, Klein, Felics, Adapt, MemorTech, Porta, SuperMemo, Nonos, Vitae, Woods, Quisuc, Quicker, Interdem, Morsem, Datastore, Linger, Buapel, Terson, Gualas, Yrsa, Warst, Erntogra, Robutenia, QuickLink, Furba, Hostes, FlyHigh]\ncompanySuffixes: [SpA, srl, snc, sas]\ncompanyEmails: [info, segreteria, personale, direzione, amministrazione, magazzino]\n\ntext: Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura, ché la diritta via era smarrita. Ahi quanto a dir qual era è cosa dura esta selva selvaggia e aspra e forte che nel pensier rinova la paura! Tant’è amara che poco è più morte; ma per trattar del ben ch’i’ vi trovai, dirò de l’altre cose ch’i’ v’ ho scorte.\n\ntelephone_number_formats: ['##-#######', '###-#######']\n\npostal_code: ['#####']\n\ncity: [Roma, Milano, Torino, Napoli, Frattamaggiore, Venezia, Porto S. Elpidio, S. Nicola Arcella]\n\nstreet: [Via Roma, P.zza Italia, L.go Augusto, Via G. Matteotti, Piazza G. Cesare, Corso Italia, Corso Mediterraneo, P.zza Aspromonte, Via Caduti di Guerra, Via Miseno, Via Lambro, Via A. Diaz]\n\ncountry: ['Italia', 'Francia', 'Germania', 'Spagna']\n\nlanguage: 'IT'\n"
  },
  {
    "path": "src/main/resources/jfairy_ka.yml",
    "content": "alphabet: აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ\ndomains: [ge, com.ge, org.ge, net.ge]\nfirstNames: {\n  male: [აბელ, აბრაამ, აბრამ, ადამ, აქაქი, ალექსანდრე, ამბროსი, ამირან, ანდრია, ანდრო, ანრი, ანზორ, არჩილ, ავქსენტი, ავთანდილ, ავთო, ბაადურ, ბადრი, ბაგრატ, ბესარიონ, ბესო, ბიძინა, ბორის, დანიელ, დავით, დავითი, ედუარდ, ერეკლე, გაიოზ, გენადი, გიორგი, გივი, გოჩა, გოგა, გრიგოლ, გურგენ, იაკობ, ილია, იმედა, იოანე, იონა, იოსებ, ირაკლი, ისიდორე, იური, ივანე, კობა, კონსტანტინე, კორნელი, ლადო, ლევან, ლუკა, მალხაზ, მალხაზი, მამუქა, მათე, მელითონ, მერაბ, მიხეილ, მიშო, მურთაზ, ნიკა, ნიკოლოზ, ნიკუშა, ოქროპირ, ოთარ, პავლე, პეტრე, ფრიდონ, ფრიდონი, რამაზ, რამაზი, რევაზ, რევაზი, რეზიკო, როსტომ, საბა, სანდრო, სიმონ, სიმონი, სოსო, სპარტაკ, სტეფანე, თამაზ, თამაზი, თედორე, თეიმურაზ, თეიმურაზი, თემო, თემურ, თემური, თენგიზ, ტერენტი, თომა, თორნიკე, ვახტანგ, ვალერი, ვალერიან, ვანო, ვასილ, ვასო, ვაჟა, ვეფხია, ვლადიმერ, ზაალ, ზაქარია, ზურაბ, ზვიად, ზვიადი],\n  female: [ანა, ანი, ბედისა, დარეჯან, დარეჯანი, ეკა, ეკატერინე, ელენე, ელისაბედ, ელისო, ენძელა, ეთერი, ევა, გულისა, გულნაზ, ირინა, ირინე, ირმა, იზოლდა, ქეთევან, ქეთი, ქეთო, ხათუნა, ლალი, ლეილა, ლია, მადონა, მაია, მაყვალა, მანანა, მარიამ, მარიამი, მარინა, მარინე, მართა, მედეა, მერი, მზია, ნანა, ნანული, ნატალია, ნათელა, ნათია, ნესტან, ნესტანი, ნინო, რუსიკო, რუსუდან, რუსუდანი, სალომე, სოფიო, თამარ, თამარი, ტატიანა, თეკლა, თინათინ, თინათინი, ცისანა, ცისია, ციური, ვარდო]\n}\nlastNames: {\n  male: [აბაკელია, აბაზასძე, აბრამიძე, აბულეთისძე, აგიაშვილი, ახალაია, ალასანია, ალექსიძე, ამირეჯიბი, ამირხანაშვილი, ანდრონიკაშვილი, აფაქიძე, არახამია, არზიანი, ასლანიშვილი, ავალიშვილი, ბაბადიშვილი, ბაგრატიონი დავითაშვილი, ბახია, ბაქრაძე, ბალანჩივაძე, ბანძელაძე, ბარნაბიშვილი, ბესტავაშვილი, ბოჭორიშვილი, ბოლქვაძე, ბურჭულაძე, ბუკია, ბასილია, ჩაჩხიანი, ჩარკვიანი, ჩერქეზიშვილი, ჩიჩუა, ჭკადუა, ჩხეტიძე, ჩახუნაშვილი, ჩხეიძე, დადეშქელიანი, დარსალია, დავითულიანი, დიასამიძე, დონაური, ჯუღაშვილი, გურიის ერისთავი, ესაძე, გაბაშვილი, გახარია, გარსევანიშვილი, გამსახურდია, გელაძე, გიორგაძე, ღლონტი, გოგოლაძე, გრუზინსკი, გურამიშვილი, გურული, გვაზავა, ღურწკაია, იოსელიანი, იაშვილი, ილურიძე, ივანიშვილი, ჯალაღონია, ჯანაშია, ჯაფარიძე, ჯავახიშვილი, ჯელაძე, ჯინჯიხაშვილი, ჯორჯაძე, ჯუღაშვილი, ყალიჩავა, კასრაძე, კერესელიძე, ხარაიშვილი, ხომერიკი, ხუჯაძე, კიკნაძე, ქობალია, კოტრიკაძე, კვერნაძე, ხერხეულიძე, ხიმშიაშვილი, ხინჩეგაშვილი, კობახია, ქობულაშვილი, კოდოშვილი, კურტანიძე, ლიჩელი, ლიპარტელიანი, ლორთქიფანიძე, მონავარდისაშვილი, მაჭავარიანი, მაღალაშვილი, მამალაძე, მჭედლიშვილი, მელიქიშვილი, მელუა, მესხი, მილდიანი, მუსელიანი, მჟავანაძე, ნაკაშიძე, ნემსაძე, ნიჟარაძე, ოჩიაური, ორბელიანი, ოქროპირიძე, ფანქველაშვილი, პატარაია, პატარკაციშვილი, ფავლენიშვილი, ფხეიძე, რაზმაძე, რეხვიაშვილი, რუსიეშვილი, სააკაძე, საბაური, სარალიძე, საკანდელიძე, შენგელია, შეთეკაური, შველიძე, სიდამონ-ერისთავი, სოლოღაშვილი, შუშანია, სვანაძე, თარხნიშვილი, წერეთელი, ციციშვილი, წულუკიძე, ტუღუში, ტუსიშვილი, ცენტერაძე, უნდილაძე, ვაჩნაძე, ვარდანიძე, ვირსალაძე, ზალკალიანი, ზაქარაშვილი, ზაქარიაძე, ზუმაძე, ზურაბიანი, ზოიძე, ზვიადაძე],\n  female: [აბაშიძე, აფხაზი, აბულაძე, აბუსელიძე, ახალკაცი, ახვლედიანი, ალავიძე, ამილახვარი, ამირანაშვილი, ანჩაბაძე, ანჯაფარიძე, არაბიძე, არველაძე, ასათიანი, ავალიანი, ათანაშვილი, ბაგრატიონი, ბაგრატიონი მუხრანელი, ბახსოლიანი, ბალახაძე, ბალავაძე, ბარათაშვილი, ბერიძე, ბინიაშვილი, ბოკუჩავა, ბოტკოველი, ბობოხიძე, ბუხრაშვილი, ჭაბუკიანი, ჭანტურია, ჭავჭავაძე, ჭიაურელი, ჩიქოვანი, ჭყონია, ჩოლოყაშვილი, ჩხაიძე, დადიანი, დარჩიძე, დავითაია, დგებუაძე, დოლიძე, დონღვანი, არაგვის ერისთავი, რაჭის ერისთავი, გოგოლაური, გაგუა, განძიელი-გეგელია, გამყრელიძე, გედევანიშვილი, გელოვანი, გიორგობიანი, გლოველი, გოცირიძე, გუგუნავა, გურგენიძე, გურიელი, გვასალია, გოგოლიძე, იარაჯული, იოსავა, იმედაშვილი, ჯამბაკურ-ორბელიანი, ჯანანაშვილი, ჯანდიერი, ჯაყელი, ჯავრიშვილი, ჯიბუტი, ჯიშკარიანი, ჯუანშერიანი, კახაბერიძე, კაპანაძე, ყაზბეგი, ქაშიბაძე, ხარძიანი, ხუციშვილი, ხურცილავა, ყიფიანი, ქორიძე, კვარაცხელია, კვეკვეცია, ხიდირბეგიშვილი, ხინჩაგაშვილი, ხინჩიგაშვილი, კობახიძე, ქოჩაკიძე, კუბლაშვილი, ლაზარაშვილი, ლეონიძე, ლობჟანიძე, ლალიაშვილი, მაჩაბელი, მაჭუტაძე, მაისურაძე, მანველიშვილი, მდივანი, მელქაძე, მენთეშაშვილი, მიქელაძე, მხეიძე, მუხრანელი, ნაკანი, ნანავა, ნიკოლაძე, ნოღაიდელი, ონიანი, ოკინაშვილი, ორჯონიკიძე, ფალავანდიშვილი, პატარავა, პერტახია, ფირცხალაიშვილი, რაფავა, რევაზიშვილი, როყვა, რუხაძე, სააკაშვილი, სანიკიძე, შაბურიძე, შალიკაშვილი, შერვაშიძე, შევარდნაძე, სიჭინავა, სიხარულიძე, სუხიშვილი, სვანიძე, თაბაგარი, თავდგირიძე, ცინცაძე, ცქიტიშვილი, თორელი, თუმანიშვილი, თავხელიძე, უჯმაჯურიძე, ურუშაძე, ვახვახიშვილი, ვეზირიშვილი, ზამბახიძე, ზამთარაძე, ზაქარეიშვილი, ზიბზიბაძე, ზურაბაშვილი, ჟორჟოლიანი, ზოტიკიშვილი]\n}\npersonalEmails: [gmail.com, yahoo.com]\ncompanyNames: [ბადაგონი, კაუკასუს ონლაინი, ქუთაისის ავტომექანიკური, მაგთიკომი, რუსთავის მეტალურგიული, თელასი, ვისოლის ნავთობი, ჯეოსელი]\ncompanySuffixes: [კომპანია, კონსულტაცია, იმეილი, ქარხანა, შეზღუდულია]\ncompanyEmails: [info, contact, office]\n\ntext: კაცს ქალი რყვნის, არცერთი მამამკაცი, და მათ შორს არც მაიორიც, არასდროს არ იტყვის უარს,თუკი ქალი დაუძახებს და თუკი ქალს ეს საქმე სხვებზე უკეთესად გამოსდის. ანას ქმრის მკლავებს მზისა და მიწის სურნელი დიოდა,და როდესაც ანას ამ მკლავებში ეძინა,მშობლები ახსენდებოდა,რომლების არასდროს ენახა, შიშნარევ ნეტარებსას განიცდიდა ხოლმე ამ დროს და ასე ნელ-ნელა ცრემლდანთხეული ქალდებოდა ერთადერთი პატრონის მხურვალე მკლავებში. ყველა ბავშვმა იცის,რომ სადაც დედა იქ მამაც უნდა იყოს, ეს მისი თანდაყოლილი ცოდნაა და ამავე დროს საფუძველიც ყველაფრისა, რაც მერე უნდა დახოს და შეისწავლოს. უიარაღო კაცს სალამსაც კი ამადლიან, როცა იარაღის მქონეს და მომხმარებელს მიწამდე უკრავენ თავს.\n\ntelephone_number_formats: ['###-###-###']\n\npostal_code: ['####']\n\ncity: [თბილისი, ბათუმი, ქუთაისი, რუსთავი, გორი, ზუგდიდი, ფოთი, ხაშური, სამტრედია, სენაკი, ზესტაფონი, მარნეული, თელავი, ახალციხე, ქობულეთი, ოზურგეთი, კასპი, ჭიათურა, წყალტუბო, საგარეჯო, გარდაბანი, ბორჯომი]\n\nstreet: [გორკის ქუჩა, ჩეხოვის ქუჩა, რუსთაველის გამზირი, თვენსიქსი მაისის მოედანი, ფერდინანდ თავაძის ქუჩა, ჭავჭავაძის გამზირი, კოსტავას, აგლაძის ქუჩა, თამარ მეფის ქუჩა, დავით აღმაშენებლის გამზირი, ვაჟა–ფშაველას გამზირი, გრიბოედოვის ქუჩა, კაკუცა ჩოლოყაშვილის გამზირი, ნინოშვილის ქუჩა, პოლიტკოვსკაიას ქუჩა, სულხან ცინცაძის ქუჩა, ქეთევან წამებულის გამზირი, მეფე სოლომონ II-ის ქუჩა]\n\ncountry: ['Georgia'] #'USA', 'Russia', 'Greece', 'Turkey'\n\nlanguage: 'KA'\n"
  },
  {
    "path": "src/main/resources/jfairy_pl.yml",
    "content": "alphabet: aąbcćdeęfghijklłmnoóprsśtuwyzżź\ndomains: [pl, com, eu, com.pl]\nfirstNames: {\n  male: [Adam, Adrian, Aleksander, Antoni, Bartłomiej, Bartosz, Dawid, Dominik, Filip, Franciszek, Igor, Jan, Jakub, Kacper, Kamil, Karol, Krzysztof, Maciej, Maksymilian, Mateusz, Michał, Mikołaj, Oskar, Patryk, Paweł, Piotr, Stanisław, Szymon, Tomasz, Wiktor, Wojciech],\n  female: [Aleksandra, Alicja, Anna, Dominika, Emilia, Hanna, Joanna, Julia, Karolina, Katarzyna, Kinga, Klaudia, Magdalena, Maja, Małgorzata, Maria, Marta, Martyna, Natalia, Oliwia, Patrycja, Paulina, Weronika, Wiktoria, Zofia, Zuzanna]\n}\nlastNames: {\n  male: [Adamiec, Aleksandrowicz, Antkowiak, Banaszak, Barszcz, Bator, Białek, Biernat, Biliński, Bobrowski, Bochenek, Bogdański, Bojarski, Burek, Błaszczyk, Chojnowski, Cichoń, Czech, Czekaj, Dolata, Domagalski, Dominiak, Drewniak, Godlewski, Izdebski, Jabłoński, Jakubczyk, Jakubiak, Janicki, Janusz, Jarząbek, Jędrzejczyk, Kaczmarek, Kaniewski, Kaźmierczak, Kisiel, Kochański, Kowalewski, Kozak, Kozioł, Krzyżanowski, Król, Kujawski, Kulig, Lenart, Majkowski, Malik, Marczak, Mikołajczyk, Mroczek, Mrozek, Murawski, Nawrocki, Nowicki, Okoń, Olszak, Osiński, Paradowski, Paszkowski, Piech, Piwowarski, Porębski, Radziszewski, Rak, Reszka, Roszak, Rusek, Rutkowski, Różański, Różycki, Sadowski, Serafin, Siedlecki, Skibiński, Skoczylas, Skowron, Skowronek, Stachura, Stelmach, Stępień, Szostak, Słomiński, Traczyk, Trzciński, Urbanek, Urbanowicz, Wdowiak, Wilczyński, Witek, Więcek, Wojciechowski, Wojtasik, Woźny, Wójtowicz, Zagórski, Zalewski, Zawada, Zborowski, Żuchowski],\n  female: [Adamiec, Aleksandrowicz, Antkowiak, Banaszak, Barszcz, Bator, Białek, Biernat, Bilińska, Bobrowska, Bochenek, Bogdańska, Bojarska, Burek, Błaszczyk, Chojnowska, Cichoń, Czech, Czekaj, Dolata, Domagalska, Dominiak, Drewniak, Godlewska, Izdebska, Jabłońska, Jakubczyk, Jakubiak, Janicka, Janusz, Jarząbek, Jędrzejczyk, Kaczmarek, Kaniewska, Kaźmierczak, Kisiel, Kochańska, Kowalewski, Kozak, Kozioł, Krzyżanowska, Król, Kujawska, Kulig, Lenart, Majkowska, Malik, Marczak, Mikołajczyk, Mroczek, Mrozek, Murawska, Nawrocka, Nowicka, Okoń, Olszak, Osińska, Paradowska, Paszkowska, Piech, Piwowarska, Porębska, Radziszewska, Rak, Reszka, Roszak, Rusek, Rutkowska, Różańska, Różycka, Sadowska, Serafin, Siedlecka, Skibińska, Skoczylas, Skowron, Skowronek, Stachura, Stelmach, Stępień, Szostak, Słomińska, Traczyk, Trzcińska, Urbanek, Urbanowicz, Wdowiak, Wilczyńska, Witek, Więcek, Wojciechowska, Wojtasik, Woźna, Wójtowicz, Zagórska, Zalewska, Zawada, Zborowska, Żuchowska]\n}\npersonalEmails: [gmail.com, yahoo.com, poczta.onet.pl, interia.pl, tlen.pl, wp.pl]\ncompanyNames: [AB, AC, Achem, Action, Adamed, Adanex, Aflofarm, Agata Meble, Agnella, Agrecol, Amica, Amplus, Apart, Arcabit, Asseco Poland, Atlas, Autopart, Autosan, Bać-Pol, Bakoma, Barlinek, Barwa, Befado, Bell, Bielenda, Bielmar, Big Star, Biofarm, Black Red White, Boryszew, Brand24, BranQ, CCC, CD Projekt, Cedrob, Ceramika Paradyż, Cersanit, Cisowianka, Cobi, Cognor, Colian, Comarch, Creotech Instruments, Dafi, Dako, Dawtona, Delia, Dino, Dr Irena Eris, Drutex, Eko-Okna, Enea, Energa, Fakro, Famur, Farmona, Ferguson, Ferro, Filmweb, Floslek, FM Group, FoodCare, Gatta, Gerda, Gerlach, Gino Rossi, Goclever, GPW, Graal, Granna, Grupa Azoty, Grupa Nowy Styl, Grycan, Hasco-Lek, Helio, Helios, Herbapol, Hevea, Iglotex, Impel, Indykpol, Inglot, Instal Kraków, Inter Cars, ITAKA, Jelcz, Joanna, JSW, Jurajska, Kazar, KGHM, Kler, Kolporter, Komputronik, Kopernik, Koral, Kospel, Kross, Kubota, Kupiec, Lakma, LiveChat, LOT, Lotos, LPP, Lubawa, Maspex, MaxCom, Meble VOX, Mercator Medical, Mlekovita, Mlekpol, Modecom, Mokate, Monnari, Neonet, Neuca, Newag, Novitus, Oknoplast, Oleofarm, Opoczno, Orlen, Oshee, Pekao, Pelion, PESA, PGE, PGNiG, Piątnica, PKO Bank Polski, PKP, Poczta Polska, Polpharma, Polskie Radio, Polsport, Porta, Pracuj.pl, Pronar, Prosperplast, Protektor, Pruszyński, Prymat, PZL Sędziszów, PZU, Radwag, Rafamet, Rainbow Tours, Recman, Redan, Relpol, Romet, RTV Euro AGD, Ryłko, Samasz, Sanplast, Sante, Selena, Selvita, Sfinks, Sipma, Społem, Stokrotka, Synthos, Śnieżka, Tauron, Techland, Tonsil, Topaz, Toya, Trefl, TVP, Unibep, Unimot, Ursus, Ustronianka, Venita, Vigo, Virtu, Vistula, Vivid Games, Vobro, Wielton, Wirtualna Polska, Wittchen, Wojas, X-KOM, Yes, Zbyszko, Zetkama, Ziaja, Zwoltex]\ncompanySuffixes: [Associates, Company, Consulting, Inc., Industries, Limited, LLC, Ltd]\ncompanyEmails: [info, contact, company, office]\n\ntext: >\n      Nie ma zatem takiego człowieka, który kocha cierpienie samo w sobie, kto by do niego dążył lub chciał go doświadczyć, tylko dlatego, że jest to cierpienie, a dlatego, że czasami zdarzają się takie okoliczności, w których to cierpienie może doprowadzić go do jakiejś wielkiej przyjemności. Dając przykład banalny: któż z nas kiedyś nie podejmował się trudnego wysiłku fizycznego mając na względzie uzyskanie z tego korzyści? Kto ma jakiekolwiek prawo obwiniać człowieka, który wybiera przyjemność nie wiążącą się z przykrymi konsekwencjami, albo tego, kto unika takiego cierpienia, które nie prowadzi do przyjemności? Jednocześnie potępiamy ze słusznym oburzeniem i czujemy niechęć do ludzi, którzy są tak owładnięci urokami nietrwałej przyjemności, tak zaślepieni jej pragnieniem, że nie dostrzegają, iż następstwem ich postępowania będą z pewnością cierpienie i trudności.\n\ntelephone_number_formats: ['+48#########']\n\npostal_code: ['##-###']\n\ncity: [Biała Piska, Bielany, Boguszyn, Boszkowo, Brzozów, Bęczyn, Cedzyna, Chojnów, Chotowa, Ciechocinek, Czernikowo, Dymów, Dzianisz, Działdowo, Dzierżoniow, Dziwiszów, Gierłoż, Goczałkowice Zdrój, Goleniów, Gowarczów, Grębiszew, Górzno, Głubczyce, Huba, Janów Podlaski, Jarosławiec, Jastrzębie Zdrój, Jeleniów, Jeleśnia, Józefów, Kamienna, Karłowice, Koczala-Dymin, Komarno, Kostomłoty Pierwsze, Kołbaskowo, Krasnobród, Krosno Odrzańskie, Kuków, Kępa k. Sochocina, Leszno, Lubin, Lublin, Lutowiska, Maniowy, Małe Ciche, Mikołajki, Milicz, Miłomłyn, Myślibórz, Młynne, Nowogrodziec, Nowy Tomyśl, Nowy Żmigród, Olchowa, Osieczany, Pabianice, Pakosławice, Piasek, Piaski k. Rucianego-Nidy, Piekary Śląskie, Pisz, Pniewy, Podgórzyn, Podlesice, Prudnik, Pszczyna, Puck, Radomyśl Wielki, Radzyń Podlaski, Rajgród, Rytro, Silec, Skaryszew, Skoczów, Skołyszyn, Srebrna Góra, Srem, Stara Białka, Stryków, Szarocin, Szczyrzyc, Trzebinia, Tłokinia Kościelna, Unieście, Ustka, Ustroń, Wasilków, Wodzisław, Wołów, Wydminy, Włosań, Zabrze, Zabrzeż, Zegrze, Zemborzyce, Zemborzyce Tereszyńskie, Zławieś Wielka, Złocieniec, Żary]\n\nstreet: [17 Stycznia, Adampolska, Aleja Księcia Józefa Poniatowskiego, Aleja Wielkopolski, Alpejska, Andrychowska, Antoniego Uniechowskiego, Basetli, Bieżuńska, Boglarczyków, Bogucicka, Borecka, Brunona Kicińskiego, Brygadzistów, Budowlana, Bulwarowa, Dezyderego Adama Chłapowskiego, Dobka z Oleśnicy, Dubieńska, Dziatwy, Dziewanny, Długorzeczna, Elsterska, Filtrowa, Frachtowa, Garbarska, Garwolińska, Gibraltarska, Goworowska, Henryka Sienkiewicza, Jerzego Bukowskiego, Józefa Ignacego Kraszewskiego, Kajetana Koźmiana, Kronikarska, Krzysztofa Warszewickiego, Kwarciana, Kwitnącej Akacji, Kłodawska, Lirowa, Ludwicka, Ludwinowska, Makowska, Marii Grzegorzewskiej, Marokańska, Małowiejska, Melioracyjna, Myszyniecka, Naczelnikowska, Narcyzowa, Orderu Uśmiechu, Osieki, Pasłęcka, Patriotów, Piaskowa, Piecuszka, Pilarzy, Plac Wojska Polskiego, Plutonowych, Pomologiczna, Prosta, Przedpole, Przepiórki, Płocka, Rowowa, Roztoki, Rzeczna, Różana, Sejmikowa, Skwer Andrzeja Woyciechowskiego, Skwer Grupy AK „Granat”, Smolna, Stanisława Jachowicza, Stawy, Stefana Drzewieckiego, Synogarlicy, Szmaragdowa, Szulborska, Toporczyków, Traktorzystów, Uniwersału, Walerego Wróblewskiego, Witebska, Wiązów, Wodzisławska, Wschodnia, Wybrzeże Kościuszkowskie, Wybrzeże Szczecińskie, Władysława Bieńczaka, X Poprzeczna, Zakamarek, Zaułek, Zespołowa, Zgrupowania AK „Kampinos”, gen. Józefa Zajączka, ks. Bronisława Markiewicza, ks. Ignacego Skorupki, Łazanowicka, Ługi, św. Antoniego, Łysakowska]\n\ncountry: ['Polska']\n\nlanguage: 'PL'\n"
  },
  {
    "path": "src/main/resources/jfairy_sk.yml",
    "content": "alphabet: aáäbcčdďeéfghiíjklĺľmnňoóôpqrŕsštťuúvwxyýzž\ndomains: [sk, com, eu]\nfirstNames: {\nmale: [Adam, Adolf, Adrián, Alan, Albert, Albín, Aleš, Alexander, Alexej, Alfonz, Alfréd, Alojz, Ambróz, Andrej, Anton, Arnold, Arpád, Aurel, Bartolomej, Belo, Beňadik, Benjamín, Bernard, Blahoslav, Blažej, Bohdan, Bohumil, Bohumír, Bohuš, Bohuslav, Boleslav, Bonifác, Boris, Branislav, Bruno, Bystrík, Ctibor, Cyprián, Cyril, Dalibor, Daniel, Dávid, Demeter, Denis, Dezider, Dionýz, Dobroslav, Dominik, Drahomír, Drahoslav, Dušan, Edmund, Eduard, Eliáš, Emanuel, Emil, Erik, Ernest, Ervín, Eugen, Fedor, Félix, Ferdinand, Filip, Florián, František, Frederik, Fridrich, Gabriel, Gašpar, Gejza, Gregor, Gustáv, Henrich, Hubert, Hugo, Ignác, Igor, Iľja, Imrich, Ivan, Izidor, Jakub, Ján, Jarolím, Jaromír, Jaroslav, Jerguš, Jozef, Juraj, Kamil, Karol, Kazimír, Klaudius, Klement, Koloman, Konštantín, Kornel, Kristián, Krištof, Ladislav, Leonard, Leopold, Levoslav, Ľubomír, Ľubor, Ľuboš, Ľuboslav, Ľudomil, Ľudovít, Lukáš, Marcel, Marek, Marián, Mário, Martin, Matej, Matúš, Maximilián, Medard, Metod, Michal, Mikuláš, Milan, Miloš, Miloslav, Miroslav, Mojmír, Móric, Nikolaj, Norbert, Oldrich, Oleg, Oliver, Ondrej, Oskár, Oto, Pankrác, Patrik, Pavol, Peter, Pravoslav, Prokop, Radomír, Radoslav, Radovan, Radúz, Rastislav, René, Richard, Róbert, Roland, Roman, Rudolf, Samuel, Sergej, Servác, Severín, Silvester, Šimon, Slavomír, Stanislav, Štefan, Svätopluk, Svetozár, Tadeáš, Teodor, Tibor, Tichomír, Timotej, Tomáš, Urban, Václav, Valentín, Valér, Vasil, Vavrinec, Vendelín, Viktor, Viliam, Vincent, Vít, Víťazoslav, Vladimír, Vladislav, Vlastimil, Vojtech, Vratislav, Vratko, Zdenko, Žigmund, Zlatko, Zoltán],\nfemale: [Adela, Adriána, Agáta, Agnesa, Alana, Albína, Alena, Alexandra, Alica, Alojzia, Alžbeta, Amália, Anabela, Anastázia, Andrea, Anežka, Angela, Angelika, Anna, Antónia, Aurélia, Barbara, Barbora, Beáta, Berta, Bianka, Bibiána, Blanka, Blažena, Bohdana, Bohumila, Bohuslava, Božena, Božidara, Branislava, Brigita, Bronislava, Cecília, Dagmara, Dana, Daniela, Darina, Daša, Denisa, Diana, Dobromila, Dobroslava, Dominika, Dorota, Drahomíra, Drahoslava, Dušana, Edita, Ela, Elena, Eleonóra, Eliška, Elvíra, Ema, Emília, Erika, Estera, Etela, Eugénia, Eva, Filoména, Františka, Gabriela, Galina, Gertrúda, Gizela, Hana, Hedviga, Helena, Henrieta, Hermína, Hilda, Hortenzia, Ida, Ingrida, Irena, Irma, Ivana, Iveta, Ivica, Izabela, Jana, Jarmila, Jaroslava, Jela, Jolana, Jozefína, Judita, Justína, Kamila, Karolína, Katarína, Klára, Klaudia, Kornélia, Kristína, Kvetoslava, Ladislava, Laura, Lea, Lenka, Lesana, Lesia, Liana, Libuša, Linda, Lívia, Ľubica, Ľubomíra, Ľuboslava, Lucia, Ľudmila, Lujza, Lýdia, Magdaléna, Malvína, Marcela, Margaréta, Margita, Mária, Marianna, Marína, Marta, Martina, Matilda, Melánia, Michaela, Milada, Milena, Milica, Miloslava, Milota, Miriama, Miroslava, Monika, Nadežda, Natália, Nataša, Nikola, Nina, Nora, Oľga, Olívia, Olympia, Otília, Oxana, Patrícia, Paulína, Perla, Petra, Petrana, Petronela, Radoslava, Regina, Renáta, Romana, Rozália, Ružena, Sabína, Sidónia, Silvia, Simona, Sláva, Slávka, Slavomíra, Soňa, Stanislava, Štefánia, Stela, Svetlana, Tamara, Tatiana, Terézia, Uršuľa, Valentína, Valéria, Vanda, Veronika, Viera, Vieroslava, Viktória, Vilma, Viola, Vladimíra, Vlasta, Xénia, Žaneta, Zdenka, Želmíra, Zina, Zita, Zlatica, Žofia, Zoja, Zora, Zuzana]\n}\nlastNames: {\nmale: [Abrahám, Adam, Adamec, Almáši, Anderle, András, Andráš, Andráši, Andrašík, Andrášik, Andrassy, Andrássy, Andrásy, Antal, Arpáš, Árpás, Augusta, Babka, Bača, Baďura, Bahna, Bahno, Bajnok, Bakos, Bakoš, Balaša, Baláž, Balázs, Balog, Balogh, Ban, Bán, Baňa, Báňa, Bano, Baňo, Báno, Bánó, Baran, Baranka, Barbara, Barbora, Bárta, Bartoš, Bartošík, Bartovič, Baša, Bašek, Baška, Baško, Bašo, Beck, Bednár, Bednárik, Beihofner, Bek, Beka, Beko, Bella, Beň, Beňa, Beňo, Beňuš, Beňuška, Beran, Bernard, Bernardi, Bernardo, Bernhard, Bernhardt, Bernolák, Bezák, Bicek, Bielik, Bilek, Bílek, Bilka, Bílka, Bilko, Bilkó, Biľko, Bílko, Binder, Biringer, Blaha, Bláha, Blaho, Blažej, Bobula, Bobuľa, Bologna, Bondra, Boór, Bor, Bór, Bora, Bóra, Borek, Borič, Borik, Borík, Bórik, Bôrik, Boris, Boriš, Borisov, Borka, Borko, Boro, Borovský, Borovszky, Borovszký, Borový, Borowski, Bosák, Boška, Bošňák, Botev, Brabec, Braxatoris, Brezina, Brunovský, Bruška, Bruško, Budín, Bugár, Bukovský, Buš, Čajkovič, Capek, Čapek, Capka, Čapka, Capko, Čapko, Čapkovič, Čapla, Čapľa, Čaplovič, Čarnogurský, Čekovský, Černík, Černoch, Červeň, Červený, Cesnak, Česnek, Chalupka, Chára, Chovan, Chován, Chovanec, Chrappa, Chudík, Cibula, Cibuľa, Cibulka, Cibuľka, Čiernik, Čierny, Cigán, Cigáň, Cigánik, Cíger, Cikán, Čobrda, Cyprich, Czibula, Czibulka, Dacej, Ďaďo, Dan, Dán, Dana, Daňa, Dáňa, Dančák, Dančiak, Dancsák, Danek, Daněk, Dani, Dáni, Danko, Dankó, Daňko, Dano, Daňo, Dany, Dányi, Dávid, Debnár, Dej, Dekýš, Dérer, Devečka, Dibarbora, Dida, Dido, Dobšinský, Dočolomanský, Doležal, Dora, Dorka, Dorko, Dorkó, Ďorko, Dorot, Dorota, Dostal, Dostál, Dostálek, Drajna, Droppa, Drotár, Dubnička, Dubovský, Duda, Dudek, Dudik, Dudík, Dudka, Dudko, Dudo, Dudok, Dudov, Duffy, Duka, Dula, Dulla, Ďurča, Ďurčo, Durdík, Durek, Ďurek, Ďurica, Ďuriš, Ďurka, Ďurko, Ďurkovič, Ďurkovský, Ďuro, Ďurovič, Ďurovský, Duša, Duschek, Dusek, Dušek, Dušička, Dusík, Duska, Duška, Dúška, Dusko, Duško, Ďuško, Dutka, Ďutka, Dutko, Dvonč, Dvorský, Dyda, Dzurjanin, Fabian, Fabián, Fabuš, Faith, Fajnor, Farkas, Farkaš, Farkašovský, Fedor, Feldek, Fico, Figuli, Filc, Filip, Filipek, Filípek, Filipko, Fink, Finka, Fischer, Fisher, Forgáč, Fraňa, Fráňa, Franek, Franěk, Fránek, Frank, Franka, Franko, Frano, Fraňo, Frei, Fridman, Friedman, Frühauf, Ftáčnik, Ftorek, Gál, Galik, Galík, Gálik, Galis, Gális, Gallo, Garin, Gašpar, Gašparovič, Gavalier, Getting, Gocník, Golonka, Gregor, Greguš, Grňa, Grznár, Gyurkovics, Gyurovics, Gyurovszky, Gyurovszký, Hablák, Habšuda, Hagara, Hála, Halák, Haluška, Hanak, Hanák, Haňak, Haňák, Hanek, Hank, Hanka, Hanke, Hanko, Hanousek, Hanus, Hanuš, Hanusek, Hanúsek, Hanuska, Hanuška, Hanúska, Hanzal, Hanzel, Hargaš, Harvan, Harvánek, Haščák, Havran, Havránek, Havranka, Havranko, Havrankó, Hečko, Heretik, Hladký, Hlaváč, Hlaváček, Hlaváčik, Hliník, Hlinka, Hochschorner, Hodža, Holič, Holiček, Holíček, Holička, Holík, Holoubek, Holub, Holubec, Holubek, Holúbek, Holubka, Holubko, Holúbok, Holuby, Horváth, Hossa, Hosták, Hošták, Hošťák, Hoza, Hraško, Hrdlička, Hrianka, Hric, Hrmo, Hroboň, Hruška, Hrušovský, Hryc, Huba, Hudáček, Hus, Hús, Husa, Huša, Husák, Husár, Husek, Hušek, Húšek, Huska, Huška, Húska, Húška, Hušo, Husták, Husťák, Hušták, Hušťák, Huszár, Huszka, Ihnačák, Jakab, Jakabovič, Jakoubek, Jakub, Jakuba, Jakubček, Jakubčík, Jakubčo, Jakubec, Jakubecz, Jakubek, Jakúbek, Jakubík, Jakubka, Jakubko, Jalovec, Jan, Ján, Janáček, Janák, Janča, Janček, Jančo, Janeček, Janečka, Janečko, Janek, Jánek, Jáni, Janík, Janka, Janko, Jankó, Jano, Jáno, Janočko, Janoš, János, Jánoš, Janošek, Jánošík, Janoška, Jánoska, Jánoška, Janoško, Jánoško, Janošo, Janoušek, Jantošovič, Jedľovský, Jendek, Jeník, Jerkovič, Jirek, Jirka, Jonata, Junas, Junás, Junáš, Juráš, Jurča, Jurčina, Jurčo, Jurek, Jurík, Jurin, Jurina, Jurka, Jurko, Jurkovič, Juroška, Jurovčík, Kaliský, Kállay, Kaniak, Kára, Kárpáty, Karul, Karvaš, Kavický, Kazik, Kazík, Kázik, Keller, Kello, Kelo, Keníž, Ker, Kisel, Kiseľ, Kisela, Kiseľa, Kissel, Klapač, Klapáč, Klapka, Klapko, Klaus, Klepač, Klepáč, Klepsatel, Klima, Klíma, Klimáček, Klimek, Klimko, Klimkovič, Klimo, Kližan, Klokoč, Klopačka, Kniha, Koc, Koč, Koča, Kocák, Kocek, Kočí, Kocian, Kocián, Kočiš, Kocka, Kočka, Kočko, Kocour, Kocourek, Kocur, Kocúr, Kocura, Kocúrik, Koky, Kolár, Kolesár, Kollár, Kolnik, Kolník, Konopka, Konôpka, Konrad, Konrád, Konstantinidis, Kopa, Kopp, Koppa, Korčák, Korec, Kostka, Kôstka, Kostrec, Koszta, Kosztka, Kotes, Kotian, Kotleba, Kotulič, Kotzian, Kouba, Koubek, Kováč, Kováčik, Koza, Kozáček, Kozáčik, Kozak, Kozák, Kozakov, Kozmon, Krajči, Krajčí, Krajčír, Krajčo, Krajčovič, Krajíček, Král, Kráľ, Králik, Králík, Kráľovič, Kramár, Krasnohorský, Krásnohorský, Krčméry, Kreheľ, Krejča, Krejčí, Krištof, Kríž, Križan, Krížik, Kroner, Króner, Kropilák, Kroták, Kroupa, Krupa, Krúpa, Kryštof, Kuba, Kubec, Kubek, Kúbek, Kubiček, Kubíček, Kubička, Kubičko, Kubiczek, Kubík, Kubitschek, Kubka, Kubko, Kubo, Kučera, Kucsera, Kuffa, Kuna, Kunda, Kunka, Kunst, Kupa, Kupka, Kupko, Kuruc, Kurucz, Kus, Kuš, Kús, Kúš, Kuša, Kuska, Kuška, Kúska, Kušo, Kysel, Kyseľ, Kysela, Kyseľa, Kyselý, Labant, Labuda, Laca, Lacka, Lacko, Laco, Lajčák, Lajčiak, Lamač, Landau, Langoš, Lepšík, Lesný, Leto, Lettrich, Lexa, Lintner, Lipa, Lípa, Lipka, Lipko, Lipták, Lisický, Liška, Líška, Litva, Loj, Loja, Lojek, Lojka, Lojko, Lubina, Lukáč, Lukachich, Lukáči, Lukács, Luks, Lukš, Luksa, Lukša, Lupták, Ľupták, Lux, Mác, Maca, Máca, Macek, Maček, Máček, Mach, Macha, Mácha, Machát, Machata, Machnáč, Macho, Máčik, Mack, Macka, Mácka, Macko, Mackó, Mačko, Mackovič, Mačkovič, Maco, Mačo, Maczko, Maczkó, Maczo, Maczó, Madar, Madár, Maďar, Maďár, Madara, Maďara, Madaras, Madaraš, Madarás, Madarasz, Madarász, Maďarič, Madej, Magál, Magyar, Magyár, Majdan, Majdán, Majeský, Mak, Mák, Maka, Mako, Makó, Makovec, Makovica, Makovický, Makový, Malachovský, Malina, Malíšek, Mamojka, Marcin, Marcinek, Marcínek, Marcinko, Mareček, Marek, Margita, Marián, Mark, Márk, Marko, Markos, Markoš, Markovič, Markovics, Markovicz, Markovits, Markus, Markuš, Márkus, Márkuš, Maroš, Marta, Márta, Martan, Martáň, Marťan, Martanovič, Martin, Martín, Martina, Martinák, Martinček, Martinec, Martinek, Martínek, Martinka, Martinko, Martinkovič, Martinovič, Marton, Márton, Masár, Masarik, Masarík, Masárik, Masaryk, Maslo, Masný, Matiaško, Mečiar, Medvecký, Medved, Medveď, Melcer, Melczer, Melichar, Melichár, Melichárek, Melicher, Melicherčík, Melicherík, Meltzer, Melzer, Menhart, Meňhart, Meňhárt, Meňhért, Menšík, Menyhárt, Menyhért, Michalech, Michálech, Michalek, Michálek, Michalica, Michalík, Michálik, Michalka, Michalko, Mihál, Mihalik, Mihalík, Mihálik, Miklík, Mikloš, Miklós, Mikloško, Mikulák, Mikulík, Mikuš, Mikúš, Miler, Miller, Milota, Mináč, Mišík, Mistrík, Mlynár, Mlynárik, Mojsej, Mojžiš, Mojžíš, Mokroš, Molnar, Molnár, Mór, Mora, Móra, Moravčík, Moravec, Mori, Móri, Moric, Móric, Móricz, Motyčka, Motyka, Mraz, Mráz, Mrazek, Mrázek, Mrazík, Mrázik, Mrázka, Mrazko, Mrázko, Mucha, Müller, Murgaš, Murin, Murín, Musil, Mydlo, Nábělek, Nádas, Nádaš, Nádasi, Nádaši, Nagy, Nálepka, Navara, Nedvěd, Nemec, Němec, Nemet, Német, Nemeth, Németh, Neruda, Nezval, Nitra, Nižnanský, Nižnánsky, Nižňanský, Nor, Nota, Nóta, Nôta, Novak, Novák, Novota, Novotný, Nowak, Nvota, Obšut, Očenáš, Olah, Oláh, Ondrák, Ondráš, Ondrášek, Ondrašík, Ondrášik, Ondrejka, Ondrejko, Ondrejkovič, Ondrus, Ondruš, Ondrusek, Ondrušek, Ondrúšek, Ondruška, Ondruško, Opluštil, Orlík, Orság, Ország, Országh, Otčenáš, Pajer, Pala, Paľa, Pála, Pálek, Palka, Paľka, Pálka, Palko, Palkó, Paľko, Pálko, Palkovič, Pall, Páll, Palla, Pallo, Palo, Paló, Paľo, Palov, Paľov, Palovčík, Paľovčík, Palovič, Paluch, Palúch, Paľuch, Paľúch, Pap, Papp, Pašek, Paška, Paško, Pauk, Paúk, Pauko, Pauliček, Paulíček, Paulik, Paulík, Pauliny, Paulíny, Paulovič, Pavel, Pável, Pavelec, Pavelek, Pavelka, Pavelko, Pavka, Pavko, Pavliček, Pavlíček, Pavličko, Pavlik, Pavlík, Pavlikovský, Pavlo, Pavlov, Pavlovič, Pavol, Pavuk, Pavúk, Pawlak, Pawlik, Pelikan, Pelikán, Pellegrini, Pellegríni, Pepucha, Pešek, Peška, Peško, Petrovický, Petruška, Pichlík, Pika, Píka, Plaucha, Plavec, Plavucha, Plch, Plekanec, Plešivec, Podhradský, Podkonický, Polák, Polgár, Poliak, Pollák, Procháska, Prochazka, Procházka, Prohaska, Proháska, Prohászka, Pucher, Pupák, Puška, Puškár, Puskás, Puškáš, Rak, Rák, Rakovan, Raši, Repiský, Révay, Richard, Richtár, Richter, Riha, Riša, Riška, Riško, Rišo, Riszdorfer, Roháč, Rohaček, Roháček, Roháčik, Rojek, Rojka, Rojko, Róm, Romančík, Rosa, Rosina, Rót, Roth, Róth, Rott, Rozenberg, Rubik, Rubík, Rufus, Rúfus, Rus, Rusko, Rusnak, Rusnák, Rusňak, Rusňák, Rusnok, Rusznyák, Ruttkay, Ružička, Rybár, Rybárik, Rybníček, Rys, Ryš, Rýs, Ryša, Ryška, Ryško, Sabo, Sadiki, Šafránek, Sagan, Sagán, Salaj, Salajka, Šalajka, Saliji, Samel, Sameľ, Sámel, Sámeľ, Samson, Samuel, Sanitra, Šarkan, Sárkány, Scherer, Seč, Sedliak, Sekera, Senko, Ševčenko, Šidlo, Sidor, Sigmund, Šima, Šíma, Šimeček, Šimečka, Šimek, Šimíček, Šimík, Šimka, Šimko, Šimo, Simon, Šimon, Šimonovič, Škantar, Škantár, Sklár, Sklenár, Sklenárik, Sklenica, Sklenička, Sklenka, Skokan, Škriniar, Škultéty, Skutecký, Šlahor, Slašťan, Slivka, Šlivka, Slivko, Sloboda, Slobodník, Slota, Slovák, Slovinec, Šmajda, Smrek, Sokol, Solan, Solej, Šoltés, Šoltýs, Šouc, Šoustal, Špilár, Stantien, Starosta, Šťastný, Stefan, Štefan, Štefánek, Štefánik, Štefanka, Štefanko, Stefanovič, Štefanovič, Štefuca, Štefunko, Štěpán, Štěpánek, Stevanovič, Stodola, Straka, Štraus, Strauss, Štrauss, Štrba, Strnisko, Strýček, Stümpel, Šulc, Šuňavec, Šurka, Šváb, Šváby, Švehla, Svoboda, Svobodník, Svrbík, Sýkora, Szabo, Szabó, Szalai, Szalay, Szekeres, Szelepcsényi, Szomolányi, Tahy, Ťapák, Tatar, Tatár, Tatarka, Tatárka, Ťažký, Thoma, Thomka, Tikal, Timek, Timka, Timko, Tirpák, Tiso, Toman, Tomaň, Tomana, Tomanek, Tománek, Tomaník, Tomas, Tomáš, Tomaschek, Tomašek, Tomášek, Tomášik, Tomaška, Tomáška, Tomaško, Tomáško, Tomeček, Tomečka, Tomečko, Tomek, Tomka, Tomko, Tóth, Trlík, Truben, Tuma, Tupy, Tupý, Turčok, Uram, Urblík, Ursiny, Ursíny, Vajcik, Vajcík, Vajda, Valach, Valachovič, Valent, Valenta, Valentín, Valíček, Valušek, Valuška, Vanek, Vaněk, Varga, Vašek, Vašíček, Vaska, Vaška, Váska, Vasko, Vaško, Vavrinec, Velďák, Vencel, Vesel, Veterník, Vicen, Vicena, Vico, Vilikovský, Višňovský, Vlach, Vlachovič, Vlk, Vlna, Vlnka, Vojtek, Vojtka, Vojtko, Vomáčka, Vondra, Vondráček, Vondrák, Vondrka, Vondruška, Vozar, Vozár, Vozáry, Vrabec, Vrablec, Vydarený, Weiss, Williams, Wittlinger, Záborský, Zachar, Zachara, Zachariaš, Zachariáš, Zajac, Zajíc, Zatopek, Zátopek, Zelenay, Železnik, Železník, Ziga, Žiga, Žigmund, Zigo, Zigó, Žigo, Zika, Zíka, Zikmund, Ziko, Zima, Zíma, Zimka, Zipser, Zoubek, Zsiga, Zsigmond, Zsigmondy, Zsigo, Zsigó, Zubek, Zúbek, Zubka, Zubko, Zubrík, Zúbrik, Zyka, Zýka],\nfemale: [Abrahámová, Adamcová, Adamová, Almášiová, Anderleová, Andrašíková, Andrášiková, Andrášiová, Andrásová, Andrášová, Andrassa, Andrássa, Andrása, Antalová, Arpášová, Árpásová, Augustová, Babková, Bačová, Baďurová, Bahnová, Bajnoková, Bakosová, Bakošová, Balašová, Balážová, Balázsová, Baloghová, Balogová, Bánóová, Banová, Baňová, Bánová, Báňová, Baranková, Baranová, Barbarová, Barborová, Bartošíková, Bartošová, Bártová, Bartovičová, Bašeková, Bašková, Bašová, Becková, Bednáriková, Bednárová, Beihofnerová, Beková, Bellová, Beňová, Beňušková, Beňušová, Beranová, Bernardiová, Bernardová, Bernhardová, Bernhardtová, Bernoláková, Bezáková, Biceková, Bieliková, Bileková, Bíleková, Bilkóová, Bilková, Biľková, Bílková, Binderová, Biringerová, Blahová, Bláhová, Blažejová, Bobulová, Bobuľová, Bolognová, Bondrová, Boórová, Boreková, Boričová, Boriková, Boríková, Bóriková, Bôriková, Borisová, Borišová, Borisovová, Borková, Borová, Bórová, Borovská, Borovszka, Borovszká, Borová, Borowskiová, Bosáková, Bošková, Bošňáková, Botevová, Brabcová, Braxatorisová, Brezinová, Brunovská, Brušková, Budínová, Bugárová, Bukovská, Bušová, Čajkovičová, Capeková, Čapeková, Capková, Čapková, Čapkovičová, Čaplová, Čapľová, Čaplovičová, Čarnogurská, Čekovská, Černíková, Černochová, Červeňová, Červená, Cesnaková, Česneková, Chalupková, Chárová, Chovánová, Chovancová, Chovanová, Chrappová, Chudíková, Cibulková, Cibuľková, Cibulová, Cibuľová, Čierniková, Čierna, Cigániková, Cigánová, Cigáňová, Cígerová, Cikánová, Čobrdová, Cyprichová, Czibulková, Czibulová, Dacejová, Ďaďová, Dančáková, Dančiaková, Dancsáková, Daneková, Daněková, Daniová, Dániová, Dankóová, Danková, Daňková, Danová, Daňová, Dánová, Dáňová, Dányiová, Danová, Dávidová, Debnárová, Dejová, Dekýšová, Dérerová, Devečková, Dibarborová, Didová, Dobšinská, Dočolomanská, Doležalová, Dorkóová, Dorková, Ďorková, Dorotová, Dorová, Dostáleková, Dostalová, Dostálová, Drajnová, Droppová, Drotárová, Dubničková, Dubovská, Dudeková, Dudiková, Dudíková, Dudková, Dudoková, Dudová, Dudovová, Duffa, Duková, Dullová, Dulová, Ďurčová, Durdíková, Dureková, Ďureková, Ďuricová, Ďurišová, Ďurková, Ďurkovičová, Ďurkovská, Ďurová, Ďurovičová, Ďurovská, Duscheková, Duseková, Dušeková, Dušičková, Dusíková, Dusková, Dušková, Dúšková, Ďušková, Dušová, Dutková, Ďutková, Dvončová, Dvorská, Dydová, Dzurjaninová, Fabianová, Fabiánová, Fabušová, Faithová, Fajnorová, Farkasová, Farkašová, Farkašovská, Fedorová, Feldeková, Ficová, Figuliová, Filcová, Filipeková, Filípeková, Filipková, Filipová, Finková, Fischerová, Fisherová, Forgáčová, Franeková, Franěková, Fráneková, Franková, Franová, Fraňová, Fráňová, Freiová, Fridmanová, Friedmanová, Frühaufová, Ftáčniková, Ftoreková, Galiková, Galíková, Gáliková, Galisová, Gálisová, Gallová, Gálová, Garinová, Gašparová, Gašparovičová, Gavalierová, Gettingová, Gocníková, Golonková, Gregorová, Gregušová, Grňová, Grznárová, Gyurkovicsová, Gyurovicsová, Gyurovszka, Gyurovszká, Habláková, Habšudová, Hagarová, Haláková, Hálová, Halušková, Hanaková, Hanáková, Haňaková, Haňáková, Haneková, Hankeová, Hanková, Hanouseková, Hanuseková, Hanúseková, Hanusková, Hanušková, Hanúsková, Hanusová, Hanušová, Hanzalová, Hanzelová, Hargašová, Harváneková, Harvanová, Haščáková, Havráneková, Havrankóová, Havranková, Havranová, Hečková, Heretiková, Hladká, Hlaváčová, Hlaváčeková, Hlaváčiková, Hliníková, Hlinková, Hochschornerová, Hodžová, Holičeková, Holíčeková, Holičková, Holičová, Holíková, Holoubeková, Holubcová, Holubeková, Holúbeková, Holubková, Holúboková, Holubová, Holuba, Horváthová, Hossová, Hostáková, Hoštáková, Hošťáková, Hozová, Hrašková, Hrdličková, Hrianková, Hricová, Hrmová, Hroboňová, Hrušková, Hrušovská, Hrycová, Hubová, Hudáčeková, Husáková, Husárová, Huseková, Hušeková, Húšeková, Husková, Hušková, Húsková, Húšková, Husová, Hušová, Húsová, Hustáková, Husťáková, Huštáková, Hušťáková, Huszárová, Huszková, Ihnačáková, Jakabová, Jakabovičová, Jakoubeková, Jakubčeková, Jakubčíková, Jakubcová, Jakubčová, Jakubeczová, Jakubeková, Jakúbeková, Jakubíková, Jakubková, Jakubová, Jalovcová, Janáčeková, Janáková, Jančeková, Jančová, Janečeková, Janečková, Janeková, Jáneková, Janíková, Jániová, Jankóová, Janková, Janočková, Janošeková, Jánošíková, Janošková, Jánosková, Jánošková, Janošová, Jánosová, Jánošová, Janoušeková, Janová, Jánová, Jantošovičová, Jedľovská, Jendeková, Jeníková, Jerkovičová, Jireková, Jirková, Jonatová, Junasová, Junásová, Junášová, Jurášová, Jurčinová, Jurčová, Jureková, Juríková, Jurinová, Jurková, Jurkovičová, Jurošková, Jurovčíková, Kaliská, Kálla, Kaniaková, Kárová, Kárpáta, Karulová, Karvašová, Kavická, Kaziková, Kazíková, Káziková, Kellerová, Kellová, Kelová, Kenížová, Kerová, Kiselová, Kiseľová, Kisselová, Klapačová, Klapáčová, Klapková, Klausová, Klepačová, Klepáčová, Klepsatelová, Klimáčeková, Klimeková, Klimková, Klimkovičová, Klimová, Klímová, Kližanová, Klokočová, Klopačková, Knihová, Kocáková, Koceková, Kocianová, Kociánová, Kočíová, Kočišová, Kocková, Kočková, Kocoureková, Kocourová, Kocová, Kočová, Kocúriková, Kocurová, Kocúrová, Koka, Kolárová, Kolesárová, Kollárová, Kolniková, Kolníková, Konopková, Konôpková, Konradová, Konrádová, Konstantinidisová, Kopová, Koppová, Korčáková, Korcová, Kostková, Kôstková, Kostrcová, Kosztková, Kosztová, Kotesová, Kotianová, Kotlebová, Kotuličová, Kotzianová, Koubeková, Koubová, Kováčová, Kováčiková, Kozáčeková, Kozáčiková, Kozaková, Kozáková, Kozakovová, Kozmonová, Kozová, Krajčiová, Krajčíová, Krajčírová, Krajčová, Krajčovičová, Krajíčeková, Králiková, Králíková, Králová, Kráľová, Kráľovičová, Kramárová, Krasnohorská, Krásnohorská, Krčméra, Kreheľová, Krejčíová, Krejčová, Krištofová, Križanová, Krížiková, Krížová, Kronerová, Krónerová, Kropiláková, Krotáková, Kroupová, Krupová, Krúpová, Kryštofová, Kubcová, Kubeková, Kúbeková, Kubičeková, Kubíčeková, Kubičková, Kubiczeková, Kubíková, Kubitscheková, Kubková, Kubová, Kučerová, Kucserová, Kuffová, Kundová, Kunková, Kunová, Kunstová, Kupková, Kupová, Kurucová, Kuruczová, Kusková, Kušková, Kúsková, Kusová, Kušová, Kúsová, Kúšová, Kyselová, Kyseľová, Kyselá, Labantová, Labudová, Lacková, Lacová, Lajčáková, Lajčiaková, Lamačová, Landauová, Langošová, Lepšíková, Lesná, Letová, Lettrichová, Lexová, Lintnerová, Lipková, Lipová, Lípová, Liptáková, Lisická, Lišková, Líšková, Litvová, Lojeková, Lojková, Lojová, Lubinová, Lukachichová, Lukáčiová, Lukáčová, Lukácsová, Luksová, Lukšová, Luptáková, Ľuptáková, Luxová, Maceková, Mačeková, Máčeková, Machatová, Machátová, Machnáčová, Machová, Máchová, Máčiková, Mackóová, Macková, Mačková, Mácková, Mackovičová, Mačkovičová, Macová, Mačová, Mácová, Maczkóová, Maczková, Maczóová, Maczová, Madarasová, Madarašová, Madarásová, Madaraszová, Madarászová, Maďaričová, Madarová, Madárová, Maďarová, Maďárová, Madejová, Magálová, Magyarová, Magyárová, Majdanová, Majdánová, Majeská, Makóová, Maková, Máková, Makovcová, Makovická, Makovicová, Maková, Malachovská, Malinová, Malíšeková, Mamojková, Marcineková, Marcíneková, Marcinková, Marcinová, Marečeková, Mareková, Margitová, Mariánová, Markosová, Markošová, Marková, Márková, Markovičová, Markovicsová, Markoviczová, Markovitsová, Markusová, Markušová, Márkusová, Márkušová, Marošová, Martanová, Martáňová, Marťanová, Martanovičová, Martináková, Martinčeková, Martincová, Martineková, Martíneková, Martinková, Martinkovičová, Martinová, Martínová, Martinovičová, Martonová, Mártonová, Martová, Mártová, Masariková, Masaríková, Masáriková, Masárová, Masaryková, Maslová, Masná, Matiašková, Mečiarová, Medvecká, Medvedová, Medveďová, Melcerová, Melczerová, Melicháreková, Melicharová, Melichárová, Melicherčíková, Melicheríková, Melicherová, Meltzerová, Melzerová, Menhartová, Meňhartová, Meňhártová, Meňhértová, Menšíková, Menyhártová, Menyhértová, Michalechová, Michálechová, Michaleková, Micháleková, Michalicová, Michalíková, Micháliková, Michalková, Mihaliková, Mihalíková, Miháliková, Mihálová, Miklíková, Miklošková, Miklošová, Miklósová, Mikuláková, Mikulíková, Mikušová, Mikúšová, Milerová, Millerová, Milotová, Mináčová, Mišíková, Mistríková, Mlynáriková, Mlynárová, Mojsejová, Mojžišová, Mojžíšová, Mokrošová, Molnarová, Molnárová, Moravčíková, Moravcová, Moricová, Móricová, Móriczová, Moriová, Móriová, Morová, Mórová, Motyčková, Motyková, Mrazeková, Mrázeková, Mrazíková, Mráziková, Mrazková, Mrázková, Mrazová, Mrázová, Muchová, Müllerová, Murgašová, Murinová, Murínová, Musilová, Mydlová, Náběleková, Nádasiová, Nádašiová, Nádasová, Nádašová, Naga, Nálepková, Navarová, Nedvědová, Nemcová, Němcová, Nemethová, Némethová, Nemetová, Németová, Nerudová, Nezvalová, Nitrová, Nižnanská, Nižnánska, Nižňanská, Norová, Notová, Nótová, Nôtová, Nováková, Novaková, Novotná, Novotová, Nowaková, Nvotová, Obšutová, Očenášová, Olahová, Oláhová, Ondráková, Ondrášeková, Ondrašíková, Ondrášiková, Ondrášová, Ondrejková, Ondrejkovičová, Ondruseková, Ondrušeková, Ondrúšeková, Ondrušková, Ondrusová, Ondrušová, Opluštilová, Orlíková, Orságová, Országhová, Országová, Otčenášová, Pajerová, Páleková, Palkóová, Palková, Paľková, Pálková, Palkovičová, Pallová, Pállová, Palóová, Palová, Paľová, Pálová, Palovčíková, Paľovčíková, Palovičová, Palovová, Paľovová, Paluchová, Palúchová, Paľuchová, Paľúchová, Papová, Pappová, Pašeková, Pašková, Pauková, Paúková, Pauličeková, Paulíčeková, Pauliková, Paulíková, Paulina, Paulína, Paulovičová, Pavelcová, Paveleková, Pavelková, Pavelová, Pávelová, Pavková, Pavličeková, Pavlíčeková, Pavličková, Pavliková, Pavlíková, Pavlikovská, Pavlová, Pavlovičová, Pavlovová, Pavolová, Pavuková, Pavúková, Pawlaková, Pawliková, Pelikanová, Pelikánová, Pellegriniová, Pellegríniová, Pepuchová, Pešeková, Pešková, Petrovická, Petrušková, Pichlíková, Piková, Píková, Plauchová, Plavcová, Plavuchová, Plchová, Plekancová, Plešivcová, Podhradská, Podkonická, Poláková, Polgárová, Poliaková, Polláková, Prochásková, Prochazková, Procházková, Prohasková, Prohásková, Prohászková, Pucherová, Pupáková, Puškárová, Puskásová, Puškášová, Pušková, Raková, Ráková, Rakovanová, Rašiová, Repiská, Réva, Richardová, Richtárová, Richterová, Rihová, Rišková, Rišová, Riszdorferová, Rohačeková, Roháčeková, Roháčiková, Roháčová, Rojeková, Rojková, Romančíková, Rómová, Rosinová, Rosová, Rothová, Róthová, Rótová, Rottová, Rozenbergová, Rubiková, Rubíková, Rufusová, Rúfusová, Rusková, Rusnaková, Rusnáková, Rusňaková, Rusňáková, Rusnoková, Rusová, Rusznyáková, Ruttka, Ružičková, Rybáriková, Rybárová, Rybníčeková, Ryšková, Rysová, Ryšová, Rýsová, Sabová, Sadikiová, Šafráneková, Saganová, Sagánová, Salajková, Šalajková, Salajová, Salijiová, Samelová, Sameľová, Sámelová, Sámeľová, Samsonová, Samuelová, Sanitrová, Šarkanová, Sárkána, Schererová, Sečová, Sedliaková, Sekerová, Senková, Ševčenková, Šidlová, Sidorová, Sigmundová, Šimečeková, Šimečková, Šimeková, Šimíčeková, Šimíková, Šimková, Simonová, Šimonová, Šimonovičová, Šimová, Šímová, Škantarová, Škantárová, Sklárová, Sklenáriková, Sklenárová, Skleničková, Sklenicová, Sklenková, Skokanová, Škriniarová, Škultéta, Skutecká, Šlahorová, Slašťanová, Slivková, Šlivková, Slobodníková, Slobodová, Slotová, Slováková, Slovincová, Šmajdová, Smreková, Sokolová, Solanová, Solejová, Šoltésová, Šoltýsová, Šoucová, Šoustalová, Špilárová, Stantienová, Starostová, Šťastná, Štefáneková, Štefániková, Štefanková, Stefanová, Štefanová, Stefanovičová, Štefanovičová, Štefucová, Štefunková, Štěpáneková, Štěpánová, Stevanovičová, Stodolová, Straková, Štrausová, Straussová, Štraussová, Štrbová, Strnisková, Strýčeková, Stümpelová, Šulcová, Šuňavcová, Šurková, Švábová, Švába, Švehlová, Svobodníková, Svobodová, Svrbíková, Sýkorová, Szabóová, Szabová, Szalaiová, Szala, Szekeresová, Szelepcsényiová, Szomolányiová, Taha, Ťapáková, Tatarková, Tatárková, Tatarová, Tatárová, Ťažká, Thomková, Thomová, Tikalová, Timeková, Timková, Tirpáková, Tisová, Tomaneková, Tománeková, Tomaníková, Tomanová, Tomaňová, Tomascheková, Tomašeková, Tomášeková, Tomášiková, Tomašková, Tomášková, Tomasová, Tomášová, Tomečeková, Tomečková, Tomeková, Tomková, Tóthová, Trlíková, Trubenová, Tumová, Tupa, Tupá, Turčoková, Uramová, Urblíková, Ursina, Ursína, Vajciková, Vajcíková, Vajdová, Valachová, Valachovičová, Valentínová, Valentová, Valíčeková, Valušeková, Valušková, Vaneková, Vaněková, Vargová, Vašeková, Vašíčeková, Vasková, Vašková, Vásková, Vavrincová, Velďáková, Vencelová, Veselová, Veterníková, Vicenová, Vicová, Vilikovská, Višňovská, Vlachová, Vlachovičová, Vlková, Vlnková, Vlnová, Vojteková, Vojtková, Vomáčková, Vondráčeková, Vondráková, Vondrková, Vondrová, Vondrušková, Vozarová, Vozárová, Vozára, Vrabcová, Vrablcová, Vydarená, Weissová, Williamsová, Wittlingerová, Záborská, Zachariašová, Zachariášová, Zacharová, Zajacová, Zajícová, Zatopeková, Zátopeková, Zelena, Železniková, Železníková, Žigmundová, Zigóová, Zigová, Žigová, Zikmundová, Ziková, Zíková, Zimková, Zimová, Zímová, Zipserová, Zoubeková, Zsigmondová, Zsigmonda, Zsigóová, Zsigová, Zubeková, Zúbeková, Zubková, Zubríková, Zúbriková, Zyková, Zýková]\n}\npersonalEmails: [gmail.com, yahoo.com, zoznam.sk, pobox.sk, azet.sk, centrum.sk]\ncompanyNames: [AA GOLD Company, ACHP Levice, Adient Slovakia, Agropodnik Trnava, ALEF Distribution SK, Allianz, ArcelorMittal Gonvarri SSC Slovakia, ASBIS SK, AT&T Global Network Services Slovakia, AUTOCENTRUM AAA AUTO, AUTOCENTRUM AAA AUTO, BASF Slovensko, Bekaert Hlohovec, Bekaert Slovakia, Beltran, BETANOL, BIC Slovakia, BILLA, BMW Slovenská republika, BOGE Elastmetall Slovakia, Brose Prievidza, BSH Drives and Pumps, BUDAMAR LOGISTICS, BUKÓZA Export-Import, C & A Mode, Caprice, CBG, Československá obchodná banka, ČEZ Slovensko, C.LT.W. Finance, Continental Automotive Systems Slovakia, Continental Matador Rubber, Continental Matador Truck Tires, ContiTech Vibration Control Slovakia, COOP Jednota Krupina, COOP Jednota, COOP Jednota Nové Zámky, CRH (Slovensko), D4R7 Construction, DALITRANS, Danfoss Power Solutions, DATALOGIC SLOVAKIA, Dell, Deutsche Telekom Systems Solutions Slovakia, dm drogerie markt, Domäsko, DONGHEE Slovakia, Doprastav, DÔVERA zdravotná poisťovňa, Duslo, DXC Technology Slovakia, ELGAS, Elster, Embraco Slovakia, ENAGRO, Energie2, Enics Slovakia, ENTRAZ, ENVIRAL, ESET, Essity Slovakia, eustream, FAST PLUS, Faurecia Automotive Slovakia, Faurecia Slovakia, FERONA Slovakia, Ferroenergy, FORTISCHEM, FORTUNA SK, Foxconn Slovakia, GAMEX TRADING, GEFCO SLOVAKIA, Generali Poisťovňa, GETRAG FORD Transmissions Slovakia, GeWiS Slovakia, GGT, Golde Lozorno, GRANVIA, GROUPE SEB Slovensko, GRUPO ANTOLIN BRATISLAVA, GSK Consumer Healthcare Levice, Hanon Systems Slovakia, HAVI Logistics, HBPO Slovakia, HB REAVIS MANAGEMENT, Heineken Slovensko, Heineken Slovensko Distribúcia, Hella Slovakia Front-Lighting, Hella Slovakia Signal-Lighting, HENKEL SLOVENSKO, HORNBACH, Hornonitrianske bane Prievidza, Hyundai Steel Slovakia, Hyundai Transys Slovakia, IAC Group (Slovakia), IBM International Services Centre, I.D.C. Holding, IKEA Bratislava, IKEA Components, IKEA Industry Slovakia, ILJIN SLOVAKIA, innogy Slovensko, INTERAGROS, IRDistribution, Jaguar Land Rover Slovakia, Johns Manville Slovakia, JOHNSON CONTROLS INTERNATIONAL, Johnson & Johnson, Kaufland Slovenská republika, Kia Motors Sales Slovensko, Kia Motors Slovakia, KOMUNÁLNA poisťovňa Vienna Insurance Group, KOOPERATIVA poisťovňa Vienna Insurance Group, KRONOSPAN, LABAŠ, Lear Corporation Seating Slovakia, LEONI Slovakia, LESY Slovenskej republiky, LE Trading, Lidl Slovenská republika, MAGNA ENERGIA, MAGNA SLOVTECA, MAHLE Behr Námestovo, MAHLE Behr Senica, Marelli Kechnec Slovakia, MATADOR Automotive Vráble, MECOM GROUP, MED, Mercedes-Benz Financial Services Slovakia, Mercedes-Benz Slovakia, MERKURY SHOP, MEROCO, MetLife Amslico poisťovňa, METRANS /Danubia/, METRO Cash & Carry Slovakia, METRO Cash & Carry SR, Metsa Tissue Slovakia, MET Slovakia, MILK-AGRO, MINERFIN, Mobis Slovakia, Mondi SCP, Motor-Car Bratislava, NAFTA, Národná diaľničná spoločnosť, NAY, Nemak Slovakia, Nestlé Slovensko, N I K É, Novartis Slovakia, NOVIS Insurance Company, O2 Slovakia, OBI Slovakia, OFZ, OKTE, OMV Slovensko, Orange Slovensko, Panasonic Industrial Devices Slovakia, P Automobil Import, PCA Slovakia, PETROLTRANS, Philip Morris Slovakia, PHOENIX Zdravotnícke zásobovanie, PIKARO TRADING, Plastic Omnium Auto Exteriors, Plastic Omnium Auto Inergy Slovakia, Plzeňský Prazdroj Slovensko, Poisťovňa Slovenskej sporiteľne Vienna Insurance Group, Porsche Inter Auto Slovakia, Porsche Slovakia, Poštová banka, Pow-en, PPA CONTROLL, Prima banka Slovensko, PRODCEN, PROTHERM PRODUCTION, Prvá stavebná sporiteľňa, Prysmian Kablo, Quatro project Europe, RAJO, RAVEN, Renault Slovensko, RIEKER OBUV, RIGHT POWER, SAMSUNG Electronics Slovakia, Samsung SDS Global SCL Slovakia, SAS Automotive, Scania Slovakia, Schaeffler Kysuce, Schaeffler Skalica, Secop, SEJONG Slovakia, SEMIKRON, SEOYON E-HWA AUTOMOTIVE SLOVAKIA, SHELL Slovakia, Siemens, Siemens Mobility, Skanska SK, ŠKODA AUTO Slovensko, SLOVAKIA ENERGY, Slovak Telekom, Slovalco, Slovenská elektrizačná prenosová sústava, Slovenská pošta, Slovenská sporiteľňa, Slovenské elektrárne, Slovenské elektrárne, Slovenský plynárenský priemysel, SLOVNAFT, SLOVNAFT MONTÁŽE A OPRAVY, Slovnaft Petrochemicals, SLOVWOOD Ružomberok, Solar 2009, SPP, STAVMAT STAVEBNINY, ST. NICOLAUS, STRABAG, STRABAG Pozemné a inžinierske staviteľstvo, Stredoslovenská distribučná, Stredoslovenská energetika, SUNGWOO HITECH Slovakia, T a M trans spedition, Tate & Lyle Boleraz, Tate & Lyle Slovakia, Tatra banka, TATRAVAGÓNKA, Tatry mountain resorts, TAURIS, TEMPEST, TERNO real estate, Tesco International Clothing Brand, TESCO STORES SR, thyssenkrupp rothe erde Slovakia, TIPOS, Tomra Sorting, Union zdravotná poisťovňa, UNIPETROL SLOVENSKO, UNIQA poisťovňa, U. S. Steel Košice, Vaillant Industrial Slovakia, Vertiv Slovakia, Visteon Electronics Slovakia, Visteon Slovakia, VODOHOSPODÁRSKA VÝSTAVBA, VOLKSWAGEN SLOVAKIA, Všeobecná úverová banka; skrátený názov: VÚB, Všeobecná zdravotná poisťovňa, VUJE, Východoslovenská distribučná, Východoslovenská energetika, WESTech, WHIRLPOOL SLOVAKIA, Wintro Asia, Yanfeng Slovakia Automotive Interior Systems, YURA Corporation Slovakia, Západoslovenská distribučná, Železiarne Podbrezová skrátene ŽP, Železnice Slovenskej republiky, Železničná spoločnosť Cargo Slovakia, Železničná spoločnosť Slovensko, ZF Active Safety Slovakia, ZF SACHS Slovakia, ZF Slovakia, ZKW Slovakia, ZSE Elektrárne, ZSE Energia]\ncompanySuffixes: [s.r.o., a.s., v.o.s., k.s.]\ncompanyEmails: [info, office]\n\ntext: A cár s okom sklopeným na bojišti stojí. A čo? Azda tých padlých Slovänov sa bojí? Nie, lež bezdušné svojich hromady tam vidí a zo svojho víťazstva radovať sa stydí. No zahyň, studom večným zahyň, podlá duša, čo o slobodu dobrý ľud môj mi pokúša. Lež večná meno toho nech ovenčí sláva, kto seba v obeť svätú za svoj národ dáva. A ty mor ho! hoj mor ho! detvo môjho rodu, kto kradmou rukou siahne na tvoju slobodu, a čo i tam dušu dáš v tom boji divokom. Mor ty len, a voľ nebyť, ako byť otrokom.\n\ntelephone_number_formats: ['+4219########']\n\npostal_code: ['### ##']\n\ncity: [Bánovce nad Bebravou, Banská Bystrica, Banská Štiavnica, Bardejov, Bojnice, Bratislava, Brezno, Brezová pod Bradlom, Bytča, Čadca, Čierna nad Tisou, Detva, Dobšiná, Dolný Kubín, Dubnica nad Váhom, Dudince, Dunajská Streda, Fiľakovo, Gabčíkovo, Galanta, Gbely, Gelnica, Giraltovce, Handlová, Hanušovce nad Topľou, Hlohovec, Hnúšťa, Holíč, Hriňová, Humenné, Hurbanovo, Ilava, Jelšava, Kežmarok, Kolárovo, Komárno, Košice, Kráľovský Chlmec, Krásno nad Kysucou, Kremnica, Krompachy, Krupina, Kysucké Nové Mesto, Leopoldov, Levice, Levoča, Lipany, Liptovský Hrádok, Liptovský Mikuláš, Lučenec, Malacky, Martin, Medzev, Medzilaborce, Michalovce, Modra, Modrý Kameň, Moldava nad Bodvou, Myjava, Námestovo, Nemšová, Nesvady, Nitra, Nová Baňa, Nová Dubnica, Nováky, Nové Mesto nad Váhom, Nové Zámky, Partizánske, Pezinok, Piešťany, Podolínec, Poltár, Poprad, Považská Bystrica, Prešov, Prievidza, Púchov, Rajec, Rajecké Teplice, Revúca, Rimavská Sobota, Rožňava, Ružomberok, Sabinov, Šahy, Šaľa, Šamorín, Šaštín-Stráže, Sečovce, Senec, Senica, Sereď, Skalica, Sládkovičovo, Sliač, Snina, Sobrance, Spišská Belá, Spišská Nová Ves, Spišská Stará Ves, Spišské Podhradie, Spišské Vlachy, Stará Ľubovňa, Stará Turá, Strážske, Stropkov, Stupava, Štúrovo, Šurany, Svätý Jur, Svidník, Svit, Tisovec, Tlmače, Topoľčany, Tornaľa, Trebišov, Trenčianske Teplice, Trenčín, Trnava, Trstená, Turany, Turčianske Teplice, Turzovka, Tvrdošín, Veľké Kapušany, Veľký Krtíš, Veľký Meder, Veľký Šariš, Vráble, Vranov nad Topľou, Vrbové, Vrútky, Vysoké Tatry, Žarnovica, Želiezovce, Žiar nad Hronom, Žilina, Zlaté Moravce, Zvolen]\n\nstreet: [Agátová, Akademická, Ametystová, Andovská, Antolská, Apálska, Astrová, Átriová, Azalková, Azúrová, Bachingerovka, Bagarova, Bajanova, Bajčská, Bajkalská, Bajzova, Bakalárska, Bakossova, Balkán, Banícka, Banská, Banskobystrická, Baranyaiho, Bardejovská, Bariny, Baštová, Bayerova, Bažantia, Bazová, Beckovská, Belianska, Bellušova, Bencúrova, Bendíkova, Benkova, Beöthyho, Berek, Bernolákova, Bešeňovská, Beskydská, Bezručova, Bezručová, Bibic, Bikoš, Bitúnková, Björnsonova, Blahova, Bociania, Bočná, Bohúňova, Bohuslavická, Bojnická, Boorova, Borievková, Borkút, Borová, Bôrová, Borovianska, Borovicová, Botanická, Bottova, Bratislavská, Bratská, Brezová, Brigádnická, Bronzová, Broskyňová, Bubnová, Budovateľská, Buková, Bulharská, Burianova, Buzulucká, Bystrá, Čajakova, Čajkovského, Čapajevova, Cementárenská, Cemjata, Centrálna, Centrum, Čerešňová, Čergovská, Červeňanského, Česká, Chabenecká, Chalupkova, Chmeľová, Chotárna, Cíbická, Ciglianska, Cintorínska, Čipkárska, Čižmárska, Clementisa, Csokonaiho, Ctiborova, Čulenova, Cyrilometódska, Damjanichova, Dargovská, Dedinská, Detvianska, Devínska, Diamantová, Dibrovova, Dilongova, Divadelná, Dlhá, Dlhé, Dobronivská, Dobšinského, Dolná, Ďorocká, Dostihová, Dostojevského, Drevená, Drienková, Drieňová, Drozdia, Družicová, Družstevná, Dubová, Dúbravská, Dúhová, Dukelská, Duklianska, Duklianská, Ďumbierska, Dunajská, Dušianická, Dvorská, Elektrárenská, Engelsova, Eötvösa, Eszterházyovcov, Exnárova, Fajková, Fándlyho, Farská, Fatranská, Federátov, Felcánova, Fialková, Fínska, Fintická, Floriánova, Francisciho, Františkánov, Fučíkova, Gagarinova, Gápľová, Garážová, Garbanka, Garbiarska, Gaštanová, Gazdovská, Gerlachovská, Gogoľova, Golianova, Gombaiho, Gorazdova, Gorkého, Grešova, Gúgska, Haburská, Hadovce, Hadovská, Háj, Hájniky, Hájová, Hájska, Hálkova, Haluzická, Hamrovská, Handlovská, Hanzlíčkova, Harmanecká, Hasičská, Haškova, Havranské, Hečkova, Helenská, Hergottova, Herlianska, Heydukova, Hladná, Hlavná, Hlboká, Hlinická, Hlinícka, Hliníková, Hlinská, Hodonínska, Hodská, Hodžova, Holländerova, Hollého, Holubárov, Holubia, Holubičia, Holubyho, Horárska, Horná, Hornonitrianska, Horská, Hrabová, Hradecká, Hradištná, Hradná, Hradská, Hrebíčková, Hríbová, Hrnčiarska, Hronská, Hruny, Hrušková, Hrúšťova, Húlska, Hurbanistov, Hurbanova, Husova, Hutná, Hutníkov, Hviezdna, Hviezdoslavova, Iliašska, Imatra, Inovecká, Internátna, Inžinierska, Izbická, Jabloňová, Jahodová, Jakubská, Janáčkova, Jánošíkova, Jánošovská, Janouškova, Jánska, Jantárová, Jarková, Járková, Jarná, Jaselská, Jaseňová, Jaspisová, Jastrabia, Jatočná, Javorinka, Javorinská, Javornícka, Javorová, Jazdecká, Jazerná, Jazmínová, Jazvečia, Jedľová, Jégého, Jegorovova, Jelenia, Jelenie, Jelšová, Jeruzalemská, Jesenná, Jesenského, Jilemnického, Jiráskova, Jókaiho, Jonášovská, Judíkova, Jurkovičova, Justičná, Južná, Kafendova, Kalinčiakova, Kamencová, Kamenná, Kammerhofská, Kapitánová, Kapitulská, Karpatská, Kasárenská, Kategórie:, Katova, Katovná, Kilianova, Kimovská, Klampiarska, Kláštorná, Klčové, Klenová, Klinčeková, Klobučnícka, Kmeťova, Koceľova, Kočovská, Kodályova, Kolárova, Kolárovská, Kollárova, Kolónia, Kolož, Kolpašská, Komárňanská, Komenského, Komjatická, Komočská, Komorova, Koncová, Konečné, Konopná, Konštantínova, Konvalinková, Kopaniny, Koreszkova, Košická, Košikárska, Košovská, Kostiviarska, Kostolná, Kotrádova, Kováčska, Kozmonautov, Kragujevská, Krajinská, Krajná, Králická, Kráľovohoľská, Kráľovská, Kraskova, Krásna, Krátka, Krčméryho, Kremenisko, Kremnická, Krivá, Krivánska, Krížna, Krupinská, Krymská, Kukučínova, Kuneradská, Kúpeľná, Kúpeľné, Kutnohorská, Kútovská, Kutuzovova, Kúty, Kuzmányho, Kvetinová, Kvetná, Kvietnová, Kysihýbelská, Kysucká, Labutia, Ľaliová, Lándor, Langsfeldova, Ľanová, Lánska, Laskomerská, Lastovičia, Lazovná, Lécka, Lehárova, Lehotská, Lesná, Lesnícka, Letisková, Letná, Letohradská, Letomostie, Levočská, Lidická, Liesková, Lieskovská, Limbová, Lintich, Lipová, Líščia, Listová, Lodná, Lombardiniho, Lomnická, Ľubochnianska, Ľubotická, Lúčičky, Lúčky, Lúčna, Lúčová, Ľupčianska, Madácha, Madvova, Magurská, Majakovského, Majerská, Májová, Majstrovská, Makovického, Malá, Malachitová, Malachovská, Malinová, Malkovská, Mallého, Malobytčianska, Malodunajská, Malokarpatská, Malolehotská, Malonecpalská, Malookružná, Mariánska, Martinská, Masarykova, Matičná, Matúškovská, Maybaumova, Mazúrova, Medená, Mederčská, Mederská, Medová, Medvedia, Medzibriežková, Medzimlynie, Meňhartka, Mesačná, Meštianská, Metodova, Michalská, Mičinská, Mičurinova, Mičurova, Mierová, Mieru, Mikovíniho, Miksova, Minčolská, Mládeže, Mládežnícka, Mliekarenská, Mlynárska, Mlynská, Mnešická, Močiarna, Mojmírova, Mokraď, Montážna, Mosadzná, Moskovská, Moštenická, Mošteníkova, Mostná, Mostová, Môťovská, Moyzesova, Mraziarenská, Mrazničná, Mudroňova, Mukačevská, Murárska, Murgašova, Muškátová, Mýtna, Nábrežná, Nadjazdová, Nádražná, Nádvorná, Námestia, Narcisová, Národná, Nebojsa, Necpalská, Nedožerská, Nemčíkova, Nemocničná, Neresnická, Nerudova, Nešporova, Nesvadská, Nevädzová, Nezábudkova, Nezábudková, Nitrianska, Nižovec, Nová, Novomestská, Novozámocká, Obchodná, Obuvnícka, Obvodová, Odbojárska, Odborárov, Odborárska, Odborov, Okrajová, Okrúhla, Okružná, Októbrová, Olšavská, Ondavská, Opálová, Opatovská, Opavská, Oravská, Orechová, Oremburská, Orgovánova, Orgovánová, Orlia, Osadná, Osadová, Osiková, Osúchy, Ovčiarska, Ovocná, Palackého, Palárikova, Palatinová, Panciere, Pannónska, Parková, Parná, Partizánska, Pátrovská, Pávia, Pavlovská, Pažica, Pažitná, Pekná, Pelíškova, Peredzké, Pestovateľská, Petelenova, Petöfiho, Petőfiho, Petrovianska, Petrovská, Pezinská, Pieninská, Piesočná, Piešťanská, Pionierska, Pitvory, Pivovarská, Platanová, Plavárenská, Pletiarska, Plynárenská, Plzenská, Podbeľová, Podháj, Podhájska, Podhlinie, Podhorská, Podhradie, Podjavorinskej, Podjazdová, Podlavická, Podzámska, Pohraničná, Pohronská, Pokojná, Polkoráby, Poľná, Poľnohospodárska, Poľovnícka, Ponická, Popolíška, Popradská, Pöschlova, Poštová, Potočná, Považská, Povrazník, Povstalecká, Požiarnická, Práce, Prachatická, Pražská, Predmestie, Predmestská, Priama, Priateľstva, Pribinova, Priechodná, Priečna, Priehrada, Priemyselná, Prievidzská, Prírodná, Prístupová, Prostějovská, Prostredná, Prowazekova, Pršianska, Prvá, Pšurnovická, Puškinova, Púšť, Pustá, Račia, Radlinského, Radničná, Radvanská, Rajecká, Rákócziho, Rákoš, Rakytová, Rakytovská, Rastislavova, Rázusova, Reimanova, Remeselnícka, Remscheidská, Republikánska, Richtárska, Riečna, Robotnícka, Rohatecká, Roľnícka, Rombauerova, Rosinská, Rovná, Royova, Rozmarínová, Rožná, Rubínová, Rudelinova, Rudenkova, Rudlovská, Rudohorská, Rulandská, Rumanova, Rusínska, Ruská, Ruttkayovská, Ružová, Rybárska, Rybníčky, Rybničná, Sabinovská, Sadová, Šafárikova, Šalgotarjánska, Šalianska, Šalkovská, Šarišská, Sasinkova, Sásovská, Sázavského, Šebastovská, Sebedražská, Šebestova, Sekčovská, Senická, Seressa, Severná, Sibírska, Šidlovec, Šidlovská, Sihoť, Silvánska, Šípková, Široká, Sitnianska, Sitnianskeho, Skálna, Škarniclovská, Skladová, Sklenárska, Školská, Škorvánkova, Škovránkova, Skromná, Skrytá, Skubínska, Škultétyho, Skuteckého, Sládkovičova, Slanská, Slávičia, Slnečná, Slobody, Slovanská, Slovenská, Šmeralova, Smetanova, Smreková, Snežienková, Šobov, Sokolia, Sokolovská, Sokolská, Soľanková, Solivarská, Soľná, Soľnobanská, Šoltésovej, Somolická, Sosnová, Spannerovej, Špitálska, Spojná, Spojová, Spojovacia, Športová, Športovcov, Srnčia, Srnianska, Šrobárova, Staničná, Starohorská, Staromestská, Staromlynská, Staronová, Starozámocká, Šťastného, Stavbárov, Stavbárska, Stavebná, Štefánikova, Stoličková, Stračínska, Strakonická, Stránska, Strapáky, Stráž, Strážnická, Strážovská, Strážska, Strečnianska, Stredná, Strelecká, Strieborná, Štrková, Strmá, Strojárska, Strojnícka, Stromová, Štuadta, Študentská, Stupy, Štúrova, Súbežná, Sucháčovská, Suchomlynská, Suchoňova, Sudoměřická, Súhradská, Súkennícka, Šulekova, Súľovská, Šumperská, Surdok, Šurianska, Surovská, Šúrska, Sústružnícka, Suvorovova, Švábska, Svätojánska, Svätoondrejská, Svätoplukova, Švecova, Švermova, Svitavská, Svornosti, Tabaková, Tajovského, Tarjányiho, Tatranská, Technická, Tehelná, Tehelňa, Tematinská, Tenisová, Teplárenská, Terchovská, Terezov, Teriakovská, Tesárska, Thurzova, Tichá, Tkáčska, Tokajícka, Tolstého, Tomášikova, Topoľčianska, Topoľová, Továrenská, Tramínova, Traťová, Trávna, Trenčianska, Treskoňova, Trhová, Trnková, Trstinová, Tulipánová, Tulská, Turcová, Turecká, Turistická, Tušková, Tvrdošovská, Tyršova, Učiteľská, Udenárska, Údolná, Uhlištná, Uľanská, Ulice, Ulička, Unionka, Uramova, Urbánkova, Urbárska, Urxova, Úvozná, Úzka, Váhová, Vajanského, Valachova, Valchovnícka, Valkovská, Vally, Vansovej, Vápenická, Važecká, Včelárska, Velkodunajská, Veľkolehotská, Veľkomoravská, Veľkonecpalská, Veltlínska, Veselá, Veterná, Viestova, Vihorlatská, Vilová, Viničná, Vinohradnícka, Vinohrady, Višňová, Víťazstva, Vlčia, Vnútorná, Vodárenská, Vodná, Volgogradská, Vozová, Vranovská, Vŕbová, Vrchárska, Vrchovského, Vrchy, Východná, Vydumanec, Výpalisko, Výskumnícka, Vysoká, Vysokoškolákov, Weberova, Wolkerova, Zabíjaná, Žabky, Záborského, Zábrežná, Zadná, Zafírová, Záhonok, Záhradná, Záhradnícka, Záhumnie, Zajačia, Zálesná, Zámocká, Zámoryho, Západná, Zápotockého, Zápotočná, Zátočná, Závodská, Závoz, Zborovská, Zdravotnícka, Žebráky, Zelená, Železná, Železničiarska, Železničná, Zemplínska, Žilinská, Zimná, Zlatá, Zlatnícka, Zlatobanská, Žliabkova, Zlievárenská, Žofijská, Zornička, Zúgov, Župná, Zváračská, Zvolenská, Zvonová]\n\ncountry: ['Slovensko']\n\nlanguage: 'SK'\n"
  },
  {
    "path": "src/main/resources/jfairy_sv.yml",
    "content": "alphabet: abcdefghijklmnopqrstuvwxyzåäö\ndomains: [se, nu, com]\nfirstNames: {\n  male: [Anders, Alexander, Andreas, Arne, Axel, Anton, Adam, Alf, Arvid, Albin, Ali, Allan, Alfred, André, Ahmed, Albert, Adrian, August, Ahmad, Alex, Alvar, Artur, Antero, Antonio, Alvin, Arnold, Algot, Arthur, Aron, Agne, Bengt, Bo, Bertil, Björn, Börje, Bernt, Bror, Birger, Benjamin, Benny, Bert, Bernhard, Bruno, Berndt, Billy, Bjarne, Ben, Bill, Boris, Brian, Bengt-Åke, Bilal, Berne, Berth, Bernard, Bashir, Bengt-Olof, Bastian, Bob, Bengt-Göran, Carl, Christer, Christian, Claes, Christoffer, Conny, Christopher, Charlie, Curt, Charles, Casper, Clas, Carlos, Christofer, Carl-Johan, Colin, Claes-Göran, Cristian, Calle, Crister, Chris, Cornelis, Cesar, Conrad, Caspian, Carl-Erik, Carl-Gustav, Clarence, Carsten, Carl-Henrik, Daniel, David, Dan, Dennis, Dick, Douglas, Dag, Dante, Donald, Denis, Didrik, Dragan, Danny, Dariusz, Dexter, Dimitrios, Dino, Dylan, Dejan, Denny, Damian, Diego, Dawid, Dieter, Damir, Deniz, Dominik, Dominic, Devin, Dario, Erik, Emil, Eric, Emanuel, Elias, Evert, Edvin, Einar, Ernst, Erland, Edvard, Elliot, Erling, Elis, Egon, Edward, Ebbe, Eskil, Eddie, Evald, Elof, Edwin, Enar, Eugen, Elton, Elvis, Emilio, Elvin, Esbjörn, Edgar, Fredrik, Filip, Folke, Felix, Frank, Frans, Fabian, Fred, Fritz, Fredric, Ferdinand, Franz, Fernando, Francisco, Freddy, Fadi, Finn, Fritiof, Freddie, Francis, Frej, Frederik, Felipe, Farhad, Fredrick, Farid, Faisal, Firas, Fouad, Florian, Gunnar, Gustav, Göran, Gustaf, Gösta, Georg, Gabriel, Göte, Gert, Gerhard, George, Glenn, Greger, Gottfrid, Gilbert, Gillis, Georgios, Grzegorz, Goran, Gotthard, Gordon, Görgen, Georges, Guy, Gideon, Gunder, Giovanni, Gary, Gusten, Gerry, Hans, Henrik, Håkan, Hugo, Henry, Harry, Harald, Hampus, Helge, Holger, Hjalmar, Herman, Henning, Hassan, Hannes, Herbert, Hilding, Hussein, Helmer, Henric, Hasan, Hasse, Hamid, Hans-Erik, Hamza, Hubert, Heikki, Hannu, Hossein, Hadi, Ingemar, Ingvar, Ivar, Inge, Isak, Ivan, Ibrahim, Ingmar, Isac, Ismail, Ilmari, Ian, Isaac, Isidor, Igor, Imad, Issa, Istvan, Ioannis, Ismael, Isa, Idris, Ingvald, Ismet, Imre, Ignacio, Imran, Ilyas, Ioan, Ivo, Johan, Jan, John, Jonas, Joakim, Johannes, Jörgen, Jonathan, Jesper, Joel, Jens, Jimmy, Jakob, Jacob, Johnny, Jonny, Josef, Juhani, Jonatan, Jan-Erik, Jack, Jim, Jon, Julius, James, Jerry, Joachim, Jan-Olof, Joacim, Jarl, Karl, Kjell, Kent, Kenneth, Kurt, Krister, Kristian, Knut, Klas, Kevin, Kristoffer, Kim, Kaj, Kenth, Kennet, Karl-Erik, Kristofer, Kalevi, Kalle, Kenny, Konrad, Kasper, Kari, Khaled, Krzysztof, Karim, Karl-Johan, Kai, Kalervo, Khalid, Lars, Lennart, Leif, Linus, Leo, Ludvig, Lucas, Lukas, Liam, Love, Lars-Erik, Leon, Leonard, Ludwig, Lars-Göran, Loke, Lars-Åke, Luis, Lars-Olof, Leopold, Lage, Levi, Louis, Lasse, Lars-Gunnar, Lars Erik, Leonardo, Lee, Lars Göran, Lowe, Mikael, Magnus, Martin, Mats, Mattias, Michael, Marcus, Max, Markus, Mohamed, Mathias, Mohammed, Morgan, Mohammad, Malte, Melker, Melvin, Mårten, Måns, Micael, Mauritz, Mohamad, Mustafa, Maximilian, Matti, Mahmoud, Milton, Manfred, Milo, Michel, Nils, Niklas, Niclas, Nicklas, Noah, Noel, Neo, Natanael, Nicolas, Nicholas, Nils-Erik, Nikola, Noa, Nabil, Niels, Naser, Napoleon, Nathanael, Nelson, Nathan, Nikolaos, Nils-Olof, Nikolai, Nick, Nikolaus, Nima, Nikolaj, Nils Erik, Nader, Nicolai, Olof, Oskar, Olov, Oscar, Ove, Ola, Olle, Oliver, Otto, Omar, Olavi, Ossian, Owe, Osman, Olav, Ole, Oliwer, Odd, Orvar, Osvald, Omer, Osama, Orlando, Omid, Olaf, Otis, Orhan, Onni, Olivier, Ozzy, Per, Peter, Patrik, Paul, Pär, Philip, Pontus, Petter, Pierre, Patrick, Peder, Per-Olof, Per-Erik, Patric, Piotr, Pekka, Pelle, Per-Åke, Pawel, Petri, Per-Olov, Petrus, Percy, Per-Arne, Per-Anders, Per-Ola, Pentti, Per Olof, Pål, Pehr, Quang, Quoc, Qasim, Qader, Qais, Qasem, Quentin, Quan, Qusay, Qendrim, Qadir, Qays, Qusai, Qiang, Qahtan, Quy, Quintus, Qazim, Qadar, Qvintus, Qi, Qassim, Quincy, Quyen, Qaisar, Qamil, Qutaiba, Qing, Qalid, Qaiser, Robert, Rolf, Roland, Roger, Rune, Robin, Rickard, Rasmus, Richard, Ragnar, Ronny, Rikard, Reinhold, Roy, Ruben, Ronnie, Rudolf, Ralf, Reza, Ronald, Raymond, Reine, Rafael, Roberto, Ralph, Roine, Raimo, Reidar, Ragnvald, Rainer, Sven, Stefan, Stig, Simon, Sebastian, Sten, Samuel, Sören, Sture, Sune, Staffan, Sigvard, Sixten, Svante, Sam, Sigurd, Stellan, Sven-Erik, Sigfrid, Said, Sonny, Sigge, Sami, Samir, Sivert, Seth, Sven-Olof, Sverker, Sakari, Sven-Åke, Thomas, Tommy, Tomas, Tobias, Torbjörn, Torsten, Tore, Tony, Tage, Tim, Tord, Tom, Theodor, Theo, Ture, Teodor, Tor, Torgny, Ted, Tapani, Tapio, Thure, Thor, Thore, Timo, Toni, Tomasz, Timmy, Thord, Thorbjörn, Ulf, Urban, Uno, Ulrik, Uolevi, Uwe, Ulrich, Unto, Ulric, Ulfsson, Usman, Umar, Udo, Ugur, Urpo, Urho, Usama, Umut, Ulfson, Ulf-Göran, Umberto, Uffe, Ur, Ullah, Ulises, Untamo, Uddin, Uddo, Ul, Ulv, Viktor, Vilhelm, Victor, Valdemar, Vincent, Valter, Valentin, Viggo, Verner, Vidar, Viking, Ville, Vilgot, Vilmer, Villy, Vide, Valfrid, Van, Veikko, Vladimir, Vallentin, Veli, Villiam, Veine, Vilde, Valentino, Vesa, Väinö, Veijo, Vilho, William, Wilhelm, Walter, Willy, Wilmer, Waldemar, Werner, Wille, Wiktor, Wolfgang, Walid, Wojciech, Wiggo, Wictor, Weine, Winston, Wilgot, Wael, Willem, Willhelm, Wincent, Wallentin, Wisam, Wilton, Wiking, Wieslaw, Waleed, Walther, Willi, Wladyslaw, Xavier, Xander, Xerxes, Xuan, Xin, Xhevat, Xiao, Xiang, Xhavit, Xu, Xhevdet, Xi, Xhafer, Xaver, Xavi, Xuong, Xhelal, Xiaojun, Xhemajl, Xiaodong, Xing, Xiaofeng, Xenofon, Xheladin, Xiaoming, Xiong, Xiaolong, Xia, Xiaowei, Xian, Yngve, Yusuf, Yousef, Youssef, Yousif, Yasin, Yahya, Yosef, Yassin, Yonas, Yrjö, Yaser, Yohannes, Younes, Yasir, Yasser, Yacoub, Yazan, Yunus, Yahye, Yousuf, Yemane, Yonis, Young, Yves, Yakob, Yong, Yakup, Yahia, Yilmaz, Zacharias, Zoran, Zakaria, Zackarias, Zbigniew, Zakarias, Zebastian, Zoltan, Zack, Zaid, Ziad, Zeljko, Zeb, Zlatko, Zeke, Zaki, Zlatan, Zion, Zsolt, Zeki, Zander, Zaher, Zdzislaw, Zana, Zakariya, Zain, Zuhair, Zeth, Zygmunt, Zdravko, Åke, Åge, Åkesson, Ål, Åkeson, Åsmund, Åskar, Åker, Åbjörn, Årad, Åse, Åsbjörn, Ås, Ådi, Ålråk, Ån, Åbri, Ådne, Åmid, Ånis, Åve, Årald, Ållis, Åsa-Nisse, Åke Lennart, Åstrad, Åsp, Åndh, Åre, Åttvid, Ärling, Ägir, Ämir, Ärtan, Ämin, Älvin, Ärland, Ärlan, Älgen, Älvis, Ärnie, Ärni, Ängel, Ärne, Ärlig, Änäs, Älg, Ärnst, Äcke, Ädam, Äser, Äshkan-Patrik, Äziz, Äriz, Ärons, Ärve, Äzher, Äzer, Ägid, Ärnfrid],\n  female: [Anna, Anita, Annika, Astrid, Alice, Amanda, Ann, Agneta, Anette, Anneli, Alexandra, Agnes, Anne, Alva, Alma, Angelica, Ann-Marie, Annie, Annelie, Ann-Charlotte, Annette, Aina, Alicia, Ann-Christin, Andrea, Anna-Karin, Anne-Marie, Anna-Lena, Annica, Ann-Sofie, Birgitta, Barbro, Britt, Berit, Birgit, Britt-Marie, Britta, Beatrice, Brita, Bodil, Barbara, Beata, Britt-Mari, Bianca, Boel, Betty, Berta, Britt-Inger, Britt-Louise, Bella, Berith, Benita, Belinda, Brigitte, Bonnie, Birthe, Bozena, Beatriz, Bente, Björnsdotter, Christina, Cecilia, Carina, Camilla, Caroline, Charlotte, Charlotta, Carolina, Christine, Carin, Clara, Catharina, Catarina, Cornelia, Carola, Christin, Christel, Cristina, Catrin, Carmen, Carolin, Charlott, Cassandra, Cathrine, Claudia, Carita, Cajsa, Catherine, Clary, Catrine, Doris, Diana, Dagmar, Dagny, Desirée, Denise, Daniela, Daniella, Del, Disa, Dorotea, Desiré, Dina, Daisy, De, Danuta, Dorota, Dorothea, Dalia, Désirée, Danielle, Desideria, Dana, Desireé, Daga, Dolores, Denice, Dora, Deborah, Debora, Elisabeth, Eva, Elisabet, Emma, Elin, Elsa, Emelie, Erika, Emilia, Ebba, Ellen, Ella, Evelina, Elvira, Ester, Ellinor, Elise, Eivor, Eleonora, Ewa, Elina, Evy, Erica, Elsie, Emmy, Edith, Elizabeth, Edit, Elna, Eleonor, Frida, Felicia, Fanny, Filippa, Fredrika, Freja, Fatima, Frideborg, Florence, Fatma, Fatemeh, Farah, Fadumo, Fia, Flora, Fiona, Freya, Fatema, Francesca, Frances, Francisca, Fernanda, Fredrica, Fatou, Farida, Fariba, Faten, Febe, Franziska, Fartun, Gunilla, Gun, Gunnel, Gerd, Gunvor, Gudrun, Greta, Gabriella, Gunhild, Gertrud, Gunborg, Gun-Britt, Gerda, Gulli, Gisela, Gull-Britt, Göta, Gunn, Gunbritt, Gurli, Gullan, Gabriela, Görel, Gabrielle, Grace, Gullvi, Gina, Gunni, Gloria, Gertie, Helena, Hanna, Helen, Helene, Helén, Harriet, Hilda, Hillevi, Hedvig, Hannah, Heléne, Helga, Hjördis, Hilma, Hannele, Henrietta, Heidi, Hildegard, Hedda, Hassan, Hildur, Henny, Hussein, Hulda, Henriette, Hanne, Hanan, Hana, Hilkka, Hasan, Ingrid, Inger, Ida, Irene, Ingegerd, Inga, Ingeborg, Ingegärd, Ingela, Isabelle, Isabella, Iréne, Iris, Inga-Lill, Irma, Ingalill, Inez, Isabell, Isabel, Inga-Britt, Ing-Marie, Ing-Britt, Ines, Ilona, Isa, Ingvor, Ina, Inkeri, Ibrahim, Irina, Johanna, Jenny, Julia, Jessica, Josefin, Josefine, Jeanette, Jennifer, Jennie, Josefina, Jane, Jonna, Joanna, Josephine, Jasmine, Janet, Judith, Jasmin, Jill, Juni, Joline, Jacqueline, Janina, Jessika, Judit, Julie, Jaana, Jenni, Jasmina, Jelena, Kristina, Karin, Kerstin, Katarina, Karolina, Kristin, Klara, Kajsa, Katrin, Kaarina, Karina, Kim, Katharina, Kristine, Katja, Katarzyna, Kristiina, Kyllikki, Kersti, Karolin, Karoline, Krystyna, Kate, Karla, Karen, Kaisa, Kirsti, Katrine, Katariina, Kirsten, Linnéa, Lena, Linnea, Louise, Linda, Lovisa, Lisa, Lina, Lisbeth, Lilian, Linn, Lilly, Laila, Lillemor, Liv, Lotta, Laura, Lisbet, Lova, Liselotte, Liselott, Lucia, Liisa, Lea, Lydia, Leila, Lise-Lotte, Li, Livia, Lily, Maria, Margareta, Marie, Marianne, Malin, Monica, Matilda, Margaretha, Märta, Maja, Mona, Madeleine, Monika, Magdalena, Maj, Marita, Moa, Margit, Mari, Maj-Britt, Martina, Mikaela, Maud, Marie-Louise, Marina, Mary, My, Mathilda, Madelene, Molly, Nina, Nathalie, Nora, Natalie, Nellie, Nova, Nicole, Nelly, Natalia, Nancy, Nadja, Nadia, Nanna, Nanny, Naemi, Nike, Noomi, Ninni, Naima, Noor, Nada, Nour, Naomi, Nicolina, Nadine, Nikki, Novalie, Nikita, Nea, Natasha, Olivia, Olga, Ottilia, Orvokki, Omar, Osman, Ofelia, Olofsdotter, Othilia, Oliwia, Otilia, Oline, Olena, Onerva, Outi, Oksana, Ophelia, Oili, Omer, Olivera, Ola, Odette, Othman, Oda, Olovsdotter, Olympia, Olly, Oxana, Oana, Olasdotter, Pia, Pernilla, Petra, Paulina, Patricia, Paula, Pauline, Petronella, Pirjo, Pamela, Pirkko, Päivi, Persdotter, Paola, Philippa, Peggy, Penny, Phuong, Pilar, Patrycja, Parisa, Petersdotter, Pauliina, Parvin, Päivikki, Perla, Pernille, Paulin, Pixie, Polly, Qasim, Quynh, Qamar, Qing, Qi, Qader, Qendresa, Qian, Quyen, Qin, Qays, Qusay, Quan, Queen, Qiong, Que, Qali, Qadir, Qaali, Qamile, Qadro, Qais, Qasem, Qadra, Qizi, Qahtan, Qassim, Queenie, Qui, Qun, Rut, Rebecca, Rebecka, Ruth, Rose-Marie, Ragnhild, Ronja, Regina, Rita, Rosa, Rigmor, Rosita, Rose, Ritva, Renée, Ros-Marie, Riitta, Rakel, Ramona, Raija, Runa, Renate, Raili, Ragna, Rana, Renata, Ros-Mari, Rania, Rosalie, Rosanna, Sofia, Sara, Susanne, Siv, Sandra, Sofie, Sonja, Stina, Signe, Solveig, Saga, Sigrid, Susanna, Svea, Sanna, Sylvia, Siri, Selma, Sarah, Stella, Sophie, Sabina, Sophia, Sofi, Susann, Sally, Simone, Stephanie, Suzanne, Solvig, Therese, Therése, Teresia, Tina, Tyra, Tove, Tilda, Tindra, Thea, Tilde, Tuva, Terese, Teresa, Thi, Theresia, Tova, Tuulikki, Tora, Tanja, Theres, Tuula, Tea, Tellervo, Theresa, Thyra, Tarja, Torborg, Tatiana, Tamara, Terttu, Ulla, Ulrika, Ulla-Britt, Ulrica, Ursula, Ulfsdotter, Ulla-Britta, Urszula, Unni, Ulla-Karin, Ulla Britt, Ulla-Stina, Una, Ulla-Maj, Ulrike, Ulla-Lena, Ubah, Ulla-Brita, Uma, Ute, Ullabritt, Ulla-Carin, Unn, Ullrika, Ulla-Greta, Unelma, Ulla-Maija, Ulla-Marie, Undine, Ulla Karin, Viola, Viktoria, Victoria, Veronica, Vera, Vilhelmina, Valborg, Vanja, Vilma, Veronika, Vendela, Vanessa, Viveka, Vivianne, Valentina, Vivi, Vivi-Ann, Vivan, Viveca, Vega, Vivian, Vilda, Virginia, Viviann, Vivi-Anne, Vilja, Vesna, Valeria, Violet, Vibeke, Wilma, Wilhelmina, Wiktoria, Wilda, Wiola, Wera, Wanda, Wictoria, Weronica, Weronika, Wanja, Wenche, Wendela, Wafaa, Wiveca, Wivi, Wieslawa, Wendy, Wilja, Wiveka, Wioletta, Wafa, Winnie, Wivianne, Wei, Waltraud, Wivi-Ann, Walid, Wilhelmine, Wally, Ximena, Xenia, Xuan, Xin, Xiao, Xia, Xiomara, Xue, Xi, Xhemile, Xiu, Xhevahire, Xiaoyan, Xhevrije, Xiang, Xena, Xiaoli, Xiaohong, Xinyi, Xing, Xiaojing, Xiaoyu, Xandra, Xu, Xian, Xantippa, Xiaomei, Xiaoying, Xiaowen, Xhejlane, Yvonne, Ylva, Yasmin, Yasmine, Yvette, Yusuf, Yara, Yousif, Ying, Yasemin, Young, Yrsa, Yolanda, Yousef, Yan, Yusra, Yen, Ywonne, Yordanos, Yasmina, Yu, Yi, Yulia, Yildiz, Yodit, Yun, Yee, Yassin, Yvonn, Yasin, Zahra, Zandra, Zainab, Zofia, Zara, Zeinab, Zoe, Zelda, Zahraa, Zeynep, Zarah, Zina, Zuzanna, Zenita, Zorica, Zehra, Zsuzsanna, Zanna, Zohreh, Zohra, Zoey, Zaida, Zlata, Zita, Zaynab, Zena, Zaid, Zdenka, Zamzam, Zana, Åsa, Åse, Åkesdotter, Åza, Åsa-Britt, Åsa-Lena, Ågot, Åslög, Åse-Marie, Åsa-Marie, Åsa-Maria, Åshild, Åsa-Karin, Åker, Åsa-Lill, Ål, Ån, Åse-Lill, Åsta, Åsa Maria, Åsalill, Åsa-Mari, Åse-Britt, Åse Marie, Åsa-Hanna, Åsa-Pia, Åse-Mari, Åsa-Stina, Åsadotter, Åhsa, Ängla, Älva, Ängel, Ärla, Ärna, Ämma, Ärtan, Äwa, Älvan, Äva, Ärlis, Älwa, Älvira, Älva-Li, Ädla, Älvina, Älsa, Älfva, Änsi, Äja, Ängla-Li, Älvali, Äya, Ämeli, Äsia, Änges, Ännie, Älin, Ängsmaja, Älfa]\n}\nlastNames: {\n  male: [Aagesdatter, Aarestrup, Aasen, Abelsen, Abildgaard, Abrahamsdotter, Abrahamsen, Abrahamsson, Abramsdotter Brännström, Achton, Adamsson, Adersson Almertz, Adolfsson, Adtzarsdotter, Adtzarsen, Adtzersdotter, Adtzerson, Adtzersson, Adtzersson Forsström, Adtzersson Rug, af Forsell, af Ström, Agelmo, Agerup, Aggerup, Agner, Ahl, Ahlberg, Ahlbin, Ahlbom, Ahlin, Ahlstedt, Ahlström, Ahnfeldt, Albrechtsson, Aldewelt, Aldrin, Alexandersdotter, Alexandersson, Alfredsson, Allesen, Allesen Bunkeflod, Allesen de Fine Bunkeflod, Allesen-Vernö, Allison, Almén, Almgren, Almqvist, Alrom, Alsén, Alteresius, Ancher, Anchersen, Ancker, Anderberg, Anderdotter, Anders, Andersdatter, Andersdotter, Andersdotter, Andersdotter Andersson, Andersdotter Bager, Andersdotter Lundberg, Andersen, Anderson, Andersson, Andersson Ahl, Andersson Anderberg, Andersson Anderström, Andersson Berglund, Andersson Bock, Andersson Boström, Andersson Bränn, Andersson Ekdahl, Andersson Eklund, Andersson Fastberg, Andersson Fridlund, Andersson From, Andersson Granat, Andersson Haeffner, Andersson Hagelin, Andersson Hejde, Andersson Hjälte, Andersson Lind, Andersson Lindqvist, Andersson Lindström, Andersson Lundström, Andersson Odhnoff, Andersson Olin, Andersson Rehn, Andersson Sandberg, Andersson Sjöström, Andersson Skog, Andersson Strand, Andersson Törne, Andersson Wikman, Andersson Winberg, Andersson Östman, Andesen, Andrassy, Andreasdatter, Andreasdotter, Andreasen, Andreasson, Angel, Angelberg, Anthon, Appelmark, Arctander, Arelsson, Arendorf, Arendtson, Arent, Arentsdatter, Arildsdotter, Armfelt, Arnander, Aronsson, Arosenius, Arvidsdotter, Arvidsson, Ascanius, Asisef, Askulin, Asmundsdotter, Asmundsson, Asmunsson, Asmussen, Asproth, Assarsdotter, Assarsson, Assarsson Åkerman, Assersdotter, Assersson, Assmundsson, Aubert, Augustin, Augustsdotter, Aulander, Avander, Axell, Axelsdotter, Axelson, Axelsson, Baark, Bach, Bache, Bachmann, Backe, Backlund, Backman, Backström, Baeckström, Bager, Bagger, Bahnson, Bang, Bangert, Barck, Barfod, Barfoed, Barfred, Barlit, Bartholdson, Barting, Barting Haeffner, Barzen, Basballe, Bathe, Battus, Baumann, Baumgarten, Bay, Bech, Beck, Becker, Beckmann, Beckwith-Lohmeyer, Bemarell, Benander, Bencke, Bendiksdatter, Bendz, Benedictson, Benedikt, Bengtsdotter, Bengtsdotter Hejde, Bengtsdotter Spanier, Bengtsson, Bengtsson Bergfors, Bengtsson Björk, Bengtsson Frost, Bengtsson Hejde, Bengtsson Korp, Bengtsson Lindén, Bengtsson Ljungqvist, Bengtsson Lundgren, Bengtsson Rudolf, Bengtsson Spanier, Bengtsson Wallersteen, Bengtsson Öst, Bengtström, Benjaminsdotter, Bentsen, Bentzen, Bentzien, Bentzon, Benzer, Benzon, Ber, Bercher, Berendt, Berg, Bergdahl, Bergdal, Bergeld, Bergelin, Bergencrona, Bergendal, Bergendorff, Bergenenhammer, Bergenfeldt, Bergeschou, Bergfors, Berggreen, Berggren, Berghman, Bergkvist, Berglund, Bergman, Bergner, Bergquist, Bergqvist, Bergstedt, Bergsten, Bergstrand, Bergstrom, Bergström, Bergvall, Berlin, Berndtsson, Bernhardsdotter, Bernhardsson, Bernström, Berntsdotter, Berntsson, Berntsson Berg, Berregaard, Bertelsdatter, Bertelsdatter, Bertelsdotter, Bertelsen, Bertelsson, Bertilsson, Bertle, Beutner, Bianco Boeck, Bie, Bieragger, Bierg, Bierum, Biilmann, Bild, Bilde, Bildt, Bill, Billabong, Billabong, Billberg, Billbergh, Bille, Bille-Brahe af Svanholm, Billenberg, Billgren, Billing, Billman, Billström, Billström Nilsdotter, Bilsted, Birch, Birck, Birkedal, Bisserup, Bisted, Biörnsson, Bjelkström, Bjerg, Bjerger, Bjerring, Bjushed, Björk, Björklund, Björkman, Björnberg, Björner, Blad, Bladh, Bladlund, Blaylock, Blegvad, Blicher, Blichfeldt, Blitzén, Blix, Blixt, Bloch, Blom, Blomberg, Blomkvist, Blomqvist, Blomsterberg, Blomsterqvist, Blomstrand, Blume, Blücher, Bock, Bodemayer, Bodinsson, Bogren, Bohle, Bohman, Bohn, Boijsen, Bokelund, Bokstad, Bolin, Bolmeér, Boman, Bonde, Bondesdotter, Bondesson, Bonne, Bonnevie, Bonnevier, Bonskog, Boosdotter, Borberg, Borelli, Borg, Borgelin, Borggren, Borgh, Borgkvist, Borglin, Borgman, Borgqvist, Borgström, Bornemann, Borreschmidt, Borthig, Bosdotter, Boström, Both, Botvidsson, Bovin, Boyesen, Boysen, Brahe, Brammer, Bramsen, Brandling, Brandt, Brangstrup, Branth, Branting, Branting, Brask, Brauer, Braun, Braunstein, Bredal, Breegaard, Bregendahl, Brehmer, Bremer, Brieger, Brilioth, Bringentoff, Brink, Brix, Broch, Brock, Brodersen, Broge, Brogren, Brolin, Brolund, Broman, Broomé, Brorsdotter, Brorson, Brorsson, Bruce, Brumberg, Brun, Brunsson, Bruun, Brüdigam, Brÿgger, Bryngelsson, Bryngelsson Bjushed, Bryngelsson Jardesten, Bryngelsson Ryberg, Brysting, Brytz, Brännström, Buch, Buchhave, Buchwald, Bugge, Bull, Bulow, Bunkeflod, Burmaister, Burman, Burmeister, Burss, Burvall, Busk-Jepsen, Busse, Bügler, Bützow, Bång, Bäck, Bäckström, Bängts, Börgesson Law, Börjasson, Börjesson, Callmer, Calow, Cammermeyer, Campos Valdés, Candelin, Caradja, Carlheim, Carlheim-Gyllenskiöld, Carlsdotter, Carlsdotter Eriksson, Carlsen, Carlsson, Carlsson Bager, Carlsson Brandstad, Carlsson Cagéll, Carlsson Dahlberg, Carlsson Dahlqvist, Carlsson Hallberg, Carlsson Karlzén, Carlsson Landén, Carlsson Listerberg, Carlsson Thorsberg, Carlsson Thulin, Carlsson von Magius, Carlsson Öberg, Carlström, Carr, Caspersson, Cederberg, Cederholm, Cederlund, Challamell, Charleville, Charling, Charpentier, Charr, Chaura Deumacan, Chenoweth, Chirkova, Christell, Christensdatter, Christensdotter, Christensen, Christensen, Christensen Keitt, Christensen Snejstrup, Christensson, Christensson Lundstätt, Christersson, Christiansdatter, Christiansdotter, Christiansen, Christiansson, Christoffersdatter, Christoffersdotter, Christoffersen, Christoffersson, Christophersson, Claesson, Clase, Clason Lund, Classén, Classon, Clausen, Clausson, Clemedsson, Clemens, Clemensdatter, Clemensson, Clementsdotter, Collberg, Collberg Jarke, Colliander, Collin, Colonna de Leca, Condé, Cordes, Cornelius, Corneliusdotter, Cortsen, Covot, Cramer, Crawford, Cremon, Cristensen, Crona, Cronberg, Crone, Cronholm, Cronlund, Cronqvist, Cruys, Dahl, Dahlberg, Dahlbom, Dahlgren, Dahlin, Dahlkvist, Dahlman, Dahlquist, Dahlqvist, Dahlström, Dahnsson, Dahqvist, Dajrtendich, Dalberg, Dalgren, Dalman, Dam, Damm, Damm Jensen, Damm-Pedersen, Danelius, Danielsdotter, Danielsen, Danielsson, Danielsson Hartelius, Dankwardt-Lilieström, Darell, Darre, Daun, Davidson, Davidsson, de Armas Ramírez, de Bang, de Bruce, de Ferry, de Fine, de Fine Licht, de Fine Olivarius, de Hemmer, de la Cour, de Neergaard, Degerman, Degermark, Deichmann, Demidoff, Demuth, Dessau, Díaz, Dietrich, Dinesdatter, Dinesen, Dobson, Dochedahl, Dochedahl-Petersen, Dockendorf, Dormé, Dorn, Dornonville de la Cour, Doslic, Drechsel, Dressel, Drews, Dreyer, du Bois, du Plesis De Richelieu, Dunér, Duus, Duval, Duvander, Dyberg, Dyker, Dyrbye, Dürkopp, Dürr, Ebbasdotter, Ebbesen, Ebbeson, Ebbesson, Ebling, Edberg, Edelberg, Edén, Edholm, Edin, Edling, Edvardsdotter, Edvardsson, Edwardsson, Eek, Eftevaag, Egeberg, Ehlers, Ehrning, Ek, Ekberg, Ekblad, Ekbladh, Ekblom, Ekborg, Ekdahl, Ekelund, Ekeman, Ekenberg, Ekenman, Ekeroth, Eklund, Eklöf, Eklöv, Ekman, Ekstrand, Ekström, Ekvall, Elam, Elfström, Elg, Eliadotter, Eliasdotter, Eliasson, Eliasson Lindell, Elke, Ellberg, Ellefsen, Ellertsson, Elling, Ellington, Elmén, Elmquist, Elofsdotter, Elofsson, Eman, Emanuelsdotter, Emanuelsson, Emanuelsson Ekblad, Emborg, Enberg, Eneberg, Enevaldsson, Engberg, Engblom, Engdahl, Engler, Englund, Engman, Engqvist, Engstedt, Engstrand, Engström, Engvall, Enkvist, Erhardi, Erichsen, Erichson, Erichsson Kihl, Ericksson, Ericsdotter, Ericsson, Eriksdatter, Eriksdotter, Eriksen, Erikson, Eriksson, Eriksson Energren, Eriksson Hedquist, Eriksson Hultberg, Eriksson Krycker, Eriksson Åman, Erlandsdotter, Erlandsson, Erlandsson, Erlström, Ernstdotter, Ernvall, Ersdotter, Ersson, Ersson Lindström, Ertiksson, Esbjörnsdotter, Eskelsson, Eskildsdotter, Eskilsdotter, Eskilsson, Estensen, Estoesta, Eurenius, Evald, Everlöf, Eyermann, Fabricius, Fader, Faederholdt, Fagerberg, Fahlgren, Fahlman, Fahlstedt, Faith, Falck, Falk, Falkenberg, Falkvall, Fastberg, Faurschou, Feilberg, Feiniger, Feininger, Fensmark, Ferngren, Fernström, Ferrer, Ferrer Weinschenck, Ferslev, Fibiger, Fick, Fiedler, Filipson, Findelius, Finman, Finnman, Fjällström, Flaméhn, Fledelius, Fleihan, Flensburg, Flink, Flintzberg, Flodman, Florinsky, Flygare, Flögt, Fock, Fogelberg, Fogh, Fors, Forsberg, Forselius, Forsell, Forslund, Forsman, Forssén, Frandsdatter, Frandsen, Frank, Franke, Fransson, Frantzdatter, Franzén, Frederiksen, Fredriksdotter, Fredriksson, Freij, Frej, Frese, Friberg, Friberg-Ekberg, Fribert, Frid, Friese, Friis, Frimodt, Frisendahl, Frisk, Frisk \"Frisch\", Fristedt, Fritiof, From, Frosetter, Frost, Fröberg, Fröjd, Frönell, Fugl, Fuglede, Fuller, Funch, Füchslin, Fyhr, Fynboe, Fält, Fältström, Gabrielsdotter, Gabrielsson, Gad, Gadamer, Gade, Galle, Gamél, Gammeltoft, Garland Elam, Garmann, Gasslander, Gedeborg, Gehrt, Geijer, Gelin, Genefke, Genschow, Georgsdotter, Gerberg, Gerdtsdotter, Gerdtsson, Gergi, Gergi Lundstedt, Germansen, Germundsson, Giedde, Gielff, Giessing, Gilde, Gillberg, Gislander, Gjedde, Gjertsen, Gjuditz, Glahn, Glerup, Glud, Goelitz, Gommesen, González Más, González Pena, Gorra, Gorra Weinschenck, Gottlander, Graf, Grahn, Gran, Granberg, Granholm, Grankvist, Granlund, Granqvist, Granstedt, Granström, Green, Greisbach, Gren, Greve, Grip, Grubbe, Grundeis, Grundström, Grut, Grähs, Grönkvist, Grönquist, Grönvall, Grönwall, Gudfastersen, Gudmonsdotter, Gudmundsdotter, Gudmundsson, Gudmunsson, Guldberg, Guldbrandsen, Gullberg, Gullqvist, Gullstrand, Gulstad, Gultzau, Gumme Pers, Gummesen, Gummesson, Gummesson Lindkvist, Gunarsdotter, Gunnarsdotter, Gunnarsson, Gunnér, Guntell, Guskasson, Gussarsson, Gustafsdotter, Gustafsdotter Lindblom, Gustafsdotter Möller, Gustafsdotter Spanier, Gustafsson, Gustafsson Edling, Gustafsson Fernström, Gustafsson Spanier, Gustafsson Ulfsax, Gustavsdotter, Gustavsson, Gustavsson Tillrooth, Gyldencrantz, Gylding, Gyllén, Günther, Gärdehall, Göransdotter, Göransson, Görgensen, Götz, Haagen, Haastrup, Haeffner, Haeffner, Haeffner-Flodman, Hafström, Hagblom, Hagefeldt, Hagelin, Hagemann, Hagéus, Haggärde, Haglund, Hagman, Hagström, Hahn, Hake, Halbert, Haleby, Hall, Halland, Hallberg, Halleby, Hallenborg, Haller, Hallgrímsdóttir, Hallin, Halling, Hallström, Hals, Halvarsson, Halved, Halvorsen, Hamilton, Hamlett, Hamlin, Hammar, Hammarberg, Hammarbäck, Hammarlund, Hammarqvist, Hancke, Hansdotter, Hansdotter Bunkeflod, Hansdotter de Fine, Hansen, Hansen, Hansen Borntoft, Hansen Riber, Hansesdotter, Hanson, Hansson, Hansson Dalberg, Hansson Engström, Hansson Eriksson, Hansson Lindberg, Hansson Lundberg, Hansson Lundstedt, Hansson Löf, Hansson Roth, Hansson Sjölin, Hansson Spanier, Hansson-Dahl, Haraldsdotter, Haraldsson, Harboe, Harder, Hart, Hartelius, Hartwig, Hartwigsson, Hartzberg, Hasfeldt, Haslund, Hasselquist, Hasselqvist, Hastrup, Hatting, Hauch, Hazell, Hecht, Heckscher, Hecksher, Hector, Hedberg, Hedberg \"Leander\", Hedblom, Hedeberg, Hedeby, Hedeman, Hedenskog, Hedenstierna, Hedkvist, Hedling, Hedlund, Hedman, Hedquist, Hedqvist, Hedström, Hedvalls, Hedvist, Heering, Héhn, Heiberg, Heiberg Ipsen, Heidenberg, Heikel, Heitmann, Hejde, Hejlesen, Hektor, Helander, Helgesson, Heljeberg, Heljesdotter, Heljesson, Hellberg, Hellén, Hellgren, Hellman, Hellstadius, Hellström, Helmer, Hemberg, Henckel, Hendriksson, Henningsen, Henrichsen, Henrichsson, Henricsdotter, Henriksdotter, Henriksen, Henriksson, Henriksson Dalberg, Henriksson Hallberg, Henriksson Hyllén, Henriksson Persson, Henrysson, Herazeck, Herder, Herforth, Herlman, Hermansdotter, Hermansen, Hermansson, Hermodsson, Hern, Herrman, Herskind, Hersvall, Hertz, Hertzberg, Hertzman, Herztler, Hessellund, Hesselman, Hetting, Heuch, Heurlin, Hieronimusdatter, Hieronimussen, Higgens, Hilding, Hillborg, Hillman, Hindrichsdotter, Hindrichsson, Hindricsdotter, Hingtsasdotter, Hinrichsen, Hinsasdotter, Hinsasson, Hinsesson, Hjelm, Hjelmdrop, Hjort, Hjorth, Hjorthagen, Hjortsberg, Hjuler, Hober, Hoff, Hoff Hansen, Hoffensberg, Hoffman, Hoffmann, Hofsteter, Holbech, Holbek, Holgersdotter, Holgersen, Holgersson, Holland, Holm, Holmberg, Holmblad, Holmgren, Holmkvist, Holmlund, Holmquist, Holmqvist, Holmstedt, Holmström, Holst, Holst Kjeldsen, Holtzbro, Hoppe, Hopper, Horn, Horneman, Hornemann, Hortman, Hostrup Schultz, Hougaard, Hoversdatter, How, Howitz, Hugosson, Huhne, Hult, Hultberg, Hultén, Hultgren, Hultin, Hultman, Hurtig, Huss, Hutfeld, Huth, Hvid, Hviid, Hwasser, Hydfeldt, Hyllested, Hüttmann, Hågensdotter, Håkansdotter, Håkansson, Hård af Segerstad, Häger, Hägerman, Hägg, Hägglund, Hällberg, Häller, Hällgren, Häsler, Högberg, Höglund, Högrelius, Hörberg, Hörjesson, Hörngren, I Kroen, Ifvarsson, Ifversson, Ingelsdotter, Ingelson, Ingelsson, Ingelsten, Ingemansson, Ingemarsdotter, Ingemarsson, Ingerslev, Ingesdotter, Ingesson, Ingram, Ingvarsdotter, Ingvarsson, Ingvartsen, Ipsdatter, Ipsen, Irestam, Irmlev, Isaksdotter, Isaksson, Isenberg, Isibarth, Israel, Ivarsdotter, Ivarsson, Iversen, Jacksson, Jacobi, Jacobsdatter, Jacobsdotter, Jacobsen, Jacobsson, Jahn, Jahnsson, Jakobsdotter, Jakobsson, Jakobsson, Jannesson, Jansdotter, Jansdotter Öman, Jansen, Jansson, Jansson Eriksson, Jansson Haeffner, Jarl, Jarle, Jarnestad, Jensdatter, Jensdatter, Jensdatter, Jensen, Jensen Lang, Jensen Vestergaard, Jensenius, Jensön, Jeppasdotter, Jeppasson, Jeppesdotter, Jeppesen, Jeppsdotter, Jeppsson, Jeppsson Forsberg, Jepsdotter, Jepsson, Jernberg, Jersild, Jespersen, Jessen, Jochumsen, Jockumsen, Joensdotter, Joensson, Johannesdotter, Johannesson, Johannesson Nordell, Johannesson Winberg, Johannisdotter, Johannisson, Johansdotter, Johansdotter Palm, Johansdotter Sundell, Johansen, Johansson, Johansson Bergeld, Johansson Bergenfeldt, Johansson Burman, Johansson Einald, Johansson Ekström, Johansson Frönell, Johansson Granberg, Johansson Hagberg, Johansson Hedquist, Johansson Holmgren, Johansson Jarlestam, Johansson Killberg, Johansson Lindberg, Johansson Malmqvist, Johansson Marklund, Johansson Persson, Johansson Sjöberg, Johansson Sundqvist, Johansson Åhl, Johansson Öberg, Johansson Öst, Johnsdotter, Johnson, Johnsson, Johnsson Friberg, Jonasdotter, Jonasdotter Nordlund, Jonasson, Jonasson Norlund, Jonasson Sandstedt, Jonasson Skoglund, Jonelind, Jonsas, Jonsdotter, Jonsen, Jonson, Jonsson, Jonsson Gärefors, Jonsson Lindal, Jonsson Nordlund, Jonsson Söderblom, Jordán Suri, Joseph, Josjö, Juel, Juhl, Juhlin, Julin, Juncker, Jungbeck, Juringius, Just, Just-Nielsen, Justesen, Juul, Jürgens, Jäderström, Jöns, Jönsdotter, Jönsdotter Ekström, Jönsdotter Hagblom, Jönsdotter Lindström, Jönsson, Jönsson Bjelland, Jönsson Bjerborn, Jönsson Björk, Jönsson Brandt, Jönsson Collberg, Jönsson Ekström, Jönsson Flenner, Jönsson Grevstad, Jönsson Haak, Jönsson Hektor, Jönsson Holmqvist, Jönsson Hultgren, Jönsson Kristoffersson, Jönsson Murberg, Jönsson Möllergren, Jönsson Nilsson, Jönsson Nåvall, Jönsson Rosander, Jönsson Rosdahl, Jönsson Rosendahl, Jönsson Rydinger, Jönsson Stenberg, Jönsson Stjernfeldt, Jönsson Svan, Jönsson-Lörd, Jörans, Jöransdotter, Jöransson, Jörgensen Wain, Jörgonson, Kaalund, Kaas, Kaas af Mur, Kabell, Kafle, Kahn, Kall, Kalldin, Kallenberg, Kallmer, Kames, Kamf, Kamp, Kamph, Kampmann, Kapferer, Karadja, Karadja pascha, Karlbeck, Karlbäck, Karlsdotter, Karlsdotter, Karlsson, Karlsson Listerberg, Karlsson Nilsson, Karlsson Rabe, Karlsten, Karström, Kasparsdotter, Kastensdotter, Kastnyr, Keil, Kelfve, Kellgren, Kellmodin, Kenne, Kieldsdatter, Kieldsen, Kieldsson Lilja, Kierbye, Kiersgaard, Kierulf, Kihlmark, Kinberg, Kinch, Kipp, Kirkeby, Kirketerp, Kirschner, Kisbye, Kjeldahl, Kjelder, Kjeldsdatter, Kjeldsen, Kjeldsen Weinschenck, Kjellberg, Kjellerup, Kjellgren, Kjellin, Kjellman, Kjellsson, Kjerstensson, Kjerulf, Kjerulff, Klang, Klang Perrsdotter, Klang Persdotter, Klang Persson, Klarin, Klassén, Klassén Sundström, Klaug, Klausch, Klefelt, Klein, Kleinsorg, Klemedsson, Klensorg, Klerebladh, Klim, Kling, Klingenberg, Klinterot, Klog, Klohs, Klohs Rambech, Knopf, Knudsdatter, Knudtzen, Knudtzon, Knutsdotter, Knutson, Knutsson, Kobb, Koch, Kock, Koefoed, Kofod, Kofoed, Kohrtz, Kojima, Koll, Kollerup, Kolòdkin, Komstedt, Korneliusdotter, Korneliusson, Krabbe, Kraft, Krafve, Kragballe, Kragh, Kramer, Krapf, Krath, Krebs, Krehmer, Krieger, Krikström, Kristensdotter, Kristensen, Kristensson, Kristiansdotter, Kristiansdotter Wikman, Kristiansen, Kristiansson, Kristiansson Carlsson, Kristoffersdotter, Kristoffersen, Kristoffersson, Kristoffersson Dahlqvist, Kristoffersson Rosberg, Kristoffersson Syrén, Kroch, Krog, Krog, Krog-Meyer, Krogh, Kron, Kronkvist, Kronquist, Kronqvist, Kronvall, Kruse, Kulldorff, Kuntze, Kuylenstierna, Kuylenstjerna, Kvist, Kÿkler Kjökler, Kynde, Küttner, Kåge, Kåhre, Käll, Källman, Källström, Känne, Kölichen, Köller, la Cour, La Fleur, Lacey, Lager Malmberg, Lagerbielke, Lagerlöf, Lagerqvist, Lageson, Lagesson, Laggare, Landberg, Landby, Landén, Landgren, Landström, Langballe, Lange, Langergaard, Langner, Langsted, Lanng, Lans, Lanz, Larpent, Lars, Larsdatter, Larsdotter, Larsdotter DISBYT, Larsdotter Fält, Larsdotter Lundstedt, Larsen, Larsson, Larsson Blom, Larsson Bonde, Larsson Borgqvist, Larsson Callmer, Larsson Fält, Larsson Holm, Larsson Holst, Larsson Levin, Larsson Lindqvist, Larsson Lundstedt, Larsson Nordlund, Larsson Nyström, Larsson Rosén, Larsson Sjögren, Larsson Strand, Larsson Ström, Larsson Willander, Larsson Åvall, Lassedotter, Lassen, Lassesdotter, Lassesson, Lasson, Laub, Lauersen, Laurberg, Laurell, Lauritsdatter, Lauritsen, Lauritzen, Laursdatter, Laursen, Laursen Kuppert, Laustsen, Lavesdotter, Lavesson, Ledin, Lehndal ,Lehman, Lejon, Lem, Lemoine, Lennqvist, Lentz, Lentz Rée, León González, León Weinschenck, Lerche, Lesler, Leth, Lett, Leufvenmark, Levin, Liberg, Licht, Lidell, Lidén, Lidfeldt, Lidman, Lidström, Liebe, Liebert, Liebmann, Liedholm, Lihme, Lilienkampff, Lilja, Liljeblad, Liljegren, Liljeqvist, Lillelund, Lillienschiold, Lilliesköld, Limskilde, Lincoln Rosén, Lind, Lindahl, Lindal, Lindau, Lindbeck, Lindberg, Lindberg, Lindberg Persson, Lindblad, Lindborg, Lindell, Lindelof Olsen, Lindén, Lindenhäll, Linder, Linderström, Lindfors, Lindgreen, Lindgren, Lindh, Lindhardt, Lindholm, Lindkvist, Lindquist, Lindqvist, Lindros, Lindroth, Lindskog, Lindstén, Lindström, Lindström Rosendal, Lindvall, Lindwall, Ling, Linnet, Lisborg, Lithovia, Litz, Ljung, Ljungberg, Ljungdahl, Ljunggren, Ljungh, Ljungquist, Ljungqvist, Ljungström, Lodin, Loinsworth, Loir, López Blanco, Lorensen, Lorensson, Lorentsson, Lostedt, Lovén, Lovesson, Ludvigsdotter, Ludvigsson, Lueders, Lund, Lundahl, Lundberg, Lundberg Blücher, Lundberg Lindgren, Lundblad, Lundborg, Lundby, Lundbye, Lundgren, Lundholm, Lundin, Lundkvist, Lundmark, Lundquist, Lundqvist, Lundstedt, Lundstedt Zewde, Lundstén, Lundström, Lundvall, Lundwall, Luplau, Lustig Stångberg, Luther, Lyche, Lydersen, Lydichsen, Lyngaae, Lynge, Lütken, Lützen, Långdahl, Långström, Läbom, Lännquist, Löf, Löfdahl, Löfgren, Löfquist, Löfqvist, Löfstedt, Löfström, Löfvall, Lönbom, Lönbom Lundbom, Lönn, Lönnquist, Lönnqvist, Lönroth, Lövgren, Löwenadler, Löwstedt, Maale, Madsdatter, Madsen, Madsen Magius, Magius zu Horneburg, Magnidotter, Magnusdotter, Magnusdotter Magni, Magnusson, Magnusson Gullqvist, Magnusson Kronqvist, Magnusson Plan, Mahr, Mahrt, Majer, Malling, Malm, Malmberg, Malmborg, Malmgren, Malmquist, Malmqvist, Malmros, Malmrosdotter, Malmsten, Malmström, Malthe-Bruun, Mangor, Mannesdotter, Mannesson, Mantzius, Marceau, Marcel, Marcel Weinschenck, Maribo, Mark, Marklund, Markman, Markström, Markusdatter, Markvang, Marqurd, Marqvardt, Mars, Marsala, Marstrand, Martin Packness, Martinsson, Mathiasdotter, Mathiasen, Mathsson, Matsdotter, Matsson, Mattel, Mattiasson, Mattisdotter, Mattisson, Mattsdotter, Mattsdotter Sjöblom, Mattsson, Mattsson Lindnert, Mattsson-Mårn, Matzau, Matzdotter, Max, Medin, Meidell, Meier, Meigård, Meijb, Meijer, Meisler, Meissner, Melboe, Melén, Melin, Mellberg, Merbitz, Mertz, Mertz Blume, Mesler, Meulengracht, Meurs, Meyer, Michaelsdotter, Michelsdotter, Michelsen, Michelson, Michelsson, Mickelsdotter, Mickelsson, Middelthon, Mikkelborg, Mikkelsdatter, Mikkelsen, Mintschenko, Mitchell, Moberg, Modée, Modéer, Modin, Mogensdatter, Mogensen, Mohlin, Mohr, Molander, Molin, Mollberg, Mollerup, Moltke af Morales, Morales González, Morales Weinschenck, Mortensdatter, Mortensen, Morthorst, Morville, Moses, Motzfeldt, Mourier, Mulder, Mumme, Munch, Munck, Mundt-Petersen, Munk, Munthe, Myers, Mygind, Müller, Müllertz, Mynster, Münter, Myre, Måns Pers, Månsdotter, Månsson, Månsson Dahlgren, Månsson Holmgren, Månsson Klingenberg, Månsson Ljungstrand, Månsson Lundström, Mårtens, Mårtensdotter, Mårtensson, Möller, Möllergren, Möllerstedt, Nagel, Nansen, Nathan, Neckelmann, Nedergaard, Neergaard, Nej, Nelsdotter, Nelson, Nelsson, Nerman, Nero, Nesselqvist, Nettzén, Netzén, Neu, Neuenkirchen, Neuman, Nevander, Nexmar, Nicklasson Kilberg, Niclasdotter, Niclasson, Nielsdatter, Nielsdotter, Nielsen, Nielsen, Nielsen Nielsen Just, Nieuwenhuis, Niklasdotter, Niklasson, Nikolic, Nilén, Nils, Nilsdotter, Nilsdotter, Nilsdotter Boberg, Nilsdotter Lindqvist, Nilsdotter Niwén, Nilsdotter Walters, Nilsdotter Åkerman, Nilssen, Nilsson, Nilsson, Nilsson Ahl, Nilsson Bergqvist, Nilsson Björkman, Nilsson Bokander, Nilsson Engqvist, Nilsson Fransen, Nilsson Friberg, Nilsson Fält, Nilsson Gillén, Nilsson Hagblom, Nilsson Hedeby, Nilsson Holmgren, Nilsson Holmlund, Nilsson Klarin, Nilsson Lilja, Nilsson Lindberg, Nilsson Lindfors, Nilsson Lindgren, Nilsson Lindqvist, Nilsson Lindsjö, Nilsson Lindskog, Nilsson Lörd, Nilsson Melin, Nilsson Nettelbjer, Nilsson Nivén, Nilsson Niwén, Nilsson Petersson, Nilsson Rosenqvist, Nilsson Rydberg, Nilsson Seltir, Nilsson Sten, Nilsson Sundén, Nilsson Thomasson, Nilsson Tilly, Nilsson Vilhelmsson, Nilsson Årman, Niska, Nissen, Nobel, Nohr, Norberg, Nord, Nordahl, Nordberg, Nordborg, Nordell, Nordentoft, Nordgren, Nordholm, Nordin, Nording, Nordlander, Nordling, Nordlund, Nordmark, Nordqvist, Nordstedt, Nordsten, Nordstrand, Nordström, Norgren, Norlander, Norlund, Norrbohm, Norstedt, Norström, Nyberg, Nycander, Nyegaard, Nygren, Nygård, Nyholm, Nykvist, Nylander, Nylin, Nyman, Nyréhn, Nürnberg, Nyström, Näslund, Oberberg, Odhner, Odhnoff, Ogbewe, Ohlasdotter, Ohls, Ohlsdotter, Ohlsson, Ohlsson Malmström, Okänd, Okänt, Olaidotter, Olander, Olander Persson, Olandersson, Olasdotter, Olausdotter, Olausson, Oldenburg, Olesdatter, Olesen, Olin, Olivarius, Olof Pers, Olofsdotter, Olofsdotter, Olofson, Olofson Larsson, Olofsson, Olofsson Bergkvist, Olofsson Bergvall, Olofsson Hedquist, Olofsson Hensy, Olofsson Lindberg, Olofsson Lindberg Hägg, Olofsson Lundgren, Olofsson Nordlund, Olofsson Sandström, Olofsson Sjödal, Olofsson Stenberg, Olofsson Stocker, Olofsson Tengvall, Olofsson Ölund, Olovsdotter, Olovsson, Ols, Olsdatter, Olsdotter, Olsdotter Mattsson, Olsen, Olson, Olson-Carle, Olsson, Olsson Ahlin, Olsson Andonius, Olsson Boberg, Olsson Falk, Olsson Idoff, Olsson Kanér, Olsson Kron, Olsson Lind, Olsson Mattsson, Olsson Murat, Olsson Odervall, Olsson Olin, Olsson Orsmark, Olsson Rothén, Olsson Rydebank, Olsson Segerslätt, Olsson Skog, Olsson Smith, Olsson Thorsberg, Olsson Wedén, Olsson Wendelin, Olsson Wik, Olufdatter, Olufsdatter, Olufsdotter, Olufsen, Olufsson, Oredsdotter, Orsmark, Oscarsson, Oskarsdotter, Ossbahr, Ostenfeld, Otterstedt, Ottosdotter, Ottosson, Overgaard, Ovesen, Packer, Pagander, Pagels, Pahl, Palau, Palmgren, Palmquist, Palmqvist, Paludan, Palvig, Pamp, Park, Parson, Pauli, Paulsdotter, Paulsen, Paulson, Paulsson, Paumen, Pavius, Payngk, Pedersdatter, Pedersdatter, Pedersdatter, Pedersdotter, Pedersen, Pedersen, Pedersen-Holmen, Pehrsdotter, Pehrsson, Pehrsson Ström, Pena, Pena Weinschenck, Per Hans, Perez Martinez, Pers, Persbeck, Persdotter, Persdotter Ek, Persdotter Hinsasdotter, Persdotter Lundström, Persdotter Pålsson, Persdotter Walters, Persdotter Ågårdh, Persson, Persson Ahlström, Persson Ask, Persson Attrup, Persson Billing, Persson Cronsioe, Persson Cronsjö, Persson Dahlgren, Persson Dahlqvist, Persson Ek, Persson Ekberg, Persson Ekstrand, Persson Eld, Persson Engman, Persson Engström, Persson Finman, Persson Fredlund, Persson Grundström, Persson Gryta, Persson Hedlund, Persson Hektor, Persson Henrysson, Persson Holm, Persson Järnkula, Persson Lindström, Persson Lundström, Persson Löfdahl, Persson Löfgren, Persson Malmström, Persson Marklund, Persson Nerman, Persson Nevander, Persson Nordqvist, Persson Pettersson, Persson Pihlström, Persson Pilquist, Persson Rosberg, Persson Rosenlund, Persson Sten, Persson Sundén, Persson Sundqvist, Persson Söderstjerna, Persson Wallin, Persson Wendel, Persson Wicklund, Persson Ågårdh, Peter, Petersdotter, Petersdotter Björklund, Petersdotter Hall, Petersen, Petersen, Petersen Peterson, Petersson, Petri, Pettersdotter, Pettersson, Pettersson Althén, Pettersson Karlsson, Pettersson Mannström, Pettersson Molin, Pettersson Munkert, Pettersson Ohlander, Pettersson Rabe, Pfeiffer, Philipsen, Phillips, Piculell Larsson, Pihl, Pilquist, Pindsfeld, Piper, Pira, Plambeck, Plambeck Borgström, Plan, Plenge, Plesner, Pligt, Plomgren, Plum, Pofvelsen, Pofvelsson, Poleman, Porth, Posfelt, Poulsdatter, Poulsdatter Steenild, Poulsen, Pourtschan, Pousette, Pramberg, Prien, Priergaard, Printz, Prom, Provilo, Prüss, Pryts, Psilander, Pultz, Påhlsdotter, Påhlson, Påhlsson, Påhlsson Falk, Pålsdotter, Pålsson, Pålsson Lindskog, Pålsson Strand, Pährsdotter, Pärsdotter, Pärson, Pärsson, Pärsson Korp, Quist, Qvarnström, Qvist, Qvistgaard, Qvistgård, Raaf, Rabe, Rafn, Rafqvist, Ragnell, Rambech, Ramberg, Ramm, Ramstedt, Ramström, Rank, Rankin, Rasmusdatter, Rasmusdotter, Rasmusen, Rasmussen, Rasmussen, Rasmussen Erasmi, Rasmusson, Rathjen, Rathsack, Ravn, Reckenagel, Redout, Rée, Regnell, Regnér, Rehn, Reidl, Reimer, Reinhold, Reinholtz, Reinold, Renberg, Renlund, Renner, Renström, Resman, Reuss-Lobenstein, Reuterswärd, Reuther, Rexert, Ribbing, Riber, Richert, Riis Johansen, Riisberg, Rindom, Ring, Ringberg, Ringdahl, Ringkvist, Ringquist, Ringqvist, Ringström, Ripperger, Risberg, Ritzén, Rivero González, Rivero Weinschenck, Rode, Rodríguez, Rohde, Rohman, Rohr, Rojas Naranjo, Rojas Weinschenck, Rokström, Romberg, Rommedal, Rosander, Rosberg, Rosdahl, Rosell, Rosén, Rosenberg, Rosendahl, Rosenfeldt, Rosenfelth, Rosengren, Rosenkvist, Rosenlund, Rosenlöf, Rosenqvist, Rosman, Rosqvist, Ross, Rosslin, Rossvik, Rosvall, Roth, Rothe, Rothén, Rova, Rubach, Ruckle, Rudberg, Rudolf, Rudolf Billesjö, Rundberg, Rundfält, Rundgren, Rundquist, Rundqvist, Runestam, Rungren, Runnerström, Rur, Ruth, Ruthberg, Ryberg, Rydberg, Ryde, Ryder, Rydqvist, Rydstrand, Rydström, Rye, Rylander, Rönberg, Rönne, Rönngren Rungren, Rönnkvist, Röring, Rössel, Sabelfelt, Sabelsköld, Sabournin Téllez, Sabroe, Sagnert, Salomonsson, Samuelsdotter, Samuelsen, Samuelsson, Sandahl Harved, Sandberg, Sandell, Sander, Sandgren, Sandin, Sandlund, Sandqvist, Sandrewsky, Sandström, Sassarsson, Sassersdotter, Sassersson, Saur, Savstam, Saxild, Schack, Schadely, Schaumburg-Müller, Scheibe, Schell, Scherman, Schildknecht, Schillström, Schive, Schjerning, Schmeling, Schmidt, Schmigelov, Schnabel, Scholander, Schollin, Schommel, Schou, Schou Kjeldsen, Schrader, Schubart, Schulow, Schultz, Schuylenburg, Schwan, Schwennesen, Schylander, Schytte, Schönbeck, Schörling, Schött, Sedvall, Seger, Segerslätt, Segerström, Segerståhl, Sehested, Seidelin, Seiholtz, Sejersen, Sejoe, Selberg, Selien, Selin, Selldén, Sendrup, Sevedsson, Severin, Severin Borg, Sidström, Siegumfeldt, Sifverdotter, Sigfridsson, Sigurd, Sigvardsdotter, Silfverberg, Silfverhjelm, Silfverschiöld, Sillén, Simko, Simonsdatter, Simonsdotter, Simonsen, Simonsson, Singstock, Siunason, Siunnas, Siunnesson, Sizmore, Siöstet, Sjunarsson, Sjunnesdotter, Sjunnesson, Sjöberg, Sjöblom, Sjödahl, Sjögren, Sjöholm, Sjölin, Sjölund, Sjösten, Sjöstrand, Sjöstrand Sandberg, Sjöström, Skafte, Skibsted, Skog, Skogh, Skoglöf, Skov, Skow, Skow, Skåningsdotter, Skåningsson, Slater, Släger, Smagbier, Smidt, Smith, Smoby, Snejstrup, Solheim, Sonasdotter, Sonesdotter, Sonesson, Sonesson-Bögerup, Sonmark, Sorterup, Soter Rodríguez, Speitzer, Spetz, Spleth, Stabel, Stabell, Staffansdotter, Staffansson, Stallknecht, Stampe, Stark, Starke, Steenild, Stefansson, Steinthal, Steiner, Sten, Stenbeck, Stenberg, Stenbom, Stendal, Stender Nielsen, Steneram, Stenhammar, Stenkvist, Stenlund, Stenmark, Stenvall, Stephansson, Stewens, Stibolt, Stierna, Stiernspetz, Stiernstedt, Stisen, Stjernkrantz, Stjernkvist, Stjernspetz, Stochholm, Stocker, Stockfleth, Stoltz, Storck, Stoud, Strand, Strandberg, Strandbygaard, Strandkvist, Strandqvist, Strange, Strangesen, Strannesten, Strelert, Stricharsdotter, Strid, Stridbeck, Stridde, Stridh, Stråhle, Stråhlén, Stråhlenhielm, Stråle, Ström, Strömberg, Strömblad, Styff, Ståhl, Stål, Stång, Suhr, Sundberg, Sundbom, Sunddin, Sundell, Sundén, Sundgren, Sundquist, Sundqvist, Sundstedt, Sundström, Supanick, Suzuki, Svan, Svanberg, Svanborg, Svane, Svaneklink, Svanholm, Svedholm, Sven Pers, Svendsdatter, Svendsen, Svendstorp, Svenningsen, Svenningsson, Svensdotter, Svenson, Svensson, Svensson Angelin, Svensson Backe, Svensson Bergström, Svensson Borgkvist, Svensson Brännare, Svensson Brännberg, Svensson Brännström, Svensson d y, Svensson d ä, Svensson Delin, Svensson Forsberg, Svensson Fransson, Svensson Hertzman, Svensson Hjertz, Svensson Holmberg, Svensson Kellgren, Svensson Källgren, Svensson Ljung, Svensson Malmsten, Svensson Mohlin, Svensson Möller, Svensson Olsson, Svensson Quist, Svensson Qvist, Svensson Revert, Svensson Rosendahl, Svensson Sjösten, Svensson Skog, Svensson Wahlsten, Svänasson, Svänsson, Svärd, Swan, Swensdotter, Swensson, Sånasson, Säflund, Säfvedsson, Sällberg, Sävsten, Söderblom, Södergren, Söderholm, Söderman, Söderstjerna, Söderström, Sörensdotter, Sörensson, Sörensson-Utbult, Taberman, Tafdrup, Tagesson, Tamelander, Tanner, Tapper, Tarm, Tauson, Tell, Tellström, Tengvall, Tern, Tetens, Thaarup, Thalin, Thestrup, Thiel, Thiele, Thielsen, Thiesen, Thillerup, Tholander, Thomasdatter, Thomasdotter, Thomassen, Thomasson, Thomsen, Thomsen, Thorbjörnsson, Thormansdotter, Thormarck, Thorsberg, Thorsdotter, Thorsell, Thorsen, Thorsson, Thorzén, Thostesson, Thuesdotter, Thuesen, Thulin, Thunström, Thunvall, Thuresdotter, Thuvesson, Thygesdatter, Thörning, Tibemo, Tietz, Tillheden, Tillisch, Tillrooth, Tilly, Timmermann, Tinder, Tinggård, Tjalve, Tjernström, Tobiasson, Toivasdotter Gustafsson, Toldberg, Tolerus, Toll, Tollesdotter, Tollesson, Tomasdotter Friberg, Tomasson, Toomaru, Torbjörnsson, Toresdotter, Torgersdotter, Torgersson, Torgersson Malmgren, Torjesdatter, Torkelsdotter, Torling, Torp, Torsdotter, Torslov, Torsson, Torstensdotter, Torstensson, Tostensdotter, Tostensson, Trana, Tranberg, Tranfeldt, Traustedt, Travis, Troedsdotter, Troedsson, Troedsson Cedergren, Trolle, Truedsdotter, Truedsson, Trulsdotter, Trulsson, Trulsson Otterstedt, Tuesdotter, Tufvasdotter, Tufvesdotter, Tufvesson, Tufvesson Thulin, Tuheson, Tulin, Tullberg, Tullesdotter, Tullgren, Tullipan, Tune, Turesson, Tuvasdotter, Tuvesdotter, Tuvesson, Tuvfvesson, Tuxen, Tvede, Tvermoes, Twetowius, Tybjerg, Tyge, Tykesdotter, Tykesson, Tårstensson, Tåstesdotter, Tåstesson, Tönnesdotter, Törner, Törnquist, Udsen, Udsole, Uf, Uhrman, Uldall, Uldriksdatter, Ulfsax, Ulrich, Ulrichsdatter, Undahl, Unger, Unna, Ussing, Utbult, Uusitalo, Vahlholm, Vahlquist, Vaksjö, Valeriano, Valeriano Palau, Valeriano Weinschenck, Vallenstam, Vallin, Vallström, Valter, van de Velde, Van Der Linden, van der Schaft, Vanlith, Vedel, Vejby-Christensen, Velin, Vendel, Vennborg, Verner-Carlsson, Vester, Vesterberg, Vesterby, Vestergaard, Vesterlund, Vestman, Vetterberg, Vetterström, Viale, Viberg, Victor, Vidén, Vik, Vikberg, Viklund, Vikman, Vikström, Viktorsson, Vilhelmsen, Vilhelmsson, Villman, Vinstedt, Vinther, Visser, Voigt, Voldmester, Volkersen, von Arenstorff, von Barnekow, von Brandes, von Deer, von Degen, von Grabmayr-Angerheim, von Halle, von Holstein, von Holstein af Fürstenberg, von Holtzmann, von Kauffmann, von Knorre, von Kreitz, von Krogh, von Köller, von Lepel, von Magius, von Merbitz, von Otter, von Platen, von Pultz, von Quanten, von Schantz, von Schinckel, von Staffeldt, von Stolting, von Westen, von Wouwern, von Würtzen, von Zeipel, Vontobel, Voogd, Värn, Wadén, Waern-Leffler, Wahlberg, Wahlgren, Wahlsten, Wahlström, Wahlund, Wahren, Waldemarsson, Waleru, Walker, Wallander, Wallander Karlsson, Wallberg, Wallbom, Wallén, Wallenius, Wallenius Lundgren, Wallentinsson, Wallersteen, Wallin, Wallius, Wallmark, Wallström, Walter, Waltersson Spanier, Wandborg, Warde, Warg, Warming, Warrer, Wartberg, Wassler, Wasteson, Watt, Way, Wedell-Wedellsborg, Wedseltoft, Weed, Wegener, Weibull, Weiland, Weimard, Weinschenck, Weinschenck Benítez, Weinschenck Campos, Weinschenck de Armas, Weinschenck González, Weinschenck Jordán, Weinschenck López, Weinschenck Morales, Weinschenck Perez, Weinschenck Soter, Welander, Welding, Welinder, Wellnert, Wendel, Wendelbo-Madsen, Wendin, Wendt, Wennberg, Wennborg, Wenström, Werlin Olsson, Wernebäck, Werner, Wernersdatter, Wers, Wessberg, Wesselsdotter, Wessman, Westberg, Wester, Westerberg, Westerblad, Westerdahl, Westergren, Westerlund, Westermark, Westin, Westling, Weston, Wettergreen, Wettergren, Wetterstrand, Weyde, Wiberg, Wickenberg, Wicklund, Wicklund Pihlström, Wickström, Widding, Widér, Widerberg, Widestrand, Widgren, Wifesson, Wifvesdotter, Wifvesson, Wiinstedt, Wik, Wikberg, Wiklund, Wikman, Wikström, Wilckens, Wilde, Wildermuth, Wilhelmsson, Willadsen, Willander, Willerup, Wilmenius, Winberg, Winblad, Wingenblixt, Winkler, Winstedt, Winter, Winters, Winther, Wisén, Wismer, Wissén, Wistedt, Wistedt Vetterström, Witte, Wodstrup, Wohlgemuht, Wolff, Wolff-Sneedorf, Wolkersen, Worm, Wormslev, Wretman, Wulff, Wåhlberg, Wållin, Wärn, Wästeson, Ydström, Ygberg, Yhl, Ytterberg, Zachariassen, Zachariasson, Zachau, Zachrisson, Zackariasdotter, Zackariasson, Zackow, Zackrisson, Zakrisdotter, Zakrisson, Zederin, Zetterberg, Zetterman, Zetterström, Zewde, Ziemer, Ziervogel, Ziethen, Zilo, Zimmermann, Zinck, Åberg, Åbom, Ågesdotter, Ågesson, Ågren, Ågårdh, Åhrberg, Åkasdotter, Åkason, Åkasson, Åkerberg, Åkerblom, Åkerlund, Åkerman, Åkerström, Åkesdotter, Åkeson, Åkesson, Åkesson, Åkesson Falkman, Åkesson Lindqvist, Åkesson Thulin, Åman, Åradsdotter, Åradsson, Årman, Åström, Äskels, Öberg, Öberg Nlsson, Öfverlund, Ögren, Öhlund, Öhman, Öhrman, Öjeberg, Ölund, Öman, Önnersdotter, Önnerson, Önnersson, Örtberg, Örtegren, Öst, Östberg, Östensdotter, Östensson, Österberg, Östergren, Österlund, Östgren, Östlund, Östman],\n  female: [Aagesdatter, Aarestrup, Aasen, Abelsen, Abildgaard, Abrahamsdotter, Abrahamsen, Abrahamsson, Abramsdotter Brännström, Achton, Adamsson, Adersson Almertz, Adolfsson, Adtzarsdotter, Adtzarsen, Adtzersdotter, Adtzerson, Adtzersson, Adtzersson Forsström, Adtzersson Rug, af Forsell, af Ström, Agelmo, Agerup, Aggerup, Agner, Ahl, Ahlberg, Ahlbin, Ahlbom, Ahlin, Ahlstedt, Ahlström, Ahnfeldt, Albrechtsson, Aldewelt, Aldrin, Alexandersdotter, Alexandersson, Alfredsson, Allesen, Allesen Bunkeflod, Allesen de Fine Bunkeflod, Allesen-Vernö, Allison, Almén, Almgren, Almqvist, Alrom, Alsén, Alteresius, Ancher, Anchersen, Ancker, Anderberg, Anderdotter, Anders, Andersdatter, Andersdotter, Andersdotter, Andersdotter Andersson, Andersdotter Bager, Andersdotter Lundberg, Andersen, Anderson, Andersson, Andersson Ahl, Andersson Anderberg, Andersson Anderström, Andersson Berglund, Andersson Bock, Andersson Boström, Andersson Bränn, Andersson Ekdahl, Andersson Eklund, Andersson Fastberg, Andersson Fridlund, Andersson From, Andersson Granat, Andersson Haeffner, Andersson Hagelin, Andersson Hejde, Andersson Hjälte, Andersson Lind, Andersson Lindqvist, Andersson Lindström, Andersson Lundström, Andersson Odhnoff, Andersson Olin, Andersson Rehn, Andersson Sandberg, Andersson Sjöström, Andersson Skog, Andersson Strand, Andersson Törne, Andersson Wikman, Andersson Winberg, Andersson Östman, Andesen, Andrassy, Andreasdatter, Andreasdotter, Andreasen, Andreasson, Angel, Angelberg, Anthon, Appelmark, Arctander, Arelsson, Arendorf, Arendtson, Arent, Arentsdatter, Arildsdotter, Armfelt, Arnander, Aronsson, Arosenius, Arvidsdotter, Arvidsson, Ascanius, Asisef, Askulin, Asmundsdotter, Asmundsson, Asmunsson, Asmussen, Asproth, Assarsdotter, Assarsson, Assarsson Åkerman, Assersdotter, Assersson, Assmundsson, Aubert, Augustin, Augustsdotter, Aulander, Avander, Axell, Axelsdotter, Axelson, Axelsson, Baark, Bach, Bache, Bachmann, Backe, Backlund, Backman, Backström, Baeckström, Bager, Bagger, Bahnson, Bang, Bangert, Barck, Barfod, Barfoed, Barfred, Barlit, Bartholdson, Barting, Barting Haeffner, Barzen, Basballe, Bathe, Battus, Baumann, Baumgarten, Bay, Bech, Beck, Becker, Beckmann, Beckwith-Lohmeyer, Bemarell, Benander, Bencke, Bendiksdatter, Bendz, Benedictson, Benedikt, Bengtsdotter, Bengtsdotter Hejde, Bengtsdotter Spanier, Bengtsson, Bengtsson Bergfors, Bengtsson Björk, Bengtsson Frost, Bengtsson Hejde, Bengtsson Korp, Bengtsson Lindén, Bengtsson Ljungqvist, Bengtsson Lundgren, Bengtsson Rudolf, Bengtsson Spanier, Bengtsson Wallersteen, Bengtsson Öst, Bengtström, Benjaminsdotter, Bentsen, Bentzen, Bentzien, Bentzon, Benzer, Benzon, Ber, Bercher, Berendt, Berg, Bergdahl, Bergdal, Bergeld, Bergelin, Bergencrona, Bergendal, Bergendorff, Bergenenhammer, Bergenfeldt, Bergeschou, Bergfors, Berggreen, Berggren, Berghman, Bergkvist, Berglund, Bergman, Bergner, Bergquist, Bergqvist, Bergstedt, Bergsten, Bergstrand, Bergstrom, Bergström, Bergvall, Berlin, Berndtsson, Bernhardsdotter, Bernhardsson, Bernström, Berntsdotter, Berntsson, Berntsson Berg, Berregaard, Bertelsdatter, Bertelsdatter, Bertelsdotter, Bertelsen, Bertelsson, Bertilsson, Bertle, Beutner, Bianco Boeck, Bie, Bieragger, Bierg, Bierum, Biilmann, Bild, Bilde, Bildt, Bill, Billabong, Billabong, Billberg, Billbergh, Bille, Bille-Brahe af Svanholm, Billenberg, Billgren, Billing, Billman, Billström, Billström Nilsdotter, Bilsted, Birch, Birck, Birkedal, Bisserup, Bisted, Biörnsson, Bjelkström, Bjerg, Bjerger, Bjerring, Bjushed, Björk, Björklund, Björkman, Björnberg, Björner, Blad, Bladh, Bladlund, Blaylock, Blegvad, Blicher, Blichfeldt, Blitzén, Blix, Blixt, Bloch, Blom, Blomberg, Blomkvist, Blomqvist, Blomsterberg, Blomsterqvist, Blomstrand, Blume, Blücher, Bock, Bodemayer, Bodinsson, Bogren, Bohle, Bohman, Bohn, Boijsen, Bokelund, Bokstad, Bolin, Bolmeér, Boman, Bonde, Bondesdotter, Bondesson, Bonne, Bonnevie, Bonnevier, Bonskog, Boosdotter, Borberg, Borelli, Borg, Borgelin, Borggren, Borgh, Borgkvist, Borglin, Borgman, Borgqvist, Borgström, Bornemann, Borreschmidt, Borthig, Bosdotter, Boström, Both, Botvidsson, Bovin, Boyesen, Boysen, Brahe, Brammer, Bramsen, Brandling, Brandt, Brangstrup, Branth, Branting, Branting, Brask, Brauer, Braun, Braunstein, Bredal, Breegaard, Bregendahl, Brehmer, Bremer, Brieger, Brilioth, Bringentoff, Brink, Brix, Broch, Brock, Brodersen, Broge, Brogren, Brolin, Brolund, Broman, Broomé, Brorsdotter, Brorson, Brorsson, Bruce, Brumberg, Brun, Brunsson, Bruun, Brüdigam, Brÿgger, Bryngelsson, Bryngelsson Bjushed, Bryngelsson Jardesten, Bryngelsson Ryberg, Brysting, Brytz, Brännström, Buch, Buchhave, Buchwald, Bugge, Bull, Bulow, Bunkeflod, Burmaister, Burman, Burmeister, Burss, Burvall, Busk-Jepsen, Busse, Bügler, Bützow, Bång, Bäck, Bäckström, Bängts, Börgesson Law, Börjasson, Börjesson, Callmer, Calow, Cammermeyer, Campos Valdés, Candelin, Caradja, Carlheim, Carlheim-Gyllenskiöld, Carlsdotter, Carlsdotter Eriksson, Carlsen, Carlsson, Carlsson Bager, Carlsson Brandstad, Carlsson Cagéll, Carlsson Dahlberg, Carlsson Dahlqvist, Carlsson Hallberg, Carlsson Karlzén, Carlsson Landén, Carlsson Listerberg, Carlsson Thorsberg, Carlsson Thulin, Carlsson von Magius, Carlsson Öberg, Carlström, Carr, Caspersson, Cederberg, Cederholm, Cederlund, Challamell, Charleville, Charling, Charpentier, Charr, Chaura Deumacan, Chenoweth, Chirkova, Christell, Christensdatter, Christensdotter, Christensen, Christensen, Christensen Keitt, Christensen Snejstrup, Christensson, Christensson Lundstätt, Christersson, Christiansdatter, Christiansdotter, Christiansen, Christiansson, Christoffersdatter, Christoffersdotter, Christoffersen, Christoffersson, Christophersson, Claesson, Clase, Clason Lund, Classén, Classon, Clausen, Clausson, Clemedsson, Clemens, Clemensdatter, Clemensson, Clementsdotter, Collberg, Collberg Jarke, Colliander, Collin, Colonna de Leca, Condé, Cordes, Cornelius, Corneliusdotter, Cortsen, Covot, Cramer, Crawford, Cremon, Cristensen, Crona, Cronberg, Crone, Cronholm, Cronlund, Cronqvist, Cruys, Dahl, Dahlberg, Dahlbom, Dahlgren, Dahlin, Dahlkvist, Dahlman, Dahlquist, Dahlqvist, Dahlström, Dahnsson, Dahqvist, Dajrtendich, Dalberg, Dalgren, Dalman, Dam, Damm, Damm Jensen, Damm-Pedersen, Danelius, Danielsdotter, Danielsen, Danielsson, Danielsson Hartelius, Dankwardt-Lilieström, Darell, Darre, Daun, Davidson, Davidsson, de Armas Ramírez, de Bang, de Bruce, de Ferry, de Fine, de Fine Licht, de Fine Olivarius, de Hemmer, de la Cour, de Neergaard, Degerman, Degermark, Deichmann, Demidoff, Demuth, Dessau, Díaz, Dietrich, Dinesdatter, Dinesen, Dobson, Dochedahl, Dochedahl-Petersen, Dockendorf, Dormé, Dorn, Dornonville de la Cour, Doslic, Drechsel, Dressel, Drews, Dreyer, du Bois, du Plesis De Richelieu, Dunér, Duus, Duval, Duvander, Dyberg, Dyker, Dyrbye, Dürkopp, Dürr, Ebbasdotter, Ebbesen, Ebbeson, Ebbesson, Ebling, Edberg, Edelberg, Edén, Edholm, Edin, Edling, Edvardsdotter, Edvardsson, Edwardsson, Eek, Eftevaag, Egeberg, Ehlers, Ehrning, Ek, Ekberg, Ekblad, Ekbladh, Ekblom, Ekborg, Ekdahl, Ekelund, Ekeman, Ekenberg, Ekenman, Ekeroth, Eklund, Eklöf, Eklöv, Ekman, Ekstrand, Ekström, Ekvall, Elam, Elfström, Elg, Eliadotter, Eliasdotter, Eliasson, Eliasson Lindell, Elke, Ellberg, Ellefsen, Ellertsson, Elling, Ellington, Elmén, Elmquist, Elofsdotter, Elofsson, Eman, Emanuelsdotter, Emanuelsson, Emanuelsson Ekblad, Emborg, Enberg, Eneberg, Enevaldsson, Engberg, Engblom, Engdahl, Engler, Englund, Engman, Engqvist, Engstedt, Engstrand, Engström, Engvall, Enkvist, Erhardi, Erichsen, Erichson, Erichsson Kihl, Ericksson, Ericsdotter, Ericsson, Eriksdatter, Eriksdotter, Eriksen, Erikson, Eriksson, Eriksson Energren, Eriksson Hedquist, Eriksson Hultberg, Eriksson Krycker, Eriksson Åman, Erlandsdotter, Erlandsson, Erlandsson, Erlström, Ernstdotter, Ernvall, Ersdotter, Ersson, Ersson Lindström, Ertiksson, Esbjörnsdotter, Eskelsson, Eskildsdotter, Eskilsdotter, Eskilsson, Estensen, Estoesta, Eurenius, Evald, Everlöf, Eyermann, Fabricius, Fader, Faederholdt, Fagerberg, Fahlgren, Fahlman, Fahlstedt, Faith, Falck, Falk, Falkenberg, Falkvall, Fastberg, Faurschou, Feilberg, Feiniger, Feininger, Fensmark, Ferngren, Fernström, Ferrer, Ferrer Weinschenck, Ferslev, Fibiger, Fick, Fiedler, Filipson, Findelius, Finman, Finnman, Fjällström, Flaméhn, Fledelius, Fleihan, Flensburg, Flink, Flintzberg, Flodman, Florinsky, Flygare, Flögt, Fock, Fogelberg, Fogh, Fors, Forsberg, Forselius, Forsell, Forslund, Forsman, Forssén, Frandsdatter, Frandsen, Frank, Franke, Fransson, Frantzdatter, Franzén, Frederiksen, Fredriksdotter, Fredriksson, Freij, Frej, Frese, Friberg, Friberg-Ekberg, Fribert, Frid, Friese, Friis, Frimodt, Frisendahl, Frisk, Frisk \"Frisch\", Fristedt, Fritiof, From, Frosetter, Frost, Fröberg, Fröjd, Frönell, Fugl, Fuglede, Fuller, Funch, Füchslin, Fyhr, Fynboe, Fält, Fältström, Gabrielsdotter, Gabrielsson, Gad, Gadamer, Gade, Galle, Gamél, Gammeltoft, Garland Elam, Garmann, Gasslander, Gedeborg, Gehrt, Geijer, Gelin, Genefke, Genschow, Georgsdotter, Gerberg, Gerdtsdotter, Gerdtsson, Gergi, Gergi Lundstedt, Germansen, Germundsson, Giedde, Gielff, Giessing, Gilde, Gillberg, Gislander, Gjedde, Gjertsen, Gjuditz, Glahn, Glerup, Glud, Goelitz, Gommesen, González Más, González Pena, Gorra, Gorra Weinschenck, Gottlander, Graf, Grahn, Gran, Granberg, Granholm, Grankvist, Granlund, Granqvist, Granstedt, Granström, Green, Greisbach, Gren, Greve, Grip, Grubbe, Grundeis, Grundström, Grut, Grähs, Grönkvist, Grönquist, Grönvall, Grönwall, Gudfastersen, Gudmonsdotter, Gudmundsdotter, Gudmundsson, Gudmunsson, Guldberg, Guldbrandsen, Gullberg, Gullqvist, Gullstrand, Gulstad, Gultzau, Gumme Pers, Gummesen, Gummesson, Gummesson Lindkvist, Gunarsdotter, Gunnarsdotter, Gunnarsson, Gunnér, Guntell, Guskasson, Gussarsson, Gustafsdotter, Gustafsdotter Lindblom, Gustafsdotter Möller, Gustafsdotter Spanier, Gustafsson, Gustafsson Edling, Gustafsson Fernström, Gustafsson Spanier, Gustafsson Ulfsax, Gustavsdotter, Gustavsson, Gustavsson Tillrooth, Gyldencrantz, Gylding, Gyllén, Günther, Gärdehall, Göransdotter, Göransson, Görgensen, Götz, Haagen, Haastrup, Haeffner, Haeffner, Haeffner-Flodman, Hafström, Hagblom, Hagefeldt, Hagelin, Hagemann, Hagéus, Haggärde, Haglund, Hagman, Hagström, Hahn, Hake, Halbert, Haleby, Hall, Halland, Hallberg, Halleby, Hallenborg, Haller, Hallgrímsdóttir, Hallin, Halling, Hallström, Hals, Halvarsson, Halved, Halvorsen, Hamilton, Hamlett, Hamlin, Hammar, Hammarberg, Hammarbäck, Hammarlund, Hammarqvist, Hancke, Hansdotter, Hansdotter Bunkeflod, Hansdotter de Fine, Hansen, Hansen, Hansen Borntoft, Hansen Riber, Hansesdotter, Hanson, Hansson, Hansson Dalberg, Hansson Engström, Hansson Eriksson, Hansson Lindberg, Hansson Lundberg, Hansson Lundstedt, Hansson Löf, Hansson Roth, Hansson Sjölin, Hansson Spanier, Hansson-Dahl, Haraldsdotter, Haraldsson, Harboe, Harder, Hart, Hartelius, Hartwig, Hartwigsson, Hartzberg, Hasfeldt, Haslund, Hasselquist, Hasselqvist, Hastrup, Hatting, Hauch, Hazell, Hecht, Heckscher, Hecksher, Hector, Hedberg, Hedberg \"Leander\", Hedblom, Hedeberg, Hedeby, Hedeman, Hedenskog, Hedenstierna, Hedkvist, Hedling, Hedlund, Hedman, Hedquist, Hedqvist, Hedström, Hedvalls, Hedvist, Heering, Héhn, Heiberg, Heiberg Ipsen, Heidenberg, Heikel, Heitmann, Hejde, Hejlesen, Hektor, Helander, Helgesson, Heljeberg, Heljesdotter, Heljesson, Hellberg, Hellén, Hellgren, Hellman, Hellstadius, Hellström, Helmer, Hemberg, Henckel, Hendriksson, Henningsen, Henrichsen, Henrichsson, Henricsdotter, Henriksdotter, Henriksen, Henriksson, Henriksson Dalberg, Henriksson Hallberg, Henriksson Hyllén, Henriksson Persson, Henrysson, Herazeck, Herder, Herforth, Herlman, Hermansdotter, Hermansen, Hermansson, Hermodsson, Hern, Herrman, Herskind, Hersvall, Hertz, Hertzberg, Hertzman, Herztler, Hessellund, Hesselman, Hetting, Heuch, Heurlin, Hieronimusdatter, Hieronimussen, Higgens, Hilding, Hillborg, Hillman, Hindrichsdotter, Hindrichsson, Hindricsdotter, Hingtsasdotter, Hinrichsen, Hinsasdotter, Hinsasson, Hinsesson, Hjelm, Hjelmdrop, Hjort, Hjorth, Hjorthagen, Hjortsberg, Hjuler, Hober, Hoff, Hoff Hansen, Hoffensberg, Hoffman, Hoffmann, Hofsteter, Holbech, Holbek, Holgersdotter, Holgersen, Holgersson, Holland, Holm, Holmberg, Holmblad, Holmgren, Holmkvist, Holmlund, Holmquist, Holmqvist, Holmstedt, Holmström, Holst, Holst Kjeldsen, Holtzbro, Hoppe, Hopper, Horn, Horneman, Hornemann, Hortman, Hostrup Schultz, Hougaard, Hoversdatter, How, Howitz, Hugosson, Huhne, Hult, Hultberg, Hultén, Hultgren, Hultin, Hultman, Hurtig, Huss, Hutfeld, Huth, Hvid, Hviid, Hwasser, Hydfeldt, Hyllested, Hüttmann, Hågensdotter, Håkansdotter, Håkansson, Hård af Segerstad, Häger, Hägerman, Hägg, Hägglund, Hällberg, Häller, Hällgren, Häsler, Högberg, Höglund, Högrelius, Hörberg, Hörjesson, Hörngren, I Kroen, Ifvarsson, Ifversson, Ingelsdotter, Ingelson, Ingelsson, Ingelsten, Ingemansson, Ingemarsdotter, Ingemarsson, Ingerslev, Ingesdotter, Ingesson, Ingram, Ingvarsdotter, Ingvarsson, Ingvartsen, Ipsdatter, Ipsen, Irestam, Irmlev, Isaksdotter, Isaksson, Isenberg, Isibarth, Israel, Ivarsdotter, Ivarsson, Iversen, Jacksson, Jacobi, Jacobsdatter, Jacobsdotter, Jacobsen, Jacobsson, Jahn, Jahnsson, Jakobsdotter, Jakobsson, Jakobsson, Jannesson, Jansdotter, Jansdotter Öman, Jansen, Jansson, Jansson Eriksson, Jansson Haeffner, Jarl, Jarle, Jarnestad, Jensdatter, Jensdatter, Jensdatter, Jensen, Jensen Lang, Jensen Vestergaard, Jensenius, Jensön, Jeppasdotter, Jeppasson, Jeppesdotter, Jeppesen, Jeppsdotter, Jeppsson, Jeppsson Forsberg, Jepsdotter, Jepsson, Jernberg, Jersild, Jespersen, Jessen, Jochumsen, Jockumsen, Joensdotter, Joensson, Johannesdotter, Johannesson, Johannesson Nordell, Johannesson Winberg, Johannisdotter, Johannisson, Johansdotter, Johansdotter Palm, Johansdotter Sundell, Johansen, Johansson, Johansson Bergeld, Johansson Bergenfeldt, Johansson Burman, Johansson Einald, Johansson Ekström, Johansson Frönell, Johansson Granberg, Johansson Hagberg, Johansson Hedquist, Johansson Holmgren, Johansson Jarlestam, Johansson Killberg, Johansson Lindberg, Johansson Malmqvist, Johansson Marklund, Johansson Persson, Johansson Sjöberg, Johansson Sundqvist, Johansson Åhl, Johansson Öberg, Johansson Öst, Johnsdotter, Johnson, Johnsson, Johnsson Friberg, Jonasdotter, Jonasdotter Nordlund, Jonasson, Jonasson Norlund, Jonasson Sandstedt, Jonasson Skoglund, Jonelind, Jonsas, Jonsdotter, Jonsen, Jonson, Jonsson, Jonsson Gärefors, Jonsson Lindal, Jonsson Nordlund, Jonsson Söderblom, Jordán Suri, Joseph, Josjö, Juel, Juhl, Juhlin, Julin, Juncker, Jungbeck, Juringius, Just, Just-Nielsen, Justesen, Juul, Jürgens, Jäderström, Jöns, Jönsdotter, Jönsdotter Ekström, Jönsdotter Hagblom, Jönsdotter Lindström, Jönsson, Jönsson Bjelland, Jönsson Bjerborn, Jönsson Björk, Jönsson Brandt, Jönsson Collberg, Jönsson Ekström, Jönsson Flenner, Jönsson Grevstad, Jönsson Haak, Jönsson Hektor, Jönsson Holmqvist, Jönsson Hultgren, Jönsson Kristoffersson, Jönsson Murberg, Jönsson Möllergren, Jönsson Nilsson, Jönsson Nåvall, Jönsson Rosander, Jönsson Rosdahl, Jönsson Rosendahl, Jönsson Rydinger, Jönsson Stenberg, Jönsson Stjernfeldt, Jönsson Svan, Jönsson-Lörd, Jörans, Jöransdotter, Jöransson, Jörgensen Wain, Jörgonson, Kaalund, Kaas, Kaas af Mur, Kabell, Kafle, Kahn, Kall, Kalldin, Kallenberg, Kallmer, Kames, Kamf, Kamp, Kamph, Kampmann, Kapferer, Karadja, Karadja pascha, Karlbeck, Karlbäck, Karlsdotter, Karlsdotter, Karlsson, Karlsson Listerberg, Karlsson Nilsson, Karlsson Rabe, Karlsten, Karström, Kasparsdotter, Kastensdotter, Kastnyr, Keil, Kelfve, Kellgren, Kellmodin, Kenne, Kieldsdatter, Kieldsen, Kieldsson Lilja, Kierbye, Kiersgaard, Kierulf, Kihlmark, Kinberg, Kinch, Kipp, Kirkeby, Kirketerp, Kirschner, Kisbye, Kjeldahl, Kjelder, Kjeldsdatter, Kjeldsen, Kjeldsen Weinschenck, Kjellberg, Kjellerup, Kjellgren, Kjellin, Kjellman, Kjellsson, Kjerstensson, Kjerulf, Kjerulff, Klang, Klang Perrsdotter, Klang Persdotter, Klang Persson, Klarin, Klassén, Klassén Sundström, Klaug, Klausch, Klefelt, Klein, Kleinsorg, Klemedsson, Klensorg, Klerebladh, Klim, Kling, Klingenberg, Klinterot, Klog, Klohs, Klohs Rambech, Knopf, Knudsdatter, Knudtzen, Knudtzon, Knutsdotter, Knutson, Knutsson, Kobb, Koch, Kock, Koefoed, Kofod, Kofoed, Kohrtz, Kojima, Koll, Kollerup, Kolòdkin, Komstedt, Korneliusdotter, Korneliusson, Krabbe, Kraft, Krafve, Kragballe, Kragh, Kramer, Krapf, Krath, Krebs, Krehmer, Krieger, Krikström, Kristensdotter, Kristensen, Kristensson, Kristiansdotter, Kristiansdotter Wikman, Kristiansen, Kristiansson, Kristiansson Carlsson, Kristoffersdotter, Kristoffersen, Kristoffersson, Kristoffersson Dahlqvist, Kristoffersson Rosberg, Kristoffersson Syrén, Kroch, Krog, Krog, Krog-Meyer, Krogh, Kron, Kronkvist, Kronquist, Kronqvist, Kronvall, Kruse, Kulldorff, Kuntze, Kuylenstierna, Kuylenstjerna, Kvist, Kÿkler Kjökler, Kynde, Küttner, Kåge, Kåhre, Käll, Källman, Källström, Känne, Kölichen, Köller, la Cour, La Fleur, Lacey, Lager Malmberg, Lagerbielke, Lagerlöf, Lagerqvist, Lageson, Lagesson, Laggare, Landberg, Landby, Landén, Landgren, Landström, Langballe, Lange, Langergaard, Langner, Langsted, Lanng, Lans, Lanz, Larpent, Lars, Larsdatter, Larsdotter, Larsdotter DISBYT, Larsdotter Fält, Larsdotter Lundstedt, Larsen, Larsson, Larsson Blom, Larsson Bonde, Larsson Borgqvist, Larsson Callmer, Larsson Fält, Larsson Holm, Larsson Holst, Larsson Levin, Larsson Lindqvist, Larsson Lundstedt, Larsson Nordlund, Larsson Nyström, Larsson Rosén, Larsson Sjögren, Larsson Strand, Larsson Ström, Larsson Willander, Larsson Åvall, Lassedotter, Lassen, Lassesdotter, Lassesson, Lasson, Laub, Lauersen, Laurberg, Laurell, Lauritsdatter, Lauritsen, Lauritzen, Laursdatter, Laursen, Laursen Kuppert, Laustsen, Lavesdotter, Lavesson, Ledin, Lehndal ,Lehman, Lejon, Lem, Lemoine, Lennqvist, Lentz, Lentz Rée, León González, León Weinschenck, Lerche, Lesler, Leth, Lett, Leufvenmark, Levin, Liberg, Licht, Lidell, Lidén, Lidfeldt, Lidman, Lidström, Liebe, Liebert, Liebmann, Liedholm, Lihme, Lilienkampff, Lilja, Liljeblad, Liljegren, Liljeqvist, Lillelund, Lillienschiold, Lilliesköld, Limskilde, Lincoln Rosén, Lind, Lindahl, Lindal, Lindau, Lindbeck, Lindberg, Lindberg, Lindberg Persson, Lindblad, Lindborg, Lindell, Lindelof Olsen, Lindén, Lindenhäll, Linder, Linderström, Lindfors, Lindgreen, Lindgren, Lindh, Lindhardt, Lindholm, Lindkvist, Lindquist, Lindqvist, Lindros, Lindroth, Lindskog, Lindstén, Lindström, Lindström Rosendal, Lindvall, Lindwall, Ling, Linnet, Lisborg, Lithovia, Litz, Ljung, Ljungberg, Ljungdahl, Ljunggren, Ljungh, Ljungquist, Ljungqvist, Ljungström, Lodin, Loinsworth, Loir, López Blanco, Lorensen, Lorensson, Lorentsson, Lostedt, Lovén, Lovesson, Ludvigsdotter, Ludvigsson, Lueders, Lund, Lundahl, Lundberg, Lundberg Blücher, Lundberg Lindgren, Lundblad, Lundborg, Lundby, Lundbye, Lundgren, Lundholm, Lundin, Lundkvist, Lundmark, Lundquist, Lundqvist, Lundstedt, Lundstedt Zewde, Lundstén, Lundström, Lundvall, Lundwall, Luplau, Lustig Stångberg, Luther, Lyche, Lydersen, Lydichsen, Lyngaae, Lynge, Lütken, Lützen, Långdahl, Långström, Läbom, Lännquist, Löf, Löfdahl, Löfgren, Löfquist, Löfqvist, Löfstedt, Löfström, Löfvall, Lönbom, Lönbom Lundbom, Lönn, Lönnquist, Lönnqvist, Lönroth, Lövgren, Löwenadler, Löwstedt, Maale, Madsdatter, Madsen, Madsen Magius, Magius zu Horneburg, Magnidotter, Magnusdotter, Magnusdotter Magni, Magnusson, Magnusson Gullqvist, Magnusson Kronqvist, Magnusson Plan, Mahr, Mahrt, Majer, Malling, Malm, Malmberg, Malmborg, Malmgren, Malmquist, Malmqvist, Malmros, Malmrosdotter, Malmsten, Malmström, Malthe-Bruun, Mangor, Mannesdotter, Mannesson, Mantzius, Marceau, Marcel, Marcel Weinschenck, Maribo, Mark, Marklund, Markman, Markström, Markusdatter, Markvang, Marqurd, Marqvardt, Mars, Marsala, Marstrand, Martin Packness, Martinsson, Mathiasdotter, Mathiasen, Mathsson, Matsdotter, Matsson, Mattel, Mattiasson, Mattisdotter, Mattisson, Mattsdotter, Mattsdotter Sjöblom, Mattsson, Mattsson Lindnert, Mattsson-Mårn, Matzau, Matzdotter, Max, Medin, Meidell, Meier, Meigård, Meijb, Meijer, Meisler, Meissner, Melboe, Melén, Melin, Mellberg, Merbitz, Mertz, Mertz Blume, Mesler, Meulengracht, Meurs, Meyer, Michaelsdotter, Michelsdotter, Michelsen, Michelson, Michelsson, Mickelsdotter, Mickelsson, Middelthon, Mikkelborg, Mikkelsdatter, Mikkelsen, Mintschenko, Mitchell, Moberg, Modée, Modéer, Modin, Mogensdatter, Mogensen, Mohlin, Mohr, Molander, Molin, Mollberg, Mollerup, Moltke af Morales, Morales González, Morales Weinschenck, Mortensdatter, Mortensen, Morthorst, Morville, Moses, Motzfeldt, Mourier, Mulder, Mumme, Munch, Munck, Mundt-Petersen, Munk, Munthe, Myers, Mygind, Müller, Müllertz, Mynster, Münter, Myre, Måns Pers, Månsdotter, Månsson, Månsson Dahlgren, Månsson Holmgren, Månsson Klingenberg, Månsson Ljungstrand, Månsson Lundström, Mårtens, Mårtensdotter, Mårtensson, Möller, Möllergren, Möllerstedt, Nagel, Nansen, Nathan, Neckelmann, Nedergaard, Neergaard, Nej, Nelsdotter, Nelson, Nelsson, Nerman, Nero, Nesselqvist, Nettzén, Netzén, Neu, Neuenkirchen, Neuman, Nevander, Nexmar, Nicklasson Kilberg, Niclasdotter, Niclasson, Nielsdatter, Nielsdotter, Nielsen, Nielsen, Nielsen Nielsen Just, Nieuwenhuis, Niklasdotter, Niklasson, Nikolic, Nilén, Nils, Nilsdotter, Nilsdotter, Nilsdotter Boberg, Nilsdotter Lindqvist, Nilsdotter Niwén, Nilsdotter Walters, Nilsdotter Åkerman, Nilssen, Nilsson, Nilsson, Nilsson Ahl, Nilsson Bergqvist, Nilsson Björkman, Nilsson Bokander, Nilsson Engqvist, Nilsson Fransen, Nilsson Friberg, Nilsson Fält, Nilsson Gillén, Nilsson Hagblom, Nilsson Hedeby, Nilsson Holmgren, Nilsson Holmlund, Nilsson Klarin, Nilsson Lilja, Nilsson Lindberg, Nilsson Lindfors, Nilsson Lindgren, Nilsson Lindqvist, Nilsson Lindsjö, Nilsson Lindskog, Nilsson Lörd, Nilsson Melin, Nilsson Nettelbjer, Nilsson Nivén, Nilsson Niwén, Nilsson Petersson, Nilsson Rosenqvist, Nilsson Rydberg, Nilsson Seltir, Nilsson Sten, Nilsson Sundén, Nilsson Thomasson, Nilsson Tilly, Nilsson Vilhelmsson, Nilsson Årman, Niska, Nissen, Nobel, Nohr, Norberg, Nord, Nordahl, Nordberg, Nordborg, Nordell, Nordentoft, Nordgren, Nordholm, Nordin, Nording, Nordlander, Nordling, Nordlund, Nordmark, Nordqvist, Nordstedt, Nordsten, Nordstrand, Nordström, Norgren, Norlander, Norlund, Norrbohm, Norstedt, Norström, Nyberg, Nycander, Nyegaard, Nygren, Nygård, Nyholm, Nykvist, Nylander, Nylin, Nyman, Nyréhn, Nürnberg, Nyström, Näslund, Oberberg, Odhner, Odhnoff, Ogbewe, Ohlasdotter, Ohls, Ohlsdotter, Ohlsson, Ohlsson Malmström, Okänd, Okänt, Olaidotter, Olander, Olander Persson, Olandersson, Olasdotter, Olausdotter, Olausson, Oldenburg, Olesdatter, Olesen, Olin, Olivarius, Olof Pers, Olofsdotter, Olofsdotter, Olofson, Olofson Larsson, Olofsson, Olofsson Bergkvist, Olofsson Bergvall, Olofsson Hedquist, Olofsson Hensy, Olofsson Lindberg, Olofsson Lindberg Hägg, Olofsson Lundgren, Olofsson Nordlund, Olofsson Sandström, Olofsson Sjödal, Olofsson Stenberg, Olofsson Stocker, Olofsson Tengvall, Olofsson Ölund, Olovsdotter, Olovsson, Ols, Olsdatter, Olsdotter, Olsdotter Mattsson, Olsen, Olson, Olson-Carle, Olsson, Olsson Ahlin, Olsson Andonius, Olsson Boberg, Olsson Falk, Olsson Idoff, Olsson Kanér, Olsson Kron, Olsson Lind, Olsson Mattsson, Olsson Murat, Olsson Odervall, Olsson Olin, Olsson Orsmark, Olsson Rothén, Olsson Rydebank, Olsson Segerslätt, Olsson Skog, Olsson Smith, Olsson Thorsberg, Olsson Wedén, Olsson Wendelin, Olsson Wik, Olufdatter, Olufsdatter, Olufsdotter, Olufsen, Olufsson, Oredsdotter, Orsmark, Oscarsson, Oskarsdotter, Ossbahr, Ostenfeld, Otterstedt, Ottosdotter, Ottosson, Overgaard, Ovesen, Packer, Pagander, Pagels, Pahl, Palau, Palmgren, Palmquist, Palmqvist, Paludan, Palvig, Pamp, Park, Parson, Pauli, Paulsdotter, Paulsen, Paulson, Paulsson, Paumen, Pavius, Payngk, Pedersdatter, Pedersdatter, Pedersdatter, Pedersdotter, Pedersen, Pedersen, Pedersen-Holmen, Pehrsdotter, Pehrsson, Pehrsson Ström, Pena, Pena Weinschenck, Per Hans, Perez Martinez, Pers, Persbeck, Persdotter, Persdotter Ek, Persdotter Hinsasdotter, Persdotter Lundström, Persdotter Pålsson, Persdotter Walters, Persdotter Ågårdh, Persson, Persson Ahlström, Persson Ask, Persson Attrup, Persson Billing, Persson Cronsioe, Persson Cronsjö, Persson Dahlgren, Persson Dahlqvist, Persson Ek, Persson Ekberg, Persson Ekstrand, Persson Eld, Persson Engman, Persson Engström, Persson Finman, Persson Fredlund, Persson Grundström, Persson Gryta, Persson Hedlund, Persson Hektor, Persson Henrysson, Persson Holm, Persson Järnkula, Persson Lindström, Persson Lundström, Persson Löfdahl, Persson Löfgren, Persson Malmström, Persson Marklund, Persson Nerman, Persson Nevander, Persson Nordqvist, Persson Pettersson, Persson Pihlström, Persson Pilquist, Persson Rosberg, Persson Rosenlund, Persson Sten, Persson Sundén, Persson Sundqvist, Persson Söderstjerna, Persson Wallin, Persson Wendel, Persson Wicklund, Persson Ågårdh, Peter, Petersdotter, Petersdotter Björklund, Petersdotter Hall, Petersen, Petersen, Petersen Peterson, Petersson, Petri, Pettersdotter, Pettersson, Pettersson Althén, Pettersson Karlsson, Pettersson Mannström, Pettersson Molin, Pettersson Munkert, Pettersson Ohlander, Pettersson Rabe, Pfeiffer, Philipsen, Phillips, Piculell Larsson, Pihl, Pilquist, Pindsfeld, Piper, Pira, Plambeck, Plambeck Borgström, Plan, Plenge, Plesner, Pligt, Plomgren, Plum, Pofvelsen, Pofvelsson, Poleman, Porth, Posfelt, Poulsdatter, Poulsdatter Steenild, Poulsen, Pourtschan, Pousette, Pramberg, Prien, Priergaard, Printz, Prom, Provilo, Prüss, Pryts, Psilander, Pultz, Påhlsdotter, Påhlson, Påhlsson, Påhlsson Falk, Pålsdotter, Pålsson, Pålsson Lindskog, Pålsson Strand, Pährsdotter, Pärsdotter, Pärson, Pärsson, Pärsson Korp, Quist, Qvarnström, Qvist, Qvistgaard, Qvistgård, Raaf, Rabe, Rafn, Rafqvist, Ragnell, Rambech, Ramberg, Ramm, Ramstedt, Ramström, Rank, Rankin, Rasmusdatter, Rasmusdotter, Rasmusen, Rasmussen, Rasmussen, Rasmussen Erasmi, Rasmusson, Rathjen, Rathsack, Ravn, Reckenagel, Redout, Rée, Regnell, Regnér, Rehn, Reidl, Reimer, Reinhold, Reinholtz, Reinold, Renberg, Renlund, Renner, Renström, Resman, Reuss-Lobenstein, Reuterswärd, Reuther, Rexert, Ribbing, Riber, Richert, Riis Johansen, Riisberg, Rindom, Ring, Ringberg, Ringdahl, Ringkvist, Ringquist, Ringqvist, Ringström, Ripperger, Risberg, Ritzén, Rivero González, Rivero Weinschenck, Rode, Rodríguez, Rohde, Rohman, Rohr, Rojas Naranjo, Rojas Weinschenck, Rokström, Romberg, Rommedal, Rosander, Rosberg, Rosdahl, Rosell, Rosén, Rosenberg, Rosendahl, Rosenfeldt, Rosenfelth, Rosengren, Rosenkvist, Rosenlund, Rosenlöf, Rosenqvist, Rosman, Rosqvist, Ross, Rosslin, Rossvik, Rosvall, Roth, Rothe, Rothén, Rova, Rubach, Ruckle, Rudberg, Rudolf, Rudolf Billesjö, Rundberg, Rundfält, Rundgren, Rundquist, Rundqvist, Runestam, Rungren, Runnerström, Rur, Ruth, Ruthberg, Ryberg, Rydberg, Ryde, Ryder, Rydqvist, Rydstrand, Rydström, Rye, Rylander, Rönberg, Rönne, Rönngren Rungren, Rönnkvist, Röring, Rössel, Sabelfelt, Sabelsköld, Sabournin Téllez, Sabroe, Sagnert, Salomonsson, Samuelsdotter, Samuelsen, Samuelsson, Sandahl Harved, Sandberg, Sandell, Sander, Sandgren, Sandin, Sandlund, Sandqvist, Sandrewsky, Sandström, Sassarsson, Sassersdotter, Sassersson, Saur, Savstam, Saxild, Schack, Schadely, Schaumburg-Müller, Scheibe, Schell, Scherman, Schildknecht, Schillström, Schive, Schjerning, Schmeling, Schmidt, Schmigelov, Schnabel, Scholander, Schollin, Schommel, Schou, Schou Kjeldsen, Schrader, Schubart, Schulow, Schultz, Schuylenburg, Schwan, Schwennesen, Schylander, Schytte, Schönbeck, Schörling, Schött, Sedvall, Seger, Segerslätt, Segerström, Segerståhl, Sehested, Seidelin, Seiholtz, Sejersen, Sejoe, Selberg, Selien, Selin, Selldén, Sendrup, Sevedsson, Severin, Severin Borg, Sidström, Siegumfeldt, Sifverdotter, Sigfridsson, Sigurd, Sigvardsdotter, Silfverberg, Silfverhjelm, Silfverschiöld, Sillén, Simko, Simonsdatter, Simonsdotter, Simonsen, Simonsson, Singstock, Siunason, Siunnas, Siunnesson, Sizmore, Siöstet, Sjunarsson, Sjunnesdotter, Sjunnesson, Sjöberg, Sjöblom, Sjödahl, Sjögren, Sjöholm, Sjölin, Sjölund, Sjösten, Sjöstrand, Sjöstrand Sandberg, Sjöström, Skafte, Skibsted, Skog, Skogh, Skoglöf, Skov, Skow, Skow, Skåningsdotter, Skåningsson, Slater, Släger, Smagbier, Smidt, Smith, Smoby, Snejstrup, Solheim, Sonasdotter, Sonesdotter, Sonesson, Sonesson-Bögerup, Sonmark, Sorterup, Soter Rodríguez, Speitzer, Spetz, Spleth, Stabel, Stabell, Staffansdotter, Staffansson, Stallknecht, Stampe, Stark, Starke, Steenild, Stefansson, Steinthal, Steiner, Sten, Stenbeck, Stenberg, Stenbom, Stendal, Stender Nielsen, Steneram, Stenhammar, Stenkvist, Stenlund, Stenmark, Stenvall, Stephansson, Stewens, Stibolt, Stierna, Stiernspetz, Stiernstedt, Stisen, Stjernkrantz, Stjernkvist, Stjernspetz, Stochholm, Stocker, Stockfleth, Stoltz, Storck, Stoud, Strand, Strandberg, Strandbygaard, Strandkvist, Strandqvist, Strange, Strangesen, Strannesten, Strelert, Stricharsdotter, Strid, Stridbeck, Stridde, Stridh, Stråhle, Stråhlén, Stråhlenhielm, Stråle, Ström, Strömberg, Strömblad, Styff, Ståhl, Stål, Stång, Suhr, Sundberg, Sundbom, Sunddin, Sundell, Sundén, Sundgren, Sundquist, Sundqvist, Sundstedt, Sundström, Supanick, Suzuki, Svan, Svanberg, Svanborg, Svane, Svaneklink, Svanholm, Svedholm, Sven Pers, Svendsdatter, Svendsen, Svendstorp, Svenningsen, Svenningsson, Svensdotter, Svenson, Svensson, Svensson Angelin, Svensson Backe, Svensson Bergström, Svensson Borgkvist, Svensson Brännare, Svensson Brännberg, Svensson Brännström, Svensson d y, Svensson d ä, Svensson Delin, Svensson Forsberg, Svensson Fransson, Svensson Hertzman, Svensson Hjertz, Svensson Holmberg, Svensson Kellgren, Svensson Källgren, Svensson Ljung, Svensson Malmsten, Svensson Mohlin, Svensson Möller, Svensson Olsson, Svensson Quist, Svensson Qvist, Svensson Revert, Svensson Rosendahl, Svensson Sjösten, Svensson Skog, Svensson Wahlsten, Svänasson, Svänsson, Svärd, Swan, Swensdotter, Swensson, Sånasson, Säflund, Säfvedsson, Sällberg, Sävsten, Söderblom, Södergren, Söderholm, Söderman, Söderstjerna, Söderström, Sörensdotter, Sörensson, Sörensson-Utbult, Taberman, Tafdrup, Tagesson, Tamelander, Tanner, Tapper, Tarm, Tauson, Tell, Tellström, Tengvall, Tern, Tetens, Thaarup, Thalin, Thestrup, Thiel, Thiele, Thielsen, Thiesen, Thillerup, Tholander, Thomasdatter, Thomasdotter, Thomassen, Thomasson, Thomsen, Thomsen, Thorbjörnsson, Thormansdotter, Thormarck, Thorsberg, Thorsdotter, Thorsell, Thorsen, Thorsson, Thorzén, Thostesson, Thuesdotter, Thuesen, Thulin, Thunström, Thunvall, Thuresdotter, Thuvesson, Thygesdatter, Thörning, Tibemo, Tietz, Tillheden, Tillisch, Tillrooth, Tilly, Timmermann, Tinder, Tinggård, Tjalve, Tjernström, Tobiasson, Toivasdotter Gustafsson, Toldberg, Tolerus, Toll, Tollesdotter, Tollesson, Tomasdotter Friberg, Tomasson, Toomaru, Torbjörnsson, Toresdotter, Torgersdotter, Torgersson, Torgersson Malmgren, Torjesdatter, Torkelsdotter, Torling, Torp, Torsdotter, Torslov, Torsson, Torstensdotter, Torstensson, Tostensdotter, Tostensson, Trana, Tranberg, Tranfeldt, Traustedt, Travis, Troedsdotter, Troedsson, Troedsson Cedergren, Trolle, Truedsdotter, Truedsson, Trulsdotter, Trulsson, Trulsson Otterstedt, Tuesdotter, Tufvasdotter, Tufvesdotter, Tufvesson, Tufvesson Thulin, Tuheson, Tulin, Tullberg, Tullesdotter, Tullgren, Tullipan, Tune, Turesson, Tuvasdotter, Tuvesdotter, Tuvesson, Tuvfvesson, Tuxen, Tvede, Tvermoes, Twetowius, Tybjerg, Tyge, Tykesdotter, Tykesson, Tårstensson, Tåstesdotter, Tåstesson, Tönnesdotter, Törner, Törnquist, Udsen, Udsole, Uf, Uhrman, Uldall, Uldriksdatter, Ulfsax, Ulrich, Ulrichsdatter, Undahl, Unger, Unna, Ussing, Utbult, Uusitalo, Vahlholm, Vahlquist, Vaksjö, Valeriano, Valeriano Palau, Valeriano Weinschenck, Vallenstam, Vallin, Vallström, Valter, van de Velde, Van Der Linden, van der Schaft, Vanlith, Vedel, Vejby-Christensen, Velin, Vendel, Vennborg, Verner-Carlsson, Vester, Vesterberg, Vesterby, Vestergaard, Vesterlund, Vestman, Vetterberg, Vetterström, Viale, Viberg, Victor, Vidén, Vik, Vikberg, Viklund, Vikman, Vikström, Viktorsson, Vilhelmsen, Vilhelmsson, Villman, Vinstedt, Vinther, Visser, Voigt, Voldmester, Volkersen, von Arenstorff, von Barnekow, von Brandes, von Deer, von Degen, von Grabmayr-Angerheim, von Halle, von Holstein, von Holstein af Fürstenberg, von Holtzmann, von Kauffmann, von Knorre, von Kreitz, von Krogh, von Köller, von Lepel, von Magius, von Merbitz, von Otter, von Platen, von Pultz, von Quanten, von Schantz, von Schinckel, von Staffeldt, von Stolting, von Westen, von Wouwern, von Würtzen, von Zeipel, Vontobel, Voogd, Värn, Wadén, Waern-Leffler, Wahlberg, Wahlgren, Wahlsten, Wahlström, Wahlund, Wahren, Waldemarsson, Waleru, Walker, Wallander, Wallander Karlsson, Wallberg, Wallbom, Wallén, Wallenius, Wallenius Lundgren, Wallentinsson, Wallersteen, Wallin, Wallius, Wallmark, Wallström, Walter, Waltersson Spanier, Wandborg, Warde, Warg, Warming, Warrer, Wartberg, Wassler, Wasteson, Watt, Way, Wedell-Wedellsborg, Wedseltoft, Weed, Wegener, Weibull, Weiland, Weimard, Weinschenck, Weinschenck Benítez, Weinschenck Campos, Weinschenck de Armas, Weinschenck González, Weinschenck Jordán, Weinschenck López, Weinschenck Morales, Weinschenck Perez, Weinschenck Soter, Welander, Welding, Welinder, Wellnert, Wendel, Wendelbo-Madsen, Wendin, Wendt, Wennberg, Wennborg, Wenström, Werlin Olsson, Wernebäck, Werner, Wernersdatter, Wers, Wessberg, Wesselsdotter, Wessman, Westberg, Wester, Westerberg, Westerblad, Westerdahl, Westergren, Westerlund, Westermark, Westin, Westling, Weston, Wettergreen, Wettergren, Wetterstrand, Weyde, Wiberg, Wickenberg, Wicklund, Wicklund Pihlström, Wickström, Widding, Widér, Widerberg, Widestrand, Widgren, Wifesson, Wifvesdotter, Wifvesson, Wiinstedt, Wik, Wikberg, Wiklund, Wikman, Wikström, Wilckens, Wilde, Wildermuth, Wilhelmsson, Willadsen, Willander, Willerup, Wilmenius, Winberg, Winblad, Wingenblixt, Winkler, Winstedt, Winter, Winters, Winther, Wisén, Wismer, Wissén, Wistedt, Wistedt Vetterström, Witte, Wodstrup, Wohlgemuht, Wolff, Wolff-Sneedorf, Wolkersen, Worm, Wormslev, Wretman, Wulff, Wåhlberg, Wållin, Wärn, Wästeson, Ydström, Ygberg, Yhl, Ytterberg, Zachariassen, Zachariasson, Zachau, Zachrisson, Zackariasdotter, Zackariasson, Zackow, Zackrisson, Zakrisdotter, Zakrisson, Zederin, Zetterberg, Zetterman, Zetterström, Zewde, Ziemer, Ziervogel, Ziethen, Zilo, Zimmermann, Zinck, Åberg, Åbom, Ågesdotter, Ågesson, Ågren, Ågårdh, Åhrberg, Åkasdotter, Åkason, Åkasson, Åkerberg, Åkerblom, Åkerlund, Åkerman, Åkerström, Åkesdotter, Åkeson, Åkesson, Åkesson, Åkesson Falkman, Åkesson Lindqvist, Åkesson Thulin, Åman, Åradsdotter, Åradsson, Årman, Åström, Äskels, Öberg, Öberg Nlsson, Öfverlund, Ögren, Öhlund, Öhman, Öhrman, Öjeberg, Ölund, Öman, Önnersdotter, Önnerson, Önnersson, Örtberg, Örtegren, Öst, Östberg, Östensdotter, Östensson, Österberg, Östergren, Österlund, Östgren, Östlund, Östman]\n}\npersonalEmails: [gmail.com, yahoo.com, spray.se, hotmail.se, passagen.se]\ncompanyNames: [Volvo, Ericsson, Vattenfall, Skanska, Volvo Cars, H&M, TeliaSonera, Electrolux, Preem, Sandvik, ICA Gruppen, Stora Enso, Atlas Copco, Nordea, SCA, Scania, Securitas, Nordstjernan, SKF, ABB, Axel Johnson, NCC, Astrazeneca, Sony Mobile Communications, Peab, Assa Abloy, Tele2, E.ON, Boliden, SSAB, Postnord, If Skadeförsäkring, SEB, St1, Kooperativa Förbundet, Autoliv, Swedbank, Axfood, Lantmännen, Scandinavian Airlines, Stena Metall, Folksamgruppen, Handelsbanken, Statoil, Husqvarna, Alfa Laval, Bonnierkoncernen, LKAB, Stena, Ratos, Länsförsäkringsgruppen, Alecta, Nynas, Systembolaget, SAAB, Getinge, Investor, Fortum Sweden, Toyota, OKQ8, Trelleborg, L E Lundbergföretagen, Apoteket, Hexagon, Cellmark, Ahlsell, Volkswagen, IKEA, Holmen, Bilia, Tetra Pak, AMF, Aarhuskarlshamn, Södra Skogsägarna, Skandia, Arla Foods, Akzo Nobel, Storstockholms Lokaltrafik, Papyrus, Samsung Electronics, Modern Times Group, Pfizer, Meda, Trav och Galopp, Swedish Match, Schenker, JM, Telenor, Nobia, Ekman & Co, TD Tech Data, Martin & Servera, Loomis, Outokumpu Stainless, Gambro, Hewlett-Packard, Bergendahl & Son, Fritidsresor, Perstorp, BillerudKorsnäs]\ncompanySuffixes: [AB, Holding AB, Consulting, Inc., Aktiebolag, Ltd]\ncompanyEmails: [info, kontakt, support]\n\ntext: Men jag måste förklara för dig hur allt detta felaktiga uppfattningen att säga upp av ett nöje och prisa smärta föddes och jag kommer att ge dig en fullständig redogörelse av systemet, och förklara de faktiska lärdomarna stora utforskare  av sanningen, byggmästaren av mänsklig lycka. Ingen avvisar, ogillar eller undviker nöje i sig, eftersom det är glädje, men eftersom de som inte vet hur man ska lyckas nöje rationellt möter konsekvenser som är oerhört smärtsamt. Inte heller är det någon som älskar eller bedriver eller önskar att få smärtan i sig självt, eftersom det är smärta, men ibland uppstår omständigheter som ur strävan och smärtan kan försäkra honom ett sant nöje. För att ta ett trivialt exempel, som av oss någonsin hård fysisk träning, förutom att få någon fördel av det? Men vem har rätt att hitta fel med en man som väljer att njuta av ett nöje som inte har några störande konsekvenser, eller en som undviker en smärta som inte resulterar  i tillfredsställelse?\n\ntelephone_number_formats: ['070-### ## ##', '072-### ## ##', '073-### ## ##', '076-### ## ##', '079-### ## ##', '08-### ### ##', '08-### ## ##', '08-## ## ##', '0###-## ## ##', '0##-### ## ##', '0##-## ## ##']\n\npostal_code: ['### ##']\n\ncity: [Alingsås, Arboga, Arvika, Askersund, Avaskär, Avesta, Boden, Bollnäs, Borgholm, Borlänge, Borås, Broo, Brätte, Båstad, Djursholm, Eksjö, Elleholm, Enköping, Eskilstuna, Eslöv, Fagersta, Falkenberg, Falköping, Falsterbo, Falun, Filipstad, Flen, Gamla Lödöse, Getakärr, Gränna, Gävle, Göteborg, Hagfors, Halmstad, Haparanda, Hedemora, Helsingborg, Hjo, Hudiksvall, Huskvarna, Härnösand, Hässleholm, Höganäs, Järle (Jerle), Jönköping, Kalmar, Karl Johans stad, Karlshamn, Karlskoga, Karlskrona, Karlstad, Katrineholm, Kiruna, Kongahälla, Kramfors, Kristianopel, Kristianstad, Kristinehamn, Kumla, Kungsbacka, Kungälv, Köping, Laholm, Landskrona, Lidingö, Lidköping, Lindesberg, Linköping, Ljungby, Lomma, Ludvika, Luleå, Lund, Luntertun, Lycksele, Lyckå, Lysekil, Lödöse, Malmö, Mariefred, Mariestad, Marstrand, Mjölby, Motala, Mölndal, Mönsterås, Nacka, Nora, Norrköping, Norrtälje, Nya Lidköping, Nya Lödöse, Nybro, Nyköping, Nynäshamn, Nässjö, Oskarshamn, Oxelösund, Piteå, Ronneby, Sala, Sandviken, Sigtuna, Simrishamn, Skanör, Skanör med Falsterbo, Skara, Skellefteå, Skänninge, Skövde, Sollefteå, Solna, Stockholm, Strängnäs, Strömstad, Sundbyberg, Sundsvall, Säffle, Säter, Sävsjö, Söderhamn, Söderköping, Södertälje, Sölvesborg, Tidaholm, Torget, Torshälla, Tranås, Trelleborg, Trollhättan, Trosa, Tumathorp, Uddevalla, Ulricehamn, Umeå, Uppsala, Vadstena, Varberg, Vaxholm, Vetlanda, Vimmerby, Visby, Vä, Vänersborg, Värnamo, Västervik, Västerås, Växjö, Ystad, Åhus, Åmål, Älvsborg, Ängelholm, Öjebyn, Örebro, Öregrund, Örnsköldsvik, Östersund, Östhammar]\n\nstreet: [Adlerbethsgatan, Adolf Fredriks Kyrkogata, Af Pontins Väg, Ahlsellvägen, Akademigränd, Aktergatan, Allhelgonagatan, Allmänna Gränd, Almlöfsgatan, Alsnögatan, Alstaviksvägen, Alströmergatan, Aluddsparken, Aluddsvägen, Amarantergränd, Amiralitetsbacken, Anders Reimers Väg, Andra Bassängvägen, Andra Tvärvägen, Andréegatan, Ankargränd, Ansgariegatan, Apelbergsgatan, Arbetargatan, Arkivgatan, Armfeltsgatan, Arsenalsgatan, Artemisgatan, Artillerigatan, Askrikegatan, Assessorsgatan, Atlasgatan, Atlasmuren, Atterbomsvägen, Babordsgatan, Badstrandsvägen, Baggensgatan, Baldersgatan, Baltzar Von Platens Gata, Banbrinken, Banérgatan, Barnhusgatan, Barnängs Tvärgränd, Barnängsgatan, Barnängsgränd, Bastugatan, Beckbrännarbacken, Beckholmen, Beckholmsvägen, Bedoirsgränd, Bellevuevägen, Bellmansgatan, Bengt Ekehjelmsgatan, Bergsgatan, Bergsgränd, Bergsjölundsvägen, Bergsmarksvägen, Bergsprängargränd, Bergsunds Strand, Bergsundsgatan, Beridarbansgatan, Beridarebanan, Bertil Ohlins Gata, Berzelii Park, Biblioteksgatan, Bigarråvägen, Birger Jarls Torg, Birger Jarlsgatan, Birger Sjöbergs Väg, Birkagatan, Biskopsvägen, Bjurholmsgatan, Bjurholmsplan, Björngårdsgatan, Björnnäsbacken, Björnnäsvägen, Björns Trädgårdsgränd, Blanchegatan, Blasieholmsgatan, Blasieholmstorg, Blecktornsbrinken, Blecktornsgränd, Blecktornsstigen, Blekegatan, Blekholmsgatan, Blekholmsterrassen, Blekholmstorget, Blekingegatan, Blockhusringen, Blommensbergsvägen, Bo Bergmans Gata, Bohusgatan, Bolinders Plan, Bollhusgränd, Bondegatan, Bondesonsgatan, Borgargatan, Borgmästargatan, Borgvägen, Bragevägen, Brahegatan, Brantingsgatan, Breda Gatan, Bredgränd, Breitenfeldsgatan, Brinellvägen, Brunbärsvägen, Brunkebergsgatan, Brunkebergstorg, Brunnsgatan, Brunnsgränd, Brunnsviksvägen, Bryggargatan, Bryggvägen, Bråvallagatan, Brännerigatan, Brännkyrkagatan, Buteljgatan, Bysistorget, Båtbyggargatan, Bältgatan, Böttigervägen, Cardellgatan, Carl Akrells Gata, Carl Alberts Gränd, Carl-Gustaf Lindstedts Gata, Cedersdalsgatan, Celsiusgatan, Centralplan, Chapmansgatan, Chapmansgården, Coldinutrappan, Crafoords Väg, Creutzgatan, Dag Hammarskjölds Väg, Dalagatan, Dalslandsgatan, Danderydsgatan, Dannemoragatan, David Bagares Gata, De Geersgatan, Dianavägen, Didrik Ficks Gränd, Disponentgatan, Djurgårdsbrunnsvägen, Djurgårdsslätten, Djurgårdsvägen, Doktor Abelins Gata, Drakenbergsgatan, Drakens Gränd, Drejargatan, Drottning Kristinas Väg, Drottning Sofias Väg, Drottninggatan, Drottningholmsvägen, Drottninghusgränd, Duvnäsgatan, Döbelnsgatan, Dörjgränd, Ehrensvärdsgatan, Ekehjelmstorget, Ekensbergsbryggan, Ekensbergsvägen, Ekermans Gränd, Eknäsvägen, Eldarvägen, Elersvägen, Engelbrekts Kyrkogata, Engelbrektsgatan, Engelbrektsplan, Ensittarvägen, Eolsgatan, Eremitvägen, Erik Dahlbergsallén, Erik Dahlbergsgatan, Eriksbergsgatan, Eriksdalsgatan, Ernst Ahlgrens Väg, Erstagatan, Essinge Brogata, Essinge Högväg, Essinge Kyrkväg, Essingekroken, Essingeringen, Essingestråket, Essingetorget, Exercisplan, Falkenbergsgatan, Falugatan, Fartygsgatan, Fatburs Brunnsgata, Fatburs Kvarngata, Fatbursgatan, Fatburstrappan, Ferkens Gränd, Finska Kyrkogränd, Fiskargatan, Fiskartorpsvägen, Fisksjöängsvägen, Fjällgatan, Fjärde Bassängvägen, Flaggmansvägen, Fleminggatan, Flintbacken, Floragatan, Flottbrovägen, Folkskolegatan, Folkungagatan, Folkungatrappan, Franzéngatan, Fredhällsgatan, Fredmansgatan, Fredrik Bloms Väg, Fredriksdalsgatan, Fredrikshovsgatan, Fredsborgsgatan, Fredsborgstorget, Fredsgatan, Fregattvägen, Frejgatan, Fridhemsgatan, Fridhemsplan, Friggagatan, Frihamnsgatan, Fryxellsgatan, Frödingsvägen, Funckens Gränd, Furusundsgatan, Fyrverkarbacken, Fågelbärsgården, Fågelhundsgatan, Fågelsångens Gårdsväg, Fågelsångsvägen, Färgargårdstorget, Förmansvägen, Förskeppsgatan, Första Bassängvägen, Gaffelgränd, Galärvarvsvägen, Gambrinusgatan, Gamla Brogatan, Gamla Lundagatan, Gammelgårdsgränd, Gammelgårdsvägen, Garvar Lundins Gränd, Garvargatan, Gasverksvägen, Gaveliusgatan, Geijersvägen, Gillögagatan, Gjutargatan, Gjörwellsgatan, Glasbruksgatan, Glödlampsgränd, Gotlandsgatan, Grenljusbacken, Grev Magnigatan, Grev Turegatan, Greve Von Essens Väg, Grevgatan, Grevgränd, Grindsgatan, Grubbens Gata, Grubbensringen, Grubbenstorget, Gruvbacken, Grytgjutargången, Gräsgatan, Grönbrinksgatan, Gröndalshamnen, Gröndalsvägen, Gudöbroleden, Guldgränd, Gumshornsgatan, Gustav Adolfs Torg, Gyldéngatan, Gyllenborgsgatan, Gyllenstiernsgatan, Gåsgränd, Gärdesgatan, Gästrikegatan, Gävlegatan, Göran Hälsinges Gränd, Götgatan, Hagagatan, Hagagränd, Hallandsgatan, Hamburgsvägen, Hammarby Allé, Hammarby Fabriksväg, Hammarby Kaj, Hammarby Kajväg, Hammarby Slussväg, Hammarbyterrassen, Hammargatan, Hamngatan, Hangövägen, Hantverkargatan, Havregatan, Hazeliusbacken, Hazeliusporten, Hedbornsstigen, Hedemoratäppan, Hedinsgatan, Heimdalsgatan, Heleneborgsgatan, Helga Lekamens Gränd, Helgagatan, Helgalunden, Heliosgatan, Herkulesgatan, Hildebergsvägen, Hjalmar Cederströms Gata, Hjalmar Söderbergs Väg, Hjärnegatan, Holländargatan, Holmamiralens Torg, Holmamiralens Väg, Hornsbruksgatan, Hornsgatan, Hornsgatspåfarten, Hornskroken, Hornstulls Strand, Hornsviksstigen, Hovslagargatan, Hubertusgatan, Hudiksvallsgatan, Humlegårdsgatan, Hunduddsvägen, Hälsingegatan, Hälsingehöjden, Härdgången, Hästholmsvägen, Höga Stigen, Högalids Kyrkväg, Högalidsgatan, Högbergsbacken, Högbergsgatan, Högvaktsterrassen, Högviltsgatan, Hökens Gata, Hötorget, Idaborgsvägen, Idungatan, Igeldammsgatan, Ignatiigränd, Industrigatan, Inedalsgatan, Ingemarsgatan, Ingenjörsvägen, Ingmar Bergmans Gata, Ivan Oljelunds Gränd, Iversonsgatan, Jakob Westinsgatan, Jakobs Torg, Jakobsbergsgatan, Jakobsgatan, Jaktvarvsplan, Jarlaplan, Johannes Plan, Johannesgatan, Johannesgränd, John Bergs Plan, John Ericssonsgatan, Josefinavägen, Jungfrugatan, Jungmansgränd, Junohällsvägen, Jutas Backe, Jägargatan, Jägmästargatan, Järntorget, Järntorgsgatan, Kadettgatan, Kaknäsvägen, Kallskärsgatan, Kammakargatan, Kampementsgatan, Kanslikajen, Kapellgränd, Kaplansbacken, Kaptensgatan, Karaffgatan, Karduansmakargatan, Karl Johans Torg, Karlaplan, Karlavägen, Karlbergsvägen, Karlshällsvägen, Karlsviksgatan, Kastellbacken, Kastellholmskajen, Katarina Bangata, Katarina Kyrkobacke, Katarina Västra Kyrkogata, Katarina Östra Kyrkogårdsgränd, Katarinavägen, Katrinebergsbacken, Katrinebergsvägen, Kattgränd, Kindstugatan, Klara Mälarstrand, Klara Norra Kyrkogata, Klara Strand, Klara Södra Kyrkogata, Klara Tvärgränd, Klara Vattugränd, Klara Västra Kyrkogata, Klara Östra Kyrkogata, Klarabergsgatan, Klarabergsviadukten, Klarafaret, Klarastrandsleden, Klefbecks Backe, Klevgränd, Klippgatan, Klockstapelsbacken, Klyvarvägen, Knaperstavägen, Kocksgatan, Kocksgränd, Kolargatan, Kolmårdsgränd, Kommendörsgatan, Konradsbergsgatan, Konvojgatan, Korgmakargränd, Kornhamnstorg, Korphoppsgatan, Kristinebergs Slottsväg, Kristinebergs Strand, Kristinebergsvägen, Kristinehovsgatan, Kronobergsgatan, Krukmakarbacken, Krukmakargatan, Kryssargatan, Kråkgränd, Krångedevägen, Kungsbro Strand, Kungsbron, Kungsbroplan, Kungsgatan, Kungsholms Hamnplan, Kungsholms Kyrkoplan, Kungsholms Strand, Kungsholms Strandstig, Kungsholmsgatan, Kungsholmstorg, Kungsklippan, Kungstensgatan, Kungsträdgårdsgatan, Kvarngatan, Kvastmakarbacken, Kvastmakartrappan, Kyrkslingan, Kåkbrinken, Källargränd, Källbergsvägen, Kölnagatan, Köpmanbrinken, Köpmangatan, Köpmantorget, Körsbärsvägen, Laboratoriegatan, Laduviksvägen, Lagerlöfsgatan, Lanforsvägen, Lantmäteribacken, Lehusens Gränd, Lejonstedts Gränd, Lennmans Trappgränd, Levertinsgatan, Lidingövägen, Lidnersgatan, Lidnersplan, Lidovägen, Lignagatan, Liljas Gata, Liljeholmsbron, Liljeholmsgränd, Liljeholmshamnen, Liljeholmsstranden, Liljeholmstorget, Liljeholmsvägen, Lill-Jans Plan, Lilla Allmänna Gränd, Lilla Bantorget, Lilla Erstagatan, Lilla Hoparegränd, Lilla Nygatan, Lilla Skinnarviksgränd, Lilla Skuggans Väg, Lindarängsvägen, Lindhagensgatan, Lindhagensplan, Lindstedtsvägen, Lindvallsgatan, Lindvallsplan, Linnégatan, Ljusslingan, Ljusstöparbacken, Ljustergränd, Ljusterögatan, Lodgatan, Lokstallsgatan, Lorensbergsgatan, Lotsgatan, Louddsvägen, Love Almqvists Väg, Lovisagatan, Lucidorsgatan, Ludvigsbergsgatan, Lugnets Allé, Lumagatan, Lumaparksvägen, Lundagatan, Luntmakargatan, Lustigkullavägen, Lusuddsvägen, Luthens Gränd, Luxgatan, Lützengatan, Långa Gatan, Långa Raden, Långholmsbacken, Långholmsgatan, Långholmsmuren, Lästmakargatan, Lögebodavägen, Löjtnantsgatan, Lövholmsbrinken, Lövholmsgränd, Lövholmsvägen, Magnus Ladulåsgatan, Mail Boxes Etc, Majorsgatan, Malmgårdsvägen, Malmskillnadsgatan, Malmtorgsgatan, Malmvägen, Maltgatan, Manillavägen, Maria Bangata, Maria Prästgårdsgata, Maria Sandels Gränd, Maria Skolgata, Maria Trappgränd, Mariagränd, Mariatorget, Mariebergsavfarten, Marieviksgatan, Markvardsgatan, Marmorgatan, Maskinistgatan, Matrosbacken, Medborgarplatsen, Mejerivägen, Mellangatan, Messeniusgatan, Metargatan, Midskeppsgatan, Midskogsgränd, Mitisgatan, Mjärdgränd, Montebellogatan, Mosebacke Torg, Motalavägen, Munkbrogatan, Munkbrohamnen, Munkbroleden, Munkbron, Museivägen, Myntgatan, Mynttorget, Målargatan, Mårten Trotzigs Gränd, Mårtensdalsgatan, Mälartorget, Mälarvarvsbacken, Mäster Mikaels Gata, Mäster Pers Gränd, Mäster Samuelsgatan, Möregatan, Mörka Kroken, Mörtvikskroken, Nackagatan, Narvavägen, Nicandervägen, Nils Ericsons Plan, Nimrodsgatan, Nobelgatan, Noe Arksfaret, Noe Arksgränden, Nordenflychtsvägen, Nordenskiöldsgatan, Norr Mälarstrand, Norra Agnegatan, Norra Bankogränd, Norra Benickebrinken, Norra Dryckesgränd, Norra Hamnvägen, Norra Kajvägen, Norra Riddarholmshamnen, Norra Stationsgatan, Norrbackagatan, Norrbro, Norrlandsgatan, Norrmalmstorg, Norrskogsvägen, Norrtullsgatan, Notvarpsgränd, Nybergsgatan, Nybodaringen, Nybohovsbacken, Nybohovsgränd, Nybrogatan, Nybrohamnen, Nybrokajen, Nybroplan, Nygränd, Nytorget, Nytorgsgatan, Näckströmsgatan, Närkesgatan, Nätgränd, Observatoriegatan, Odengatan, Odenplan, Ola Hanssonsgatan, Olaus Petrigatan, Olof Dalins Väg, Olof Gjödingsgatan, Olof Palmes Gata, Olofsgatan, Onkel Adams Väg, Ordenstrappan, Ormbergsvägen, Orvar Odds Väg, Osquars Backe, Osquldas Väg, Oxenstiernsgatan, Oxtorget, Oxtorgsgatan, Oxtorgsgränd, P O Hallmans Gata, Packhusgränd, Palermogatan, Palmbladsvägen, Parkgatan, Parmmätargatan, Patentgatan, Pelikansgränd, Peter Myndes Backe, Pilgatan, Pipersgatan, Planterhagsvägen, Ploggatan, Pokalvägen, Polhemsgatan, Pontonjärgatan, Porjusvägen, Primusgatan, Prins Eugens Väg, Prinsessan Ingeborgs Väg, Prinsessan Märtas Väg, Pryssgränd, Prästgatan, Pustegränd, Pålsundsgatan, Pålsundsparken, Ragnar Östbergs Plan, Ragvaldsgatan, Rapsgatan, Redargatan, Regeringsgatan, Rehnsgatan, Reimersholmsgatan, Renstiernas Gata, Repslagargatan, Riddargatan, Riddarhusgränd, Riddarhuskajen, Riddarhustorget, Rigagatan, Riksgatan, Rimbogatan, Rindögatan, Ringvägen, Robert Almströmsgatan, Roddargatan, Ropstensslingan, Rorgängargatan, Rosenbad, Rosendalsterrassen, Rosendalsvägen, Rosengatan, Rosenhillsvägen, Rosenlundsgatan, Roslagsgatan, Roslagstullsbacken, Ruddammsbacken, Ruddammsvägen, Runebergsgatan, Runiusgatan, Rutger Fuchsgatan, Ryssviksvägen, Rådjursstigen, Rådlösavägen, Rådmansgatan, Råggatan, Rålambsvägen, Rävgrytsbacken, Rödabergsbrinken, Rödabergsgatan, Rödbodgatan, Rödbodtorget, Rökubbsgatan, Rörstrandsgatan, Sachsgatan, Saltmätargatan, Salviigränd, Samaritgränd, Samuel Owens Gata, Sandbacksgatan, Sandelsgatan, Sandhamnsgatan, Sandhamnsplan, Sandåsgatan, Sankt Eriksgatan, Sankt Eriksplan, Sankt Eriksterrassen, Sankt Göransgatan, Sankt Paulsgatan, Sannadalsvägen, Scheelegatan, Scheffersgatan, Schönfeldts Gränd, Segelbåtsvägen, Seglatsgatan, Sehlstedtsgatan, Separatorgränd, Serafimergränd, Sergelarkaden, Sergelgatan, Sergelgången, Sergels Torg, Siargatan, Sibyllegatan, Sickla Kanalgata, Signalgränd, Sigtunagatan, Singelbacken, Sirishovsvägen, Sista Styverns Trappor, Sjukhusbacken, Själagårdsgatan, Sjöbjörnsvägen, Sjöfartsgatan, Sjömansgränd, Sjöstugugränd, Sjötullsbacken, Sjöviksbacken, Sjövikskajen, Sjövikstorget, Sjöviksvägen, Skansbacken, Skansbrogatan, Skansbron, Skaraborgsgatan, Skarpskyttestigen, Skarpögatan, Skeppar Karls Gränd, Skeppar Olofs Gränd, Skeppargatan, Skeppargränd, Skeppsbrokajen, Skeppsbron, Skeppsmäklargatan, Skillinggränd, Skinnarviksringen, Skogsmarksvägen, Skogvaktargatan, Skolgränd, Skomakargatan, Skonertvägen, Skottgränd, Skrubbasandsvägen, Skräddargränd, Skutskepparvägen, Skånegatan, Sköldgatan, Sköldungagatan, Slipgatan, Slottsbacken, Slupskjulsvägen, Slussplan, Slöjdgatan, Smala Gränd, Smedsbacksgatan, Smedsuddsvägen, Smålandsgatan, Snickarbacken, Snipkroken, Snoilskyvägen, Sockerbruksgränd, Sofiagatan, Sofiebergsvägen, Solgränd, Solkraftsvägen, Sollidsbacken, Spektens Gränd, Stadsgården, Stadsgårdshamnen, Stadsgårdsleden, Stadshagens Idrottsväg, Stadshagsplan, Stadshagsvägen, Staffan Sasses Gränd, Stagneliusvägen, Stallgatan, Starrängsringen, Stenbocksgatan, Stenkullavägen, Stenshällsvägen, Stickelbärsvägen, Stiernhielmsvägen, Stigbergsgatan, Stora Essingepåfarten, Stora Gråmunkegränd, Stora Hoparegränd, Stora Mejtens Gränd, Stora Nygatan, Stora Skuggans Väg, Storgatan, Storkyrkobrinken, Storskärsgatan, Stortorget, Storängskroken, Storängsvägen, Strandbergsgatan, Strandvägen, Strindbergsgatan, Strykerskevägen, Strålgatan, Strömgatan, Strömparterren, Strömsborgsbron, Studentbacken, Sturegatan, Stureparken, Stureplan, Styckjunkargatan, Styrbordsgatan, Styrmansgatan, Sundstabacken, Surbrunnsgatan, Svartensgatan, Svartmangatan, Svarvargatan, Sveavägen, Svedbergsplan, Svedbergsstigen, Sven Rinmans Gata, Sven Vintappares Gränd, Svensksundsvägen, Swedenborgsgatan, Sysslomansgatan, Sågargatan, Sällskapsvägen, Sätertäppan, Söder Mälarstrand, Söder Mälarstrands Kajplatser, Södermalmsallén, Södermalmstorg, Södermannagatan, Södertäljevägen, Södra Agnegatan, Södra Bankogränd, Södra Bassängkajen, Södra Benickebrinken, Södra Blasieholmshamnen, Södra Brobänken, Södra Dryckesgränd, Södra Hamnvägen, Södra Kajen, Södra Riddarholmshamnen, Tantogatan, Taptogatan, Tavastgatan, Teatergatan, Tegelbacken, Tegeluddsvägen, Tegelviksgatan, Tegnérgatan, Tegnérlunden, Teknikringen, Teknologgatan, Telegrafgränd, Tempeltrappan, Tengdahlsgatan, Terminalslingan, Textilgatan, Thorildsplan, Thorildsvägen, Tideliusgatan, Timmermansgatan, Timmermansgränd, Timotejgatan, Tjurbergsgatan, Tjustgatan, Tjärhovsgatan, Tjärhovsplan, Tobaksspinnargatan, Tomtebogatan, Torbjörn Klockares Gata, Torggatan, Torkel Knutssonsgatan, Torkhusgatan, Torsgatan, Torsplan, Torstenssonsgatan, Transportvägen, Tre Liljor, Tredje Bassängvägen, Tredje Tvärvägen, Trekantsvägen, Triewaldsgränd, Trollhättevägen, Tryckerigatan, Trålgränd, Trångsund, Trädgårdsgatan, Trädgårdstvärgränd, Tulegatan, Tullgränd, Tullgårdsgatan, Tullvaktsvägen, Tunnelgatan, Ture Nermans Gränd, Tvätterskevägen, Tyghusplan, Tyrgatan, Tyska Brinken, Tyska Brunnsplan, Tyska Skolgränd, Tyska Stallplan, Tyskbagargatan, Tysta Gatan, Tysta Marigången, Uggelviksgatan, Ugglegränd, Uggleviksvägen, Ulrikagatan, Untravägen, Upplagsvägen, Upplandsgatan, Urvädersgränd, Utkiksbacken, Valhallavägen, Vanadislunden, Vanadisplan, Vanadisvägen, Varvsgatan, Vasagatan, Vasaplan, Vattenkraftsvägen, Vattugatan, Vegagatan, Verdandigatan, Verkstadsgatan, Vetegatan, Vickergatan, Vidargatan, Vikingagatan, Villagatan, Vindkraftsvägen, Vindragarvägen, Vingårdsgatan, Vinodlargatan, Vintertullstorget, Vinterviksvägen, Virkesvägen, Vitalisvägen, Vulcanusgatan, Vänskapsvägen, Väpnargatan, Värdshusbacken, Värdshusslingan, Väringgatan, Värtans Stationsväg, Värtavägen, Västerbroplan, Västerlånggatan, Västeråsgatan, Västgötagatan, Västgötagränd, Västmannagatan, Västra Järnvägsgatan, Västra Trädgårdsgatan, Västra Vattugränd, Vävar Johans Gata, Völundsgatan, Wahrendorffsgatan, Wallingatan, Warfvinges Väg, Wargentinsgatan, Welanders Väg, Wennerbergsgatan, Wenströmsvägen, Wittstocksgatan, Wivalliusgatan, Wollmar Yxkullsgatan, Ynglingagatan, Yttersta Tvärgränd, Yxsmedsgränd, Zinkens Väg, Ångströmsgatan, Årsta Hamnväg, Årsta Holmar, Årsta Skolgränd, Årstaskogs Väg, Årstaängsvägen, Åsögatan, Åsötorget, Älvkarleövägen, Älvsborgsgatan, Ängskärsgatan, Ölandsgatan, Öregrundsgatan, Örlogsvägen, Österlånggatan, Östermalmsgatan, Östermalmstorg, Östgötagatan, Östhammarsgatan, Östra Järnvägsgatan, Östra Varvsgatan, Östra Varvsgatans Gränd, Överskärargränd]\n\ncountry: ['Sverige']\n\nlanguage: 'SV'\n"
  },
  {
    "path": "src/main/resources/jfairy_tr.yml",
    "content": "alphabet: abcçdefgğhıijklmnoöprsştuüvyz\ndomains: [ com.tr, org.tr, net.tr, edu.tr, gov.tr, k12.tr, av.tr, dr.tr, bel.tr, tsk.tr ]\nfirstNames: {\n    male: [ Ahmet, Mehmet, Mustafa, Ali, Hüseyin, Hasan, İbrahim, İsmail, Osman, Murat, Ömer, Ramazan, Halil, Süleyman, Abdullah, Mahmut, Recep, Salih, Fatih, Kadir, Emre, Gökhan, Hakan, Serkan, Metin, Burak, Volkan, Bülent, Kenan, Selçuk, Yavuz, Sinan, Can, Kerem, Deniz, Onur, Umut, Eren, Arda, Mert, Yiğit, Berk, Tolga, Kaan, Doruk, Batuhan, Görkem, Furkan, Enes, Yunus, Bilal ],\n    female: [ Fatma, Ayşe, Emine, Hatice, Zeynep, Özlem, Elif, Meryem, Gamze, Şerife, Hanife, Sultan, Zehra, Havva, Hayriye, Cemile, Güllü, Leyla, Saliha, Melek, Arzu, Yasemin, Esra, Dilek, Pınar, Tuğba, Seda, Ebru, Gizem, Büşra, Kübra, Feyza, Beyza, İrem, Merve, Nursel, Selin, Pelin, Damla, Yağmur, Ece, Duru, Defne, Azra, Derin, Bade, Nehir, Eylül, Melis ],\n}\nlastNames: {\n    male: [ Yılmaz, Kaya, Demir, Çelik, Şahin, Yıldız, Yıldırım, Öztürk, Aydın, Özdemir, Arslan, Doğan, Kılıç, Aslan, Çetin, Kara, Koç, Kurt, Özkan, Şimşek, Polat, Özcan, Korkmaz, Çakır, Erdoğan, Yavuz, Can, Aksoy, Köse, Güler, Aktaş, Avcı, Akın, Özer, Ünal, Kaplan, Bulut, Yiğit, Sarı, Taş, Kaymak, Önal, Güneş, Ay, Karaman, Çavuş, Yalçın, Uzun, Karakaş, Tekin ],\n    female: [ Yılmaz, Kaya, Demir, Çelik, Şahin, Yıldız, Yıldırım, Öztürk, Aydın, Özdemir, Arslan, Doğan, Kılıç, Aslan, Çetin, Kara, Koç, Kurt, Özkan, Şimşek, Polat, Özcan, Korkmaz, Çakır, Erdoğan, Yavuz, Can, Aksoy, Köse, Güler, Aktaş, Avcı, Akın, Özer, Ünal, Kaplan, Bulut, Yiğit, Sarı, Taş, Kaymak, Önal, Güneş, Ay, Karaman, Çavuş, Yalçın, Uzun, Karakaş, Tekin ]\n}\npersonalEmails: [ gmail.com, hotmail.com, yahoo.com, outlook.com, icloud.com ]\ncompanyNames: [ Holding, Şirket, Ticaret, Sanayi, Limited, Anonim, Bilişim, Otomotiv, Gıda, İnşaat, Tekstil, Lojistik, Turizm, Enerji, Medya, Sağlık, Eğitim, Banka, Sigorta, Mağaza, Market, Restoran, Kafe ]\ncompanySuffixes: [ 'A.Ş.', 'Ltd. Şti.', 'Hizmetleri', 'Grubu', 'Dış Ticaret' ]\ncompanyEmails: [ info, destek, satis, hello, merhaba ]\n\ntext: Bu bir deneme metnidir. Türkçe dil desteği için oluşturulmuştur. Bu sistem sayesinde rastgele Türkçe veriler üretebilirsiniz. Adresler, isimler, telefon numaraları ve daha fazlası artık jfairy ile mümkün. Teknolojinin getirdiği bu kolaylıklar sayesinde test süreçleriniz daha hızlı ve verimli hale gelecek.\n\ntelephone_number_formats: [ '+90 5## ### ## ##' ]\n\npostal_code: [ '#####' ]\n\ncity: [ İstanbul, Ankara, İzmir, Bursa, Antalya, Adana, Konya, Gaziantep, Şanlıurfa, Mersin, Kocaeli, Diyarbakır, Hatay, Manisa, Kayseri, Samsun, Balıkesir, Kahramanmaraş, Van, Aydın ]\n\nstreet: [ İstiklal Caddesi, Bağdat Caddesi, Cumhuriyet Caddesi, Atatürk Bulvarı, Vatan Caddesi, Ordu Caddesi, Halaskargazi Caddesi, Abdi İpekçi Caddesi, Nispetiye Caddesi, Barbaros Bulvarı, Turgut Özal Bulvarı, Mevlana Caddesi, Fevzi Çakmak Caddesi, Ziya Gökalp Caddesi, Mithatpaşa Caddesi, Tunalı Hilmi Caddesi, Bahçelievler 7. Cadde, Kenan Evren Bulvarı, Gazipaşa Bulvarı, Talatpaşa Bulvarı ]\n\ncountry: [ 'Türkiye' ]\n\nlanguage: 'TR'\n"
  },
  {
    "path": "src/main/resources/jfairy_zh.yml",
    "content": "alphabet: abcdefghijklmnopqrstuvwxyz\ndomains: [com, cn, net, org]\nfirstNames: {\n  male: [俊杰, 亚波, 耀鸿, 旦冉, 国辉, 国富, 小明, 俊佳, 金城, 俊煜, 嘉斌, 泽民, 宸风, 雨泽, 云帆, 剑枫, 正宇],\n  female: [析丹, 小慧, 黛玉, 宝钗, 宝华, 祖英, 蒹葭, 瑶依, 沛菡, 曼文, 艾韵, 灵芸, 静琪, 碧琪, 雅芝, 安妮]\n}\nlastNames: {\n  male: [赵, 钱, 孙, 李, 周, 吴, 郑, 王, 冯, 陈, 楚, 卫, 苏, 蒋, 沈, 韩, 杨, 张, 黄, 徐, 刘],\n  female: [赵, 钱, 孙, 李, 周, 吴, 郑, 王, 冯, 陈, 楚, 卫, 苏, 蒋, 沈, 韩, 杨, 张, 黄, 徐, 刘]\n}\npersonalEmails: [gmail.com, 163.com, 126.com, qq.com, sina.com, sohu.com]\ncompanyNames: [数说故事, 网易之, 腾企鹅, 千度, 京西, 后海金融, 互动派, 塔布数据, 阿狸巴巴, 图匠]\ncompanySuffixes: [科技有限公司, 股份有限公司, 集团, 有限公司, 金融投资有限公司]\ncompanyEmails: [info, contact, company, office, org, com]\n\ntext: 我们 你好 工资 赚钱 是 非常 魅力 美丽 运动 自由 风雅 要求 感情 代码 研发 神奇 动物 魔法 忍术 你们 的 手机 小米 苹果 猫 狗 相信 很多 一样 梦想 随身 携带 操作 系统 无论 哪里 只要 电脑 可以 随时 运行 自己 配置 博文 一步步 如何 驱动 加载 想象 一个 场景 也许 使用 设置\n\ntelephone_number_formats: ['###-####-####', '###########', '########']\n\npostal_code: ['######']\n\ncity: [广州, 深圳, 杭州, 北京, 南京, 天津, 重庆, 上海, 武汉, 西安, 珠海, 福州, 台北, 高雄, 长沙, 哈尔滨]\n\nstreet: [中山大道, 环市东路, 内环路, 外环西路, 中山四路, 滨江路, 江海大道, 湖滨路, 朝阳大街, 人民路, 解放路, 沿江路, 海滨路, 新华路]\n\ncountry: [中国, 美国, 法国, 英国, 德国, 西班牙, 意大利, 加拿大, 俄罗斯, 日本, 韩国, 巴西]\n\nlanguage: 'ZH'\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/FairyDeSpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.person.Person\n\n/**\n * @author Roland Weisleder\n */\nclass FairyDeSpec extends Specification {\n\n\tprivate final int SEED = 186\n\tprivate Fairy fairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.GERMAN).build()\n\n\tdef \"Should create German name\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.fullName == 'Timo Höfling' // well, that's german enough...\n\t}\n\n\tdef \"Should create German city\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.address.city == 'Hockenheim'\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/FairyFrSpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.person.Person\nimport com.devskiller.jfairy.producer.company.Company\n\n/**\n * <p>\n * Test suite for French locale.\n * <p>\n * Note: Expected values reflect the random sequence for SEED 7 after\n * introducing Luhn-compliant VAT and specific Passport providers.\n */\nclass FairyFrSpec extends Specification {\n\n\tprivate final int SEED = 7\n\tprivate Fairy fairy = Fairy.builder()\n\t\t\t\t\t.withRandomSeed(SEED)\n\t\t\t\t\t.withLocale(Locale.FRENCH)\n\t\t\t\t\t.build()\n\n\tdef \"Should create French name\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.fullName == 'Alexis Tanguy'\n\t}\n\n\tdef \"Should create French city\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.address.city == 'Saint-Denis'\n\t}\n\n\tdef \"Should create valid French passport number\"() {\n\t\t\twhen:\n\t\t\t\t\tPerson person = fairy.person()\n\t\t\tthen:\n\t\t\t\t\tperson.passportNumber ==~ /\\d{2}[A-Z]{2}\\d{5}/\n\t\t\t\t\tperson.passportNumber == '28DO74569'\n\t}\n\n\tdef \"Should create valid French national identity card (CNI)\"() {\n\t\t\twhen:\n\t\t\t\t\tPerson person = fairy.person()\n\t\t\tthen:\n\t\t\t\t\tperson.nationalIdentityCardNumber ==~ /88\\d{2}050OLUQS/\n\t}\n\n\tdef \"Should create valid French VAT (TVA) number\"() {\n\t\t\tgiven:\n\t\t\t\t\tCompany company = fairy.company()\n\t\t\twhen:\n\t\t\t\t\tString vat = company.vatIdentificationNumber\n\t\t\tthen:\n\t\t\t\t\tvat == 'FR44489040287'\n\t\t\tand: \"verify TVA key logic\"\n\t\t\t\t\tString siren = vat.substring(4)\n\t\t\t\t\tint key = Integer.parseInt(vat.substring(2, 4))\n\t\t\t\t\tkey == (12 + 3 * (Long.parseLong(siren) % 97)) % 97\n\t}\n\n\tdef \"Should satisfy Luhn algorithm for SIREN\"() {\n\t\t\tgiven:\n\t\t\t\t\tCompany company = fairy.company()\n\t\t\t\t\tString siren = company.vatIdentificationNumber.substring(4)\n\t\t\twhen:\n\t\t\t\t\tint sum = 0\n\t\t\t\t\tsiren.reverse().eachWithIndex { digits, i ->\n\t\t\t\t\t\t\tint n = Integer.parseInt(digits)\n\t\t\t\t\t\t\tif (i % 2 != 0) {\n\t\t\t\t\t\t\t\t\tn *= 2\n\t\t\t\t\t\t\t\t\tif (n > 9) n -= 9\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsum += n\n\t\t\t\t\t}\n\t\t\tthen:\n\t\t\t\t\tsum % 10 == 0\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/FairyKaSpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.person.Person\n\nclass FairyKaSpec extends Specification {\n\n\tprivate final int SEED = 2\n\tprivate Locale geLocale = new Locale.Builder().setLanguage(\"ka\").setRegion(\"ge\").setScript(\"Geor\").build()\n\tprivate Fairy fairy = Fairy.builder().withRandomSeed(SEED).withLocale(geLocale).build()\n\n\tdef \"Should create Georgian name\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.fullName == 'ბაადურ აბრამიძე'  // Baadur Abramidze\n\t}\n\n\tdef \"Should create Georgian street\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.address.street == 'მეფე სოლომონ II-ის ქუჩა'\n\t}\n\n\tdef \"Should create Georgian city\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.address.city == 'ზუგდიდი'\n\t}\n\n\tdef \"Should create Georgian ID card\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.nationalIdentityCardNumber == 'Nს6819982'\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/FairyModuleSpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.data.MapBasedDataMaster\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.DateProducer\nimport com.devskiller.jfairy.producer.person.locale.de.DeAddressProvider\nimport com.devskiller.jfairy.producer.person.locale.en.EnAddressProvider\nimport com.devskiller.jfairy.producer.person.locale.es.EsAddressProvider\nimport com.devskiller.jfairy.producer.person.locale.fr.FrAddressProvider\nimport com.devskiller.jfairy.producer.person.locale.ka.KaAddressProvider\nimport com.devskiller.jfairy.producer.person.locale.pl.PlAddressProvider\nimport com.devskiller.jfairy.producer.person.locale.sv.SvAddressProvider\nimport com.devskiller.jfairy.producer.person.locale.zh.ZhAddressProvider\n\nclass FairyModuleSpec extends Specification {\n\n\tprivate MapBasedDataMaster mapBasedDataMaster = Stub(MapBasedDataMaster)\n\tprivate BaseProducer baseProducer = Stub(BaseProducer)\n\tprivate DateProducer dateProducer = Stub(DateProducer)\n\n\tdef \"should create appropriate locale-specific providers for locale\"() {\n\t\twhen:\n\t\t\tLocaleSpecificProviders providers = LocaleSpecificProvidersFactory.createProvidersForLocale(\n\t\t\t\tLocale.forLanguageTag(locale), mapBasedDataMaster, baseProducer, dateProducer)\n\n\t\tthen:\n\t\t\tproviders.addressProvider().getClass() == expectedAddressProvider\n\n\t\twhere:\n\t\t\tlocale | expectedAddressProvider\n\t\t\t\"en\"   | EnAddressProvider.class\n\t\t\t\"pl\"   | PlAddressProvider.class\n\t\t\t\"es\"   | EsAddressProvider.class\n\t\t\t\"fr\"   | FrAddressProvider.class\n\t\t\t\"it\"   | EnAddressProvider.class\n\t\t\t\"de\"   | DeAddressProvider.class\n\t\t\t\"sv\"   | SvAddressProvider.class\n\t\t\t\"ka\"   | KaAddressProvider.class\n\t\t\t\"zh\"   | ZhAddressProvider.class\n\t}\n\n\tdef \"should fall back to English providers for unknown locale\"() {\n\t\twhen:\n\t\t\tLocaleSpecificProviders providers = LocaleSpecificProvidersFactory.createProvidersForLocale(\n\t\t\t\tLocale.forLanguageTag(\"xx\"), mapBasedDataMaster, baseProducer, dateProducer)\n\n\t\tthen:\n\t\t\tproviders.addressProvider().getClass() == EnAddressProvider.class\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/FairySpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport java.util.function.Supplier\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.data.DataMaster\nimport com.devskiller.jfairy.producer.person.Person\n\nclass FairySpec extends Specification {\n\n\tprivate static final String CUSTOM_STRING = 'Custom Data Master'\n\n\tDataMaster customDataMaster = Stub(DataMaster) {\n\t\tgetString(_ as String) >> CUSTOM_STRING\n\t\tgetStringList(_ as String) >> Arrays.asList(CUSTOM_STRING)\n\t\tgetValuesOfType(_ as String, _ as String, String.class) >> CUSTOM_STRING\n\t\tgetRandomValue(_ as String) >> CUSTOM_STRING\n\t}\n\n\tSupplier<DataMaster> customDataMasterProvider = Stub(Supplier) {\n\t\tget() >> customDataMaster\n\t}\n\n\n\tdef \"Second person should be different without fairy instance\"() {\n\n\t\tgiven:\n\t\t\tPerson person = Fairy.create().person()\n\t\twhen:\n\t\t\tperson = Fairy.create().person()\n\t\tthen:\n\t\t\tperson.fullName != old(person.fullName)\n\t}\n\n\tdef \"Second person should be different with one fairy\"() {\n\n\t\tgiven:\n\t\t\tFairy fairy = Fairy.create()\n\t\t\tPerson person = fairy.person()\n\t\twhen:\n\t\t\tperson = fairy.person()\n\t\tthen:\n\t\t\tperson.fullName != old(person.fullName)\n\t}\n\n\tdef \"Second person should be the same with the same random seed\"() {\n\n\t\tgiven:\n\t\t\tFairy firstFairy = Fairy.builder().withRandomSeed(10).build()\n\t\t\tFairy secondFairy = Fairy.builder().withRandomSeed(10).build()\n\n\t\t\tPerson firstPerson = firstFairy.person()\n\t\t\tPerson secondPerson = secondFairy.person()\n\t\t\tPerson thirdPerson = firstFairy.person()\n\t\t\tPerson fourthPerson = secondFairy.person()\n\n\t\texpect:\n\t\tfirstPerson.fullName == secondPerson.fullName\n\t\tthirdPerson.fullName == fourthPerson.fullName\n\n\t\tfirstPerson.fullName != thirdPerson.fullName\n\t}\n\n\tdef \"Second person should be different with different random seeds\"() {\n\n\t\tgiven:\n\t\t\tFairy firstFairy = Fairy.builder().withRandomSeed(10).build()\n\t\t\tFairy secondFairy = Fairy.builder().withRandomSeed(20).build()\n\n\t\t\tPerson firstPerson = firstFairy.person()\n\t\t\tPerson secondPerson = secondFairy.person()\n\n\t\texpect:\n\t\tfirstPerson.fullName != secondPerson.fullName\n\t}\n\n\tdef \"should use default DataMaster when custom not provided\"() {\n\t\tgiven:\n\t\t\tFairy fairy = Fairy.create()\n\t\twhen:\n\t\t\tPerson samplePerson = fairy.person()\n\n\t\tthen:\n\t\t\tsamplePerson.firstName && samplePerson.firstName != CUSTOM_STRING\n\n\t}\n\n\tdef \"should use custom DataMaster when provided\"() {\n\t\tgiven:\n\t\t\tFairy fairy = Fairy.create(customDataMasterProvider, Locale.forLanguageTag(\"EN\"))\n\n\t\twhen:\n\t\t\tPerson samplePerson = fairy.person()\n\n\t\tthen:\n\t\t\tsamplePerson.firstName == CUSTOM_STRING\n\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/FairyZhSpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.company.Company\nimport com.devskiller.jfairy.producer.person.Person\n\n/**\n *\n * com.devskiller.jfairy.FairyZhSpec\n * @author lhfcws\n * @since 2017/3/2\n */\nclass FairyZhSpec extends Specification {\n\tprivate final int SEED = 1\n\tprivate Fairy fairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.CHINA).build()\n\n\t/********************\n\t * Person\n\t */\n\tdef \"Should create Chinese name\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.fullName == '国富 钱'\n\t}\n\n\tdef \"Should create Chinese id card\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.nationalIdentityCardNumber.length() == 18\n\t}\n\n\tdef \"Should create empty since Chinese id number is the only citizen id in China\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.nationalIdentificationNumber.length() == 0\n\t}\n\n\tdef \"Should create Chinese address\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.address.addressLine1 == '南京市中山大道122号 101房'\n\t}\n\n\tdef \"Should create Chinese city\"() {\n\t\twhen:\n\t\tPerson person = fairy.person()\n\t\tthen:\n\t\tperson.address.city == '南京'\n\t}\n\n\t/********************\n\t * Company\n\t */\n\tdef \"Should create Chinese company name\"() {\n\t\twhen:\n\t\tCompany company = fairy.company()\n\t\tthen:\n\t\tcompany.name == \"后海金融\"\n\t}\n\n\tdef \"Should create Chinese company url\"() {\n\t\twhen:\n\t\tCompany company = fairy.company()\n\t\tthen:\n\t\tcompany.url == \"http://www.540e6d7791.org\"\n\t}\n\n\tdef \"Should create Chinese company vat\"() {\n\t\twhen:\n\t\tCompany company = fairy.company()\n\t\tthen:\n\t\tcompany.vatIdentificationNumber.length() == 15\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/UniqueEnforcerSpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport java.util.function.Supplier\n\nimport com.devskiller.jfairy.producer.person.Person\nimport com.devskiller.jfairy.producer.company.Company\nimport spock.lang.Specification\n\nclass UniqueEnforcerSpec extends Specification {\n\n\tprivate Fairy fairy = Fairy.create()\n\n\tdef \"should generate unique persons by email\"() {\n\t\tgiven:\n\t\t\tdef unique = UniqueEnforcer.of(fairy.&person, { Person p -> p.email })\n\t\twhen:\n\t\t\tdef persons = (1..50).collect { unique.next() }\n\t\t\tdef emails = persons.collect { it.email }\n\t\tthen:\n\t\t\temails.toSet().size() == 50\n\t}\n\n\tdef \"should generate unique companies by name\"() {\n\t\tgiven:\n\t\t\tdef unique = UniqueEnforcer.of(fairy.&company, { Company c -> c.name })\n\t\twhen:\n\t\t\tdef companies = (1..20).collect { unique.next() }\n\t\t\tdef names = companies.collect { it.name }\n\t\tthen:\n\t\t\tnames.toSet().size() == 20\n\t}\n\n\tdef \"should throw after max retries with small pool\"() {\n\t\tgiven:\n\t\t\tint counter = 0\n\t\t\tdef unique = UniqueEnforcer.of({ -> counter++ % 3 }, { it }, 100)\n\t\twhen:\n\t\t\tunique.next() // 0\n\t\t\tunique.next() // 1\n\t\t\tunique.next() // 2\n\t\t\tunique.next() // should fail - only 3 unique values possible\n\t\tthen:\n\t\t\tthrown(UniqueGenerationException)\n\t}\n\n\tdef \"should reset tracked values\"() {\n\t\tgiven:\n\t\t\tint counter = 0\n\t\t\tdef unique = UniqueEnforcer.of({ -> counter++ % 2 }, { it }, 100)\n\t\twhen:\n\t\t\tunique.next() // 0\n\t\t\tunique.next() // 1\n\t\t\tunique.reset()\n\t\t\tunique.next() // 0 again - OK after reset\n\t\tthen:\n\t\t\tunique.size() == 1\n\t}\n\n\tdef \"should track size\"() {\n\t\tgiven:\n\t\t\tdef unique = UniqueEnforcer.of(fairy.&person, { Person p -> p.email })\n\t\twhen:\n\t\t\t(1..10).each { unique.next() }\n\t\tthen:\n\t\t\tunique.size() == 10\n\t}\n\n\tdef \"should allow custom max retries\"() {\n\t\tgiven:\n\t\t\tdef unique = UniqueEnforcer.of({ -> \"same\" }, { it }, 5)\n\t\twhen:\n\t\t\tunique.next() // OK first time\n\t\t\tunique.next() // should fail after 5 retries\n\t\tthen:\n\t\t\tdef e = thrown(UniqueGenerationException)\n\t\t\te.message.contains(\"5 retries\")\n\t}\n\n\tdef \"should share seen set between default and custom suppliers\"() {\n\t\tgiven:\n\t\t\tint counter = 0\n\t\t\tdef unique = UniqueEnforcer.of({ -> counter++ }, { it }, 100)\n\t\twhen:\n\t\t\tunique.next()                             // 0 via default\n\t\t\tunique.next({ -> counter++ } as Supplier) // 1 via custom\n\t\t\tunique.next()                             // 2 via default\n\t\tthen:\n\t\t\tunique.size() == 3\n\t}\n\n\tdef \"should reject zero maxRetries\"() {\n\t\twhen:\n\t\t\tUniqueEnforcer.of({ -> \"x\" }, { it }, 0)\n\t\tthen:\n\t\t\tthrown(IllegalArgumentException)\n\t}\n\n\tdef \"should reject negative maxRetries\"() {\n\t\twhen:\n\t\t\tUniqueEnforcer.of({ -> \"x\" }, { it }, -1)\n\t\tthen:\n\t\t\tthrown(IllegalArgumentException)\n\t}\n\n\tdef \"should reject null generator\"() {\n\t\twhen:\n\t\t\tUniqueEnforcer.of(null, { it })\n\t\tthen:\n\t\t\tthrown(NullPointerException)\n\t}\n\n\tdef \"should reject null keyExtractor\"() {\n\t\twhen:\n\t\t\tUniqueEnforcer.of({ -> \"x\" }, null)\n\t\tthen:\n\t\t\tthrown(NullPointerException)\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/UniqueFairySpec.groovy",
    "content": "package com.devskiller.jfairy\n\nimport com.devskiller.jfairy.producer.person.PersonProperties\nimport spock.lang.Specification\n\nclass UniqueFairySpec extends Specification {\n\n\tprivate Fairy fairy = Fairy.create()\n\n\tdef \"should generate unique persons by email\"() {\n\t\tgiven:\n\t\t\tdef unique = fairy.unique()\n\t\twhen:\n\t\t\tdef persons = (1..50).collect { unique.person() }\n\t\t\tdef emails = persons.collect { it.email }\n\t\tthen:\n\t\t\temails.toSet().size() == 50\n\t}\n\n\tdef \"should generate unique persons with properties\"() {\n\t\tgiven:\n\t\t\tdef unique = fairy.unique()\n\t\twhen:\n\t\t\tdef persons = (1..20).collect { unique.person(PersonProperties.male()) }\n\t\t\tdef emails = persons.collect { it.email }\n\t\tthen:\n\t\t\temails.toSet().size() == 20\n\t\t\tpersons.every { it.male }\n\t}\n\n\tdef \"should track uniqueness across parameterized and non-parameterized calls\"() {\n\t\tgiven:\n\t\t\tdef unique = fairy.unique()\n\t\twhen:\n\t\t\tdef p1 = unique.person()\n\t\t\tdef p2 = unique.person(PersonProperties.male())\n\t\t\tdef p3 = unique.person()\n\t\tthen:\n\t\t\t[p1, p2, p3].collect { it.email }.toSet().size() == 3\n\t}\n\n\tdef \"should generate unique companies by name\"() {\n\t\tgiven:\n\t\t\tdef unique = fairy.unique()\n\t\twhen:\n\t\t\tdef companies = (1..20).collect { unique.company() }\n\t\t\tdef names = companies.collect { it.name }\n\t\tthen:\n\t\t\tnames.toSet().size() == 20\n\t}\n\n\tdef \"should generate unique IBANs\"() {\n\t\tgiven:\n\t\t\tdef plFairy = Fairy.create(Locale.forLanguageTag(\"pl\"))\n\t\t\tdef unique = plFairy.unique()\n\t\twhen:\n\t\t\tdef ibans = (1..10).collect { unique.iban() }\n\t\t\tdef numbers = ibans.collect { it.ibanNumber }\n\t\tthen:\n\t\t\tnumbers.toSet().size() == 10\n\t}\n\n\tdef \"should generate unique credit cards\"() {\n\t\tgiven:\n\t\t\tdef unique = fairy.unique()\n\t\twhen:\n\t\t\tdef cards = (1..10).collect { unique.creditCard() }\n\t\t\tdef numbers = cards.collect { it.cardNumber }\n\t\tthen:\n\t\t\tnumbers.toSet().size() == 10\n\t}\n\n\tdef \"should reset all trackers\"() {\n\t\tgiven:\n\t\t\tdef unique = fairy.unique()\n\t\t\t(1..5).each { unique.person() }\n\t\t\t(1..5).each { unique.company() }\n\t\twhen:\n\t\t\tunique.reset()\n\t\t\tunique.person()\n\t\t\tunique.company()\n\t\tthen:\n\t\t\tnoExceptionThrown()\n\t}\n\n\tdef \"should support custom max retries\"() {\n\t\tgiven:\n\t\t\tdef unique = fairy.unique(500)\n\t\twhen:\n\t\t\tunique.person()\n\t\tthen:\n\t\t\tnoExceptionThrown()\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/data/MapBasedDataMasterSpec.groovy",
    "content": "/*\n * Copyright (c) 2013. Codearte\n */\n\npackage com.devskiller.jfairy.data\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\nimport com.devskiller.jfairy.producer.person.PersonProvider\n\nclass MapBasedDataMasterSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = Spy(BaseProducer, constructorArgs: [new RandomGenerator()])\n\tprivate MapBasedDataMaster data = Spy(MapBasedDataMaster, constructorArgs: [baseProducer])\n\n\tdef setup() {\n\t\tbaseProducer.randomBetween() >> 0\n\t}\n\n\tdef \"should read first names\"() {\n\t\twhen:\n\t\t\tDataMaster dataMaster = new MapBasedDataMaster()\n\t\t\tdataMaster.readResources(\"jfairy_en.yml\")\n\n\t\t\tMap<String, List<String>> firstNames = dataMaster.getData(PersonProvider.FIRST_NAME, Map.class)\n\t\tthen:\n\t\t\tfirstNames.size() > 0\n\t\t\tfirstNames.keySet().size() > 0\n\t}\n\n\tdef \"should return men\"() {\n\t\tsetup:\n\t\t\tdata.getData(PersonProvider.FIRST_NAME, Map.class) >> [female: ['Ana', 'Ivon'], male: ['Mark']]\n\n\t\twhen:\n\t\t\tString male = data.getValuesOfType(PersonProvider.FIRST_NAME, \"male\", String.class)\n\n\t\tthen:\n\t\t\tmale == \"Mark\"\n\t}\n\n\tdef \"should return one of women\"() {\n\t\tsetup:\n\t\t\tdata.getData(PersonProvider.FIRST_NAME, Map.class) >> [female: ['Ana', 'Ivon'], male: ['Mark']]\n\n\t\twhen:\n\t\t\tString female = data.getValuesOfType(PersonProvider.FIRST_NAME, \"female\", String.class)\n\n\t\tthen:\n\t\t\t(female == \"Ana\") || (female == \"Ivon\")\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/BaseProducerSpec.groovy",
    "content": "/*\n * Copyright (c) 2013. Codearte\n */\n\npackage com.devskiller.jfairy.producer\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nclass BaseProducerSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = Spy(BaseProducer, constructorArgs: [new RandomGenerator()])\n\n\tdef setup() {\n\t\tbaseProducer.randomBetween('0', '9') >> '7'\n\t\tbaseProducer.randomBetween('a', 'z') >> 'x'\n\t}\n\n\tdef \"should replace # with digit 7\"() {\n\t\texpect:\n\t\t  baseProducer.numerify(\"Tes#t#\") == \"Tes7t7\"\n\t}\n\n\tdef \"should replace ? with letter x\"() {\n\t\texpect:\n\t\t  baseProducer.letterify(\"Tes?t?\") == \"Tesxtx\"\n\t}\n\n\tdef \"should replace # and ? with 7 and x respectively\"() {\n\t\texpect:\n\t\t  baseProducer.bothify(\"Test?#\") == \"Testx7\"\n\t}\n\n\tdef \"should replace ? with letter from desired range\"() {\n\t\twhen:\n\t\t  String result = baseProducer.letterify(\"Test??\", 'A' as char, 'A' as char)\n\t\tthen:\n\t\t  result == \"TestAA\"\n\t}\n\n\t@Unroll\n\tdef \"should generate random number from given range #from - #to\"() {\n\t\tsetup:\n\t\t  BaseProducer randomGenerator = new BaseProducer(new RandomGenerator())\n\n\t\texpect:\n\t\t  double between = randomGenerator.randomBetween(from, to)\n\n\t\t  between >= from\n\t\t  between <= to\n\n\t\twhere:\n\t\t  from | to\n\t\t  5    | 9\n\t\t  1    | 2\n\t\t  1    | 3\n\t\t  0    | 4\n\t\t  48   | 57\n\t\t  2L   | 3L\n\t\t  -5L  | -2L\n\t\t  -3L  | 2L\n\t\t  2.0  | 3.0\n\t\t  -2.0 | -1.0\n\t}\n\n\tdef \"should retrieve random enum element\"() {\n\t\tsetup:\n\t\t  baseProducer.randomBetween(0, 2) >> 1\n\t\texpect:\n\t\t  TestEnum.B == baseProducer.randomElement(TestEnum)\n\t}\n\n\tdef \"should retrieve random vararg element\"() {\n\t\tsetup:\n\t\t  baseProducer.randomBetween(0, 2) >> 1\n\t\texpect:\n\t\t  'B' == baseProducer.randomElement('A', 'B', 'C')\n\t}\n\n\t@Unroll(\"Should return #count elements\")\n\tdef \"should return declared numer of random elements\"() {\n\t\tgiven:\n\t\t  List<String> words = Arrays.asList('1', '2', '3')\n\t\twhen:\n\t\t  List<String> elements = baseProducer.randomElements(words, count)\n\t\tthen:\n\t\t  elements.size() == count\n\t\twhere:\n\t\t  count | _\n\t\t  1     | _\n\t\t  2     | _\n\t\t  3     | _\n\t\t  4     | _\n\t\t  5     | _\n\t\t  6     | _\n\t\t  7     | _\n\t}\n\n\tstatic enum TestEnum {\n\n\t\tA, B, C\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/CompanySpec.groovy",
    "content": "package com.devskiller.jfairy.producer\n\nimport org.apache.commons.validator.routines.DomainValidator\nimport org.apache.commons.validator.routines.EmailValidator\nimport org.apache.commons.validator.routines.UrlValidator\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Bootstrap\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.company.Company\n\nimport static com.devskiller.jfairy.producer.company.CompanyProperties.CompanyProperty.withDomain\nimport static com.devskiller.jfairy.producer.company.CompanyProperties.CompanyProperty.withEmail\nimport static com.devskiller.jfairy.producer.company.CompanyProperties.CompanyProperty.withName\nimport static com.devskiller.jfairy.producer.company.CompanyProperties.CompanyProperty.withVatIdentificationNumber\n\n/**\n * @author Codearte\n * @since 2013-10-07\n */\nclass CompanySpec extends Specification {\n\n\tprivate EmailValidator emailValidator = EmailValidator.getInstance()\n\tprivate UrlValidator urlValidator = UrlValidator.getInstance()\n\tprivate DomainValidator domainValidator = DomainValidator.getInstance()\n\tprivate Fairy fairy = Bootstrap.create()\n\n\tdef \"should instantiate Company producer\"() {\n\t\twhen:\n\t\t\tCompany company = fairy.company()\n\t\tthen:\n\t\t\tcompany\n\t}\n\n\tdef \"should be sure that data exists\"() {\n\t\twhen:\n\t\t\tCompany company = fairy.company()\n\t\tthen:\n\t\t\tcompany.name\n\t\t\tdomainValidator.isValid(company.domain)\n\t\t\temailValidator.isValid(company.email)\n\t\t\turlValidator.isValid(company.url)\n\t\t\tcompany.vatIdentificationNumber\n\t}\n\n\tdef \"withName should create company with specific name\"() {\n\t\twhen:\n\t\t\tCompany company = fairy.company(withName(\"Specific Name\"))\n\t\tthen:\n\t\t\tcompany.name == \"Specific Name\"\n\t}\n\n\tdef \"withDomain should create company with specific domain\"() {\n\t\twhen:\n\t\t\tCompany company = fairy.company(withDomain(\"specificdomain.com\"))\n\t\tthen:\n\t\t\tcompany.domain == \"specificdomain.com\"\n\t}\n\n\tdef \"withEmail should create company with specific email\"() {\n\t\twhen:\n\t\t\tCompany company = fairy.company(withEmail(\"specificemail\"))\n\t\tthen:\n\t\t\tcompany.email.startsWith(\"specificemail@\")\n\t}\n\n\tdef \"withVatIdentificationNumber should create company with specific vat identification number\"() {\n\t\twhen:\n\t\t\tCompany company = fairy.company(withVatIdentificationNumber(\"specificvatidentificationnumber\"))\n\t\tthen:\n\t\t\tcompany.vatIdentificationNumber == \"specificvatidentificationnumber\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/DateProducerSpec.groovy",
    "content": "/*\n * Copyright (c) 2013 Codearte and authors\n */\npackage com.devskiller.jfairy.producer\n\nimport java.time.LocalDateTime\nimport java.time.OffsetDateTime\nimport java.time.Period\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nclass DateProducerSpec extends Specification {\n\n\tprivate static final int MAX_YEARS_IN_THE_PAST = 5\n\n\tprivate static final LocalDateTime CURRENT_DATE = LocalDateTime.parse(\"2013-11-09T01:16:00\")\n\tprivate static final int CURRENT_YEAR = 2013\n\tprivate static final OffsetDateTime LATEST_DATE_IN_THE_PAST = OffsetDateTime.parse(\"2013-11-09T01:15:59+00:00\")\n\tprivate static final OffsetDateTime SOME_DATE_IN_THE_PAST = OffsetDateTime.parse(\"2011-01-20T12:32:12+00:00\")\n\tprivate static final OffsetDateTime ONE_YEAR_LATER = OffsetDateTime.parse(\"2014-11-09T01:16:00+00:00\")\n\n\tprivate static final OffsetDateTime FIVE_YEARS_EARLIER_DATE = OffsetDateTime.parse(\"2008-11-09T01:16:00+00:00\")\n\tprivate static final long LATEST_DATE_IN_THE_PAST_IN_MILLIS = LATEST_DATE_IN_THE_PAST.toInstant().toEpochMilli()\n\tprivate static final long SOME_DATE_IN_THE_PAST_IN_MILLIS = SOME_DATE_IN_THE_PAST.toInstant().toEpochMilli()\n\tprivate static final long FIVE_YEARS_EARLIER_DATE_IN_MILLIS = FIVE_YEARS_EARLIER_DATE.toInstant().toEpochMilli()\n\n\tprivate baseProducer = Spy(BaseProducer, constructorArgs: [new RandomGenerator()])\n\tprivate timeProviderMock = Mock(TimeProvider)\n\tprivate DateProducer sut = new DateProducer(baseProducer, timeProviderMock)\n\n\tdef setup() {\n\t\ttimeProviderMock.getCurrentTime() >> CURRENT_DATE\n\t\ttimeProviderMock.getCurrentYear() >> CURRENT_YEAR\n\t}\n\n\tdef \"should generate date in the past\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(FIVE_YEARS_EARLIER_DATE_IN_MILLIS, LATEST_DATE_IN_THE_PAST_IN_MILLIS) >>\n\t\t\t\tSOME_DATE_IN_THE_PAST_IN_MILLIS\n\t\twhen:\n\t\t\tLocalDateTime dateInThePast = sut.randomDateInThePast(MAX_YEARS_IN_THE_PAST)\n\t\tthen:\n\t\t\tdateInThePast < CURRENT_DATE\n\t\t\tdateInThePast > FIVE_YEARS_EARLIER_DATE.toLocalDateTime()\n\t\t\tdateInThePast == SOME_DATE_IN_THE_PAST.toLocalDateTime()\n\t}\n\n\tdef \"should fail generate date in the past if passed value is negative\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(FIVE_YEARS_EARLIER_DATE_IN_MILLIS, LATEST_DATE_IN_THE_PAST_IN_MILLIS) >>\n\t\t\t\tSOME_DATE_IN_THE_PAST_IN_MILLIS\n\t\twhen:\n\t\t\tsut.randomDateInThePast(-MAX_YEARS_IN_THE_PAST)\n\t\tthen:\n\t\t\tthrown IllegalArgumentException\n\t}\n\n\tdef \"should be able to reach minimum date for date in the past\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(FIVE_YEARS_EARLIER_DATE_IN_MILLIS, LATEST_DATE_IN_THE_PAST_IN_MILLIS) >>\n\t\t\t\tFIVE_YEARS_EARLIER_DATE_IN_MILLIS\n\t\twhen:\n\t\t\tLocalDateTime dateInThePast = sut.randomDateInThePast(MAX_YEARS_IN_THE_PAST)\n\t\tthen:\n\t\t\tdateInThePast == FIVE_YEARS_EARLIER_DATE.toLocalDateTime()\n\t}\n\n\tdef \"maximum date should be before now with defined offset for date in the past\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(FIVE_YEARS_EARLIER_DATE_IN_MILLIS, LATEST_DATE_IN_THE_PAST_IN_MILLIS) >>\n\t\t\t\tLATEST_DATE_IN_THE_PAST_IN_MILLIS\n\t\twhen:\n\t\t\tLocalDateTime dateInThePast = sut.randomDateInThePast(MAX_YEARS_IN_THE_PAST)\n\t\tthen:\n\t\t\tdateInThePast == LATEST_DATE_IN_THE_PAST.toLocalDateTime()\n\t}\n\n\t@Unroll\n\tdef \"should generate date between years #fromYear - #toYear\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(_, _) >> {args -> (args[1] + args[0]) / 2}\n\t\texpect:\n\t\t\tsut.randomDateBetweenYears(fromYear, toYear) == expectedDate\n\t\twhere:\n\t\t\tfromYear | toYear || expectedDate\n\t\t\t2009     | 2010   || LocalDateTime.parse(\"2009-12-31T23:59:30\")\n\t\t\t2010     | 2010   || LocalDateTime.parse(\"2010-07-02T11:59:30\")\n\t\t\t2015     | 2020   || LocalDateTime.parse(\"2017-12-31T23:59:30\")\n\t}\n\n\tdef \"should generate date between specified year and now\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(FIVE_YEARS_EARLIER_DATE_IN_MILLIS, LATEST_DATE_IN_THE_PAST_IN_MILLIS) >>\n\t\t\t\tSOME_DATE_IN_THE_PAST_IN_MILLIS\n\t\twhen:\n\t\t\tLocalDateTime dateInThePast = sut.randomDateBetweenYearAndNow(2008)\n\t\tthen:\n\t\t\tdateInThePast < CURRENT_DATE\n\t\t\tdateInThePast > FIVE_YEARS_EARLIER_DATE.toLocalDateTime()\n\t\t\tdateInThePast == SOME_DATE_IN_THE_PAST.toLocalDateTime()\n\t}\n\n\tdef \"should generate date between now and specified period\"() {\n\t\twhen:\n\t\t\tLocalDateTime dateInFuturePeriod = sut.randomDateBetweenNowAndFuturePeriod(Period.ofMonths(12))\n\t\tthen:\n\t\t\tdateInFuturePeriod >= CURRENT_DATE\n\t\t\tdateInFuturePeriod <= ONE_YEAR_LATER.toLocalDateTime()\n\t}\n\n\tdef \"should generate date between now and future offset\"() {\n\t\twhen:\n\t\t\tLocalDateTime dateInFuturePeriod = sut.randomDateInTheFuture(1)\n\t\tthen:\n\t\t\tdateInFuturePeriod >= CURRENT_DATE\n\t\t\tdateInFuturePeriod <= ONE_YEAR_LATER.toLocalDateTime()\n\t}\n\n\tdef \"should generate date in future\"() {\n\t\twhen:\n\t\t\tLocalDateTime dateInFuturePeriod = sut.randomDateInTheFuture()\n\t\tthen:\n\t\t\tdateInFuturePeriod >= CURRENT_DATE\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/TextSpec.groovy",
    "content": "package com.devskiller.jfairy.producer\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.text.TextProducer\n\nclass TextSpec extends Specification {\n\n\tprivate TextProducer text\n\n\tdef setup() {\n\t\ttext = Fairy.create().textProducer()\n\t}\n\n\tdef \"should instantiate Text producer with Text object\"() {\n\t\texpect:\n\t\t\ttext instanceof TextProducer\n\t}\n\n\tdef \"should be sure that data exists\"() {\n\t\texpect:\n\t\t\ttext.loremIpsum()\n\t\t\ttext.text()\n\t\t\ttext.word()\n\t\t\ttext.word(100)\n\t\t\ttext.latinWord()\n\t\t\ttext.latinWord(100)\n\t\t\ttext.sentence()\n\t\t\ttext.sentence(100)\n\t\t\ttext.latinSentence()\n\t\t\ttext.latinSentence(100)\n\t\t\ttext.paragraph()\n\t\t\ttext.paragraph(100)\n\t}\n\n\tdef \"should limit generated text\"() {\n\t\twhen:\n\t\t\ttext.limitedTo(10)\n\t\tthen:\n\t\t\ttext.loremIpsum().length() == 10\n\t\t\ttext.word(100).length() == 10\n\t\t\ttext.sentence(100).length() == 10\n\t\t\ttext.paragraph(100).length() == 10\n\t}\n\n\tdef \"should generate Lorem Ipsum\"() {\n\t\texpect:\n\t\t\ttext.loremIpsum()\n\t}\n\n\tdef \"should generate localised text\"() {\n\t\texpect:\n\t\t\ttext.text()\n\t}\n\n\tdef \"should generate word\"() {\n\t\texpect:\n\t\t\ttext.word()\n\t}\n\n\tdef \"should generate latin word\"() {\n\t\texpect:\n\t\t\ttext.latinWord()\n\t}\n\n\tdef \"should generate sentence\"() {\n\t\texpect:\n\t\t\ttext.sentence()\n\t}\n\n\tdef \"should generate latin sentence\"() {\n\t\texpect:\n\t\t\ttext.latinSentence()\n\t}\n\n\tdef \"should generate paragraph\"() {\n\t\texpect:\n\t\t\ttext.paragraph()\n\t}\n\n\tdef \"should create random string\"() {\n\t\twhen:\n\t\t\tString randomString = text.randomString(10)\n\t\tthen:\n\t\t\trandomString.length() == 10\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/CompanyProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.data.DataMaster\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.VATIdentificationNumberProvider\nimport com.devskiller.jfairy.producer.company.CompanyProvider\nimport com.devskiller.jfairy.producer.company.DefaultCompanyProvider\n\nimport static com.devskiller.jfairy.producer.company.CompanyProvider.COMPANY_EMAIL\nimport static com.devskiller.jfairy.producer.company.CompanyProvider.COMPANY_NAME\nimport static com.devskiller.jfairy.producer.company.CompanyProvider.DOMAIN\n\nclass CompanyProviderSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = Mock(BaseProducer)\n\tprivate DataMaster dataMaster = Mock(DataMaster)\n\tprivate VATIdentificationNumberProvider vatIdentificationNumberProvider = Mock(VATIdentificationNumberProvider)\n\n\tdef \"should remove slashes in company email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.trueOrFalse() >> false\n\t\t\tdataMaster.getRandomValue(COMPANY_EMAIL) >> \"info\"\n\t\t\tdataMaster.getRandomValue(COMPANY_NAME) >> \"mercedes/bosch\"\n\t\t\tdataMaster.getRandomValue(DOMAIN) >> \"com\"\n\t\t\tCompanyProvider companyProvider = new DefaultCompanyProvider(baseProducer, dataMaster, vatIdentificationNumberProvider)\n\n\t\twhen:\n\t\t\tString email = companyProvider.get().email\n\n\t\tthen:\n\t\t\temail == \"info@mercedesbosch.com\"\n\t}\n\n\n\tdef \"should lowercase letters in company email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.trueOrFalse() >> false\n\t\t\tdataMaster.getRandomValue(COMPANY_EMAIL) >> \"info\"\n\t\t\tdataMaster.getRandomValue(COMPANY_NAME) >> \"GOOGLE\"\n\t\t\tdataMaster.getRandomValue(DOMAIN) >> \"com\"\n\t\t\tCompanyProvider companyProvider = new DefaultCompanyProvider(baseProducer, dataMaster, vatIdentificationNumberProvider)\n\n\t\twhen:\n\t\t\tString email = companyProvider.get().email\n\n\t\tthen:\n\t\t\temail == \"info@google.com\"\n\t}\n\n\n\tdef \"should strip dots and remove spaces in company email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.trueOrFalse() >> false\n\t\t\tdataMaster.getRandomValue(COMPANY_EMAIL) >> \"info\"\n\t\t\tdataMaster.getRandomValue(COMPANY_NAME) >> \"company inc.\"\n\t\t\tdataMaster.getRandomValue(DOMAIN) >> \"com\"\n\t\t\tCompanyProvider companyProvider = new DefaultCompanyProvider(baseProducer, dataMaster, vatIdentificationNumberProvider)\n\n\t\twhen:\n\t\t\tString email = companyProvider.get().email\n\n\t\tthen:\n\t\t\temail == \"info@companyinc.com\"\n\t}\n\n\tdef \"should strip accents in company email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.trueOrFalse() >> false\n\t\t\tdataMaster.getRandomValue(COMPANY_EMAIL) >> \"info\"\n\t\t\tdataMaster.getRandomValue(COMPANY_NAME) >> \"åäöéáąćęłńśóźż\"\n\t\t\tdataMaster.getRandomValue(DOMAIN) >> \"com\"\n\t\t\tCompanyProvider companyProvider = new DefaultCompanyProvider(baseProducer, dataMaster, vatIdentificationNumberProvider)\n\n\t\twhen:\n\t\t\tString email = companyProvider.get().email\n\n\t\tthen:\n\t\t\temail == \"info@aaoeaacelnsozz.com\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/br/BrVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.br\n\nimport com.devskiller.jfairy.Bootstrap\nimport com.devskiller.jfairy.Fairy\nimport spock.lang.Specification\n\nclass BrVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy = Fairy.create(Locale.forLanguageTag(\"br\"))\n\n\tdef \"Should generate CNPJ with correct format\"() {\n\t\twhen:\n\t\t\tString cnpj = fairy.company().vatIdentificationNumber\n\t\tthen:\n\t\t\tcnpj ==~ /\\d{2}\\.\\d{3}\\.\\d{3}\\/\\d{4}-\\d{2}/\n\t}\n\n\tdef \"Should always generate CNPJ with 18 characters\"() {\n\t\texpect:\n\t\t\tfairy.company().vatIdentificationNumber.length() == 18\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/de/DeVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.de\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\n/**\n * @author Roland Weisleder\n */\nclass DeVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate DeVATIdentificationNumberProvider generator = new DeVATIdentificationNumberProvider(new BaseProducer(new RandomGenerator(42)))\n\n\t@Unroll\n\tdef \"Should validate #vatIdentificationNumber as #valid\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(vatIdentificationNumber) == valid\n\t\twhere:\n\t\t\tvatIdentificationNumber | valid\n\t\t\t'999999999'             | true\n\t\t\t'1234567890'            | false\n\t\t\t'000000000'             | true\n\t\t\t'18947440810'           | false\n\t}\n\n\tdef \"Should always generate proper vatIdentificationNumber\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(generator.get())\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/en/EnVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.en\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\n/**\n * @author Olga Maciaszek-Sharma\n * @since 21.03.15\n */\nclass EnVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String vatIdentificationNumber\n\tprivate final partsDividedAtChar = 2\n\tprivate final int vatIdentificationNumberLength = 10\n\tprivate final int areaPartBeginningIndex = 0\n\tprivate final int serialPartBeginningIndex = 3\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"en\"))\n\t\tvatIdentificationNumber = fairy.company().vatIdentificationNumber\n\t}\n\n\tdef \"should generate number with 10 characters\"() {\n\t\texpect:\n\t\t\tvatIdentificationNumber.length() == vatIdentificationNumberLength\n\t}\n\n\tdef \"should generate number divided by hyphen\"() {\n\t\texpect:\n\t\t\tvatIdentificationNumber.charAt(partsDividedAtChar) == ('-' as char)\n\t}\n\n\tdef \"should generate number with valid area part\"() {\n\t\tgiven:\n\t\t\tString areaPart = vatIdentificationNumber.substring(areaPartBeginningIndex, partsDividedAtChar)\n\t\t\tInteger areaNumber = Integer.parseInt(areaPart)\n\n\t\texpect:\n\t\t\tfor (char digit : areaPart.toCharArray()) {\n\t\t\t\tdigit.isDigit()\n\t\t\t}\n\t\t\t!EnVATIdentificationNumberProvider.EXCLUDED_NUMBERS.contains(areaNumber)\n\t}\n\n\tdef \"should generate number with valid serial part\"() {\n\t\tgiven:\n\t\t\tString serialPart = vatIdentificationNumber.substring(serialPartBeginningIndex, vatIdentificationNumberLength)\n\n\t\texpect:\n\t\t\tfor (char digit : serialPart.toCharArray()) {\n\t\t\t\tdigit.isDigit()\n\t\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/es/EsVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.es\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\n/**\n * @author graux\n * @since 24/06/2015\n */\nclass EsVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate EsVATIdentificationNumberProvider generator = new EsVATIdentificationNumberProvider(new BaseProducer(new RandomGenerator(73)))\n\n\t@Unroll\n\tdef \"Should validate #vatIdentificationNumber as #valid\"() {\n\n\t\texpect:\n\t\t\tgenerator.isValid(vatIdentificationNumber) == valid\n\n\t\twhere:\n\t\t\tvatIdentificationNumber | valid\n\t\t\t\"L17761800\"             | true\n\t\t\t\"31231231X\"             | false\n\t\t\t\"G2301257H\"             | true\n\t\t\t\"AB023023C\"             | false\n\t}\n\n\tdef \"Should always generate proper nip\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(generator.get())\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/ka/KaVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.ka\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\nclass KaVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate KaVATIdentificationNumberProvider provider\n\n\tdef setup() {\n\t\tBaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\t\tprovider = new KaVATIdentificationNumberProvider(baseProducer)\n\t}\n\n\tprivate static final Set<String> ALLOWED_PREFIXES = [ '2' ,'4' ].toSet()\n\n\tdef isVatIdValid(String id) {\n\t\treturn id.length() == 9 && ALLOWED_PREFIXES.contains( id[ 0..0 ] )\n\t}\n\n\tdef \"Should always generate proper VAT id number\"() {\n\t\texpect:\n\t\tisVatIdValid(provider.get())\n\t\twhere:\n\t\ti << (1..100)\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/pl/PlVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.pl\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\nclass PlVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\tprivate PlVATIdentificationNumberProvider generator = new PlVATIdentificationNumberProvider(baseProducer)\n\n\t@Unroll\n\tdef \"Should validate #vatIdentificationNumber as #valid\"() {\n\n\t\texpect:\n\t\t\tgenerator.isValid(vatIdentificationNumber) == valid\n\n\t\twhere:\n\t\t\tvatIdentificationNumber | valid\n\t\t\t\"2684494529\"            | true\n\t\t\t\"1234567890\"            | false\n\t\t\t\"0000000000\"            | true\n\t\t\t\"18947440810\"           | false\n\t}\n\n\tdef \"Should always generate proper vatIdentificationNumber\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(generator.get())\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/se/SvVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.se\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\nimport static com.devskiller.jfairy.producer.company.locale.sv.SvVATIdentificationNumberProvider.isValid\n\nclass SvVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate static final int VAT_IDENTIFICATION_NUMBER_LENGTH = 14\n\n\tprivate Fairy fairy\n\tprivate String vatIdentificationNumber\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"sv\"))\n\t\tvatIdentificationNumber = fairy.company().vatIdentificationNumber\n\t}\n\n\n\tdef \"should generate number with 14 characters\"() {\n\t\texpect:\n\t\t\tvatIdentificationNumber.length() == VAT_IDENTIFICATION_NUMBER_LENGTH\n\t}\n\n\tdef \"should start with SE\"() {\n\t\texpect:\n\t\t\tvatIdentificationNumber.startsWith(\"SE\")\n\t}\n\n\tdef \"should generate number with valid Swedish VAT Identification Number\"() {\n\t\texpect:\n\t\t\tisValid(vatIdentificationNumber)\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/sk/SkVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.sk\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\nclass SkVATIdentificationNumberProviderSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\tprivate SkVATIdentificationNumberProvider generator = new SkVATIdentificationNumberProvider(baseProducer)\n\n\tdef \"Should always generate proper vatIdentificationNumber\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(generator.get())\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n\n\tdef \"Should generate vatIdentificationNumber with length 10\"() {\n\t\twhen:\n\t\t\tString vat = generator.get()\n\t\tthen:\n\t\t\tvat.length() == 10\n\t}\n\n\t@Unroll\n\tdef \"Should validate #vatIdentificationNumber as #valid\"() {\n\n\t\texpect:\n\t\t\tgenerator.isValid(vatIdentificationNumber) == valid\n\n\t\twhere:\n\t\t\tvatIdentificationNumber | valid\n\t\t\t\"2684494529\"            | true\n\t\t\t\"1234567890\"            | false\n\t\t\t\"0000000000\"            | true\n\t\t\t\"18947440810\"           | false\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/company/locale/tr/TrVATIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.company.locale.tr\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\nimport spock.lang.Specification\n\nclass TrVATIdentificationNumberProviderSpec extends Specification {\n\n\tdef \"should generate valid VKN\"() {\n\t\tgiven:\n\t\tBaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\t\tTrVATIdentificationNumberProvider provider = new TrVATIdentificationNumberProvider(baseProducer)\n\n\t\texpect:\n\t\t(1..100).each {\n\t\t\tString vkn = provider.get()\n\t\t\tassert vkn.length() == 10\n\t\t\tint[] digits = vkn.chars().collect { Character.getNumericValue((char) it) }\n\t\t\tint sum = 0\n\t\t\tfor (int i = 0; i < 9; i++) {\n\t\t\t\tint p = (digits[i] + 10 - (i + 1)) % 10\n\t\t\t\tif (p == 9) {\n\t\t\t\t\tsum += 9\n\t\t\t\t} else {\n\t\t\t\t\tint q = (int) (p * Math.pow(2, 9 - i)) % 9\n\t\t\t\t\tsum += q\n\t\t\t\t}\n\t\t\t}\n\t\t\tint c1 = (10 - (sum % 10)) % 10\n\t\t\tassert digits[9] == c1\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/net/NetworkSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.net\n\nimport org.apache.commons.validator.routines.InetAddressValidator\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\nclass NetworkSpec extends Specification {\n\n\tprivate InetAddressValidator ipValidator = InetAddressValidator.getInstance()\n\n\tprivate IPNumberProducer ipNumber = new IPNumberProducer(new BaseProducer(new RandomGenerator()))\n\tprivate NetworkProducer network = new NetworkProducer(ipNumber)\n\n\tdef \"Should generate proper ip number\"() {\n\t\tString ip = network.ipAddress()\n\n\t\texpect:\n\t\t\tip\n\t\t\tipValidator.isValid(ip)\n\n\t}\n\n\tdef \"Should generate proper url\"() {\n\t\tString url = network.url(true)\n\n\t\texpect:\n\t\t\turl.startsWith(\"https://\") && url.endsWith(\".com\")\n\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/payment/CreditCardProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.payment\n\nimport java.time.LocalDateTime\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.data.DataMaster\nimport com.devskiller.jfairy.data.MapBasedDataMaster\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.DateProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\n/**\n * @author jkubrynski@gmail.com\n * @since 2013-11-17\n */\nclass CreditCardProviderSpec extends Specification {\n\n\tpublic static final LocalDateTime EXPIRY_DATE = LocalDateTime.parse(\"2009-02-11T23:59:59.999\")\n\n\tprivate DataMaster dataMaster\n\tprivate DateProducer dateProducer\n\tprivate CreditCardProvider creditCardProvider\n\tprivate BaseProducer baseProducer\n\n\tdef setup() {\n\t\tbaseProducer = new BaseProducer(new RandomGenerator())\n\t\tdataMaster = new MapBasedDataMaster(baseProducer)\n\t\tdateProducer = Mock(DateProducer)\n\t\tdataMaster.readResources(\"jfairy.yml\")\n\t\tcreditCardProvider = new CreditCardProvider(dataMaster, baseProducer, dateProducer)\n\t}\n\n\tdef \"should return credit card basic data\"() {\n\t\twhen:\n\t\t\tCreditCard creditCard = creditCardProvider.get()\n\t\tthen:\n\t\t\tcreditCard.vendor == 'Visa'\n\t\t\tcreditCard.cardNumber.length() == 16\n\t}\n\n\tdef \"should return card expiry date\"() {\n\t\tgiven:\n\t\t\tdateProducer.randomDateBetweenNowAndFuturePeriod(_) >> EXPIRY_DATE\n\t\twhen:\n\t\t\tCreditCard creditCard = creditCardProvider.get()\n\t\tthen:\n\t\t\tcreditCard.expiryDate == EXPIRY_DATE\n\t}\n\n\tdef \"should return card expiry date string\"() {\n\t\tgiven:\n\t\t\tdateProducer.randomDateBetweenNowAndFuturePeriod(_) >> EXPIRY_DATE\n\t\twhen:\n\t\t\tCreditCard creditCard = creditCardProvider.get()\n\t\tthen:\n\t\t\tcreditCard.expiryDateAsString == \"02/09\"\n\t}\n\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/payment/IBANSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.payment\n\nimport de.speedbanking.iban.IbanValidator\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.data.DataMaster\nimport com.devskiller.jfairy.data.MapBasedDataMaster\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\nclass IBANSpec extends Specification {\n\n\tprivate DataMaster dataMaster\n\tprivate BaseProducer baseProducer\n\n\tdef setup() {\n\t\tbaseProducer = new BaseProducer(new RandomGenerator())\n\t\tdataMaster = new MapBasedDataMaster(baseProducer)\n\t\tdataMaster.readResources(\"jfairy_pl.yml\")\n\t}\n\n\t/**\n\t * Austria\t20\t16n\n\t * ATkk bbbb bccc cccc cccc\n\t *\n\t * b = National bank code\n\t */\n\tdef \"should return valid iban\"() {\n\t\twhen:\n\t\t\tIBANProvider iban = new DefaultIBANProvider(\n\t\t\t\tbaseProducer,\n\t\t\t\tdataMaster,\n\t\t\t\tIBANProperties.country(\"AT\")\n\t\t\t)\n\n\t\tthen:\n\t\t\tIbanValidator.validate(iban.get().ibanNumber)\n\t}\n\n\t/**\n\t Poland\t28\t24n\tPLkk bbbs sssx cccc cccc cccc cccc\tb = National bank code\n\t s = Branch code\n\t x = National check digit\n\t c = Account number,\n\n\t PLkk bbbssssx cccccccccccccccc\n\t PL60 11401010 1111000234573201\n\t */\n\tdef \"should return valid polish iban\"() {\n\t\twhen:\n\t\t\tIBANProvider iban = new DefaultIBANProvider(baseProducer, dataMaster)\n\t\tthen:\n\t\t\tIbanValidator.validate(iban.get().ibanNumber)\n\t}\n\n\tdef \"should be usable directly from Fairy\"() {\n\t\twhen:\n\t\t\tString number = Fairy.create().iban(IBANProperties.country(\"PL\")).ibanNumber\n\t\tthen:\n\t\t\tnumber.startsWith('PL')\n\t}\n\n\tdef \"should ignore countries not supporting iban\"() {\n\t\twhen:\n\t\t\tdef iban = Fairy.create().iban(IBANProperties.country(\"US\"))\n\t\tthen:\n\t\t\tiban == null\n\t}\n\n\tdef \"should set proper country for specified language\"() {\n\t\twhen:\n\t\t\tString number = Fairy.create().iban(IBANProperties.language(\"DE\")).ibanNumber\n\t\tthen:\n\t\t\tnumber.startsWith('DE')\n\t}\n\n\tdef \"should set proper country for according to selected language\"() {\n\t\twhen:\n\t\t\tString number = Fairy.create(new Locale('SV')).iban().ibanNumber\n\t\tthen:\n\t\t\tnumber.startsWith('SE')\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/CompanyEmailProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.company.Company\n\nclass CompanyEmailProviderSpec extends Specification {\n\n\tdef \"should remove spaces from firstName and lastName and lowercase letters in company email\"() {\n\t\tgiven:\n\t\t\tCompany company = new Company(null, \"companymail.com\", null, null)\n\t\t\tCompanyEmailProvider companyEmailProvider = new CompanyEmailProvider(\"Emilie Agneta\", \"Vojnov Allerstrand\", company)\n\n\t\twhen:\n\t\t\tString email = companyEmailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"emilie.agneta.vojnov.allerstrand@companymail.com\"\n\t}\n\n\tdef \"should strip accents from company email\"() {\n\t\tgiven:\n\t\t\tCompany company = new Company(null, \"åäöéáąćęłńśóźż.com\", null, null)\n\t\t\tCompanyEmailProvider companyEmailProvider = new CompanyEmailProvider(\"åäöéáąćęłńśóźż\", \"åäöéáąćęłńśóźż\", company)\n\n\t\twhen:\n\t\t\tString email = companyEmailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"aaoeaacelnsozz.aaoeaacelnsozz@aaoeaacelnsozz.com\"\n\t}\n\n\tdef \"should strip sharp s from company email\"() {\n\t\tgiven:\n\t\t\tCompany company = new Company(null, \"companymail.com\", null, null)\n\t\t\tCompanyEmailProvider companyEmailProvider = new CompanyEmailProvider(\"Thieß\", \"Weißmann\", company)\n\n\t\twhen:\n\t\t\tString email = companyEmailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"thiess.weissmann@companymail.com\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/EmailProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.data.DataMaster\nimport com.devskiller.jfairy.producer.BaseProducer\n\nimport static com.devskiller.jfairy.producer.person.PersonProvider.PERSONAL_EMAIL\n\nclass EmailProviderSpec extends Specification {\n\n\tprivate DataMaster dataMaster = Mock(DataMaster)\n\tprivate BaseProducer baseProducer = Mock(BaseProducer)\n\n\tdef setup() {\n\t\tdataMaster.getRandomValue(PERSONAL_EMAIL) >> \"mail.com\"\n\t}\n\n\tdef \"should remove spaces from firstName and lastName in email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(1, 3) >> 1\n\t\t\tEmailProvider emailProvider = new EmailProvider(dataMaster, baseProducer, \"Emilie Agneta\", \"Vojnov Allerstrand\")\n\n\t\twhen:\n\t\t\tString email = emailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"emilieagnetavojnovallerstrand@mail.com\"\n\t}\n\n\tdef \"should replace spaces with dots from firstName and lastName in email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(1, 3) >> 2\n\t\t\tEmailProvider emailProvider = new EmailProvider(dataMaster, baseProducer, \"Emilie Agneta\", \"Vojnov Allerstrand\")\n\n\t\twhen:\n\t\t\tString email = emailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"emilie.agneta.vojnov.allerstrand@mail.com\"\n\t}\n\n\tdef \"should replace spaces with dots from lastName in email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(1, 3) >> 3\n\t\t\tEmailProvider emailProvider = new EmailProvider(dataMaster, baseProducer, \"Emilie Agneta\", \"Vojnov Allerstrand\")\n\n\t\twhen:\n\t\t\tString email = emailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"vojnovallerstrand@mail.com\"\n\t}\n\n\tdef \"should strip accents from email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(1, 3) >> 2\n\t\t\tEmailProvider emailProvider = new EmailProvider(dataMaster, baseProducer, \"åäöéáąćęłńśóźż\", \"åäöéáąćęłńśóźż\")\n\n\t\twhen:\n\t\t\tString email = emailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"aaoeaacelnsozz.aaoeaacelnsozz@mail.com\"\n\t}\n\n\tdef \"should strip sharp s from email\"() {\n\t\tgiven:\n\t\t\tbaseProducer.randomBetween(1, 3) >> 2\n\t\t\tEmailProvider emailProvider = new EmailProvider(dataMaster, baseProducer, \"Thieß\", \"Weißmann\")\n\n\t\twhen:\n\t\t\tString email = emailProvider.get()\n\n\t\tthen:\n\t\t\temail == \"thiess.weissmann@mail.com\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/PersonSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person\n\nimport java.time.LocalDate\nimport java.time.Period\n\nimport org.apache.commons.validator.routines.EmailValidator\nimport spock.lang.Ignore\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Bootstrap\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.company.Company\nimport com.devskiller.jfairy.producer.person.locale.en.EnAddress\nimport com.devskiller.jfairy.producer.util.LanguageCode\n\nimport static com.devskiller.jfairy.producer.person.PersonProperties.ageBetween\nimport static com.devskiller.jfairy.producer.person.PersonProperties.female\nimport static com.devskiller.jfairy.producer.person.PersonProperties.male\nimport static com.devskiller.jfairy.producer.person.PersonProperties.maxAge\nimport static com.devskiller.jfairy.producer.person.PersonProperties.minAge\nimport static com.devskiller.jfairy.producer.person.PersonProperties.mobileTelephoneFormat\nimport static com.devskiller.jfairy.producer.person.PersonProperties.telephoneFormat\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withAddress\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withAge\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withCompany\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withCompanyEmail\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withDateOfBirth\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withEmail\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withFirstName\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withLastName\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withMiddleName\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withNationalIdentificationNumber\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withNationalIdentityCardNumber\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withJobTitle\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withPassportNumber\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withPassword\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withTelephoneNumber\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withMobileTelephoneNumber\nimport static com.devskiller.jfairy.producer.person.PersonProperties.withUsername\n\nclass PersonSpec extends Specification {\n\n\tprivate EmailValidator emailValidator = EmailValidator.getInstance()\n\tprivate Fairy fairy = Bootstrap.create()\n\n\tdef setup() {\n\t\tBootstrap.create()\n\t}\n\n\tdef \"should instantiate PersonProducer producer with person\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson instanceof Person\n\t}\n\n\tdef \"should be sure that fullName is proper\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\t\"${person.firstName} ${person.lastName}\" == person.fullName\n\t}\n\n\tdef \"second generated name should be different\"() {\n\t\texpect:\n\t\t\tfairy.person().firstName != fairy.person().firstName\n\t}\n\n\tdef \"should be sure that data exists\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.firstName\n\t\t\tperson.lastName\n\t\t\tperson.fullName\n\t\t\tperson.email\n\t\t\tperson.male || person.female\n\t\t\tperson.nationalIdentityCardNumber\n\t\t\tperson.address\n\n\t\t\temailValidator.isValid(person.email)\n\t}\n\n\tdef \"should create female\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(female())\n\t\tthen:\n\t\t\tperson.female\n\t}\n\n\tdef \"should create male\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(male())\n\t\tthen:\n\t\t\tperson.male\n\t}\n\n\tdef \"should create person younger than 3 years\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(maxAge(3))\n\t\tthen:\n\t\t\tperson.age <= 3\n\t}\n\n\tdef \"should create nationality\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tCountry.findCountryForLanguage(LanguageCode.EN)*.getCode().contains(person.nationality.code)\n\t}\n\n\t@Ignore(\"Properties are not cleaned\")\n\tdef \"should create person older than 98 years\"() {\n\t\twhen:\n\t\t\tPerson person = Bootstrap.create().person(minAge(99))\n\t\tthen:\n\t\t\tperson.age > 98\n\t}\n\n\t@Ignore(\"Properties are not cleaned\")\n\tdef \"should create person older than 10 years and younger than 10 years\"() {\n\t\twhen:\n\t\t\tPerson person = Bootstrap.create().person(minAge(10), maxAge(10))\n\t\tthen:\n\t\t\tperson.age == 10\n\t}\n\n\tdef \"birth date and age should be related\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(ageBetween(32, 32))\n\t\tthen:\n\t\t\tperson.age == 32\n\t\t\tPeriod period = Period.between(person.getDateOfBirth(), LocalDate.now())\n\t\t\tperiod.years == 32\n\t}\n\n\tdef \"should create telephone number\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.telephoneNumber\n\t}\n\n\tdef \"should create telephone number in defined format\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(telephoneFormat(\"###--###\"))\n\t\tthen:\n\t\t\tperson.telephoneNumber ==~ /\\d\\d\\d--\\d\\d\\d/\n\t}\n\n\tdef \"should create mobile telephone number\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.mobileTelephoneNumber\n\t}\n\n\tdef \"should create mobile telephone number in defined format\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(mobileTelephoneFormat(\"###--###\"))\n\t\tthen:\n\t\t\tperson.mobileTelephoneNumber ==~ /\\d\\d\\d--\\d\\d\\d/\n\t}\n\n\tdef \"should create birth date\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.dateOfBirth.isBefore(LocalDate.now())\n\t}\n\n\tdef \"should create age\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.age\n\t}\n\n\tdef \"should create company email\"() {\n\t\tgiven:\n\t\t\tFairy fairy = fairy\n\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\n\t\tthen:\n\t\t\tperson.companyEmail\n\t\t\temailValidator.isValid(person.companyEmail)\n\t}\n\n\tdef \"should create address\"() {\n\t\tgiven:\n\t\t\tPerson person = fairy.person()\n\t\twhen:\n\t\t\tAddress address = person.address\n\t\tthen:\n\t\t\taddress\n\t}\n\n\tdef \"should create address postal code\"() {\n\t\tgiven:\n\t\t\tPerson person = fairy.person()\n\t\twhen:\n\t\t\tString postalCode = person.address.postalCode\n\t\tthen:\n\t\t\tpostalCode\n\t}\n\n\tdef \"should create address city\"() {\n\t\tgiven:\n\t\t\tPerson person = fairy.person()\n\t\twhen:\n\t\t\tString city = person.address.city\n\t\tthen:\n\t\t\tcity\n\t}\n\n\tdef \"should create street address\"() {\n\t\tgiven:\n\t\t\tPerson person = fairy.person()\n\t\twhen:\n\t\t\tAddress address = person.address\n\t\tthen:\n\t\t\taddress.street\n\t\t\taddress.streetNumber.isNumber()\n\t\t\t(address.apartmentNumber.isNumber() || address.apartmentNumber == \"\")\n\t}\n\n\tdef \"should generate middle name only sometimes\"() {\n\t\tgiven:\n\t\t\tList<Person> persons = []\n\t\t\t(1..100).each {persons.add(fairy.person())}\n\t\twhen:\n\t\t\tList<Person> allWithoutMiddleName = persons.findAll {p -> p.middleName.isEmpty()}\n\t\t\tList<Person> allWithMiddleName = persons.findAll {p -> !p.middleName.isEmpty()}\n\t\tthen:\n\t\t\tallWithoutMiddleName.size() > 0\n\t\t\tallWithMiddleName.size() > 0\n\t}\n\n\tdef \"should generate apartment number only sometimes\"() {\n\t\tgiven:\n\t\t\tList<Person> persons = []\n\t\t\t(1..50).each {persons.add(fairy.person())}\n\t\twhen:\n\t\t\tList<Person> allWithoutApartmentNumber = persons.findAll {p -> p.address.apartmentNumber.isEmpty()}\n\t\t\tList<Person> allWithApartmentNumber = persons.findAll {p -> !p.address.apartmentNumber.isEmpty()}\n\t\tthen:\n\t\t\tallWithoutApartmentNumber.size() > 0\n\t\t\tallWithApartmentNumber.size() > 0\n\t}\n\n\tdef \"should create passport number\"() {\n\t\tgiven:\n\t\t\tPerson person = fairy.person()\n\t\texpect:\n\t\t\tperson.passportNumber\n\t}\n\n\tdef \"withFirstName should create person with specific first name\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withFirstName(\"Specificfirstname\"))\n\t\tthen:\n\t\t\tperson.firstName == \"Specificfirstname\"\n\t}\n\n\tdef \"withMiddleName should create person with specific middle name\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withMiddleName(\"Specificmiddlename\"))\n\t\tthen:\n\t\t\tperson.middleName == \"Specificmiddlename\"\n\t}\n\n\tdef \"withLastName should create person with specific last name\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withLastName(\"Specificlastname\"))\n\t\tthen:\n\t\t\tperson.lastName == \"Specificlastname\"\n\t}\n\n\tdef \"withEmail should create person with specific email\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withEmail(\"specificemail@gmail.com\"))\n\t\tthen:\n\t\t\tperson.email == \"specificemail@gmail.com\"\n\t}\n\n\tdef \"withUsername should create person with specific username\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withUsername(\"specificusername\"))\n\t\tthen:\n\t\t\tperson.username == \"specificusername\"\n\t}\n\n\tdef \"withTelephoneNumber should create person with specific telephoneNumber\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withTelephoneNumber(\"01234556789\"))\n\t\tthen:\n\t\t\tperson.telephoneNumber == \"01234556789\"\n\t}\n\n\tdef \"withTelephoneNumberFormat and telephoneFormat used together should create person with specific telephoneNumber\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(telephoneFormat(\"###--###\"), withTelephoneNumber(\"01234556789\"))\n\t\tthen:\n\t\t\tperson.telephoneNumber == \"01234556789\"\n\t}\n\n\tdef \"withMobileTelephoneNumber should create person with specific telephoneNumber\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withMobileTelephoneNumber(\"01234556789\"))\n\t\tthen:\n\t\t\tperson.telephoneNumber == \"01234556789\"\n\t}\n\n\tdef \"withMobileTelephoneNumberFormat and mobileTelephoneFormat used together should create person with specific telephoneNumber\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(mobileTelephoneFormat(\"###--###\"), withMobileTelephoneNumber(\"01234556789\"))\n\t\tthen:\n\t\t\tperson.telephoneNumber == \"01234556789\"\n\t}\n\n\tdef \"withDateOfBirth should create person with specific date of birth\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withDateOfBirth(LocalDate.parse(\"2000-01-01\")))\n\t\tthen:\n\t\t\tperson.dateOfBirth == LocalDate.parse(\"2000-01-01\")\n\t}\n\n\tdef \"withAge should create person with specific age\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withAge(0))\n\t\tthen:\n\t\t\tperson.age == 0\n\t}\n\n\tdef \"withPassword should create person with specific password\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withPassword(\"specificpassword\"))\n\t\tthen:\n\t\t\tperson.password == \"specificpassword\"\n\t}\n\n\tdef \"withCompanyEmail should create person with specific company email\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withCompanyEmail(\"specificcompanyemail@company.com\"))\n\t\tthen:\n\t\t\tperson.companyEmail == \"specificcompanyemail@company.com\"\n\t}\n\n\tdef \"withNationalIdentityCardNumber should create person with specific national identity card number\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withNationalIdentityCardNumber(\"SpecificNationalIdentityCardNumber\"))\n\t\tthen:\n\t\t\tperson.nationalIdentityCardNumber == \"SpecificNationalIdentityCardNumber\"\n\t}\n\n\tdef \"withNationalIdentificationNumber should create person with specific national identification number\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withNationalIdentificationNumber(\"SpecificNationalIdentificationNumber\"))\n\t\tthen:\n\t\t\tperson.nationalIdentificationNumber == \"SpecificNationalIdentificationNumber\"\n\t}\n\n\tdef \"withPassportNumber should create person with specific passport number\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withPassportNumber(\"SpecificPassportNumber\"))\n\t\tthen:\n\t\t\tperson.passportNumber == \"SpecificPassportNumber\"\n\t}\n\n\tdef \"should create person with job title\"() {\n\t\tgiven:\n\t\t\tPerson person = fairy.person()\n\t\texpect:\n\t\t\tperson.jobTitle\n\t}\n\n\tdef \"withJobTitle should create person with specific job title\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person(withJobTitle(\"Specific Job Title\"))\n\t\tthen:\n\t\t\tperson.jobTitle == \"Specific Job Title\"\n\t}\n\n\tdef \"withCompany should create person with specific company\"() {\n\t\twhen:\n\t\t\tCompany specificCompany = new Company(\"Company name\", \"domain.com\", \"company@emial.com\", \"VATNO\")\n\t\t\tPerson person = fairy.person(withCompany(specificCompany))\n\t\tthen:\n\t\t\tperson.getCompany() == specificCompany\n\t}\n\n\tdef \"withAddress should create person with specific address\"() {\n\t\twhen:\n\t\t\tEnAddress specificAddress = new EnAddress(\"POSTALCODE\", \"City\", \"Streetname\", \"123\", \"10B\")\n\t\t\tPerson person = fairy.person(withAddress(specificAddress))\n\t\tthen:\n\t\t\tperson.getAddress() == specificAddress\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/br/BrAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.br\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Person\nimport spock.lang.Specification\n\nclass BrAddressSpec extends Specification {\n\n\tprivate Fairy fairy = Fairy.create(Locale.forLanguageTag(\"br\"))\n\n\tdef \"Should generate Brazilian address\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.address\n\t\t\tperson.address.city\n\t\t\tperson.address.street\n\t\t\tperson.address.postalCode ==~ /\\d{5}-\\d{3}/\n\t}\n\n\tdef \"Should generate address in continental format\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\t\tString line2 = person.address.addressLine2\n\t\tthen:\n\t\t\tline2 ==~ /\\d{5}-\\d{3} .+/\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/br/BrNationalIdentityCardNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.br\n\nimport com.devskiller.jfairy.Fairy\nimport spock.lang.Specification\n\nclass BrNationalIdentityCardNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy = Fairy.create(Locale.forLanguageTag(\"br\"))\n\n\tdef \"Should generate CPF with correct format\"() {\n\t\twhen:\n\t\t\tString cpf = fairy.person().nationalIdentityCardNumber\n\t\tthen:\n\t\t\tcpf ==~ /\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}/\n\t}\n\n\tdef \"Should generate CPF with 14 characters\"() {\n\t\texpect:\n\t\t\tfairy.person().nationalIdentityCardNumber.length() == 14\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/de/DeAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.de\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Address\n\nclass DeAddressSpec extends Specification {\n\n\tprivate final int SEED = 8\n\tprivate Fairy fairy\n\tprivate Address address\n\n\tdef setup() {\n\t\tfairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.GERMAN).build()\n\t\taddress = fairy.person().address\n\t}\n\n\tdef \"should generate random street\"() {\n\t\texpect:\n\t\t\taddress.street == 'Thomas-Müntzer-Hof'\n\t}\n\n\tdef \"should generate random streetNumber\"() {\n\t\texpect:\n\t\t\taddress.streetNumber == '58'\n\t}\n\n\tdef \"should generate random apartmentNumber\"() {\n\t\texpect:\n\t\t\taddress.apartmentNumber == ''\n\t}\n\n\tdef \"should generate random postalCode\"() {\n\t\texpect:\n\t\t\taddress.postalCode == '00322'\n\t}\n\n\tdef \"should generate random city\"() {\n\t\texpect:\n\t\t\taddress.city == 'Sitzenroda'\n\t}\n\n\tdef \"should return addressLine1 in de locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine1 == 'Thomas-Müntzer-Hof 58'\n\t}\n\n\tdef \"should return addressLine2 in de locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine2 == '00322 Sitzenroda'\n\t}\n\n\tdef \"should return address in de locale format\"() {\n\t\texpect:\n\t\t\taddress.toString() == \"Thomas-Müntzer-Hof 58${System.lineSeparator()}00322 Sitzenroda\"\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/de/DeNationalIdentityCardNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.de\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\n/**\n * @author Roland Weisleder\n */\nclass DeNationalIdentityCardNumberProviderSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\tprivate DeNationalIdentityCardNumberProvider generator = new DeNationalIdentityCardNumberProvider(baseProducer)\n\n\t@Unroll\n\tdef \"Should validate #nationalIdentityCardNumber as #valid\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(nationalIdentityCardNumber) == valid\n\t\twhere:\n\t\t\tnationalIdentityCardNumber | valid\n\t\t\t'T22000129'                | true\n\t\t\t'123456789'                | false\n\t\t\t'L00000000'                | true\n\t\t\t'A12345678'                | false\n\t}\n\n\tdef \"Should always generate proper nationalIdentityCardNumber\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(generator.get())\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/de/DePassportNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.de\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\n/**\n * @author Roland Weisleder\n */\nclass DePassportNumberProviderSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\tprivate DePassportNumberProvider generator = new DePassportNumberProvider(baseProducer)\n\n\t@Unroll\n\tdef \"Should validate #passportNumber as #valid\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(passportNumber) == valid\n\t\twhere:\n\t\t\tpassportNumber | valid\n\t\t\t'C22000129'    | true\n\t\t\t'123456789'    | false\n\t\t\t'H00000000'    | true\n\t\t\t'A12345678'    | false\n\t}\n\n\tdef \"Should always generate proper passportNumber\"() {\n\t\texpect:\n\t\t\tgenerator.isValid(generator.get())\n\t\twhere:\n\t\t\ti << (1..100)\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/en/EnAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.en\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Address\n\nclass EnAddressSpec extends Specification {\n\n\tprivate final int SEED = 7\n\tprivate Fairy fairy\n\tprivate Address address\n\n\tdef setup() {\n\t\tfairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.forLanguageTag(\"EN\")).build()\n\t\taddress = fairy.person().address\n\t}\n\n\tdef \"should generate random street\"() {\n\t\texpect:\n\t\t\taddress.street == \"Highland Place\"\n\t}\n\n\tdef \"should generate random streetNumber\"() {\n\t\texpect:\n\t\t\taddress.streetNumber == \"136\"\n\t}\n\n\tdef \"should generate random apartmentNumber\"() {\n\t\texpect:\n\t\t\taddress.apartmentNumber == \"147\"\n\t}\n\n\tdef \"should generate random postalCode\"() {\n\t\texpect:\n\t\t\taddress.postalCode == \"25059\"\n\t}\n\n\tdef \"should generate random city\"() {\n\t\texpect:\n\t\t\taddress.city == \"San Francisco\"\n\t}\n\n\tdef \"should return addressLine1 in en locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine1 == \"136 Highland Place APT 147\"\n\t}\n\n\tdef \"should return addressLine2 in en locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine2 == \"San Francisco 25059\"\n\t}\n\n\tdef \"should return address in en locale format\"() {\n\t\texpect:\n\t\t\taddress.toString() == \"136 Highland Place APT 147\" + System.lineSeparator() + \"San Francisco 25059\"\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/en/EnNationalIdentityCardNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.en\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\n/**\n * @author Olga Maciaszek-Sharma\n @since 15.03.15\n */\nclass EnNationalIdentityCardNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String nationalIdentityCardNumber\n\tprivate final int nationalIdentityCardNumberLength = 11\n\tprivate final int[] partsDividedAtChars = [3, 6]\n\tprivate int areaPartBeginningIndex = 0\n\tprivate final int groupPartBeginningIndex = 4\n\tprivate int serialNumberBeginningIndex = 7\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"en\"))\n\t\tnationalIdentityCardNumber = fairy.person().nationalIdentityCardNumber\n\t}\n\n\tdef \"should generate number with 11 characters\"() {\n\t\texpect:\n\t\t\tnationalIdentityCardNumber.length() == nationalIdentityCardNumberLength\n\t}\n\n\tdef \"should generate number divided by hyphens\"() {\n\t\texpect:\n\t\t\tfor (int index : partsDividedAtChars) {\n\t\t\t\tnationalIdentityCardNumber.charAt(index) == ('-' as char)\n\t\t\t}\n\t}\n\n\tdef \"should generate number with valid area part\"() {\n\t\tgiven:\n\t\t\tString areaPart = nationalIdentityCardNumber.substring(areaPartBeginningIndex, partsDividedAtChars[0])\n\t\t\tInteger areaNumber = Integer.parseInt(areaPart)\n\t\t\tint minAreaPartNumber = 1\n\t\t\tint maxAreaPartNumber = 899\n\t\t\tint incorrectAreaNumber = 666\n\n\t\texpect:\n\t\t\tfor (char digit : areaPart.toCharArray()) {\n\t\t\t\tdigit.isDigit()\n\t\t\t}\n\t\t\tareaNumber >= minAreaPartNumber && areaNumber <= maxAreaPartNumber\n\t\t\tareaNumber != incorrectAreaNumber\n\t}\n\n\tdef \"should generate number with valid group part\"() {\n\t\tgiven:\n\t\t\tString groupPart = nationalIdentityCardNumber.substring(groupPartBeginningIndex, partsDividedAtChars[1])\n\t\t\tInteger groupNumber = Integer.parseInt(groupPart)\n\t\t\tint minGroupNumber = 1\n\t\t\tint maxGroupNumber = 99\n\n\t\texpect:\n\t\t\tfor (char digit : groupPart.toCharArray()) {\n\t\t\t\tdigit.isDigit()\n\t\t\t}\n\t\t\tgroupNumber >= minGroupNumber && groupNumber <= maxGroupNumber\n\t}\n\n\tdef \"should generate number with valid serial part\"() {\n\t\tgiven:\n\t\t\tString serialPart = nationalIdentityCardNumber.substring(serialNumberBeginningIndex, nationalIdentityCardNumberLength)\n\t\t\tInteger serialNumber = Integer.parseInt(serialPart)\n\t\t\tint minSerialNumber = 1\n\t\t\tint maxSerialNumber = 9999\n\n\t\texpect:\n\t\t\tfor (char digit : serialPart.toCharArray()) {\n\t\t\t\tdigit.isDigit()\n\t\t\t}\n\t\t\tserialNumber >= minSerialNumber && serialNumber <= maxSerialNumber\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/en/EnPassportNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.en\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\n/**\n * @author Olga Maciaszek-Sharma\n @since 15.03.15\n */\nclass EnPassportNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String passportNumber\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"en\"))\n\t\tpassportNumber = fairy.person().passportNumber\n\t}\n\n\tdef \"should generate number with nine characters\"() {\n\t\texpect:\n\t\t\tpassportNumber.length() == 9\n\t}\n\n\tdef \"should contain only digits and letters\"() {\n\t\tfor (Character character : passportNumber) {\n\t\t\texpect:\n\t\t\t\tcharacter.isDigit() || character.isLetter()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/es/EsAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.es\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Address\n\nclass EsAddressSpec extends Specification {\n\n\tprivate final int SEED = 3\n\tprivate Fairy fairy\n\tprivate Address address\n\n\tdef setup() {\n\t\tfairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.forLanguageTag(\"ES\")).build()\n\t\taddress = fairy.person().address\n\t}\n\n\tdef \"should generate random street\"() {\n\t\texpect:\n\t\t\taddress.street == \"Gran Vía\"\n\t}\n\n\tdef \"should generate random streetNumber\"() {\n\t\texpect:\n\t\t\taddress.streetNumber == \"33\"\n\t}\n\n\tdef \"should generate random apartmentNumber\"() {\n\t\texpect:\n\t\t\taddress.apartmentNumber == \"\"\n\t}\n\n\tdef \"should generate random postalCode\"() {\n\t\texpect:\n\t\t\taddress.postalCode == \"52.095\"\n\t}\n\n\tdef \"should generate random city\"() {\n\t\texpect:\n\t\t\taddress.city == \"Jaén\"\n\t}\n\n\tdef \"should return addressLine1 in es locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine1 == \"Gran Vía, 33\"\n\t}\n\n\tdef \"should return addressLine2 in es locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine2 == \"52.095 Jaén\"\n\t}\n\n\tdef \"should return address in es locale format\"() {\n\t\texpect:\n\t\t\taddress.toString() == \"Gran Vía, 33\" + System.lineSeparator() + \"52.095 Jaén\"\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/es/EsNationalIdentityCardNumberProviderSpec.groovy",
    "content": "/*\n * Copyright (c) 2013 Codearte and authors\n */\n\npackage com.devskiller.jfairy.producer.person.locale.es\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\n/**\n * @author graux\n * @since 24/06/2015\n */\nclass EsNationalIdentityCardNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String esNationalIdentityCardNumber\n\tprivate final int dniLength = 10\n\tprivate final int hyphenPos = 8\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"es\"))\n\t\tesNationalIdentityCardNumber = fairy.person().nationalIdentityCardNumber\n\t}\n\n\tdef \"should generate number with 10 characters: 8 digits, one hyphen and one letter\"() {\n\t\texpect:\n\t\t\tesNationalIdentityCardNumber.length() == dniLength\n\t}\n\n\tdef \"should generate number divided by hyphens\"() {\n\t\tgiven:\n\t\t\tchar letter = esNationalIdentityCardNumber.charAt(hyphenPos)\n\n\t\texpect:\n\t\t\tletter == ('-' as char)\n\t}\n\n\tdef \"should generate number with all numbers before the hyphen\"() {\n\t\tgiven:\n\t\t\tString numbers = esNationalIdentityCardNumber.substring(0, hyphenPos)\n\n\t\texpect:\n\t\t\tfor (char digit : numbers.toCharArray()) {\n\t\t\t\tdigit.isDigit()\n\t\t\t}\n\t}\n\n\n\tdef \"should generate number with letter after the hyphen\"() {\n\t\tgiven:\n\t\t\tchar letter = esNationalIdentityCardNumber.charAt(hyphenPos + 1)\n\n\t\texpect:\n\t\t\tletter.isLetter()\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/es/EsPassportNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.es\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\n/**\n * @author graux\n * @since 24/06/2015\n */\nclass EsPassportNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String passportNumber\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"es\"))\n\t\tpassportNumber = fairy.person().passportNumber\n\t}\n\n\tdef \"should generate number with nine characters\"() {\n\t\texpect:\n\t\t\tpassportNumber.length() == 9\n\t}\n\n\tdef \"should contain only digits and letters\"() {\n\t\tfor (Character character : passportNumber) {\n\t\t\texpect:\n\t\t\t\tcharacter.isDigit() || character.isLetter()\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/ka/KaAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.ka\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Address\n\nimport static java.lang.System.lineSeparator\n\nclass KaAddressSpec extends Specification {\n\tprivate final int SEED = 8\n\n\tprivate Fairy fairy\n\tprivate Address address\n\n\tdef setup() {\n\t\tLocale geLocale = new Locale.Builder().setLanguage(\"ka\").build()\n\t\tfairy = Fairy.builder().withRandomSeed(SEED).withLocale(geLocale).build()\n\t\taddress = fairy.person().address\n\t}\n\n\tdef \"should generate random street\"() {\n\t\texpect:\n\t\taddress.street == \"კაკუცა ჩოლოყაშვილის გამზირი\"\n\t}\n\n\tdef \"should generate random streetNumber\"() {\n\t\texpect:\n\t\taddress.streetNumber == \"74\"\n\t}\n\n\tdef \"should generate random apartmentNumber\"() {\n\t\texpect:\n\t\taddress.apartmentNumber == \"\"\n\t}\n\n\tdef \"should generate random postalCode\"() {\n\t\texpect:\n\t\taddress.postalCode == \"3220\"\n\t}\n\n\tdef \"should generate random city\"() {\n\t\texpect:\n\t\taddress.city == \"საგარეჯო\"\n \t}\n\n\tdef \"should return addressLine1 in GE locale format\"() {\n\t\texpect:\n\t\taddress.addressLine1 == \"3220, საგარეჯო\"  // ZIP, city\n\t}\n\n\tdef \"should return addressLine2 in GE locale format\"() {\n\t\texpect:\n\t\taddress.addressLine2 == \"კაკუცა ჩოლოყაშვილის გამზირი №74\"  // street & number & appartment\n\t}\n\n\tdef \"should return address in GE locale format\"() {\n\t\texpect:\n\t\taddress.toString() == \"3220, საგარეჯო${lineSeparator()}კაკუცა ჩოლოყაშვილის გამზირი №74\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/ka/KaNationalIdentityCardNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.ka\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\nclass KaNationalIdentityCardNumberProviderSpec extends Specification {\n\tprivate KaNationalIdentityCardNumberProvider provider\n\n\tdef setup() {\n\t\tBaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\t\tprovider = new KaNationalIdentityCardNumberProvider(baseProducer)\n\t}\n\n\tprivate static boolean isOldIdCardNumber(String id) {\n\t\tid.matches(\"N[ა-ჰ]\\\\d{7}\")\n\t}\n\n\tprivate static boolean isNewIdCardNumber(String id) {\n\t\tid.matches(\"\\\\d{2}\\\\p{Upper}{2}\\\\d{5}\")\n\t}\n\n\tdef isIdCardNumber(String id) {\n\t\tisNewIdCardNumber(id) || isOldIdCardNumber(id)\n\t}\n\n\tdef \"Should always generate proper nationalIdentityCardNumber\"() {\n\t\texpect:\n\t\tisIdCardNumber(provider.get())\n\t\twhere:\n\t\ti << (1..100)\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/ka/KaPassportNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.ka\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\n\nclass KaPassportNumberProviderSpec extends Specification {\n\tprivate KaPassportNumberProvider provider\n\n\tdef setup() {\n\t\tBaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\t\tprovider = new KaPassportNumberProvider(baseProducer)\n\t}\n\n\tdef isValidPassportNumber(String id) {\n\t\tid.matches(\"\\\\d{11}\")\n\t}\n\n\tdef \"Should always generate proper passport number\"() {\n\t\texpect:\n\t\tisValidPassportNumber(provider.get())\n\t\twhere:\n\t\ti << (1..100)\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/pl/PlAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Address\n\nclass PlAddressSpec extends Specification {\n\n\tprivate final int SEED = 8\n\tprivate Fairy fairy\n\tprivate Address address\n\n\tdef setup() {\n\t\tfairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.forLanguageTag(\"PL\")).build()\n\t\taddress = fairy.person().address\n\t}\n\n\tdef \"should generate random street\"() {\n\t\texpect:\n\t\t\taddress.street == \"Ludwinowska\"\n\t}\n\n\tdef \"should generate random streetNumber\"() {\n\t\texpect:\n\t\t\taddress.streetNumber == \"11\"\n\t}\n\n\tdef \"should generate random apartmentNumber\"() {\n\t\texpect:\n\t\t\taddress.apartmentNumber == \"\"\n\t}\n\n\tdef \"should generate random postalCode\"() {\n\t\texpect:\n\t\t\taddress.postalCode == \"25-365\"\n\t}\n\n\tdef \"should generate random city\"() {\n\t\texpect:\n\t\t\taddress.city == \"Milicz\"\n\t}\n\n\tdef \"should return addressLine1 in pl locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine1 == \"Ludwinowska 11\"\n\t}\n\n\tdef \"should return addressLine2 in pl locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine2 == \"25-365 Milicz\"\n\t}\n\n\tdef \"should return address in pl locale format\"() {\n\t\texpect:\n\t\t\taddress.toString() == \"Ludwinowska 11\" + System.lineSeparator() + \"25-365 Milicz\"\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/pl/PlNationalIdentificationNumberSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl\n\nimport java.time.LocalDate\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.DateProducer\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumber\nimport com.devskiller.jfairy.producer.person.Person\n\nimport static PlNationalIdentificationNumberProvider.isValid\nimport static com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties.dateOfBirth\nimport static com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties.sex\n\nclass PlNationalIdentificationNumberSpec extends Specification {\n\n\tprivate BaseProducer randomGenerator = Mock(BaseProducer)\n\tprivate DateProducer dateGenerator = Mock()\n\n\t@Unroll\n\tdef \"should validate #nationalIdentificationNumber as #valid\"() {\n\n\t\texpect:\n\t\t\tisValid(nationalIdentificationNumber) == valid\n\n\t\twhere:\n\t\t\tnationalIdentificationNumber | valid\n\t\t\t\"13881939620\"                | true\n\t\t\t\"00421297469\"                | true\n\t\t\t\"99010147513\"                | true\n\t\t\t\"44051401359\"                | true\n\t\t\t\"44051401358\"                | false\n\t\t\t\"44051401458\"                | true\n\t\t\t\"44052401458\"                | false\n\t}\n\n\t@Unroll\n\tdef \"should generate good nationalIdentificationNumber\"() {\n\n\t\texpect:\n\t\t\tPlNationalIdentificationNumberProvider generator = new PlNationalIdentificationNumberProvider(dateGenerator,\n                    randomGenerator, dateOfBirth(LocalDate.parse(date)), sex(Person.Sex.MALE))\n\n\t\t\tNationalIdentificationNumber nationalIdentificationNumber = generator.get()\n\n\t\t\tnationalIdentificationNumber.getValue().startsWith(prefix)\n\t\t\tisValid(nationalIdentificationNumber.getValue())\n\n\t\twhere:\n\t\t\tdate         | prefix\n\t\t\t\"1999-01-01\" | \"990101\"\n\t\t\t\"1900-12-31\" | \"001231\"\n\t\t\t\"1800-01-31\" | \"008131\"\n\t\t\t\"2100-11-01\" | \"005101\"\n\t\t\t\"2199-01-11\" | \"994111\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/pl/PlNationalIdentityCardNumberProviderSpec.groovy",
    "content": "/*\n * Copyright (c) 2013 Codearte and authors\n */\n\npackage com.devskiller.jfairy.producer.person.locale.pl\n\nimport java.time.LocalDate\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.DateProducer\n\nimport static PlNationalIdentityCardNumberProvider.ISSUING_BEGIN\nimport static PlNationalIdentityCardNumberProvider.LETTER_WEIGHT\nimport static PlNationalIdentityCardNumberProvider.MAX_DIGITS_PART_VALUE\n\n/**\n * @author mariuszs\n * @since 30.10.13.\n */\nclass PlNationalIdentityCardNumberProviderSpec extends Specification {\n\n\tprivate BaseProducer baseProducer = Mock(BaseProducer)\n\tprivate DateProducer dateGenerator = Mock(DateProducer)\n\n\t/**\n\t * http://en.wikipedia.org/wiki/Polish_identity_card\n\t */\n\tvoid \"should generate proper id number\"() {\n\t\tint max = (2013 - ISSUING_BEGIN) * LETTER_WEIGHT\n\t\tsetup:\n\t\t\tbaseProducer.randomBetween(max, (int) max + LETTER_WEIGHT) >> ('A'..'Z').size() // ABA\n\t\t\tbaseProducer.randomInt(MAX_DIGITS_PART_VALUE) >> 0\n\t\twhen:\n\t\t\tPlNationalIdentityCardNumberProvider generator = new PlNationalIdentityCardNumberProvider(dateGenerator, baseProducer)\n\t\t\tString id = generator.get(LocalDate.parse(\"2013-12-12\"))\n\t\tthen:\n\t\t\tid == \"ABA300000\"\n\t\t\tgenerator.isValid(id)\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/pl/PlPassportNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\n/**\n * @author Olga Maciaszek-Sharma\n @since 21.02.15\n */\nclass PlPassportNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String passportNumber\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"pl\"))\n\t\tpassportNumber = fairy.person().passportNumber\n\t}\n\n\tdef \"should generate number with correct length\"() {\n\t\texpect:\n\t\t\tpassportNumber.length() == 9\n\t}\n\n\tdef \"should generate number starting with series\"() {\n\t\texpect:\n\t\t\tfor (int i = 0; i < 2; i++)\n\t\t\t\tpassportNumber.charAt(i).isLetter()\n\t}\n\n\n\tdef \"should generate number ending with 6 digits\"() {\n\t\texpect:\n\t\t\tfor (int i = 8; i > 2; i--) {\n\t\t\t\tpassportNumber.charAt(i).isDigit()\n\t\t\t}\n\t}\n\n\tdef \"should generate number with correct checksum\"() {\n\t\texpect:\n\t\t\tPlPassportNumberProvider.isPassportCheckSumValid(passportNumber)\n\t}\n\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/pl/PlPersonSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.pl\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Bootstrap\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Person\n\nclass PlPersonSpec extends Specification {\n\n\tprivate Fairy fairy = Bootstrap.create(Locale.forLanguageTag(\"PL\"))\n\n\tdef setup() {\n\t\tBootstrap.create()\n\t}\n\n\tdef \"should create nationality\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.nationality.code == 'PL'\n\t}\n\n\tdef \"should create nationalIdentificationNumber\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.nationalIdentificationNumber\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/sk/SkAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Address\n\nclass SkAddressSpec extends Specification {\n\n\tprivate final int SEED = 7\n\tprivate Fairy fairy\n\tprivate Address address\n\n\tdef setup() {\n\t\tfairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.forLanguageTag(\"SK\")).build()\n\t\taddress = fairy.person().address\n\t}\n\n\tdef \"should generate street\"() {\n\t\texpect:\n\t\t\taddress.street\n\t}\n\n\tdef \"should generate streetNumber\"() {\n\t\texpect:\n\t\t\taddress.streetNumber\n\t}\n\n\tdef \"should generate postalCode\"() {\n\t\texpect:\n\t\t\taddress.postalCode\n\t}\n\n\tdef \"should generate city\"() {\n\t\texpect:\n\t\t\taddress.city\n\t}\n\n\tdef \"should return address in continental format\"() {\n\t\texpect:\n\t\t\taddress.toString().contains(System.lineSeparator())\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/sk/SkPersonSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.sk\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Bootstrap\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Person\n\nclass SkPersonSpec extends Specification {\n\n\tprivate Fairy fairy = Bootstrap.create(Locale.forLanguageTag(\"SK\"))\n\n\tdef setup() {\n\t\tBootstrap.create()\n\t}\n\n\tdef \"should create nationality\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.nationality.code == 'SK'\n\t}\n\n\tdef \"should create nationalIdentificationNumber\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.nationalIdentificationNumber\n\t}\n\n\tdef \"should create person with first name\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.firstName\n\t}\n\n\tdef \"should create person with last name\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.lastName\n\t}\n\n\tdef \"should create person with email\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.email\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/sv/SvAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Address\n\nclass SvAddressSpec extends Specification {\n\n\tprivate final int SEED = 7\n\tprivate Fairy fairy\n\tprivate Address address\n\n\tdef setup() {\n\t\tfairy = Fairy.builder().withRandomSeed(SEED).withLocale(Locale.forLanguageTag(\"SV\")).build()\n\t\taddress = fairy.person().address\n\t}\n\n\tdef \"should generate random street\"() {\n\t\texpect:\n\t\t\taddress.street == \"Styrmansgatan\"\n\t}\n\n\tdef \"should generate random streetNumber\"() {\n\t\texpect:\n\t\t\taddress.streetNumber == \"139\"\n\t}\n\n\tdef \"should generate random apartmentNumber\"() {\n\t\texpect:\n\t\t\taddress.apartmentNumber == \"321\"\n\t}\n\n\tdef \"should generate random postalCode\"() {\n\t\texpect:\n\t\t\taddress.postalCode == \"460 11\"\n\t}\n\n\tdef \"should generate random city\"() {\n\t\texpect:\n\t\t\taddress.city == \"Östhammar\"\n\t}\n\n\tdef \"should return addressLine1 in sv locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine1 == \"Styrmansgatan 139 Lgh 321\"\n\t}\n\n\tdef \"should return addressLine2 in sv locale format\"() {\n\t\texpect:\n\t\t\taddress.addressLine2 == \"460 11 Östhammar\"\n\t}\n\n\tdef \"should return address in sv locale format\"() {\n\t\texpect:\n\t\t\taddress.toString() == \"Styrmansgatan 139 Lgh 321\" + System.lineSeparator() + \"460 11 Östhammar\"\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/sv/SvNationalIdentificationNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv\n\nimport java.time.LocalDate\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.DateProducer\nimport com.devskiller.jfairy.producer.person.NationalIdentificationNumber\nimport com.devskiller.jfairy.producer.person.Person\n\nimport static SvNationalIdentificationNumberProvider.isValid\nimport static com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties.dateOfBirth\nimport static com.devskiller.jfairy.producer.person.NationalIdentificationNumberProperties.sex\n\nclass SvNationalIdentificationNumberProviderSpec extends Specification {\n\n\tprivate BaseProducer randomGenerator = Mock(BaseProducer)\n\tprivate DateProducer dateGenerator = Mock(DateProducer)\n\n\t@Unroll\n\tdef \"should validate #nationalIdentificationNumber as #valid\"() {\n\n\t\texpect:\n\t\t\tisValid(nationalIdentificationNumber) == valid\n\n\t\twhere:\n\t\t\tnationalIdentificationNumber | valid\n\t\t\t\"370612-1450\"                | true\n\t\t\t\"370612-9529\"                | true\n\t\t\t\"640401-1550\"                | true\n\t\t\t\"690509-3966\"                | true\n\t\t\t\"870727-2441\"                | false\n\t\t\t\"880418-9043\"                | false\n\t\t\t\"610219-6694\"                | false\n\t}\n\n\t@Unroll\n\tdef \"should generate good nationalIdentificationNumber\"() {\n\n\t\texpect:\n\t\t\tSvNationalIdentificationNumberProvider generator = new SvNationalIdentificationNumberProvider(dateGenerator,\n                    randomGenerator, dateOfBirth(LocalDate.parse(date)), sex(Person.Sex.MALE))\n\n\t\t\tNationalIdentificationNumber nationalIdentificationNumber = generator.get()\n\n\t\t\tnationalIdentificationNumber.getValue().startsWith(prefix)\n\t\t\tisValid(nationalIdentificationNumber.getValue())\n\n\t\twhere:\n\t\t\tdate         | prefix\n\t\t\t\"1999-01-01\" | \"990101\"\n\t\t\t\"1950-12-31\" | \"501231\"\n\t\t\t\"1910-01-31\" | \"100131\"\n\t\t\t\"2100-11-01\" | \"001101\"\n\t\t\t\"2199-01-22\" | \"990122\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/sv/SvNationalIdentityCardNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\nclass SvNationalIdentityCardNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String nationalIdentityCardNumber\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"sv\"))\n\t\tnationalIdentityCardNumber = fairy.person().nationalIdentityCardNumber\n\t}\n\n\tdef \"should generate number with 8 characters\"() {\n\t\texpect:\n\t\t\tnationalIdentityCardNumber.length() == 8\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/sv/SvPassportNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Fairy\n\nclass SvPassportNumberProviderSpec extends Specification {\n\n\tprivate Fairy fairy\n\tprivate String passportNumber\n\n\tdef setup() {\n\t\tfairy = Fairy.create(Locale.forLanguageTag(\"sv\"))\n\t\tpassportNumber = fairy.person().passportNumber\n\t}\n\n\tdef \"should generate number with 8 characters\"() {\n\t\texpect:\n\t\t\tpassportNumber.length() == 8\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/sv/SvPersonSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.sv\n\nimport spock.lang.Specification\n\nimport com.devskiller.jfairy.Bootstrap\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Person\n\nclass SvPersonSpec extends Specification {\n\n\tprivate Fairy fairy = Bootstrap.create(Locale.forLanguageTag(\"SV\"))\n\n\tdef setup() {\n\t\tBootstrap.create()\n\t}\n\n\tdef \"should create nationality\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.nationality.code == 'SE'\n\t}\n\n\tdef \"should create nationalIdentificationNumber\"() {\n\t\twhen:\n\t\t\tPerson person = fairy.person()\n\t\tthen:\n\t\t\tperson.nationalIdentificationNumber\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/tr/TrAddressSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.tr\n\nimport spock.lang.Specification\n\nclass TrAddressSpec extends Specification {\n\n\tdef \"should format Turkish address correctly\"() {\n\t\tgiven:\n\t\tTrAddress address = new TrAddress(\"10\", \"İstiklal Caddesi\", \"5\", \"34000\", \"İstanbul\")\n\n\t\texpect:\n\t\taddress.getAddressLine1() == \"İstiklal Caddesi No: 10 Daire: 5\"\n\t\taddress.getAddressLine2() == \"34000 İstanbul\"\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/person/locale/tr/TrNationalIdentityCardNumberProviderSpec.groovy",
    "content": "package com.devskiller.jfairy.producer.person.locale.tr\n\nimport com.devskiller.jfairy.producer.BaseProducer\nimport com.devskiller.jfairy.producer.RandomGenerator\nimport spock.lang.Specification\n\nclass TrNationalIdentityCardNumberProviderSpec extends Specification {\n\n\tdef \"should generate valid T.C. Kimlik No\"() {\n\t\tgiven:\n\t\tBaseProducer baseProducer = Mock()\n\t\tTrNationalIdentityCardNumberProvider provider = new TrNationalIdentityCardNumberProvider(baseProducer)\n\n\t\twhen:\n\t\tbaseProducer.randomBetween(1, 9) >> 1\n\t\tbaseProducer.randomBetween(0, 9) >>> [2, 3, 4, 5, 6, 7, 8, 9]\n\t\tString tckn = provider.get()\n\n\t\tthen:\n\t\ttckn.length() == 11\n\t\ttckn.startsWith(\"1\")\n\t\t// 1 2 3 4 5 6 7 8 9\n\t\t// oddSum = 1+3+5+7+9 = 25\n\t\t// evenSum = 2+4+6+8 = 20\n\t\t// d10 = (25 * 7 - 20) % 10 = (175 - 20) % 10 = 155 % 10 = 5\n\t\t// totalSum = 1+2+3+4+5+6+7+8+9+5 = 50\n\t\t// d11 = 50 % 10 = 0\n\t\ttckn == \"12345678950\"\n\t}\n\n\tdef \"should generate multiple valid T.C. Kimlik Nos\"() {\n\t\tgiven:\n\t\tBaseProducer baseProducer = new BaseProducer(new RandomGenerator())\n\t\tTrNationalIdentityCardNumberProvider provider = new TrNationalIdentityCardNumberProvider(baseProducer)\n\n\t\texpect:\n\t\t(1..100).each {\n\t\t\tString tckn = provider.get()\n\t\t\tassert tckn.length() == 11\n\t\t\tassert !tckn.startsWith(\"0\")\n\t\t\tint[] digits = tckn.chars().collect { Character.getNumericValue((char) it) }\n\t\t\tint oddSum = digits[0] + digits[2] + digits[4] + digits[6] + digits[8]\n\t\t\tint evenSum = digits[1] + digits[3] + digits[5] + digits[7]\n\t\t\tint d10 = ((oddSum * 7) - evenSum) % 10\n\t\t\tif (d10 < 0) d10 += 10\n\t\t\tassert digits[9] == d10\n\t\t\tassert digits[10] == (digits[0..9].sum() % 10)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/com/devskiller/jfairy/producer/util/AlphaNumberSystemSpec.groovy",
    "content": "/*\n * Copyright (c) 2013 Codearte and authors\n */\n\npackage com.devskiller.jfairy.producer.util\n\nimport spock.lang.Specification\nimport spock.lang.Unroll\n\nimport static AlphaNumberSystem.convertToString\n\n/**\n * @author mariuszs\n * @since 01.11.13.\n */\nclass AlphaNumberSystemSpec extends Specification {\n\n\t@Unroll\n\tvoid \"Number #x should be converted to #y\"() {\n\t\texpect:\n\t\t\tconvertToString(x, ('A'..'Z').size()) == y\n\t\twhere:\n\t\t\tx  | y\n\t\t\t0  | \"A\"\n\t\t\t1  | \"B\"\n\t\t\t2  | \"C\"\n\t\t\t25 | \"Z\"\n\t\t\t26 | \"BA\"\n\n\t}\n}\n"
  },
  {
    "path": "src/test/groovy/snippets/Foo.groovy",
    "content": "package snippets\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.person.Person\n\nclass Foo {\n\n\tstatic void main(String[] args) {\n\t\tPerson person = Fairy.create(Locale.default).person()\n\n\t\tprintln person.address\n\t\tprintln person.address.postalCode\n\t}\n\n}\n"
  },
  {
    "path": "src/test/groovy/snippets/SampleSnippet.groovy",
    "content": "package snippets\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.company.Company\nimport com.devskiller.jfairy.producer.person.Person\nimport com.devskiller.jfairy.producer.person.PersonProperties\n\nprintln \"\\n * With context\"\nFairy fairy = Fairy.create(Locale.forLanguageTag(\"en\"))\n3.times {\n\tPerson person = fairy.person()\n\n\tprintln \"${person.fullName} <${person.email}>\"\n\n}\n\n// Print word\nprintln fairy.textProducer().word(3)\nprintln fairy.textProducer().sentence(5)\n\nprintln fairy.person().firstName\nprintln fairy.person().firstName\n\nPerson person = fairy.person()\nprintln \"\"\nprintln \"         First name: \" + person.firstName\nprintln \"        Middle name: \" + person.middleName\nprintln \"          Last name: \" + person.lastName\nprintln \"           Username: \" + person.username\nprintln \"           Password: \" + person.password\nprintln \"             isMale: \" + person.male\nprintln \"           isFemale: \" + person.female\nprintln \"              Phone: \" + person.telephoneNumber\nprintln \"      Date of birth: \" + person.dateOfBirth\nprintln \"                Age: \" + person.age\nprintln \"     National Id No: \" + person.nationalIdentificationNumber\nprintln \"National Id Card No: \" + person.nationalIdentityCardNumber\nprintln \"        Passport No: \" + person.passportNumber\nprintln \"        Postal Code: \" + person.address.postalCode\nprintln \"               City: \" + person.address.city\nprintln \"             Street: \" + person.address.street\nprintln \"      Street number: \" + person.address.streetNumber\nprintln \"       Full address: \" + person.address.toString()\n\nprintln \"\"\n\n3.times {\n\tprintln \"  Men: \" + fairy.person(PersonProperties.male()).fullName\n}\n\n3.times {\n\tprintln \"Women: \" + fairy.person(PersonProperties.female()).fullName\n}\n\nprintln fairy.person().nationalIdentityCardNumber\nprintln fairy.person().nationalIdentificationNumber\n\nCompany company = fairy.company()\nprintln \"Company: \" + company.name\nprintln \"URL: \" + company.url\nprintln \"VAT: \" + company.vatIdentificationNumber\ncompany = fairy.company()\nprintln \"Company: \" + company.name\nprintln \"URL: \" + company.url\nprintln \"VAT: \" + company.vatIdentificationNumber\n"
  },
  {
    "path": "src/test/groovy/snippets/TextSnippet.groovy",
    "content": "package snippets\n\nimport com.devskiller.jfairy.Fairy\nimport com.devskiller.jfairy.producer.text.TextProducer\n\nTextProducer text = Fairy.create().textProducer()\n\nprintln \"* Lorem ipsum *\"\nprintln text.loremIpsum()\n\nprintln \"* Localised text *\"\nprintln text.text()\n\nprintln \"* Latin words *\"\nprintln text.latinWord(1)\nprintln text.latinWord()\nprintln text.latinWord(190)\n\nprintln \"* Words *\"\nprintln text.word(1)\nprintln text.word()\nprintln text.word(190)\n\nprintln \"* Latin sentences *\"\nprintln text.latinSentence(1)\nprintln text.latinSentence()\nprintln text.latinSentence(190)\n\nprintln \"* Sentences *\"\nprintln text.sentence()\nprintln text.sentence(3)\nprintln text.sentence(190)\n\nprintln \"* Paragraph *\"\nprintln text.paragraph()\nprintln text.paragraph(190)\nprintln text.limitedTo(10).paragraph(190)\n\nprintln \"* Random string *\"\nprintln text.randomString(10)\nprintln text.randomString(20)\n\n"
  },
  {
    "path": "src/test/java/com/devskiller/jfairy/producer/RandomGeneratorTest.java",
    "content": "package com.devskiller.jfairy.producer;\n\nimport org.junit.jupiter.api.DisplayName;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.params.ParameterizedTest;\nimport org.junit.jupiter.params.provider.ValueSource;\n\nimport static org.junit.jupiter.api.Assertions.assertEquals;\nimport static org.junit.jupiter.api.Assertions.assertThrows;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\nclass RandomGeneratorTest {\n\n\tprivate static final int SEED = 123;\n\n\t@DisplayName(\"Should produce identical results for same seed (Determinism)\")\n\t@Test\n\tvoid shouldBeDeterministic() {\n\t\tRandomGenerator gen1 = new RandomGenerator(SEED);\n\t\tRandomGenerator gen2 = new RandomGenerator(SEED);\n\n\t\tassertEquals(gen1.randomAlphanumeric(20), gen2.randomAlphanumeric(20));\n\t\tassertEquals(gen1.nextInt(0, 100), gen2.nextInt(0, 100));\n\t\tassertEquals(gen1.randomNumeric(10), gen2.randomNumeric(10));\n\t}\n\n\t@DisplayName(\"Should generate strings of requested length\")\n\t@ParameterizedTest\n\t@ValueSource(ints = {0, 1, 5, 50})\n\tvoid shouldRespectLength(int length) {\n\t\tRandomGenerator generator = new RandomGenerator();\n\n\t\tassertEquals(length, generator.randomNumeric(length).length());\n\t\tassertEquals(length, generator.randomAlphabetic(length).length());\n\t\tassertEquals(length, generator.randomAlphanumeric(length).length());\n\t}\n\n\t@DisplayName(\"Should contain only allowed characters\")\n\t@Test\n\tvoid shouldContainOnlyAllowedChars() {\n\t\tRandomGenerator generator = new RandomGenerator();\n\n\t\tassertTrue(generator.randomNumeric(100).matches(\"^[0-9]+$\"));\n\t\tassertTrue(generator.randomAlphabetic(100).matches(\"^[A-Z]+$\"));\n\t\tassertTrue(generator.randomAlphanumeric(100).matches(\"^[A-Z0-9]+$\"));\n\t}\n\n\t@DisplayName(\"Should throw exception for negative length\")\n\t@Test\n\tvoid shouldThrowOnNegativeLength() {\n\t\tRandomGenerator generator = new RandomGenerator();\n\n\t\tException exception = assertThrows(IllegalArgumentException.class, () ->\n\t\t\tgenerator.randomNumeric(-1)\n\t\t);\n\t\tassertTrue(exception.getMessage().contains(\"length must be >= 0\"));\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/devskiller/jfairy/producer/util/AlphaNumberSystemTest.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\nimport java.util.List;\n\nimport org.junit.jupiter.api.DisplayName;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.params.ParameterizedTest;\nimport org.junit.jupiter.params.provider.CsvSource;\n\nimport static org.junit.jupiter.api.Assertions.assertEquals;\nimport static org.junit.jupiter.api.Assertions.assertThrows;\n\nclass AlphaNumberSystemTest {\n\n\t@DisplayName(\"Should generate a complete alphabet list from A to Z\")\n\t@Test\n\tvoid shouldGenerateCompleteAlphabetList() {\n\t\tList<Character> alphabet = AlphaNumberSystem.generateAlphabetList();\n\n\t\tassertEquals(26, alphabet.size(), \"Alphabet should have 26 characters\");\n\t\tassertEquals(Character.valueOf('A'), alphabet.get(0));\n\t\tassertEquals(Character.valueOf('Z'), alphabet.get(25));\n\t}\n\n\t@DisplayName(\"Should return an immutable list\")\n\t@Test\n\tvoid shouldReturnImmutableList() {\n\t\tList<Character> alphabet = AlphaNumberSystem.generateAlphabetList();\n\n\t\tassertThrows(UnsupportedOperationException.class, () -> alphabet.add('!'),\n\t\t\t\"The list should be unmodifiable\");\n\t}\n\n\t@DisplayName(\"Should convert numbers to string correctly based on radix\")\n\t@ParameterizedTest(name = \"Convert {0} with base {1} should result in {2}\")\n\t@CsvSource({\n\t\t\"0,  26, A\",\n\t\t\"1,  26, B\",\n\t\t\"25, 26, Z\",\n\t\t\"26, 26, BA\",\n\t\t\"0,  10, A\",\n\t\t\"10, 10, BA\"\n\t})\n\tvoid shouldConvertToStringCorrectly(int number, int base, String expected) {\n\t\tString result = AlphaNumberSystem.convertToString(number, base);\n\n\t\tassertEquals(expected, result);\n\t}\n\n\t@DisplayName(\"Should throw exception for invalid base\")\n\t@Test\n\tvoid shouldThrowExceptionForInvalidBase() {\n\t\tassertThrows(IllegalArgumentException.class, () -> AlphaNumberSystem.convertToString(10, 0),\n\t\t\t\"Base 0 should not be allowed\");\n\t\tassertThrows(IllegalArgumentException.class, () -> AlphaNumberSystem.convertToString(10, 27),\n\t\t\t\"Base > 26 should not be allowed\");\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/devskiller/jfairy/producer/util/StringUtilsTest.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\nimport java.util.List;\n\nimport org.junit.jupiter.api.DisplayName;\nimport org.junit.jupiter.api.Nested;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.params.ParameterizedTest;\nimport org.junit.jupiter.params.provider.CsvSource;\nimport org.junit.jupiter.params.provider.NullAndEmptySource;\nimport org.junit.jupiter.params.provider.ValueSource;\n\nimport static org.junit.jupiter.api.Assertions.assertArrayEquals;\nimport static org.junit.jupiter.api.Assertions.assertEquals;\nimport static org.junit.jupiter.api.Assertions.assertFalse;\nimport static org.junit.jupiter.api.Assertions.assertNull;\nimport static org.junit.jupiter.api.Assertions.assertTrue;\n\n/**\n * Unit tests for {@link StringUtils}.\n */\n@SuppressWarnings(\"checkstyle:MethodName\")\n@DisplayName(\"StringUtils\")\nclass StringUtilsTest {\n\n\t@Nested\n\t@DisplayName(\"isNotBlank\")\n\tclass IsNotBlank {\n\n\t\t@ParameterizedTest(name = \"''{0}'' → false\")\n\t\t@NullAndEmptySource\n\t\t@ValueSource(strings = {\" \", \"   \", \"\\t\", \"\\n\"})\n\t\tvoid returnsFalse(String s) {\n\t\t\tassertFalse(StringUtils.isNotBlank(s));\n\t\t}\n\n\t\t@ParameterizedTest(name = \"''{0}'' → true\")\n\t\t@ValueSource(strings = {\"Have you tried turning it off and on again?\", \" Moss \", \"Roy\"})\n\t\tvoid returnsTrue(String s) {\n\t\t\tassertTrue(StringUtils.isNotBlank(s));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"isNotEmpty\")\n\tclass IsNotEmpty {\n\n\t\t@ParameterizedTest(name = \"''{0}'' → false\")\n\t\t@NullAndEmptySource\n\t\tvoid returnsFalse(String s) {\n\t\t\tassertFalse(StringUtils.isNotEmpty(s));\n\t\t}\n\n\t\t@ParameterizedTest(name = \"''{0}'' → true\")\n\t\t@ValueSource(strings = {\" \", \"I am the IT department\"})\n\t\tvoid returnsTrue(String s) {\n\t\t\tassertTrue(StringUtils.isNotEmpty(s));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"lowerCase\")\n\tclass LowerCase {\n\n\t\t@ParameterizedTest(name = \"''{0}'' → ''{1}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"MOSS          | moss\",\n\t\t\t\"Roy Trenneman | roy trenneman\",\n\t\t\t\"IT CROWD      | it crowd\",\n\t\t\t\"Jen Barber    | jen barber\",\n\t\t})\n\t\tvoid convertsCorrectly(String input, String expected) {\n\t\t\tassertEquals(expected, StringUtils.lowerCase(input));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"capitalize / uncapitalize\")\n\tclass CapitalizeUncapitalize {\n\n\t\t@ParameterizedTest(name = \"capitalize ''{0}'' → ''{1}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"moss     | Moss\",\n\t\t\t\"REYNHOLM | REYNHOLM\",\n\t\t\t\"i        | I\",\n\t\t})\n\t\tvoid capitalizeWorks(String input, String expected) {\n\t\t\tassertEquals(expected, StringUtils.capitalize(input));\n\t\t}\n\n\t\t@Test\n\t\tvoid capitalize_emptyString_returnsEmpty() {\n\t\t\tassertEquals(\"\", StringUtils.capitalize(\"\"));\n\t\t}\n\n\t\t@ParameterizedTest(name = \"uncapitalize ''{0}'' → ''{1}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Moss     | moss\",\n\t\t\t\"Roy      | roy\",\n\t\t\t\"INTERNET | iNTERNET\",\n\t\t})\n\t\tvoid uncapitalizeWorks(String input, String expected) {\n\t\t\tassertEquals(expected, StringUtils.uncapitalize(input));\n\t\t}\n\n\t\t@Test\n\t\tvoid uncapitalize_emptyString_returnsEmpty() {\n\t\t\tassertEquals(\"\", StringUtils.uncapitalize(\"\"));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"leftPad\")\n\tclass LeftPad {\n\n\t\t@ParameterizedTest(name = \"leftPad(''{0}'', {1}, ''0'') → ''{2}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"0118999 | 10 | 0000118999\",\n\t\t\t\"999     |  3 | 999\",\n\t\t\t\"881999  |  4 | 881999\",\n\t\t})\n\t\tvoid charVariant(String input, int size, String expected) {\n\t\t\tassertEquals(expected, StringUtils.leftPad(input, size, '0'));\n\t\t}\n\n\t\t@ParameterizedTest(name = \"leftPad(''{0}'', {1}, \\\"0\\\") → ''{2}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"119725 | 10 | 0000119725\",\n\t\t\t\"3      |  3 | 003\",\n\t\t\t\"42     |  5 | 00042\",\n\t\t\t\"hola   |  3 | hola\",\n\t\t})\n\t\tvoid stringVariant(String input, int size, String expected) {\n\t\t\tassertEquals(expected, StringUtils.leftPad(input, size, \"0\"));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"strip\")\n\tclass Strip {\n\n\t\t@ParameterizedTest(name = \"strip(''{0}'', ''{1}'') → ''{2}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"...Moss... | . | Moss\",\n\t\t\t\"!!!Roy!!!  | ! | Roy\",\n\t\t\t\"Jen        | . | Jen\",\n\t\t})\n\t\tvoid stripsCorrectly(String input, String stripChars, String expected) {\n\t\t\tassertEquals(expected, StringUtils.strip(input, stripChars));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"deleteWhitespace\")\n\tclass DeleteWhitespace {\n\n\t\t@ParameterizedTest(name = \"''{0}'' → ''{1}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Moss Mega Usher | MossMegaUsher\",\n\t\t\t\"'Reynholm '     | Reynholm\",\n\t\t})\n\t\tvoid removesWhitespace(String input, String expected) {\n\t\t\tassertEquals(expected, StringUtils.deleteWhitespace(input));\n\t\t}\n\n\t\t@Test\n\t\tvoid removesTabsAndNewlines() {\n\t\t\tassertEquals(\"0118999881999119725or3\", StringUtils.deleteWhitespace(\"0118 999\\t881 999\\n119725 or 3\"));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"left\")\n\tclass Left {\n\n\t\t@ParameterizedTest(name = \"left(''{0}'', {1}) → ''{2}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Reynholm Industries |  8 | Reynholm\",\n\t\t\t\"Moss                | 20 | Moss\",\n\t\t\t\"Roy                 |  3 | Roy\",\n\t\t})\n\t\tvoid returnsCorrectSubstring(String input, int len, String expected) {\n\t\t\tassertEquals(expected, StringUtils.left(input, len));\n\t\t}\n\n\t\t@Test\n\t\tvoid zeroLength_returnsEmpty() {\n\t\t\tassertEquals(\"\", StringUtils.left(\"Moss\", 0));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"removeEnd / endsWith\")\n\tclass RemoveEndEndsWith {\n\n\t\t@ParameterizedTest(name = \"removeEnd(''{0}'', ''{1}'') → ''{2}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Moss! | ! | Moss\",\n\t\t\t\"Roy   | ! | Roy\",\n\t\t})\n\t\tvoid removeEndWorks(String input, String suffix, String expected) {\n\t\t\tassertEquals(expected, StringUtils.removeEnd(input, suffix));\n\t\t}\n\n\t\t@ParameterizedTest(name = \"endsWith(''{0}'', ''{1}'') → {2}\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Reynholm. | . | true\",\n\t\t\t\"Moss      | . | false\",\n\t\t})\n\t\tvoid endsWithWorks(String input, String suffix, boolean expected) {\n\t\t\tassertEquals(expected, StringUtils.endsWith(input, suffix));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"replace / replaceChars\")\n\tclass Replace {\n\n\t\t@ParameterizedTest(name = \"replace(''{0}'', ''{1}'', ''{2}'') → ''{3}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Have you tried turning it off and on again? | off and on | on and off | Have you tried turning it on and off again?\",\n\t\t\t\"Moss | x | y | Moss\",\n\t\t\t\"Roy Roy Roy | Roy | Jen | Jen Jen Jen\",\n\t\t})\n\t\tvoid replaceWorks(String input, String search, String replacement, String expected) {\n\t\t\tassertEquals(expected, StringUtils.replace(input, search, replacement));\n\t\t}\n\n\t\t@ParameterizedTest(name = \"replaceChars(''{0}'', ''{1}'', ''{2}'') → ''{3}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Moss | eo  | --  | M-ss\", // both chars have replacements\n\t\t\t\"Moss | os  | x   | Mx\",   // one replacement, two removals\n\t\t\t\"Roy  | xyz | 123 | Ro2\",  // one replacement\n\t\t\t\"Richard Ayoade | Aa | _ | Richrd _yode\", // one replacement, one removal\n\t\t})\n\t\tvoid replaceCharsWorks(String input, String searchChars, String replaceChars, String expected) {\n\t\t\tassertEquals(expected, StringUtils.replaceChars(input, searchChars, replaceChars));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"latinize\")\n\tclass Latinize {\n\n\t\t@ParameterizedTest(name = \"''{0}'' → ''{1}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Réynhölm           | Reynholm\",\n\t\t\t\"Möss               | Moss\",\n\t\t\t\"Straße             | Strasse\",\n\t\t\t\"Zażółć gęślą jaźń  | Zazolc gesla jazn\",\n\t\t\t\"łŁ                 | lL\",\n\t\t\t\"ßß                 | ssss\",\n\t\t\t\"Roy                | Roy\",\n\t\t})\n\t\tvoid latinizesCorrectly(String input, String expected) {\n\t\t\tassertEquals(expected, StringUtils.latinize(input));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"escapeNonAscii\")\n\tclass EscapeNonAscii {\n\n\t\t@Test\n\t\tvoid null_returnsNull() {\n\t\t\tassertNull(StringUtils.escapeNonAscii(null));\n\t\t}\n\n\t\t@ParameterizedTest(name = \"''{0}'' → ''{1}''\")\n\t\t@CsvSource(delimiter = '|', value = {\n\t\t\t\"Moss | Moss\",\n\t\t\t\"Möss | M\\\\u00f6ss\",\n\t\t\t\"Réy  | R\\\\u00e9y\",\n\t\t})\n\t\tvoid escapesCorrectly(String input, String expected) {\n\t\t\tassertEquals(expected, StringUtils.escapeNonAscii(input));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"split\")\n\tclass Split {\n\n\t\t@Test\n\t\tvoid bySpace_returnsCorrectParts() {\n\t\t\tassertArrayEquals(new String[]{\"Moss\", \"Roy\", \"Jen\"},\n\t\t\t\tStringUtils.split(\"Moss Roy Jen\", ' '));\n\t\t}\n\n\t\t@Test\n\t\t@DisplayName(\"trailing delimiter preserves trailing empty string\")\n\t\tvoid trailingDelimiter_preservesTrailingEmpty() {\n\t\t\tassertArrayEquals(new String[]{\"Moss\", \"Roy\", \"\"},\n\t\t\t\tStringUtils.split(\"Moss Roy \", ' '));\n\t\t}\n\n\t\t@Test\n\t\tvoid noDelimiterPresent_returnsSingleElement() {\n\t\t\tassertArrayEquals(new String[]{\"Reynholm\"}, StringUtils.split(\"Reynholm\", ' '));\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"joinWithSpace\")\n\tclass JoinWithSpace {\n\n\t\t@Test\n\t\tvoid multipleElements_joinedWithSpace() {\n\t\t\tassertEquals(\"Moss Roy Jen\", StringUtils.joinWithSpace(List.of(\"Moss\", \"Roy\", \"Jen\")));\n\t\t}\n\n\t\t@Test\n\t\tvoid singleElement_noSpaceAdded() {\n\t\t\tassertEquals(\"Moss\", StringUtils.joinWithSpace(List.of(\"Moss\")));\n\t\t}\n\n\t\t@Test\n\t\tvoid emptyList_returnsEmptyString() {\n\t\t\tassertEquals(\"\", StringUtils.joinWithSpace(List.of()));\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "src/test/java/com/devskiller/jfairy/producer/util/ValidateUtilsTest.java",
    "content": "package com.devskiller.jfairy.producer.util;\n\nimport org.junit.jupiter.api.DisplayName;\nimport org.junit.jupiter.api.Nested;\nimport org.junit.jupiter.api.Test;\n\nimport static org.junit.jupiter.api.Assertions.assertDoesNotThrow;\nimport static org.junit.jupiter.api.Assertions.assertEquals;\nimport static org.junit.jupiter.api.Assertions.assertSame;\nimport static org.junit.jupiter.api.Assertions.assertThrows;\n\n/**\n * Unit tests for {@link ValidateUtils}.\n */\n@SuppressWarnings(\"checkstyle:MethodName\")\n@DisplayName(\"ValidateUtils\")\nclass ValidateUtilsTest {\n\n\t@Nested\n\t@DisplayName(\"notNull\")\n\tclass NotNull {\n\n\t\t@Test\n\t\tvoid nonNullValue_returnsValue() {\n\t\t\tString value = \"hello\";\n\t\t\tassertSame(value, ValidateUtils.notNull(value, \"must not be null\"));\n\t\t}\n\n\t\t@Test\n\t\tvoid nullValue_throwsWithMessage() {\n\t\t\tIllegalArgumentException ex = assertThrows(\n\t\t\t\tIllegalArgumentException.class,\n\t\t\t\t() -> ValidateUtils.notNull(null, \"key cannot be null\"));\n\t\t\tassertEquals(\"key cannot be null\", ex.getMessage());\n\t\t}\n\n\t\t@Test\n\t\tvoid nullValue_withFormatArgs_includesArgsInMessage() {\n\t\t\tIllegalArgumentException ex = assertThrows(\n\t\t\t\tIllegalArgumentException.class,\n\t\t\t\t() -> ValidateUtils.notNull(null, \"param '%s' cannot be null\", \"myKey\"));\n\t\t\tassertEquals(\"param 'myKey' cannot be null\", ex.getMessage());\n\t\t}\n\t}\n\n\t@Nested\n\t@DisplayName(\"isTrue\")\n\tclass IsTrue {\n\n\t\t@Test\n\t\tvoid trueExpression_doesNotThrow() {\n\t\t\tassertDoesNotThrow(() -> ValidateUtils.isTrue(true, \"should not throw\"));\n\t\t}\n\n\t\t@Test\n\t\tvoid falseExpression_throwsWithMessage() {\n\t\t\tIllegalArgumentException ex = assertThrows(\n\t\t\t\tIllegalArgumentException.class,\n\t\t\t\t() -> ValidateUtils.isTrue(false, \"value must be >= 0\"));\n\t\t\tassertEquals(\"value must be >= 0\", ex.getMessage());\n\t\t}\n\n\t\t@Test\n\t\tvoid falseExpression_withFormatArgs_includesArgsInMessage() {\n\t\t\tIllegalArgumentException ex = assertThrows(\n\t\t\t\tIllegalArgumentException.class,\n\t\t\t\t() -> ValidateUtils.isTrue(false, \"%d has to be >= 0\", -5));\n\t\t\tassertEquals(\"-5 has to be >= 0\", ex.getMessage());\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "src/test/resources/simplelogger.properties",
    "content": "# SLF4J's SimpleLogger configuration file\norg.slf4j.simpleLogger.logFile          = System.out\norg.slf4j.simpleLogger.defaultLogLevel  = info\n\n# Date and time formatting\norg.slf4j.simpleLogger.showDateTime     = true\norg.slf4j.simpleLogger.dateTimeFormat   = yyyy-MM-dd HH:mm:ss.SSS\n\n# Display settings for threads and logger names\norg.slf4j.simpleLogger.showThreadName   = true\norg.slf4j.simpleLogger.showLogName      = true\norg.slf4j.simpleLogger.showShortLogName = true\norg.slf4j.simpleLogger.levelInBrackets  = false\n\n# Specific logger levels\norg.slf4j.simpleLogger.log.com.devskiller.jfairy = trace\n"
  },
  {
    "path": "src/test/resources/team/checkstyle-rules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE module PUBLIC\n    \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"\n    \"https://checkstyle.org/dtds/configuration_1_3.dtd\">\n\n<module name=\"Checker\">\n    <property name=\"fileExtensions\" value=\"java, properties, xml\"/>\n    <property name=\"tabWidth\" value=\"4\"/>\n\n    <!-- Excludes all 'module-info.java' files -->\n    <module name=\"BeforeExecutionExclusionFileFilter\">\n        <property name=\"fileNamePattern\" value=\"module\\-info\\.java$\"/>\n    </module>\n\t<!-- module name=\"FileTabCharacter\">\n\t\t<property name=\"eachLine\" value=\"false\"/>\n\t</module -->\n    <module name=\"LineLength\">\n        <property name=\"fileExtensions\" value=\"java\"/>\n        <property name=\"max\" value=\"200\"/>\n        <property name=\"ignorePattern\" value=\"@version|@see|@todo|TODO\"/>\n    </module>\n    <module name=\"NewlineAtEndOfFile\"/>\n    <module name=\"RegexpSingleline\">\n        <property name=\"format\" value=\"\\s+$\"/>\n        <property name=\"minimum\" value=\"0\"/>\n        <property name=\"maximum\" value=\"0\"/>\n        <property name=\"message\" value=\"Line has trailing spaces.\"/>\n    </module>\n    <module name=\"RegexpMultiline\">\n        <property name=\"format\" value=\"(?s:(\\r\\n|\\r).*)\"/>\n        <property name=\"message\" value=\"Line has CRLF or CR line ending.\"/>\n    </module>\n    <module name=\"RegexpMultiline\">\n        <property name=\"format\" value=\"\\n{3,}\"/>\n        <property name=\"message\" value=\"Do not leave more than one open line.\"/>\n    </module>\n\n    <module name=\"SuppressWarningsFilter\"/>\n    <module name=\"Translation\"/>\n    <module name=\"UniqueProperties\"/>\n\n    <module name=\"TreeWalker\">\n\t\t<module name=\"Indentation\">\n\t\t\t<property name=\"basicOffset\" value=\"4\"/>\n\t\t\t<property name=\"braceAdjustment\" value=\"0\"/>\n\t\t\t<property name=\"caseIndent\" value=\"4\"/>\n\t\t\t<property name=\"throwsIndent\" value=\"4\"/>\n\t\t\t<property name=\"arrayInitIndent\" value=\"4\"/>\n\t\t\t<property name=\"lineWrappingIndentation\" value=\"4\"/>\n\t\t</module>\n        <module name=\"ArrayTypeStyle\"/>\n        <module name=\"AvoidNestedBlocks\"/>\n        <module name=\"CatchParameterName\">\n            <property name=\"format\" value=\"^(ex[a-zA-Z0-9]*)|([a-z][a-zA-Z0-9]+Exception|ignored)$\"/>\n        </module>\n        <module name=\"ConstantName\"/>\n        <!--module name=\"DeclarationOrder\" /-->\n        <module name=\"EmptyBlock\"/>\n        <module name=\"EmptyForInitializerPad\"/>\n        <module name=\"EmptyForIteratorPad\"/>\n        <module name=\"EmptyStatement\"/>\n        <module name=\"EqualsAvoidNull\"/>\n        <module name=\"EqualsHashCode\"/>\n        <module name=\"GenericWhitespace\"/>\n        <module name=\"FinalClass\"/>\n        <!-- module name=\"HiddenField\"/ -->\n        <module name=\"HideUtilityClassConstructor\"/>\n        <module name=\"IllegalImport\"/>\n        <module name=\"IllegalInstantiation\"/>\n\t\t<module name=\"ImportOrder\">\n\t\t\t<property name=\"groups\" value=\"/^(jakarta|java|javafx|javax)\\..+/, /^(?!(jakarta|java|javafx|javax|com\\.devskiller)\\.).+/, com.devskiller\"/>\n\t\t\t<property name=\"ordered\" value=\"true\"/>\n\t\t\t<property name=\"separated\" value=\"true\"/>\n\t\t\t<property name=\"option\" value=\"bottom\"/>\n\t\t\t<property name=\"staticGroups\" value=\"/^(jakarta|java|javafx|javax)\\..+/, /^(?!(jakarta|java|javafx|javax|com\\.devskiller)\\.).+/, com.devskiller\"/>\n\t\t\t<property name=\"separatedStaticGroups\" value=\"true\"/>\n\t\t\t<property name=\"sortStaticImportsAlphabetically\" value=\"true\"/>\n\t\t</module>\n        <module name=\"InnerAssignment\"/>\n        <!--module name=\"InnerTypeLast\" /-->\n        <module name=\"InterfaceIsType\"/>\n        <module name=\"JavadocStyle\">\n            <property name=\"checkFirstSentence\" value=\"false\"/>\n        </module>\n        <module name=\"LeftCurly\"/>\n        <module name=\"LocalFinalVariableName\">\n            <property name=\"format\" value=\"^[a-z][a-zA-Z0-9]*$\"/>\n        </module>\n        <module name=\"LocalVariableName\">\n            <property name=\"format\" value=\"(^[a-z][a-zA-Z0-9]*$)|(^[ijk]$)\"/>\n        </module>\n        <module name=\"MemberName\">\n            <property name=\"format\" value=\"^[a-z][a-zA-Z0-9]*$\" />\n        </module>\n        <module name=\"MethodLength\">\n            <property name=\"max\" value=\"100\"/>\n            <property name=\"countEmpty\" value=\"false\"/>\n        </module>\n        <module name=\"MethodName\"/>\n        <module name=\"MethodParamPad\"/>\n        <module name=\"MissingDeprecated\"/>\n        <module name=\"MissingOverride\"/>\n        <module name=\"MissingSwitchDefault\"/>\n        <module name=\"ModifierOrder\"/>\n        <module name=\"MutableException\"/>\n        <module name=\"NeedBraces\"/>\n        <module name=\"NoClone\"/>\n        <module name=\"NoFinalizer\"/>\n        <module name=\"NoWhitespaceAfter\"/>\n        <module name=\"NoWhitespaceBefore\"/>\n        <module name=\"OneStatementPerLine\"/>\n        <module name=\"OneTopLevelClass\"/>\n        <module name=\"OperatorWrap\"/>\n        <module name=\"OuterTypeFilename\"/>\n        <module name=\"PackageName\">\n            <property name=\"format\" value=\"^[a-z]+(?:\\.[a-z0-9]+)*$\"/>\n        </module>\n        <module name=\"ParameterAssignment\"/>\n        <module name=\"ParameterName\">\n            <property name=\"format\" value=\"(?:^[a-z][a-zA-Z0-9]*$)\"/>\n        </module>\n        <!-- module name=\"ParameterNumber\">\n            <property name=\"max\" value=\"10\"/>\n        </module -->\n        <module name=\"ParenPad\"/>\n        <module name=\"RedundantImport\"/>\n        <module name=\"RedundantModifier\"/>\n        <module name=\"RightCurly\"/>\n        <module name=\"SimplifyBooleanExpression\"/>\n        <module name=\"SimplifyBooleanReturn\"/>\n        <module name=\"StaticVariableName\"/>\n        <module name=\"StringLiteralEquality\"/>\n        <module name=\"SuperClone\"/>\n        <module name=\"SuperFinalize\"/>\n        <module name=\"SuppressWarningsHolder\"/>\n        <module name=\"SuppressionCommentFilter\"/>\n        <!--module name=\"TodoComment\" /-->\n        <module name=\"TypeName\"/>\n        <!--module name=\"TypeName\">\n            <property name=\"format\" value=\"^([A-Z][a-zA-Z0-9]+IF|I[A-Z][a-zA-Z0-9]+)$\"/>\n            <property name=\"tokens\" value=\"INTERFACE_DEF\"/>\n            <message key=\"name.invalidPattern\" value=\"Interface name ''{0}'' must match pattern ''{1}''.\"/>\n        </module-->\n        <module name=\"TypeName\">\n            <property name=\"format\" value=\"^[A-Z][a-zA-Z0-9]+$\"/>\n            <property name=\"tokens\" value=\"CLASS_DEF\"/>\n            <message key=\"name.invalidPattern\" value=\"Class name ''{0}'' must match pattern ''{1}''.\"/>\n        </module>\n        <module name=\"TypecastParenPad\"/>\n        <module name=\"UnusedImports\"/>\n        <module name=\"UpperEll\"/>\n        <module name=\"VariableDeclarationUsageDistance\">\n            <property name=\"allowedDistance\" value=\"10\"/>\n        </module>\n        <!-- module name=\"VisibilityModifier\"/ -->\n        <module name=\"WhitespaceAfter\"/>\n        <module name=\"WhitespaceAround\">\n            <property name=\"allowEmptyCatches\" value=\"true\"/>\n            <property name=\"allowEmptyConstructors\" value=\"true\"/>\n            <property name=\"allowEmptyLambdas\" value=\"true\"/>\n            <property name=\"allowEmptyMethods\" value=\"true\"/>\n            <property name=\"allowEmptyTypes\" value=\"true\"/>\n        </module>\n\n        <module name=\"RegexpSinglelineJava\">\n            <property name=\"format\" value=\"\\s+$\"/>\n            <property name=\"message\" value=\"Line has trailing whitespace.\"/>\n        </module>\n\n    </module>\n\n</module>\n\n"
  }
]