{"version":3,"sources":["../src/core/fields/core/key/key-field.ts","../src/errors/index.ts","../src/core/resolvers/interfaces/resolvers.ts","../src/core/resolvers/core/custom/custom-resolver.ts","../src/core/resolvers/core/enum/enum-resolver.ts","../src/core/resolvers/core/mixed/mixed-resolver.ts","../src/core/resolvers/core/ref/ref-field-resolver.ts","../src/core/resolvers/core/sequential/sequential-resolver.ts","../src/core/resolvers/core/key/key-resolver.ts","../src/core/resolvers/core/sequence/sequence-resolver.ts","../src/core/resolvers/core/probability/probability-resolver.ts","../src/core/resolvers/core/pick/pick-resolver.ts","../src/core/input-tree/core/node/input-tree-node.ts","../src/core/input-tree/core/is-array/is-array.ts","../src/core/input-tree/core/possible-null/possible-null.ts","../src/core/result-tree/classes/node/field-node.ts","../src/core/result-tree/classes/single-result/index.ts","../src/core/input-tree/core/custom/custom-value-node.ts","../src/core/input-tree/core/enum/enum-value-node.ts","../src/core/input-tree/core/key/key-value-node.ts","../src/core/result-tree/classes/mixed/index.ts","../src/core/input-tree/core/mixed/mixed-value-node.ts","../src/core/dataset-store/value-object/get-config.ts","../src/core/dataset-store/dataset-store.ts","../src/core/input-tree/core/node/value-object/route.ts","../src/core/input-tree/core/ref/value-object/route.ts","../src/core/input-tree/core/ref/ref-value-node.ts","../src/core/input-tree/core/sequential/sequential-value-node.ts","../src/core/input-tree/core/sequence/sequence-value-node.ts","../src/core/input-tree/core/probability/probability-value-node.ts","../src/core/input-tree/core/pick/pick-value-node.ts","../src/core/input-tree/core/map/possible-null.ts","../src/core/input-tree/core/map/is-array.ts","../src/core/input-tree/core/pick/value-object/count.ts","../src/core/input-tree/core/pick/value-object/values.ts","../src/core/input-tree/core/probability/value-object/chance.ts","../src/core/input-tree/core/probability/value-object/chance-value.ts","../src/core/input-tree/core/probability/value-object/chances-array.ts","../src/core/input-tree/core/sequence/value-object/step.ts","../src/core/input-tree/core/sequence/value-object/starts-with.ts","../src/core/input-tree/core/validators/resolver.ts","../src/core/fields/core/enum/enum-field.ts","../src/core/fields/core/pick/pick-field.ts","../src/core/fields/core/probability/probability-field.ts","../src/core/fields/core/ref/value-object/null-empty.ts","../src/core/fields/core/ref/value-object/ref-field.ts","../src/core/fields/core/ref/value-object/unique.ts","../src/core/fields/core/ref/value-object/where.ts","../src/core/fields/core/ref/ref-field.ts","../src/core/fields/core/sequence/value-object/Config.ts","../src/core/fields/core/sequence/sequence-field.ts","../src/core/fields/core/sequential/value-object/Config.ts","../src/core/fields/core/sequential/sequential-field.ts","../src/core/export/core/space-index.ts","../src/core/export/generators/generator/generator.ts","../src/core/export/generators/file-creator/filename.ts","../src/core/export/generators/json/core/creator.ts","../src/core/export/generators/json/json-generator.ts","../src/core/export/generators/javascript/core/union.ts","../src/core/export/generators/javascript/core/types.ts","../src/core/export/generators/javascript/core/classes.ts","../src/core/export/core/datatype.ts","../src/core/export/generators/javascript/core/names.ts","../src/core/export/generators/javascript/core/value-creator.ts","../src/core/export/generators/javascript/core/route.ts","../src/core/export/generators/javascript/core/creator.ts","../src/core/export/core/skip-invalid.ts","../src/core/export/core/declaration-only.ts","../src/core/export/generators/javascript/javascript-generator.ts","../src/core/export/generators/csv/core/validator.ts","../src/core/export/generators/csv/core/creator.ts","../src/core/export/generators/csv/csv-generator.ts","../src/core/export/generators/java/core/parent.ts","../src/core/export/generators/java/core/classes-creator.ts","../src/core/export/generators/java/core/classes.ts","../src/core/export/generators/java/core/names.ts","../src/core/export/generators/java/core/import.ts","../src/core/export/generators/java/core/types.ts","../src/core/export/generators/java/core/value-creator.ts","../src/core/export/generators/java/core/validator.ts","../src/core/export/generators/java/core/code-creator.ts","../src/core/export/generators/java/value-object/package.ts","../src/core/export/generators/java/java-generator.ts","../src/core/export/generators/typescript/typescript-generator.ts","../src/core/export/generators/yaml/core/creator.ts","../src/core/export/generators/yaml/yaml-generator.ts","../src/core/export/generators/sql/core/generators/names.ts","../src/core/export/generators/sql/core/sql-types/index.ts","../src/core/export/generators/sql/core/table/column.ts","../src/core/export/generators/sql/core/table/row-column.ts","../src/core/export/generators/sql/core/table/table.ts","../src/core/export/generators/sql/core/generators/fill-parent-keys.ts","../src/core/export/generators/sql/core/generators/route.ts","../src/core/export/generators/sql/core/table/row.ts","../src/core/export/generators/sql/core/generators/value-creator.ts","../src/core/export/generators/sql/core/generators/base.ts","../src/core/export/generators/sql/core/generators/postgres.ts","../src/core/export/generators/sql/core/generators/sqlite.ts","../src/core/export/generators/sql/core/generators/mysql.ts","../src/core/export/generators/sql/core/table/tables.ts","../src/core/export/generators/sql/core/generators/validator.ts","../src/core/export/generators/sql/core/generators/organizer.ts","../src/core/export/generators/sql/core/generators/searcher.ts","../src/core/export/generators/sql/core/generators/fixer.ts","../src/core/schema/core/default-name.ts","../src/core/export/generators/sql/value-object/schema-route.ts","../src/core/export/generators/sql/value-object/keys.ts","../src/core/export/generators/sql/value-object/nulls.ts","../src/core/export/generators/sql/value-object/refs.ts","../src/core/export/generators/sql/value-object/uniques.ts","../src/core/export/generators/sql/value-object/generate-ids.ts","../src/core/export/generators/sql/sql-generator.ts","../src/core/export/generators/python/core/union.ts","../src/core/export/generators/python/core/type.ts","../src/core/export/generators/python/core/classes.ts","../src/core/export/generators/python/core/import.ts","../src/core/export/generators/python/core/route.ts","../src/core/export/generators/python/core/names.ts","../src/core/export/generators/python/core/value-creator.ts","../src/core/export/generators/python/core/creator.ts","../src/core/export/generators/python/python-generator.ts","../src/core/export/resolvers/generator-filter/generator-filter.ts","../src/core/export/value-object/format.ts","../src/core/export/value-object/name.ts","../src/core/export/value-object/verbose.ts","../src/core/export/resolvers/dump/value-object/filename.ts","../src/core/export/resolvers/dump/dump.ts","../src/core/export/writers/unavailable/unavailable-file-writer.ts","../src/core/schema-resolver/value-object/schema-count-executor.ts","../src/core/schema-resolver/value-object/schema-count.ts","../src/core/schema/schema.ts","../src/core/schema-resolver/value-object/array.ts","../src/core/schema-resolver/value-object/possible-null.ts","../src/core/schema-resolver/value-object/input-key.ts","../src/core/schema-resolver/value-object/schema-input.ts","../src/core/input-tree/chaca-input-tree.ts","../src/core/result-tree/chaca-result-tree.ts","../src/core/schema-store/schema-store.ts","../src/core/schema-resolver/core/sub-fields-creator.ts","../src/core/result-tree/classes/array/index.ts","../src/core/schema-resolver/core/solution-creator.ts","../src/core/schema-resolver/core/array-creator.ts","../src/core/schema-resolver/core/fill-solution.ts","../src/core/result-tree/classes/document/document-tree.ts","../src/core/schema-resolver/value-object/schema-name.ts","../src/core/schema-resolver/schema-resolver.ts","../src/core/dataset-resolver/dataset-resolver.ts","../src/core/export/value-object/location.ts","../src/core/export/resolvers/export/export.ts","../src/core/dataset/dataset.ts","../src/Chaca.ts","../src/modules/datatype/constants/special-characters.ts","../src/modules/datatype/constants/characters.ts","../src/modules/datatype/index.ts","../src/core/utils/index.ts","../src/modules/id/index.ts","../src/modules/internet/constants/emojis.ts","../src/modules/internet/constants/domainSuffix.ts","../src/modules/internet/constants/httpStatus.ts","../src/modules/internet/constants/http_method.ts","../src/modules/internet/core/user-agent.ts","../src/modules/internet/constants/protocol.ts","../src/modules/internet/constants/oauth.ts","../src/modules/internet/constants/locale.ts","../src/modules/internet/constants/email_provider.ts","../src/modules/internet/constants/browser.ts","../src/modules/internet/core/password.ts","../src/modules/internet/index.ts","../src/modules/lorem/index.ts","../src/modules/image/index.ts","../src/modules/system/constants/mime-types.ts","../src/modules/system/constants/file-extensions.ts","../src/modules/system/constants/non-standard-cron-expressions.ts","../src/modules/system/index.ts","../src/modules/finance/constants/account-type.ts","../src/modules/finance/constants/iban.ts","../src/modules/finance/constants/money-info.ts","../src/modules/finance/constants/subscription.ts","../src/modules/finance/constants/transaction-type.ts","../src/modules/finance/index.ts","../src/modules/phone/constants/prefix.ts","../src/modules/phone/index.ts","../src/modules/address/constants/countries.ts","../src/modules/address/constants/time-zone.ts","../src/modules/address/constants/cardinal-directions.ts","../src/modules/address/constants/ordinal.ts","../src/modules/address/index.ts","../src/modules/vehicle/constants/bicycle.ts","../src/modules/vehicle/constants/fuel.ts","../src/modules/vehicle/constants/manufacturer.ts","../src/modules/vehicle/constants/model.ts","../src/modules/vehicle/constants/type.ts","../src/modules/vehicle/index.ts","../src/modules/date/constants/month.ts","../src/modules/date/constants/weekday.ts","../src/modules/date/index.ts","../src/modules/person/constants/spanish.ts","../src/modules/person/constants/english.ts","../src/modules/person/constants/genders.ts","../src/modules/person/constants/jobs.ts","../src/modules/person/constants/language.ts","../src/modules/person/constants/prefix.ts","../src/modules/person/constants/index.ts","../src/modules/person/constants/zodiac.ts","../src/modules/person/index.ts","../src/modules/animal/constants/bear.ts","../src/modules/animal/constants/cat.ts","../src/modules/animal/constants/cetacean.ts","../src/modules/animal/constants/cow.ts","../src/modules/animal/constants/crocodilia.ts","../src/modules/animal/constants/dog.ts","../src/modules/animal/constants/horse.ts","../src/modules/animal/constants/insect.ts","../src/modules/animal/constants/lion.ts","../src/modules/animal/constants/rabbit.ts","../src/modules/animal/constants/rodent.ts","../src/modules/animal/constants/snake.ts","../src/modules/animal/constants/type.ts","../src/modules/animal/constants/bird.ts","../src/modules/animal/constants/fish.ts","../src/modules/animal/index.ts","../src/modules/science/constants/periodic-table.ts","../src/modules/science/constants/units.ts","../src/modules/science/index.ts","../src/modules/word/core/english.ts","../src/modules/word/core/spanish.ts","../src/modules/word/core/words.ts","../src/modules/word/index.ts","../src/modules/color/constants/index.ts","../src/modules/color/helpers/index.ts","../src/modules/color/index.ts","../src/modules/index.ts","../src/core-singletons.ts","../src/core/export/generators/file-creator/route.ts","../src/core/export/writers/node/node-file-writer.ts","../src/index.ts"],"names":["utils","Config","filename","value","code","ValueCreator","DataValidator","Route","v","table","UnionDatatypes","SaveClassField","Imports","banned","browser","arch","result","LANGUAGES","GENDERS","path"],"mappings":"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BAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,0BAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,6BAAA;AAAA,IACA,6BAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,sCAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,QAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,mCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,6BAAA;AAAA,IACA,6BAAA;AAAA,IACA,WAAA;AAAA,IACA,6BAAA;AAAA,IACA,6BAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,0BAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,o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ACA,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,mCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,mCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,6BAAA;AAAA,IACA,6BAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,6BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,yCAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,2DAAA;AAAA,IACA,oBAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,2DAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,2DAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,2DAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,6EAAA;AAAA,IACA,WAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,4CAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,4CAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,4CAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,8DAAA;AAAA,IACA,WAAA;AAAA,IACA,yCAAA;AAAA,IACA,yCAAA;AAAA,IACA,wDAAA;AAAA,IACA,wDAAA;AAAA,IACA,wDAAA;AAAA,IACA,yCAAA;AAAA,IACA,yCAAA;AAAA,IACA,wDAAA;AAAA,IACA,wDAAA;AAAA,IACA,wDAAA;AAAA,IACA,yCAAA;AAAA,IACA,yCAAA;AAAA,IACA,wDAAA;AAAA,IACA,wDAAA;AAAA,IACA,wDAAA;AAAA,IACA,0BAAA;AAAA,IACA,yCAAA;AAAA,IACA,0BAAA;AAAA,IACA,yCAAA;AAAA,IACA,yCAAA;AAAA,IACA,0BAAA;AAAA,IACA,yCAAA;AAAA,IACA,0BAAA;AAAA,IACA,yCAAA;AAAA,IACA,yCAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,0BAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,uBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,6BAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;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,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,i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A;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAA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A;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,KAA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","file":"index.mjs","sourcesContent":["import { CustomField } from \"../custom/custom-field\";\nimport { RefField } from \"../ref/ref-field\";\nimport { SequenceField } from \"../sequence/sequence-field\";\n\n/**\n * Possible types for key schema field\n */\nexport type KeyFieldProps<C = any> = RefField | SequenceField | CustomField<C>;\n\nexport class KeyField<C = any> {\n  readonly field: KeyFieldProps<C>;\n\n  constructor(type: KeyFieldProps<C>) {\n    this.field = type;\n  }\n}\n","export class ChacaError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"ChacaError\";\n  }\n}\n\nexport class WrongArrayDefinitionError extends ChacaError {\n  constructor(\n    readonly fieldRoute: string,\n    message: string,\n  ) {\n    super(`On '${fieldRoute}'. ${message}`);\n\n    this.name = \"ChacaError.WrongArrayDefinitionError\";\n  }\n}\n\nexport class WrongPossibleNullDefinitionError extends ChacaError {\n  constructor(\n    readonly fieldRoute: string,\n    message: string,\n  ) {\n    super(`On '${fieldRoute}'. ${message}`);\n\n    this.name = `ChacaError.WrongPossibleNullDefinitionError`;\n  }\n}\n\nexport class EmptySequentialValuesError extends ChacaError {\n  constructor(readonly fieldRoute: string) {\n    super(`There are no more sequential values for the field '${fieldRoute}'`);\n\n    this.name = \"ChacaError.EmptySequentialValuesError\";\n  }\n}\n\nexport class WrongProbabilityFieldDefinitionError extends ChacaError {\n  constructor(\n    readonly fieldRoute: string,\n    message: string,\n  ) {\n    super(`On '${fieldRoute}'. ${message}`);\n\n    this.name = \"ChacaError.WrongProbabilityFieldDefinitionError\";\n  }\n}\n\nexport class PickFieldDefinitionError extends ChacaError {\n  constructor(\n    readonly fieldRoute: string,\n    message: string,\n  ) {\n    super(`On field '${fieldRoute}'. ${message}`);\n\n    this.name = \"ChacaError.PickFieldDefinitionError\";\n  }\n}\n\nexport class TryRefANoKeyFieldError extends ChacaError {\n  constructor(readonly fieldRoute: string) {\n    super(\n      `The field '${fieldRoute}' is not a key field, so you can't reference this one`,\n    );\n\n    this.name = \"ChacaError.TryRefANoKeyFieldError\";\n  }\n}\n\nexport class NotEnoughValuesForRefError extends ChacaError {\n  constructor(\n    readonly refFieldRoute: string,\n    readonly keyFieldRoute: string,\n  ) {\n    super(\n      `Not enough values of '${keyFieldRoute}' for the ref field '${refFieldRoute}'`,\n    );\n\n    this.name = \"ChacaError.NotEnoughValuesForRefError\";\n  }\n}\n\nexport class CyclicAccessDataError extends ChacaError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"ChacaError.CyclicAccessDataError\";\n  }\n}\n\nexport class NotExistRefFieldError extends ChacaError {\n  constructor(\n    readonly fieldRoute: string,\n    readonly refFieldRoute: string,\n  ) {\n    super(`From '${fieldRoute}', The field '${refFieldRoute}' does not exists`);\n    this.name = \"ChacaError.NotExistRefFieldError\";\n  }\n}\n\nexport class EmptyEnumValuesError extends ChacaError {\n  constructor(readonly fieldRoute: string) {\n    super(`There are no values for the enum field '${fieldRoute}'`);\n    this.name = \"ChacaError.EmptyEnumValuesError\";\n  }\n}\n","export class IResolver {}\n","import { CustomField } from \"../../../fields/core/custom/custom-field\";\nimport { IResolver } from \"../../interfaces/resolvers\";\n\nexport class CustomFieldResolver<C = any, R = any> extends IResolver {\n  constructor(readonly fun: CustomField<C, R>) {\n    super();\n  }\n}\n","import { IResolver } from \"../../interfaces/resolvers\";\n\nexport class EnumFieldResolver<R> extends IResolver {\n  constructor(readonly array: ReadonlyArray<R>) {\n    super();\n  }\n}\n","import { IResolver } from \"../../interfaces/resolvers\";\nimport { Schema } from \"../../../schema/schema\";\n\nexport class MixedFieldResolver extends IResolver {\n  constructor(readonly schema: Schema) {\n    super();\n  }\n}\n","import { IResolver } from \"../../interfaces/resolvers\";\nimport { FieldToRefObject } from \"../../../fields/core/ref/ref-field\";\n\nexport class RefFieldResolver extends IResolver {\n  constructor(readonly refField: FieldToRefObject) {\n    super();\n  }\n}\n","import { SequentialFieldConfig } from \"../../../fields/core/sequential/sequential-field\";\nimport { IResolver } from \"../../interfaces/resolvers\";\n\nexport class SequentialFieldResolver<K = any> extends IResolver {\n  constructor(\n    readonly valuesArray: K[],\n    readonly config: Required<SequentialFieldConfig>,\n  ) {\n    super();\n  }\n}\n","import { IResolver } from \"../../interfaces/resolvers\";\nimport { CustomFieldResolver } from \"../custom/custom-resolver\";\nimport { RefFieldResolver } from \"../ref/ref-field-resolver\";\nimport { SequenceFieldResolver } from \"../sequence/sequence-resolver\";\n\nexport type KeyFieldResolverProps =\n  RefFieldResolver | SequenceFieldResolver | CustomFieldResolver;\n\nexport class KeyFieldResolver extends IResolver {\n  constructor(readonly type: KeyFieldResolverProps) {\n    super();\n  }\n}\n","import { SequenceFieldConfig } from \"../../../fields/core/sequence/sequence-field\";\nimport { IResolver } from \"../../interfaces/resolvers\";\n\nexport class SequenceFieldResolver extends IResolver {\n  constructor(private readonly config: SequenceFieldConfig) {\n    super();\n  }\n\n  getConfig() {\n    return this.config;\n  }\n}\n","import { ProbabilityOption } from \"../../../fields/core/probability/probability-field\";\nimport { IResolver } from \"../../interfaces/resolvers\";\n\nexport class ProbabilityFieldResolver extends IResolver {\n  constructor(public readonly values: ProbabilityOption[]) {\n    super();\n  }\n}\n","import { PickFieldProps } from \"../../../fields/core/pick/pick-field\";\nimport { IResolver } from \"../../interfaces/resolvers\";\n\nexport class PickFieldResolver extends IResolver {\n  constructor(readonly values: PickFieldProps) {\n    super();\n  }\n}\n","import { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { NodeRoute } from \"./value-object/route\";\nimport { IsArray } from \"../is-array/is-array\";\nimport { PossibleNull } from \"../possible-null/possible-null\";\nimport { DocumentTree } from \"../../../result-tree/classes/document/document-tree\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\n\nexport interface IsNullProps<K> {\n  store: DatasetStore;\n  currentDocument: DocumentTree<K>;\n  index: number;\n}\n\nexport interface GenerateProps {\n  currentDocument: DocumentTree;\n  store: DatasetStore;\n  indexDoc: number;\n  schemaIndex: number;\n}\n\nexport abstract class InputTreeNode {\n  constructor(\n    protected readonly route: NodeRoute,\n    protected readonly isArray: IsArray,\n    protected readonly possibleNull: PossibleNull,\n  ) {}\n\n  abstract getNoArrayNode(): InputTreeNode;\n  abstract checkIfFieldExists(fieldTreeRoute: string[]): boolean;\n  abstract generate(props: GenerateProps): Promise<FieldNode>;\n\n  getRouteString(): string {\n    return this.route.string();\n  }\n\n  getName(): string {\n    return this.route.name();\n  }\n\n  getFieldRoute() {\n    return this.route;\n  }\n\n  getIsArray() {\n    return this.isArray;\n  }\n\n  getPossibleNull() {\n    return this.possibleNull;\n  }\n\n  isPossibleNull(): boolean {\n    return this.getPossibleNull().can();\n  }\n\n  /**\n   * Indica que el nodo no tiene más valores posibles que generar, por lo que\n   * al llenar un array no tiene sentido seguir iterando. Solo los nodos que\n   * dependen de un conjunto finito de valores (como `ref`) lo sobreescriben.\n   */\n  stopArrayFill(): boolean {\n    return false;\n  }\n\n  async isNull<K>({\n    currentDocument,\n    store,\n    index,\n  }: IsNullProps<K>): Promise<boolean> {\n    const value = this.getPossibleNull();\n\n    const result = await value.is({\n      index: index,\n      currentDocument: currentDocument,\n      store: store,\n    });\n\n    return result;\n  }\n}\n","import { WrongArrayDefinitionError } from \"../../../../errors\";\nimport { DatatypeModule } from \"../../../../modules/datatype\";\nimport { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { DocumentTree } from \"../../../result-tree/classes/document/document-tree\";\nimport {\n  ArrayLimitObject,\n  IsArrayFunction,\n} from \"../../../schema/interfaces/schema\";\n\ninterface ValueProps {\n  store: DatasetStore;\n  currentDocument: DocumentTree;\n}\n\ninterface FunctionProps {\n  func: IsArrayFunction;\n  route: string;\n}\n\ninterface IntegerProps {\n  value: number;\n  route: string;\n}\n\ninterface LimitsProps {\n  limits: ArrayLimitObject;\n  route: string;\n}\n\nexport abstract class IsArray {\n  abstract execute(props: ValueProps): Promise<number | undefined>;\n}\n\nexport class LimitsArray extends IsArray {\n  private readonly min: number;\n  private readonly max: number;\n  private readonly route: string;\n\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    { limits, route }: LimitsProps,\n  ) {\n    super();\n\n    this.route = route;\n\n    const min = limits.min === undefined ? 0 : limits.min;\n    const max = limits.max === undefined ? min + 10 : limits.max;\n\n    if (min < 0) {\n      throw new WrongArrayDefinitionError(\n        this.route,\n        `The parameter isArray.min cannot be less than 0`,\n      );\n    }\n\n    if (max < 0) {\n      throw new WrongArrayDefinitionError(\n        this.route,\n        `The parameter isArray.max cannot be less than 0`,\n      );\n    }\n\n    if (min > max) {\n      throw new WrongArrayDefinitionError(\n        this.route,\n        `The parameter isArray.min cannot be greater than isArray.max`,\n      );\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  execute(): Promise<number> {\n    const limit = this.datatypeModule.int({\n      min: this.min,\n      max: this.max + 1,\n    });\n\n    return new Promise((resolve) => resolve(limit));\n  }\n}\n\nexport class FunctionArray extends IsArray {\n  private readonly func: IsArrayFunction;\n  private readonly route: string;\n\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    { func, route }: FunctionProps,\n  ) {\n    super();\n\n    this.route = route;\n    this.func = func;\n  }\n\n  async execute({\n    currentDocument,\n    store,\n  }: ValueProps): Promise<number | undefined> {\n    const result = await this.func({\n      currentFields: currentDocument.getDocumentObject(),\n      store: store,\n    });\n\n    let type: IsArray;\n    if (typeof result === \"number\") {\n      type = new IntegerArray({ value: result, route: this.route });\n    } else if (typeof result === \"undefined\") {\n      type = new NotArray();\n    } else if (typeof result === \"object\" && result !== null) {\n      type = new LimitsArray(this.datatypeModule, {\n        limits: result,\n        route: this.route,\n      });\n    } else {\n      throw new WrongArrayDefinitionError(\n        this.route,\n        `The isArray function must return an object with the array limits or an integer number.`,\n      );\n    }\n\n    return type.execute({\n      currentDocument: currentDocument,\n      store: store,\n    });\n  }\n}\n\nexport class IntegerArray extends IsArray {\n  readonly limit: number;\n\n  constructor({ value, route }: IntegerProps) {\n    super();\n\n    if (value < 0) {\n      throw new WrongArrayDefinitionError(\n        route,\n        `The parameter isArray cannot be less than 0`,\n      );\n    }\n\n    this.limit = value;\n  }\n\n  execute(): Promise<number> {\n    return new Promise((resolve) => resolve(this.limit));\n  }\n}\n\nexport class NotArray extends IsArray {\n  constructor() {\n    super();\n  }\n\n  execute(): Promise<undefined> {\n    return new Promise((resolve) => resolve(undefined));\n  }\n}\n","import { WrongPossibleNullDefinitionError } from \"../../../../errors\";\nimport { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { DocumentTree } from \"../../../result-tree/classes/document/document-tree\";\nimport { SchemaCount } from \"../../../schema-resolver/value-object/schema-count\";\nimport { PossibleNullFunction } from \"../../../schema/interfaces/schema\";\nimport { ChacaUtils } from \"../../../utils\";\n\ninterface BooleanProps {\n  value: boolean;\n  route: string;\n}\n\ninterface AbsoluteProps {\n  value: number;\n  total: SchemaCount;\n  route: string;\n}\n\ninterface ProbabilityProps {\n  value: number;\n  route: string;\n}\n\ninterface FunctionNullProps {\n  func: PossibleNullFunction;\n  route: string;\n}\n\nexport interface IsProps {\n  index: number;\n  store: DatasetStore;\n  currentDocument: DocumentTree;\n}\n\nexport abstract class PossibleNull {\n  abstract is(props: IsProps): Promise<boolean>;\n  abstract can(): boolean;\n}\n\nexport class BooleanNull extends PossibleNull {\n  private readonly value: boolean;\n\n  constructor({ value }: BooleanProps) {\n    super();\n\n    this.value = value;\n  }\n\n  is(): Promise<boolean> {\n    return new Promise((resolve) => resolve(this.value));\n  }\n\n  can(): boolean {\n    return this.value;\n  }\n}\n\nexport class FunctionNull extends PossibleNull {\n  private readonly route: string;\n  private readonly func: PossibleNullFunction;\n\n  constructor({ func, route }: FunctionNullProps) {\n    super();\n\n    this.func = func;\n    this.route = route;\n  }\n\n  can(): boolean {\n    return true;\n  }\n\n  async is({ currentDocument, store, index }: IsProps): Promise<boolean> {\n    const result = await this.func({\n      currentFields: currentDocument.getDocumentObject(),\n      store: store,\n    });\n\n    let type: PossibleNull;\n    if (typeof result === \"number\") {\n      type = new ProbabilityNull({ value: result, route: this.route });\n    } else if (typeof result === \"boolean\") {\n      type = new BooleanNull({ route: this.route, value: result });\n    } else if (typeof result === \"undefined\") {\n      type = new NotNull();\n    } else {\n      throw new WrongPossibleNullDefinitionError(\n        this.route,\n        `The parameter function possibleNull must return a boolean or a probability value between 0 and 1`,\n      );\n    }\n\n    return type.is({\n      currentDocument: currentDocument,\n      index: index,\n      store: store,\n    });\n  }\n}\n\nexport class NotNull extends PossibleNull {\n  constructor() {\n    super();\n  }\n\n  is(): Promise<boolean> {\n    return new Promise((resolve) => resolve(false));\n  }\n\n  can(): boolean {\n    return false;\n  }\n}\n\nexport class ProbabilityNull extends PossibleNull {\n  private value: number;\n\n  constructor({ value, route }: ProbabilityProps) {\n    super();\n\n    this.value = value;\n\n    if (!(value >= 0 && value <= 1)) {\n      throw new WrongPossibleNullDefinitionError(\n        route,\n        `The possibleNull parameter in case of being a float number must be in the range of 0 to 1`,\n      );\n    }\n  }\n\n  is(): Promise<boolean> {\n    return new Promise((resolve) => resolve(Math.random() <= this.value));\n  }\n\n  can(): boolean {\n    return this.value > 0;\n  }\n}\n\nexport class AbsoluteNullCount extends PossibleNull {\n  private indexes: number[];\n  private readonly value: number;\n\n  constructor(\n    utils: ChacaUtils,\n    { total: itotal, value, route }: AbsoluteProps,\n  ) {\n    super();\n\n    if (value < 0) {\n      throw new WrongPossibleNullDefinitionError(\n        route,\n        `The possibleNull parameter the numeric value must be greater or equal than 0`,\n      );\n    }\n\n    this.value = value;\n\n    // register observer\n    itotal.register((total) => {\n      const all: number[] = [];\n\n      for (let i = 0; i < total; i++) {\n        all.push(i);\n      }\n\n      if (value > all.length) {\n        throw new WrongPossibleNullDefinitionError(\n          route,\n          `The number of elements to select must be less or equal than the array length`,\n        );\n      }\n\n      this.indexes = utils.pick({ values: all, count: value });\n    });\n  }\n\n  is({ index }: IsProps): Promise<boolean> {\n    return new Promise((resolve) => resolve(this.indexes.includes(index)));\n  }\n\n  can(): boolean {\n    return this.value > 0;\n  }\n}\n","import { NodeRoute } from \"../../../input-tree/core/node/value-object/route\";\nimport { SingleResultNode } from \"../single-result\";\n\nexport interface GetRefValueProps {\n  search: NodeRoute;\n  caller: NodeRoute;\n  baseSearch: NodeRoute;\n}\n\nexport abstract class FieldNode {\n  constructor(readonly name: string) {}\n\n  abstract value(): unknown | unknown[];\n  abstract getNodeByRoute(fieldTreeRoute: string[]): FieldNode;\n\n  protected abstract getRefValueByNodeRoute(\n    props: GetRefValueProps,\n  ): SingleResultNode;\n\n  getRefValueByRoute(props: GetRefValueProps): SingleResultNode {\n    const value = this.getRefValueByNodeRoute(props);\n    return value;\n  }\n}\n","import { ChacaError, NotExistRefFieldError } from \"../../../../errors\";\nimport { NodeRoute } from \"../../../input-tree/core/node/value-object/route\";\nimport { FieldNode, GetRefValueProps } from \"../node/field-node\";\n\ninterface Props {\n  name: string;\n  value: unknown;\n}\n\nexport class SingleResultNode extends FieldNode {\n  private _value: unknown;\n  private _taken: string[] = [];\n\n  constructor({ name, value }: Props) {\n    super(name);\n    this._value = value;\n  }\n\n  value(): unknown {\n    return this._value;\n  }\n\n  changeIsTaken(fieldRoute: NodeRoute) {\n    this._taken.push(fieldRoute.string());\n  }\n\n  isTaken(fieldRoute: NodeRoute): boolean {\n    return this._taken.includes(fieldRoute.string());\n  }\n\n  getNodeByRoute(fieldTreeRoute: string[]): FieldNode {\n    if (fieldTreeRoute.length === 0) {\n      return this;\n    } else {\n      throw new ChacaError(\n        `The field ${fieldTreeRoute.join(\".\")} do not exists`,\n      );\n    }\n  }\n\n  getRefValueByNodeRoute({\n    caller,\n    search,\n    baseSearch,\n  }: GetRefValueProps): SingleResultNode {\n    if (search.empty()) {\n      return this;\n    } else {\n      throw new NotExistRefFieldError(caller.string(), baseSearch.string());\n    }\n  }\n}\n","import { TryRefANoKeyFieldError } from \"../../../../errors\";\nimport { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { GenerateProps, InputTreeNode } from \"../node/input-tree-node\";\nimport { CustomField } from \"../../../fields/core/custom/custom-field\";\nimport { IsArray, NotArray } from \"../is-array/is-array\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\nimport { SingleResultNode } from \"../../../result-tree/classes/single-result\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\n\ninterface Props {\n  fields: any;\n  datasetStore: DatasetStore;\n}\n\nexport class CustomValueNode extends InputTreeNode {\n  constructor(\n    route: NodeRoute,\n    isArray: IsArray,\n    possibleNull: PossibleNull,\n    private readonly func: CustomField,\n  ) {\n    super(route, isArray, possibleNull);\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    return new CustomValueNode(\n      this.route,\n      new NotArray(),\n      new NotNull(),\n      this.func,\n    );\n  }\n\n  private async value({ fields, datasetStore }: Props) {\n    const value = await this.func({\n      store: datasetStore,\n      currentFields: fields,\n    });\n\n    return value;\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      return false;\n    }\n  }\n\n  async generate({\n    currentDocument,\n    store,\n  }: GenerateProps): Promise<FieldNode> {\n    return new SingleResultNode({\n      name: this.getName(),\n      value: await this.value({\n        datasetStore: store,\n        fields: currentDocument.getDocumentObject(),\n      }),\n    });\n  }\n}\n","import {\n  EmptyEnumValuesError,\n  TryRefANoKeyFieldError,\n} from \"../../../../errors\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\nimport { SingleResultNode } from \"../../../result-tree/classes/single-result\";\nimport { ChacaUtils } from \"../../../utils\";\nimport { IsArray, NotArray } from \"../is-array/is-array\";\nimport { InputTreeNode } from \"../node/input-tree-node\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\n\nexport class EnumValueNode extends InputTreeNode {\n  constructor(\n    private readonly utils: ChacaUtils,\n    route: NodeRoute,\n    isArray: IsArray,\n    possibleNull: PossibleNull,\n    private readonly options: ReadonlyArray<unknown>,\n  ) {\n    super(route, isArray, possibleNull);\n\n    if (Array.isArray(options)) {\n      if (options.length === 0) {\n        throw new EmptyEnumValuesError(this.getRouteString());\n      }\n    } else {\n      throw new EmptyEnumValuesError(this.getRouteString());\n    }\n  }\n\n  private value() {\n    return this.utils.oneOfArray(this.options);\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    return new EnumValueNode(\n      this.utils,\n      this.route,\n      new NotArray(),\n      new NotNull(),\n      this.options,\n    );\n  }\n\n  generate(): Promise<FieldNode> {\n    const result = new SingleResultNode({\n      name: this.getName(),\n      value: this.value(),\n    });\n\n    return new Promise((resolve) => resolve(result));\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      return false;\n    }\n  }\n}\n","import { ChacaError } from \"../../../../errors\";\nimport { GenerateProps, InputTreeNode } from \"../node/input-tree-node\";\nimport { CustomValueNode } from \"../custom/custom-value-node\";\nimport { RefValueNode } from \"../ref/ref-value-node\";\nimport { SequenceValueNode } from \"../sequence/sequence-value-node\";\nimport { NotNull } from \"../possible-null/possible-null\";\nimport { NotArray } from \"../is-array/is-array\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\n\nexport type KeyFieldProps = RefValueNode | SequenceValueNode | CustomValueNode;\n\nexport class KeyValueNode extends InputTreeNode {\n  constructor(\n    route: NodeRoute,\n    private readonly fieldNode: KeyFieldProps,\n  ) {\n    super(route, new NotArray(), new NotNull());\n  }\n\n  getNoArrayNode(): InputTreeNode {\n    return new KeyValueNode(this.route, this.fieldNode);\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    return fieldTreeRoute.length === 0;\n  }\n\n  async generate(props: GenerateProps): Promise<FieldNode> {\n    const node = await this.fieldNode.generate(props);\n\n    const value = node.value();\n\n    if (value === null || value === undefined) {\n      throw new ChacaError(\n        `The key value ${this.getRouteString()} can not be null or undefined`,\n      );\n    }\n\n    return node;\n  }\n}\n","import { ChacaError, NotExistRefFieldError } from \"../../../../errors\";\nimport { FieldNode, GetRefValueProps } from \"../node/field-node\";\nimport { SingleResultNode } from \"../single-result\";\n\nexport class MixedFieldNode extends FieldNode {\n  nodes: FieldNode[] = [];\n\n  insertNode(node: FieldNode): void {\n    this.nodes.push(node);\n  }\n\n  value(): unknown {\n    let resultObject = {};\n\n    this.nodes.forEach((n) => {\n      resultObject = { ...resultObject, [n.name]: n.value() };\n    });\n\n    return resultObject;\n  }\n\n  getNodeByRoute(fieldTreeRoute: string[]): FieldNode {\n    let returnNode = undefined;\n\n    for (let i = 0; i < this.nodes.length && returnNode === undefined; i++) {\n      if (this.nodes[i].name === fieldTreeRoute[0]) {\n        returnNode = this.nodes[i].getNodeByRoute(fieldTreeRoute.slice(1));\n      }\n    }\n\n    if (returnNode) {\n      return returnNode;\n    } else {\n      throw new ChacaError(\n        `The field ${fieldTreeRoute.join(\".\")} do not exists`,\n      );\n    }\n  }\n\n  getRefValueByNodeRoute({\n    search,\n    caller,\n    baseSearch,\n  }: GetRefValueProps): SingleResultNode {\n    let returnNode = undefined;\n\n    for (let i = 0; i < this.nodes.length && returnNode === undefined; i++) {\n      if (this.nodes[i].name === search.array()[0]) {\n        returnNode = this.nodes[i].getRefValueByRoute({\n          search: search.pop(),\n          caller: caller,\n          baseSearch: baseSearch,\n        });\n      }\n    }\n\n    if (returnNode) {\n      return returnNode;\n    } else {\n      throw new NotExistRefFieldError(caller.string(), baseSearch.string());\n    }\n  }\n}\n","import { InputTreeNode } from \"../node/input-tree-node\";\nimport { TryRefANoKeyFieldError } from \"../../../../errors\";\nimport { KeyValueNode } from \"../key/key-value-node\";\nimport { IsArray, NotArray } from \"../is-array/is-array\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\nimport { MixedFieldNode } from \"../../../result-tree/classes/mixed\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\n\nexport class MixedValueNode extends InputTreeNode {\n  private nodes: InputTreeNode[] = [];\n\n  constructor(route: NodeRoute, isArray: IsArray, possibleNull: PossibleNull) {\n    super(route, isArray, possibleNull);\n  }\n\n  getFields() {\n    return this.nodes;\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    const node = new MixedValueNode(this.route, new NotArray(), new NotNull());\n    node.nodes = this.nodes;\n\n    return node;\n  }\n\n  getPossibleNullNodes(): InputTreeNode[] {\n    const nodes = [] as InputTreeNode[];\n\n    this.nodes.forEach((n) => {\n      if (n.isPossibleNull()) {\n        nodes.push(n);\n      }\n\n      if (n instanceof MixedValueNode) {\n        const subNodes = n.getPossibleNullNodes();\n        subNodes.forEach((s) => nodes.push(s));\n      }\n    });\n\n    return nodes;\n  }\n\n  getKeyFields(): KeyValueNode[] {\n    const keys = [] as KeyValueNode[];\n\n    this.nodes.forEach((n) => {\n      if (n instanceof MixedValueNode) {\n        const subKeys = n.getKeyFields();\n        subKeys.forEach((k) => keys.push(k));\n      } else if (n instanceof KeyValueNode) {\n        keys.push(n);\n      }\n    });\n\n    return keys;\n  }\n\n  insertNode(node: InputTreeNode): void {\n    this.nodes.push(node);\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      let found = false;\n\n      for (let i = 0; i < this.nodes.length && !found; i++) {\n        if (this.nodes[i].getName() === fieldTreeRoute[0]) {\n          const routeWithoutFirstElement = fieldTreeRoute.slice(1);\n\n          found = this.nodes[i].checkIfFieldExists(routeWithoutFirstElement);\n        }\n      }\n\n      return found;\n    }\n  }\n\n  generate(): Promise<FieldNode> {\n    const result = new MixedFieldNode(this.getName());\n\n    return new Promise((resolve) => resolve(result));\n  }\n}\n","import { DocumentTree } from \"../../result-tree/classes/document/document-tree\";\nimport { SchemaResolver } from \"../../schema-resolver/schema-resolver\";\nimport {\n  GetStoreConfig,\n  GetStoreValueConfig,\n} from \"../../schema-store/interfaces/schema-store\";\n\ninterface Props {\n  omitResolver: SchemaResolver;\n  config?: GetStoreConfig;\n  omitCurrentDocument?: DocumentTree;\n}\n\nexport class GetConfig {\n  private readonly _value: GetStoreValueConfig;\n\n  constructor({ omitCurrentDocument, omitResolver, config }: Props) {\n    const returnConfig: GetStoreValueConfig = {\n      omitDocument: omitCurrentDocument,\n      omitResolver: omitResolver,\n    };\n\n    if (config && typeof config === \"object\" && config !== null) {\n      if (typeof config.where === \"function\") {\n        const whereFunction = config.where;\n        returnConfig.where = whereFunction;\n      }\n    }\n\n    this._value = returnConfig;\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","import { SchemaStore } from \"../schema-store/schema-store\";\nimport { DocumentTree } from \"../result-tree/classes/document/document-tree\";\nimport { GetStoreConfig } from \"../schema-store/interfaces/schema-store\";\nimport { SchemaResolver } from \"../schema-resolver/schema-resolver\";\nimport { GetConfig } from \"./value-object/get-config\";\nimport { NodeRoute } from \"../input-tree/core/node/value-object/route\";\nimport { FieldNode } from \"../result-tree/classes/node/field-node\";\n\ninterface Props {\n  schemasStore: SchemaStore;\n  omitResolver: SchemaResolver;\n  caller: NodeRoute;\n  omitCurrentDocument?: DocumentTree;\n}\n\n/** Store to interact with all datasets */\nexport class DatasetStore {\n  private readonly schemasStore: SchemaStore;\n  private readonly omitCurrentDocument: DocumentTree | undefined;\n  private readonly omitResolver: SchemaResolver;\n  private readonly caller: NodeRoute;\n\n  constructor({\n    omitCurrentDocument,\n    omitResolver,\n    schemasStore,\n    caller,\n  }: Props) {\n    this.omitResolver = omitResolver;\n    this.omitCurrentDocument = omitCurrentDocument;\n    this.schemasStore = schemasStore;\n    this.caller = caller;\n  }\n\n  /**\n   * Allows you to access values from a schema from anywhere in the dataset\n   *\n   * @param route Value route to access\n   * @param config.where Function to filter schema documents\n   *\n   * @example\n   * store.get(\"User\") // user schema documents\n   * store.get(\"User.id\") // user ids\n   * store.get(\"User.id\", {\n   *   where: (fields) => {\n   *      return fields.age > 40\n   *   }\n   * })\n   */\n  async get<R = any>(route: string, iconfig?: GetStoreConfig): Promise<R[]> {\n    const config = new GetConfig({\n      omitCurrentDocument: this.omitCurrentDocument,\n      omitResolver: this.omitResolver,\n      config: iconfig,\n    });\n\n    const foundNodes = await this.schemasStore.value({\n      route: route,\n      config: config.value(),\n      caller: this.caller,\n    });\n\n    const values = [] as R[];\n\n    for (const node of foundNodes) {\n      if (node instanceof FieldNode) {\n        values.push(node.value() as R);\n      } else {\n        values.push(node.getDocumentObject());\n      }\n    }\n\n    return values;\n  }\n\n  /**\n   * Returns the documents of the schema that uses this method\n   */\n  currentDocuments<R = any>(): R[] {\n    return this.omitResolver.getDocumentsArray(this.omitCurrentDocument);\n  }\n}\n","export class NodeRoute {\n  private readonly _route: string[];\n\n  constructor(route: string[]) {\n    this._route = route;\n  }\n\n  array() {\n    return this._route;\n  }\n\n  create(name: string) {\n    return new NodeRoute([...this._route, name]);\n  }\n\n  empty() {\n    return this._route.length === 0;\n  }\n\n  name(): string {\n    return this._route.at(-1) as string;\n  }\n\n  pop(): NodeRoute {\n    return new NodeRoute(this._route.slice(1));\n  }\n\n  string(): string {\n    return this._route.join(\".\");\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\nimport { NodeRoute } from \"../../node/value-object/route\";\n\ninterface Props {\n  ref: string;\n  route: NodeRoute;\n}\n\nexport class RefRoute {\n  private _value: string[];\n\n  constructor({ ref, route }: Props) {\n    const saveRoute = ref.split(\".\");\n\n    if (saveRoute.length === 0) {\n      throw new ChacaError(\n        `In '${route.string()}'. You can't ref an empty field\"`,\n      );\n    } else {\n      this._value = saveRoute;\n    }\n  }\n\n  value(): NodeRoute {\n    return new NodeRoute(this._value);\n  }\n}\n","import {\n  ChacaError,\n  CyclicAccessDataError,\n  NotEnoughValuesForRefError,\n  NotExistRefFieldError,\n  TryRefANoKeyFieldError,\n} from \"../../../../errors\";\nimport { GenerateProps, InputTreeNode } from \"../node/input-tree-node\";\nimport { ChacaUtils } from \"../../../utils\";\nimport { FieldToRefObject } from \"../../../fields/core/ref/ref-field\";\nimport { SchemaStore } from \"../../../schema-store/schema-store\";\nimport { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { SearchedRefValue } from \"./interfaces/ref\";\nimport { RefRoute } from \"./value-object/route\";\nimport { IsArray, NotArray } from \"../is-array/is-array\";\nimport { SchemaResolver } from \"../../../schema-resolver/schema-resolver\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\nimport { DocumentTree } from \"../../../result-tree/classes/document/document-tree\";\nimport { SingleResultNode } from \"../../../result-tree/classes/single-result\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\n\nexport class RefValueNode extends InputTreeNode {\n  private refFieldTreeRoute: RefRoute;\n  private schemaRefIndex: number | null = null;\n  private allRefNodes: SearchedRefValue[] | null = null;\n  private noMoreValues = false;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    route: NodeRoute,\n    isArray: IsArray,\n    possibleNull: PossibleNull,\n    readonly refField: FieldToRefObject,\n    readonly schemasStore: SchemaStore,\n  ) {\n    super(route, isArray, possibleNull);\n\n    this.refFieldTreeRoute = new RefRoute({\n      ref: this.refField.refField,\n      route: route,\n    });\n  }\n\n  nullWhenEmpty() {\n    return this.refField.nullOnEmpty;\n  }\n\n  isUnique() {\n    return this.refField.unique;\n  }\n\n  getRefFieldRoute(): NodeRoute {\n    return this.refFieldTreeRoute.value();\n  }\n\n  searchSchemaRef(): void {\n    let exists = -1;\n\n    const schemas = this.schemasStore.getSchemasResolvers();\n    for (let i = 0; i < schemas.length && exists === -1; i++) {\n      const inputTree = schemas[i].getInputTree();\n\n      if (inputTree) {\n        const found = inputTree.checkIfFieldExists(\n          this.refFieldTreeRoute.value().array(),\n        );\n\n        if (found) {\n          exists = i;\n        }\n      }\n    }\n\n    if (exists === -1) {\n      throw new NotExistRefFieldError(\n        this.getRouteString(),\n        this.refField.refField,\n      );\n    } else {\n      this.schemaRefIndex = exists;\n    }\n  }\n\n  getSchemaRef(): SchemaResolver | null {\n    if (this.schemaRefIndex === null) {\n      return null;\n    } else {\n      return this.schemasStore.get(this.schemaRefIndex);\n    }\n  }\n\n  /**\n   * Cuando no quedan valores para referenciar, todas las iteraciones restantes\n   * de un array darían el mismo resultado vacío, por lo que se corta el llenado.\n   */\n  stopArrayFill(): boolean {\n    return this.noMoreValues;\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      return false;\n    }\n  }\n\n  private async filterRefNodesByConfig(\n    schemaRef: SchemaResolver,\n    currentDocument: DocumentTree,\n    currentSchemaResolverIndex: number,\n    refItSelf: boolean,\n  ): Promise<SingleResultNode[]> {\n    const allRefValues = this.allRefNodes\n      ? this.allRefNodes\n      : schemaRef.getAllRefValuesByNodeRoute({\n          search: this.refFieldTreeRoute.value(),\n          caller: this.route,\n        });\n\n    if (!this.allRefNodes && !refItSelf) {\n      this.allRefNodes = allRefValues;\n    }\n\n    const currentSchemaResolver = this.schemasStore.get(\n      currentSchemaResolverIndex,\n    );\n\n    const returnRefValues: SingleResultNode[] = [];\n\n    for (const refNode of allRefValues) {\n      if (currentDocument !== refNode.document) {\n        if (this.refField.where) {\n          const isAccepted = await this.refField.where({\n            store: new DatasetStore({\n              schemasStore: this.schemasStore,\n              omitCurrentDocument: refNode.document,\n              omitResolver: currentSchemaResolver,\n              caller: this.getFieldRoute(),\n            }),\n            refFields: refNode.document.getDocumentObject(),\n            currentFields: currentDocument.getDocumentObject(),\n          });\n\n          if (isAccepted) {\n            returnRefValues.push(refNode.resultNode);\n          }\n        } else {\n          returnRefValues.push(refNode.resultNode);\n        }\n      }\n    }\n\n    return returnRefValues;\n  }\n\n  private async value(\n    currentDocument: DocumentTree,\n    icurrentSchemaResolver: number,\n  ): Promise<unknown | unknown[]> {\n    const schemaRef = this.getSchemaRef();\n\n    const currentResolver = this.schemasStore.get(icurrentSchemaResolver);\n\n    if (schemaRef) {\n      const refItSelf = icurrentSchemaResolver === schemaRef.index;\n\n      if (!schemaRef.dangerCyclic() || refItSelf) {\n        if (!refItSelf) {\n          // build schema ref trees\n          await schemaRef.buildTrees(currentResolver.route);\n        }\n\n        // get all fields nodes to ref\n        const allValues = await this.filterRefNodesByConfig(\n          schemaRef,\n          currentDocument,\n          icurrentSchemaResolver,\n          refItSelf,\n        );\n\n        if (this.isUnique()) {\n          const noTakenValues = allValues.filter(\n            (n) => !n.isTaken(this.getFieldRoute()),\n          );\n\n          if (\n            noTakenValues.length === 0 &&\n            !refItSelf &&\n            !this.nullWhenEmpty()\n          ) {\n            throw new NotEnoughValuesForRefError(\n              this.getRouteString(),\n              this.getRefFieldRoute().string(),\n            );\n          }\n\n          const node = this.utils.oneOfArray(noTakenValues);\n\n          if (node) {\n            node.changeIsTaken(this.getFieldRoute());\n          } else {\n            this.noMoreValues = true;\n          }\n\n          if (refItSelf || this.nullWhenEmpty()) {\n            return node ? node.value() : null;\n          }\n\n          return node.value();\n        } else {\n          if (allValues.length === 0 && !refItSelf && !this.nullWhenEmpty()) {\n            throw new NotEnoughValuesForRefError(\n              this.getRouteString(),\n              this.getRefFieldRoute().string(),\n            );\n          }\n\n          const node = this.utils.oneOfArray(allValues);\n\n          if (!node) {\n            this.noMoreValues = true;\n          }\n\n          if (refItSelf || this.nullWhenEmpty()) {\n            return node ? node.value() : null;\n          }\n\n          return node.value();\n        }\n      } else {\n        throw new CyclicAccessDataError(\n          `The field ${this.getRouteString()} is trying to access ${this.getRefFieldRoute().string()}, and it uses that field to create itself`,\n        );\n      }\n    } else {\n      throw new ChacaError(\n        `First find the schema resolver for the ref field '${this.getRouteString()}'`,\n      );\n    }\n  }\n\n  async generate({\n    schemaIndex,\n    currentDocument,\n  }: GenerateProps): Promise<FieldNode> {\n    const refValue = await this.value(currentDocument, schemaIndex);\n\n    const result = new SingleResultNode({\n      name: this.getName(),\n      value: refValue,\n    });\n\n    return result;\n  }\n\n  setSchemaRef(resolverIndex: number): void {\n    this.schemaRefIndex = resolverIndex;\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    const newRefNode = new RefValueNode(\n      this.utils,\n      this.route,\n      new NotArray(),\n      new NotNull(),\n      this.refField,\n      this.schemasStore,\n    );\n\n    if (this.schemaRefIndex !== null) {\n      newRefNode.setSchemaRef(this.schemaRefIndex);\n    }\n\n    return newRefNode;\n  }\n}\n","import {\n  EmptySequentialValuesError,\n  TryRefANoKeyFieldError,\n} from \"../../../../errors\";\nimport { SequentialFieldConfig } from \"../../../fields/core/sequential/sequential-field\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\nimport { SingleResultNode } from \"../../../result-tree/classes/single-result\";\nimport { NotArray } from \"../is-array/is-array\";\nimport { InputTreeNode } from \"../node/input-tree-node\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\n\nexport class SequentialValueNode extends InputTreeNode {\n  private index = 0;\n\n  private valuesArray: unknown[];\n  private config: Required<SequentialFieldConfig>;\n\n  constructor(\n    route: NodeRoute,\n    possibleNull: PossibleNull,\n    array: unknown[],\n    config: Required<SequentialFieldConfig>,\n  ) {\n    super(route, new NotArray(), possibleNull);\n\n    this.valuesArray = array;\n    this.config = config;\n\n    if (Array.isArray(this.valuesArray)) {\n      if (this.valuesArray.length === 0) {\n        throw new EmptySequentialValuesError(this.getRouteString());\n      }\n    } else {\n      throw new EmptySequentialValuesError(this.getRouteString());\n    }\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    return new SequentialValueNode(\n      this.route,\n      new NotNull(),\n      this.valuesArray,\n      this.config,\n    );\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      return false;\n    }\n  }\n\n  private value(): unknown {\n    if (this.config.loop) {\n      if (this.index === this.valuesArray.length) {\n        this.index = 0;\n      }\n\n      const returnValue = this.valuesArray[this.index];\n      this.index++;\n\n      return returnValue;\n    } else {\n      if (this.index >= this.valuesArray.length) {\n        throw new EmptySequentialValuesError(this.getRouteString());\n      } else {\n        const returnValue = this.valuesArray[this.index];\n        this.index++;\n\n        return returnValue;\n      }\n    }\n  }\n\n  generate(): Promise<FieldNode> {\n    const result = new SingleResultNode({\n      name: this.getName(),\n      value: this.value(),\n    });\n\n    return new Promise((resolve) => resolve(result));\n  }\n}\n","import { TryRefANoKeyFieldError } from \"../../../../errors\";\nimport { InputTreeNode } from \"../node/input-tree-node\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\nimport { NotArray } from \"../is-array/is-array\";\nimport { Step } from \"./value-object/step\";\nimport { StartsWith } from \"./value-object/starts-with\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { SingleResultNode } from \"../../../result-tree/classes/single-result\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\n\nexport class SequenceValueNode extends InputTreeNode {\n  private actualValue: number;\n  private readonly startsWith: StartsWith;\n  private readonly step: Step;\n\n  constructor(\n    route: NodeRoute,\n    possibleNull: PossibleNull,\n    startsWith: StartsWith,\n    step: Step,\n  ) {\n    super(route, new NotArray(), possibleNull);\n\n    this.startsWith = startsWith;\n    this.step = step;\n\n    this.actualValue = startsWith.value();\n  }\n\n  private value() {\n    const returnValue = this.actualValue;\n    this.actualValue += this.step.value();\n\n    return returnValue;\n  }\n\n  generate(): Promise<FieldNode> {\n    const result = new SingleResultNode({\n      name: this.getName(),\n      value: this.value(),\n    });\n\n    return new Promise((resolve) => resolve(result));\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    return new SequenceValueNode(\n      this.route,\n      new NotNull(),\n      this.startsWith,\n      this.step,\n    );\n  }\n}\n","import { TryRefANoKeyFieldError } from \"../../../../errors\";\nimport { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { GenerateProps, InputTreeNode } from \"../node/input-tree-node\";\nimport { IsArray, NotArray } from \"../is-array/is-array\";\nimport { ChancesArray } from \"./value-object/chances-array\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\nimport { DocumentTree } from \"../../../result-tree/classes/document/document-tree\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\nimport { SingleResultNode } from \"../../../result-tree/classes/single-result\";\n\ninterface Props {\n  store: DatasetStore;\n  currentDocument: DocumentTree;\n}\n\nexport class ProbabilityValueNode extends InputTreeNode {\n  private options: ChancesArray;\n\n  constructor(\n    route: NodeRoute,\n    isArray: IsArray,\n    possibleNull: PossibleNull,\n    options: ChancesArray,\n  ) {\n    super(route, isArray, possibleNull);\n\n    this.options = options;\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    return new ProbabilityValueNode(\n      this.route,\n      new NotArray(),\n      new NotNull(),\n      this.options,\n    );\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      return false;\n    }\n  }\n\n  private value(props: Props): Promise<unknown> {\n    return this.options.value(props);\n  }\n\n  async generate(props: GenerateProps): Promise<FieldNode> {\n    const result = new SingleResultNode({\n      name: this.getName(),\n      value: await this.value(props),\n    });\n\n    return result;\n  }\n}\n","import { TryRefANoKeyFieldError } from \"../../../../errors\";\nimport { DatatypeModule } from \"../../../../modules/datatype\";\nimport { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { DocumentTree } from \"../../../result-tree/classes/document/document-tree\";\nimport { FieldNode } from \"../../../result-tree/classes/node/field-node\";\nimport { SingleResultNode } from \"../../../result-tree/classes/single-result\";\nimport { IsArray, NotArray } from \"../is-array/is-array\";\nimport { GenerateProps, InputTreeNode } from \"../node/input-tree-node\";\nimport { NodeRoute } from \"../node/value-object/route\";\nimport { NotNull, PossibleNull } from \"../possible-null/possible-null\";\nimport { Count } from \"./value-object/count\";\nimport { Values } from \"./value-object/values\";\n\ninterface GetValuesProps {\n  currentDocument: DocumentTree;\n  store: DatasetStore;\n}\n\nexport class PickValueNode extends InputTreeNode {\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    route: NodeRoute,\n    isArray: IsArray,\n    possibleNull: PossibleNull,\n    private readonly count: Count,\n    private readonly values: Values,\n  ) {\n    super(route, isArray, possibleNull);\n  }\n\n  /**\n   * Los elementos de un array no son campos, por lo que no llevan la\n   * configuracion de nulos del campo: `possibleNull` decide si el valor del\n   * campo es un array o `null`, no si cada elemento lo es.\n   */\n  getNoArrayNode(): InputTreeNode {\n    return new PickValueNode(\n      this.datatypeModule,\n      this.route,\n      new NotArray(),\n      new NotNull(),\n      this.count,\n      this.values,\n    );\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (fieldTreeRoute.length === 0) {\n      throw new TryRefANoKeyFieldError(this.getRouteString());\n    } else {\n      return false;\n    }\n  }\n\n  private async getValues({\n    currentDocument,\n    store,\n  }: GetValuesProps): Promise<unknown[]> {\n    const result: unknown[] = [];\n    const banned: number[] = [];\n\n    const limit = await this.count.limit({\n      store: store,\n      currentDocument: currentDocument,\n    });\n\n    if (limit === this.values.length()) {\n      return this.values.values();\n    } else {\n      let i = 0;\n\n      while (i < limit) {\n        const index = this.generateIndex(banned);\n\n        banned.push(index);\n        result.push(this.values.get(index));\n\n        i++;\n      }\n\n      return result;\n    }\n  }\n\n  private generateIndex(banned: number[]): number {\n    let num = this.datatypeModule.int({\n      min: 0,\n      max: this.values.length(),\n    });\n\n    while (banned.includes(num)) {\n      num = this.datatypeModule.int({ min: 0, max: this.values.length() });\n    }\n\n    return num;\n  }\n\n  async generate(props: GenerateProps): Promise<FieldNode> {\n    return new SingleResultNode({\n      name: this.getName(),\n      value: await this.getValues(props),\n    });\n  }\n}\n","import { WrongPossibleNullDefinitionError } from \"../../../../errors\";\nimport { FieldPossibleNull } from \"../../../schema-resolver/value-object/possible-null\";\nimport { SchemaCount } from \"../../../schema-resolver/value-object/schema-count\";\nimport { ChacaUtils } from \"../../../utils\";\nimport {\n  AbsoluteNullCount,\n  BooleanNull,\n  FunctionNull,\n  NotNull,\n  PossibleNull,\n  ProbabilityNull,\n} from \"../possible-null/possible-null\";\n\ninterface Props {\n  value: FieldPossibleNull;\n  route: string;\n  countDocs: SchemaCount;\n}\n\nexport class PossibleNullMapper {\n  constructor(private readonly utils: ChacaUtils) {}\n\n  execute({ value: ivalue, countDocs, route }: Props): PossibleNull {\n    if (!ivalue.isValid()) {\n      throw new WrongPossibleNullDefinitionError(\n        route,\n        `The possibleNull parameter can be an integer, a float, or a function that returns the probability that the field has a null value.`,\n      );\n    }\n\n    let result: PossibleNull;\n    const value = ivalue.value();\n\n    if (typeof value === \"number\") {\n      if (Number.isInteger(value)) {\n        result = new AbsoluteNullCount(this.utils, {\n          total: countDocs,\n          value: value,\n          route: route,\n        });\n      } else {\n        result = new ProbabilityNull({ route: route, value: value });\n      }\n    } else if (typeof value === \"boolean\") {\n      result = new BooleanNull({ value: value, route: route });\n    } else if (typeof value === \"function\") {\n      result = new FunctionNull({ route: route, func: value });\n    } else if (typeof value === \"undefined\") {\n      result = new NotNull();\n    } else {\n      throw new WrongPossibleNullDefinitionError(\n        route,\n        `The possibleNull parameter can be an integer, a float, or a function that returns the probability that the field has a null value.`,\n      );\n    }\n\n    return result;\n  }\n}\n","import { WrongArrayDefinitionError } from \"../../../../errors\";\nimport { DatatypeModule } from \"../../../../modules/datatype\";\nimport { FieldIsArray } from \"../../../schema-resolver/value-object/array\";\nimport {\n  FunctionArray,\n  IntegerArray,\n  IsArray,\n  LimitsArray,\n  NotArray,\n} from \"../is-array/is-array\";\n\ninterface Props {\n  route: string;\n  value: FieldIsArray;\n}\n\nexport class IsArrayMapper {\n  constructor(private readonly datatypeModule: DatatypeModule) {}\n\n  execute({ value, route }: Props): IsArray {\n    if (!value.isValid()) {\n      throw new WrongArrayDefinitionError(\n        route,\n        `The isArray parameter must be an integer, a function or an object with the limits { min, max }`,\n      );\n    }\n\n    const result = value.value();\n\n    let type: IsArray;\n    if (typeof result === \"number\") {\n      type = new IntegerArray({ route: route, value: result });\n    } else if (typeof result === \"function\") {\n      type = new FunctionArray(this.datatypeModule, {\n        func: result,\n        route: route,\n      });\n    } else if (typeof result === \"object\" && result !== null) {\n      type = new LimitsArray(this.datatypeModule, {\n        limits: result,\n        route: route,\n      });\n    } else if (typeof result === \"undefined\") {\n      type = new NotArray();\n    } else {\n      throw new WrongArrayDefinitionError(\n        route,\n        `The parameter isArray must be an integer, a function or an object with the limits { min, max }`,\n      );\n    }\n\n    return type;\n  }\n}\n","import { PickFieldDefinitionError } from \"../../../../../errors\";\nimport { DatatypeModule } from \"../../../../../modules/datatype\";\nimport { DatasetStore } from \"../../../../dataset-store/dataset-store\";\nimport {\n  PickCount,\n  PickCountFunction,\n  PickCountLimits,\n} from \"../../../../fields/core/pick/pick-field\";\nimport { DocumentTree } from \"../../../../result-tree/classes/document/document-tree\";\nimport { Values } from \"./values\";\n\ninterface Props {\n  count: PickCount;\n  route: string;\n  options: Values;\n}\n\ninterface LimitProps {\n  store: DatasetStore;\n  currentDocument: DocumentTree;\n}\n\ninterface ObjectProps {\n  route: string;\n  value: PickCountLimits;\n  options: Values;\n}\n\ninterface IntegerProps {\n  value: number;\n  route: string;\n  options: Values;\n}\n\ninterface FunctionProps {\n  func: PickCountFunction;\n  route: string;\n  options: Values;\n}\n\nexport abstract class Count {\n  static create(\n    datatypeModule: DatatypeModule,\n    { count, route, options }: Props,\n  ): Count {\n    let type: Count;\n\n    if (typeof count === \"number\") {\n      type = new IntegerCount({ value: count, route: route, options: options });\n    } else if (typeof count === \"function\") {\n      type = new FunctionCount(datatypeModule, {\n        route: route,\n        func: count,\n        options: options,\n      });\n    } else if (typeof count === \"object\" && count !== null) {\n      type = new LimitCount(datatypeModule, {\n        options: options,\n        route: route,\n        value: count,\n      });\n    } else {\n      throw new PickFieldDefinitionError(\n        route,\n        `The number of items to choose on a pick field must be a number, an object with the range of items to choose from, or a function that returns one of the above options.`,\n      );\n    }\n\n    return type;\n  }\n\n  abstract limit(props: LimitProps): Promise<number>;\n}\n\nexport class IntegerCount extends Count {\n  private value: number;\n\n  constructor({ route, value, options }: IntegerProps) {\n    super();\n\n    if (value < 0) {\n      throw new PickFieldDefinitionError(\n        route,\n        `The number of items to select cannot be less than 0`,\n      );\n    }\n\n    if (value > options.length()) {\n      throw new PickFieldDefinitionError(\n        route,\n        `A pick field should must have a number of options to choose greater than or equal to the 'count' property`,\n      );\n    }\n\n    this.value = value;\n  }\n\n  limit(): Promise<number> {\n    return new Promise((resolve) => resolve(this.value));\n  }\n}\n\nexport class FunctionCount extends Count {\n  private readonly func: PickCountFunction;\n  private readonly route: string;\n  private readonly options: Values;\n\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    { func, route, options }: FunctionProps,\n  ) {\n    super();\n\n    this.func = func;\n    this.route = route;\n    this.options = options;\n  }\n\n  async limit({ currentDocument, store }: LimitProps): Promise<number> {\n    const result = await this.func({\n      currentFields: currentDocument.getDocumentObject(),\n      store: store,\n    });\n\n    let type: Count;\n    if (typeof result === \"number\") {\n      type = new IntegerCount({\n        route: this.route,\n        value: result,\n        options: this.options,\n      });\n    } else if (typeof result === \"object\" && result !== null) {\n      type = new LimitCount(this.datatypeModule, {\n        value: result,\n        route: this.route,\n        options: this.options,\n      });\n    } else {\n      throw new PickFieldDefinitionError(\n        this.route,\n        `The count function must return a range of values or a number indicating the number of values to choose.`,\n      );\n    }\n\n    const value = await type.limit({\n      currentDocument: currentDocument,\n      store: store,\n    });\n\n    return value;\n  }\n}\n\nexport class LimitCount extends Count {\n  private readonly min: number;\n  private readonly max: number;\n\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    { route, value, options }: ObjectProps,\n  ) {\n    super();\n\n    const min = value.min === undefined ? 0 : value.min;\n    const max = value.max === undefined ? options.length() : value.max;\n\n    if (min < 0) {\n      throw new PickFieldDefinitionError(\n        route,\n        `The parameter count.min cannot be less than 0`,\n      );\n    }\n\n    if (max < 0) {\n      throw new PickFieldDefinitionError(\n        route,\n        `The parameter count.max cannot be less than 0`,\n      );\n    }\n\n    if (min > max) {\n      throw new PickFieldDefinitionError(\n        route,\n        `The parameter count.min cannot be greater than count.max`,\n      );\n    }\n\n    if (max > options.length()) {\n      throw new PickFieldDefinitionError(\n        route,\n        `A pick field should must have a number of options to choose greater than or equal to the 'count' property`,\n      );\n    }\n\n    this.min = min;\n    this.max = max;\n  }\n\n  limit(): Promise<number> {\n    const limit = this.datatypeModule.int({\n      min: this.min,\n      max: this.max + 1,\n    });\n\n    return new Promise((resolve) => resolve(limit));\n  }\n}\n","import { PickFieldDefinitionError } from \"../../../../../errors\";\n\ninterface Props {\n  values: unknown[];\n  route: string;\n}\n\nexport class Values {\n  private readonly value: unknown[];\n\n  constructor({ route, values }: Props) {\n    if (Array.isArray(values)) {\n      this.value = values;\n    } else {\n      throw new PickFieldDefinitionError(\n        route,\n        `The values that can be chosen must be in an array`,\n      );\n    }\n  }\n\n  length(): number {\n    return this.value.length;\n  }\n\n  get(index: number): unknown {\n    return this.value[index];\n  }\n\n  values() {\n    return this.value;\n  }\n}\n","import { WrongProbabilityFieldDefinitionError } from \"../../../../../errors\";\nimport { DatasetStore } from \"../../../../dataset-store/dataset-store\";\nimport {\n  ChanceFunction,\n  Chance as IChance,\n} from \"../../../../fields/core/probability/probability-field\";\nimport { DocumentTree } from \"../../../../result-tree/classes/document/document-tree\";\n\ninterface Props {\n  value: IChance;\n  route: string;\n}\n\ninterface ProbabilityProps {\n  value: number;\n  route: string;\n}\n\ninterface FunctionProps {\n  func: ChanceFunction;\n  route: string;\n}\n\ninterface ValueProps {\n  store: DatasetStore;\n  currentDocument: DocumentTree;\n}\n\nexport abstract class Chance {\n  static create({ value, route }: Props): Chance {\n    let type: Chance;\n\n    if (typeof value === \"number\") {\n      type = new ProbabilityChance({ value: value, route: route });\n    } else if (typeof value === \"function\") {\n      type = new FunctionChance({ func: value, route: route });\n    } else {\n      throw new WrongProbabilityFieldDefinitionError(\n        route,\n        `The 'chance' parameter must be a number between 0 and 1 or a function that returns a value in that range`,\n      );\n    }\n\n    return type;\n  }\n\n  abstract value(props: ValueProps): Promise<number>;\n}\n\nexport class ProbabilityChance extends Chance {\n  private readonly prob: number;\n\n  constructor({ value, route }: ProbabilityProps) {\n    super();\n\n    let save: number;\n\n    if (value <= 1 && value >= 0) {\n      save = value;\n    } else {\n      throw new WrongProbabilityFieldDefinitionError(\n        route,\n        `The probability that a value is chosen must be a number between 0 and 1.`,\n      );\n    }\n\n    this.prob = save;\n  }\n\n  value(): Promise<number> {\n    return new Promise((resolve) => resolve(this.prob));\n  }\n}\n\nexport class FunctionChance extends Chance {\n  private readonly route: string;\n  private readonly func: ChanceFunction;\n\n  constructor({ func, route }: FunctionProps) {\n    super();\n\n    this.func = func;\n    this.route = route;\n  }\n\n  async value({ currentDocument, store }: ValueProps): Promise<number> {\n    const result = await this.func({\n      store: store,\n      currentFields: currentDocument.getDocumentObject(),\n    });\n\n    let type: Chance;\n    if (typeof result === \"number\") {\n      type = new ProbabilityChance({ value: result, route: this.route });\n    } else {\n      throw new WrongProbabilityFieldDefinitionError(\n        this.route,\n        `The chance function must return a number that indicate the value probability.`,\n      );\n    }\n\n    return type.value({ currentDocument: currentDocument, store: store });\n  }\n}\n","export class ChanceValue {\n  private _value: unknown;\n\n  constructor(value: unknown) {\n    this._value = value;\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","import { WrongProbabilityFieldDefinitionError } from \"../../../../../errors\";\nimport { DatasetStore } from \"../../../../dataset-store/dataset-store\";\nimport { ProbabilityOption } from \"../../../../fields/core/probability/probability-field\";\nimport { DocumentTree } from \"../../../../result-tree/classes/document/document-tree\";\nimport { ChacaUtils } from \"../../../../utils\";\nimport { Chance } from \"./chance\";\nimport { ChanceValue } from \"./chance-value\";\n\ninterface Props {\n  options: ProbabilityOption[];\n  route: string;\n}\n\ninterface ValueProps {\n  store: DatasetStore;\n  currentDocument: DocumentTree;\n}\n\ninterface Option {\n  value: ChanceValue;\n  chance: Chance;\n}\n\nexport class ChancesArray {\n  private readonly options: Option[] = [];\n  private readonly route: string;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    { options, route }: Props,\n  ) {\n    this.route = route;\n\n    if (options.length > 0) {\n      for (const option of options) {\n        if (typeof option === \"object\" && option !== null) {\n          const chance = Chance.create({ route: route, value: option.chance });\n\n          const value = new ChanceValue(option.value);\n\n          this.options.push({ chance: chance, value: value });\n        } else {\n          throw new WrongProbabilityFieldDefinitionError(\n            route,\n            `The 'chance' and 'value' parameters must be specified for each value in the array`,\n          );\n        }\n      }\n    } else {\n      throw new WrongProbabilityFieldDefinitionError(\n        route,\n        `There are no values for the probability field'`,\n      );\n    }\n  }\n\n  async value({ currentDocument, store }: ValueProps): Promise<unknown> {\n    const values = this.options.map((o) => o.value);\n\n    const weights: number[] = [];\n\n    for (const o of this.options) {\n      const chance = await o.chance.value({\n        currentDocument: currentDocument,\n        store: store,\n      });\n\n      weights.push(chance);\n    }\n\n    const sum = weights.reduce((a, b) => a + b, 0);\n\n    if (sum === 0) {\n      throw new WrongProbabilityFieldDefinitionError(\n        this.route,\n        `At least one option of the probability field must have a chance greater than 0`,\n      );\n    }\n\n    const distribution = this.createDistribution(values, weights, 10);\n\n    return this.utils.oneOfArray(distribution);\n  }\n\n  private createDistribution(\n    array: ChanceValue[],\n    weights: number[],\n    size: number,\n  ): unknown[] {\n    const distribution = [];\n\n    const sum = weights.reduce((a, b) => a + b);\n    const quant = size / sum;\n\n    for (let i = 0; i < array.length; ++i) {\n      const limit = quant * weights[i];\n\n      for (let j = 0; j < limit; ++j) {\n        distribution.push(array[i].value());\n      }\n    }\n\n    return distribution;\n  }\n}\n","interface Props {\n  value: number;\n  route: string;\n}\n\nexport class Step {\n  private readonly step: number;\n\n  constructor({ value }: Props) {\n    this.step = value;\n  }\n\n  value() {\n    return this.step;\n  }\n}\n","interface Props {\n  value: number;\n  route: string;\n}\n\nexport class StartsWith {\n  private readonly startsWith: number;\n\n  constructor({ value }: Props) {\n    this.startsWith = value;\n  }\n\n  value() {\n    return this.startsWith;\n  }\n}\n","import { ChacaError } from \"../../../../errors\";\nimport {\n  KeyFieldResolver,\n  SequenceFieldResolver,\n  SequentialFieldResolver,\n} from \"../../../resolvers/core\";\nimport { ResolverObject } from \"../../../schema/interfaces/schema\";\n\ninterface Props {\n  route: string;\n  config: ResolverObject;\n}\n\nexport class ResolverValidator {\n  execute({ config, route }: Props): void {\n    // sequence\n    if (config.type instanceof SequenceFieldResolver) {\n      if (config.isArray.can()) {\n        throw new ChacaError(\n          `The sequence field '${route}' can not be an array field`,\n        );\n      }\n    }\n\n    // sequential\n    else if (config.type instanceof SequentialFieldResolver) {\n      if (config.isArray.can()) {\n        throw new ChacaError(\n          `The sequential field '${route}' can not be an array field`,\n        );\n      }\n    }\n\n    // key\n    else if (config.type instanceof KeyFieldResolver) {\n      if (config.isArray.can()) {\n        throw new ChacaError(\n          `The key field '${route}' can not be an array field`,\n        );\n      }\n\n      if (config.possibleNull.can()) {\n        throw new ChacaError(\n          `The key field '${route}' can not be a null field`,\n        );\n      }\n    }\n  }\n}\n","export class EnumField<R = any> {\n  constructor(readonly values: ReadonlyArray<R>) {}\n}\n","import { DatasetStore } from \"../../../dataset-store/dataset-store\";\n\nexport interface PickFieldProps<V = any> {\n  values: V[];\n  count: PickCount;\n}\n\nexport type PickCount = number | PickCountLimits | PickCountFunction;\n\nexport type PickCountLimits = { min?: number; max?: number };\n\nexport type PickCountFunction = (\n  props: PickCountFunctionProps,\n) => number | PickCountLimits | Promise<number | PickCountLimits>;\n\nexport type PickCountFunctionProps<C = any> = {\n  /** Current schema document fields */\n  currentFields: C;\n  /** Store to interact with all dataset schemas */\n  store: DatasetStore;\n};\n\nexport class PickField<V = any> {\n  constructor(readonly values: PickFieldProps<V>) {}\n}\n","import { DatasetStore } from \"../../../dataset-store/dataset-store\";\n\nexport type Chance = number | ChanceFunction;\n\nexport type ChanceFunction = (\n  props: ChanceFunctionProps,\n) => number | Promise<number>;\n\nexport type ChanceFunctionProps<C = any> = {\n  /** Current schema document fields */\n  currentFields: C;\n  /** Store to interact with all datasets */\n  store: DatasetStore;\n};\n\nexport interface ProbabilityOption<T = any> {\n  /**\n   * Probability of being chosen\n   * - `number` Value between 0 and 1\n   * - `function` Function that returns a probability value between 0 and 1. Receive 'currentFields' and 'store' as parameters\n   */\n  chance: Chance;\n  /**\n   * Option value\n   */\n  value: T;\n}\n\nexport class ProbabilityField<T = any> {\n  readonly values: ProbabilityOption<T>[] = [];\n\n  constructor(values: ProbabilityOption<T>[]) {\n    if (Array.isArray(values)) {\n      this.values = values;\n    }\n  }\n}\n","export class NullOnEmpty {\n  private readonly _value: boolean;\n\n  constructor(value?: boolean) {\n    if (value) {\n      this._value = true;\n    } else {\n      this._value = false;\n    }\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","import { FieldToRef } from \"../ref-field\";\n\nexport class InputRefField {\n  private _value: string;\n\n  constructor(refField: FieldToRef) {\n    if (typeof refField === \"string\") {\n      this._value = refField;\n    } else {\n      this._value = \"\";\n    }\n  }\n\n  value(): string {\n    return this._value;\n  }\n}\n","export class Unique {\n  private readonly unique: boolean;\n\n  constructor(value?: boolean) {\n    if (value) {\n      this.unique = true;\n    } else {\n      this.unique = false;\n    }\n  }\n\n  value() {\n    return this.unique;\n  }\n}\n","import { RefFieldWhere } from \"../ref-field\";\n\nexport class Where {\n  private readonly where: RefFieldWhere | null;\n\n  constructor(value?: RefFieldWhere) {\n    if (typeof value === \"function\") {\n      this.where = value;\n    } else {\n      this.where = null;\n    }\n  }\n\n  value() {\n    return this.where;\n  }\n}\n","import { DatasetStore } from \"../../../dataset-store/dataset-store\";\nimport { NullOnEmpty } from \"./value-object/null-empty\";\nimport { InputRefField } from \"./value-object/ref-field\";\nimport { Unique } from \"./value-object/unique\";\nimport { Where } from \"./value-object/where\";\n\n/**\n * Field to ref types\n */\nexport type FieldToRef = string;\n\n/**\n * Function that filters the fields to reference\n */\nexport type RefFieldWhere<C = any, R = any> = (\n  args: RefFieldWhereProps<C, R>,\n) => boolean | Promise<boolean>;\n\nexport type RefFieldWhereProps<C = any, R = any> = {\n  /** Current schema document fields */\n  currentFields: C;\n  /** Reference schema document fields */\n  refFields: R;\n  /** Store to interact with all schemas */\n  store: DatasetStore;\n};\n\nexport type RefFieldConfig = {\n  /**\n   * The value to be referenced will only be taken once by this schema. Default `false`\n   */\n  unique?: boolean;\n  /**\n   * Function that filters the fields to reference\n   */\n  where?: RefFieldWhere;\n  /**\n   * When there are no more documents to reference, the generated value will be null. Default `false`\n   */\n  nullOnEmpty?: boolean;\n};\n\nexport interface FieldToRefObject {\n  refField: string;\n  unique: boolean;\n  where: RefFieldWhere | null;\n  nullOnEmpty: boolean;\n}\n\nexport class RefField {\n  readonly refField: FieldToRefObject;\n\n  constructor(refField: FieldToRef, config?: RefFieldConfig) {\n    this.refField = this.validate(refField, config);\n  }\n\n  private validate(\n    refField: FieldToRef,\n    config?: RefFieldConfig,\n  ): FieldToRefObject {\n    const saveConfig: FieldToRefObject = {\n      refField: new InputRefField(refField).value(),\n      unique: new Unique(config?.unique).value(),\n      where: new Where(config?.where).value(),\n      nullOnEmpty: new NullOnEmpty(config?.nullOnEmpty).value(),\n    };\n\n    return saveConfig;\n  }\n}\n","import { SequenceFieldProps } from \"../sequence-field\";\n\ninterface InnerConfig {\n  startsWith: number;\n  step: number;\n}\n\nexport class Config {\n  private _config: InnerConfig = {\n    startsWith: 1,\n    step: 1,\n  };\n\n  constructor(config?: SequenceFieldProps) {\n    if (typeof config === \"object\" && config !== null) {\n      if (typeof config.startsWith === \"number\") {\n        this._config.startsWith = config.startsWith;\n      } else if (typeof config.starsWith === \"number\") {\n        this._config.startsWith = config.starsWith;\n      }\n\n      if (typeof config.step === \"number\") {\n        this._config.step = config.step;\n      }\n    }\n  }\n\n  value() {\n    return this._config;\n  }\n}\n","import { Config } from \"./value-object\";\n\nexport type SequenceFieldProps = Partial<{\n  /** Init value for the field. Default `1`*/\n  startsWith: number;\n  /**\n   * Init value for the field. Default `1`\n   * @deprecated Use `startsWith` instead\n   */\n  starsWith: number;\n  /** Step between field values in schema documents. Default `1` */\n  step: number;\n}>;\n\nexport interface SequenceFieldConfig {\n  startsWith: number;\n  step: number;\n}\n\nexport class SequenceField {\n  readonly config: SequenceFieldConfig;\n\n  constructor(config?: SequenceFieldProps) {\n    this.config = new Config(config).value();\n  }\n}\n","import { SequentialFieldConfig } from \"../sequential-field\";\n\nexport class Config {\n  private _config: Required<SequentialFieldConfig> = { loop: false };\n\n  constructor(config?: SequentialFieldConfig) {\n    if (typeof config === \"object\" && config !== null) {\n      if (config.loop) {\n        this._config.loop = true;\n      }\n    }\n  }\n\n  value() {\n    return this._config;\n  }\n}\n","import { Config } from \"./value-object/Config\";\n\nexport interface SequentialFieldConfig {\n  /**\n   * Boolean indicating whether the values should be generated cyclically\n   */\n  loop?: boolean;\n}\n\nexport class SequentialField<K = any> {\n  readonly values: K[];\n  readonly config: Required<SequentialFieldConfig>;\n\n  constructor(values: K[], config?: SequentialFieldConfig) {\n    this.values = values;\n    this.config = new Config(config).value();\n  }\n}\n","export class SpaceIndex {\n  private _value: number;\n  private readonly _step: number;\n\n  constructor(v?: number) {\n    this._step = v ? v : 3;\n    this._value = 0;\n  }\n\n  reverse(): void {\n    this._value = this._value - this._step;\n  }\n\n  create(v: string): string {\n    let space = \"\";\n\n    for (let i = 0; i < this._value; i++) {\n      space += \" \";\n    }\n\n    return `${space}${v}`;\n  }\n\n  step() {\n    return this._step;\n  }\n\n  push(): void {\n    this._value = this._value + this._step;\n  }\n}\n","import { DatasetResolver } from \"../../../dataset-resolver/dataset-resolver\";\nimport { Filename } from \"../file-creator/filename\";\n\nexport interface DumpFile {\n  filename: string;\n  content: string;\n}\n\nexport interface DumpProps {\n  filename: Filename;\n  data: any;\n}\n\nexport interface DumpRelationalProps {\n  resolver: DatasetResolver;\n  filename: Filename;\n}\n\ninterface Props {\n  ext: string;\n  zip?: boolean;\n}\n\nexport abstract class Generator {\n  readonly ext: string;\n  /**\n   * Whether the produced files should be bundled into a single zip when written\n   * to disk. It only affects the `FileWriter`; the in-memory `dump` output is\n   * never zipped.\n   */\n  readonly zip: boolean;\n\n  constructor({ ext, zip }: Props) {\n    this.ext = ext;\n    this.zip = Boolean(zip);\n  }\n\n  abstract dump(props: DumpProps): DumpFile[];\n  abstract dumpRelational(props: DumpRelationalProps): Promise<DumpFile[]>;\n}\n","export class Filename {\n  private _name: string;\n\n  constructor(name: string) {\n    this._name = name;\n  }\n\n  value() {\n    return this._name.trim();\n  }\n}\n","import { SpaceIndex } from \"../../../core/space-index\";\n\nexport class JsonCodeCreator {\n  constructor(private readonly indent: SpaceIndex) {}\n\n  execute(data: any): string {\n    return JSON.stringify(\n      data,\n      (_, value) => {\n        if (typeof value === \"bigint\") {\n          return value.toString();\n        } else if (typeof value === \"undefined\") {\n          return \"undefined\";\n        }\n\n        return value;\n      },\n      this.indent.step(),\n    );\n  }\n}\n","import { SpaceIndex } from \"../../core/space-index\";\nimport {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { Filename } from \"../file-creator/filename\";\nimport { IndentConfig, SeparateConfig, ZipConfig } from \"../params\";\nimport { JsonCodeCreator } from \"./core/creator\";\n\nexport type JsonProps = SeparateConfig & ZipConfig & IndentConfig;\n\nexport class JsonGenerator extends Generator {\n  private readonly config: JsonProps;\n  private readonly creator: JsonCodeCreator;\n\n  constructor(props: JsonProps) {\n    super({ ext: \"json\", zip: props.zip });\n\n    this.config = props;\n    this.creator = new JsonCodeCreator(new SpaceIndex(props.indent));\n  }\n\n  dump({ data, filename }: DumpProps): DumpFile[] {\n    const code = this.creator.execute(data);\n\n    return [{ filename: filename.value(), content: code }];\n  }\n\n  async dumpRelational({\n    filename,\n    resolver,\n  }: DumpRelationalProps): Promise<DumpFile[]> {\n    const objectData = await resolver.resolve();\n\n    if (this.config.separate) {\n      const result: DumpFile[] = [];\n\n      for (const [key, data] of Object.entries(objectData)) {\n        const filename = new Filename(key);\n        const code = this.creator.execute(data);\n\n        result.push({ content: code, filename: filename.value() });\n      }\n\n      return result;\n    } else {\n      return this.dump({ data: objectData, filename: filename });\n    }\n  }\n}\n","import { JavascriptDatatype } from \"./types\";\n\nexport class UnionDatatypes {\n  readonly datatypes: JavascriptDatatype[];\n\n  constructor() {\n    this.datatypes = [];\n  }\n\n  setDatatype(dat: JavascriptDatatype) {\n    const exists = this.datatypes.some((d) => d.equal(dat));\n\n    if (!exists) {\n      this.datatypes.push(dat);\n    }\n  }\n\n  length(): number {\n    return this.datatypes.length;\n  }\n\n  declaration(): string {\n    if (this.datatypes.length === 1) {\n      const type = this.datatypes[0];\n\n      return `${type.definition()}`;\n    } else if (this.datatypes.length === 0) {\n      return \"any\";\n    } else {\n      const types = this.datatypes.map((d) => d.definition()).join(\" | \");\n\n      return types;\n    }\n  }\n}\n","import { SpaceIndex } from \"../../../core/space-index\";\nimport { UnionDatatypes } from \"./union\";\nimport { SaveClassField, SaveJavascriptClass } from \"./classes\";\n\nexport abstract class JavascriptDatatype {\n  abstract string(index: SpaceIndex): string;\n  abstract definition(): string;\n  abstract equal(other: JavascriptDatatype): boolean;\n}\n\nexport class JavascriptClass extends JavascriptDatatype {\n  fields: JavascriptClassField[];\n  readonly save: SaveJavascriptClass;\n\n  constructor(save: SaveJavascriptClass) {\n    super();\n\n    this.save = save;\n    this.fields = [];\n  }\n\n  name() {\n    return this.save.name();\n  }\n\n  string(index: SpaceIndex): string {\n    if (this.fields.length === 0) {\n      return `{}`;\n    }\n\n    let code = `{\\n`;\n\n    index.push();\n\n    const fields = this.fields\n      .map((f) => index.create(`${f.name()}: ${f.string(index)}`))\n      .join(\",\\n\");\n\n    code += fields + \"\\n\";\n\n    index.reverse();\n\n    code += index.create(\"}\");\n\n    return code;\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    if (other instanceof JavascriptClass) {\n      return true;\n    }\n\n    return false;\n  }\n\n  definition(): string {\n    return this.name();\n  }\n\n  setFields(fields: JavascriptClassField[]): void {\n    this.fields = fields;\n    this.save.setFields(fields);\n  }\n}\n\nexport class JavascriptClassField {\n  readonly save: SaveClassField;\n  readonly datatype: JavascriptDatatype;\n\n  constructor(save: SaveClassField, datatype: JavascriptDatatype) {\n    this.save = save;\n    this.datatype = datatype;\n  }\n\n  name(): string {\n    return this.save.name();\n  }\n\n  string(index: SpaceIndex) {\n    return this.datatype.string(index);\n  }\n\n  definition(): string {\n    return this.datatype.definition();\n  }\n}\n\nexport class JavascriptArray extends JavascriptDatatype {\n  private readonly values: JavascriptDatatype[];\n  private readonly datatypes: UnionDatatypes;\n\n  constructor() {\n    super();\n\n    this.datatypes = new UnionDatatypes();\n    this.values = [];\n  }\n\n  definition(): string {\n    const types = this.datatypes.declaration();\n\n    return `Array<${types}>`;\n  }\n\n  setValue(v: JavascriptDatatype): void {\n    this.datatypes.setDatatype(v);\n    this.values.push(v);\n  }\n\n  string(index: SpaceIndex): string {\n    if (this.values.length === 0) {\n      return `[]`;\n    }\n\n    let code = `[\\n`;\n\n    index.push();\n\n    code +=\n      this.values\n        .map((d) => {\n          return index.create(d.string(index));\n        })\n        .join(\",\\n\") + \"\\n\";\n\n    index.reverse();\n\n    code += index.create(\"]\");\n\n    return code;\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    if (other instanceof JavascriptArray) {\n      return true;\n    }\n\n    return false;\n  }\n}\n\nexport class JavascriptBoolean extends JavascriptDatatype {\n  constructor(private readonly value: boolean) {\n    super();\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptBoolean;\n  }\n\n  definition(): string {\n    return \"boolean\";\n  }\n\n  string(): string {\n    return this.value ? \"true\" : \"false\";\n  }\n}\n\nexport class JavascriptRegExp extends JavascriptDatatype {\n  constructor(private readonly value: RegExp) {\n    super();\n  }\n\n  definition(): string {\n    return \"RegExp\";\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptRegExp;\n  }\n\n  string(): string {\n    return `/${this.value.source}/${this.value.flags}`;\n  }\n}\n\nexport class JavascriptNull extends JavascriptDatatype {\n  constructor() {\n    super();\n  }\n\n  string(): string {\n    return \"null\";\n  }\n\n  definition(): string {\n    return \"null\";\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptNull;\n  }\n}\n\nexport class JavascriptUndefined extends JavascriptDatatype {\n  constructor() {\n    super();\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptUndefined;\n  }\n\n  definition(): string {\n    return \"undefined\";\n  }\n\n  string(): string {\n    return \"undefined\";\n  }\n}\n\nexport class JavascriptBignInt extends JavascriptDatatype {\n  constructor(private readonly value: bigint) {\n    super();\n  }\n\n  definition(): string {\n    return \"bigint\";\n  }\n\n  string(): string {\n    return `${this.value}n`;\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptBignInt;\n  }\n}\n\nexport class JavascriptNumber extends JavascriptDatatype {\n  constructor(private readonly value: number) {\n    super();\n  }\n\n  definition(): string {\n    return \"number\";\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptNumber;\n  }\n\n  string(): string {\n    return this.value.toString();\n  }\n}\n\nexport class JavascriptDate extends JavascriptDatatype {\n  constructor(private readonly value: Date) {\n    super();\n  }\n\n  definition(): string {\n    return \"Date\";\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptDate;\n  }\n\n  string(): string {\n    return `new Date(\"${this.value.toISOString()}\")`;\n  }\n}\n\nexport class JavascriptString extends JavascriptDatatype {\n  constructor(private readonly value: string) {\n    super();\n  }\n\n  definition(): string {\n    return \"string\";\n  }\n\n  equal(other: JavascriptDatatype): boolean {\n    return other instanceof JavascriptString;\n  }\n\n  string(): string {\n    return `${JSON.stringify(this.value)}`;\n  }\n}\n","import { SpaceIndex } from \"../../../core/space-index\";\nimport { JavascriptClassFieldName, JavascriptClassName } from \"./names\";\nimport {\n  JavascriptClassField,\n  JavascriptDatatype,\n  JavascriptUndefined,\n} from \"./types\";\nimport { UnionDatatypes } from \"./union\";\n\nexport class SaveClassField {\n  private _name: JavascriptClassFieldName;\n  readonly datatypes: UnionDatatypes;\n  private _optional: boolean;\n\n  constructor(name: JavascriptClassFieldName, datatype: JavascriptDatatype) {\n    this.datatypes = new UnionDatatypes();\n    this.datatypes.setDatatype(datatype);\n    this._name = name;\n    this._optional = false;\n  }\n\n  setDatatype(d: JavascriptDatatype): void {\n    if (d instanceof JavascriptUndefined) {\n      this._optional = true;\n    } else {\n      this.datatypes.setDatatype(d);\n    }\n  }\n\n  optional() {\n    return this._optional;\n  }\n\n  equal(other: SaveClassField): boolean {\n    return other._name.equal(this._name);\n  }\n\n  name() {\n    return this._name.string();\n  }\n}\n\nexport class SaveJavascriptClass {\n  private _name: JavascriptClassName;\n  readonly fields: SaveClassField[];\n\n  constructor(name: JavascriptClassName) {\n    this.fields = [];\n    this._name = name;\n  }\n\n  setFields(fields: JavascriptClassField[]) {\n    const founds: SaveClassField[] = [];\n\n    for (const f of fields) {\n      const found = this.fields.find((sf) => sf === f.save);\n\n      if (found) {\n        founds.push(found);\n\n        found.setDatatype(f.datatype);\n      }\n    }\n\n    for (const f of this.fields) {\n      if (!founds.includes(f)) {\n        f.setDatatype(new JavascriptUndefined());\n      }\n    }\n  }\n\n  search(create: SaveClassField) {\n    const found = this.fields.find((f) => f.equal(create));\n\n    if (found) {\n      return found;\n    } else {\n      this.fields.push(create);\n      return create;\n    }\n  }\n\n  name() {\n    return this._name.string();\n  }\n\n  equal(other: SaveJavascriptClass): boolean {\n    return this._name.equal(other._name);\n  }\n\n  definition(index: SpaceIndex): string {\n    let code = `interface ${this.name()} {\\n`;\n\n    index.push();\n\n    this.fields.forEach((f) => {\n      if (f.optional()) {\n        code += index.create(`${f.name()}?: ${f.datatypes.declaration()}\\n`);\n      } else {\n        code += index.create(`${f.name()}: ${f.datatypes.declaration()}\\n`);\n      }\n    });\n\n    index.reverse();\n\n    code += \"}\\n\";\n\n    return code;\n  }\n}\n\nexport class JavascriptClasses {\n  private readonly classes: SaveJavascriptClass[];\n\n  constructor() {\n    this.classes = [];\n  }\n\n  search(create: SaveJavascriptClass) {\n    const found = this.classes.find((c) => c.equal(create));\n\n    if (found) {\n      return found;\n    } else {\n      this.classes.push(create);\n      return create;\n    }\n  }\n\n  string(index: SpaceIndex): string {\n    let code = ``;\n\n    code += this.classes\n      .reverse()\n      .map((c) => {\n        return `${c.definition(index)}`;\n      })\n      .join(\"\\n\");\n\n    return code;\n  }\n}\n","interface FilterProps<T> {\n  string(value: string): T;\n  int(value: number): T;\n  float(value: number): T;\n  nan(value: number): T;\n  bigint(value: bigint): T;\n  function(): T;\n  symbol(): T;\n  date(value: Date): T;\n  array(value: any[]): T;\n  null(): T;\n  object(value: any): T;\n  undefined(): T;\n  boolean(value: boolean): T;\n  regexp(value: RegExp): T;\n}\n\nexport class Datatype {\n  static filter<T>(value: any, props: FilterProps<T>): T {\n    let type: T;\n\n    if (typeof value === \"string\") {\n      type = props.string(value);\n    } else if (typeof value === \"number\") {\n      if (Number.isNaN(value)) {\n        type = props.nan(value);\n      } else if (Number.isInteger(value)) {\n        type = props.int(value);\n      } else {\n        type = props.float(value);\n      }\n    } else if (typeof value === \"boolean\") {\n      type = props.boolean(value);\n    } else if (typeof value === \"undefined\") {\n      type = props.undefined();\n    } else if (typeof value === \"bigint\") {\n      type = props.bigint(value);\n    } else if (typeof value === \"function\") {\n      type = props.function();\n    } else if (typeof value === \"symbol\") {\n      type = props.symbol();\n    } else if (value instanceof RegExp) {\n      type = props.regexp(value);\n    } else if (typeof value === \"object\") {\n      if (Array.isArray(value)) {\n        type = props.array(value);\n      } else if (value === null) {\n        type = props.null();\n      } else if (value instanceof Date) {\n        type = props.date(value);\n      } else {\n        type = props.object(value);\n      }\n    } else {\n      type = props.string(String(value));\n    }\n\n    return type;\n  }\n}\n","import { ChacaUtils } from \"../../../../utils\";\nimport { Route } from \"./route\";\n\nexport class JavascriptClassName {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private route: Route,\n  ) {}\n\n  equal(other: JavascriptClassName): boolean {\n    return other.route.equal(this.route);\n  }\n\n  string() {\n    return this.utils.pascalCase(this.route.string());\n  }\n}\n\nexport class JavascriptClassFieldName {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private _name: string,\n  ) {}\n\n  equal(other: JavascriptClassFieldName): boolean {\n    return other._name === this._name;\n  }\n\n  string() {\n    return this.utils.camelCase(this._name);\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\nimport { ChacaUtils } from \"../../../../utils\";\nimport { Datatype } from \"../../../core/datatype\";\nimport { SkipInvalid } from \"../../../core/skip-invalid\";\nimport {\n  JavascriptClasses,\n  SaveClassField,\n  SaveJavascriptClass,\n} from \"./classes\";\nimport { JavascriptClassFieldName, JavascriptClassName } from \"./names\";\nimport { Route } from \"./route\";\nimport {\n  JavascriptArray,\n  JavascriptBignInt,\n  JavascriptBoolean,\n  JavascriptClass,\n  JavascriptClassField,\n  JavascriptDatatype,\n  JavascriptDate,\n  JavascriptNull,\n  JavascriptNumber,\n  JavascriptRegExp,\n  JavascriptString,\n  JavascriptUndefined,\n} from \"./types\";\n\ninterface Props {\n  route: Route;\n  value: any;\n}\n\nexport class ValueCreator {\n  constructor(\n    private readonly classes: JavascriptClasses,\n    private readonly utils: ChacaUtils,\n    private readonly skipInvalid: SkipInvalid,\n  ) {}\n\n  execute({ route, value }: Props): JavascriptDatatype | null {\n    const type = Datatype.filter<JavascriptDatatype | null>(value, {\n      string(value) {\n        return new JavascriptString(value);\n      },\n      int(value) {\n        return new JavascriptNumber(value);\n      },\n      float(value) {\n        return new JavascriptNumber(value);\n      },\n      nan() {\n        return new JavascriptNumber(value);\n      },\n      bigint(value) {\n        return new JavascriptBignInt(value);\n      },\n      function: () => {\n        if (this.skipInvalid.value()) {\n          return null;\n        } else {\n          throw new ChacaError(\n            `You can not export a function to a javascript file.`,\n          );\n        }\n      },\n      boolean(value) {\n        return new JavascriptBoolean(value);\n      },\n      undefined() {\n        return new JavascriptUndefined();\n      },\n      array: (value) => {\n        const array = new JavascriptArray();\n\n        for (const v of value) {\n          const sub = this.execute({ route: route.clone(), value: v });\n\n          if (sub) {\n            array.setValue(sub);\n          }\n        }\n\n        return array;\n      },\n      symbol: () => {\n        if (this.skipInvalid.value()) {\n          return null;\n        } else {\n          throw new ChacaError(\n            `You can not export a Symbol into a javascript file.`,\n          );\n        }\n      },\n      null() {\n        return new JavascriptNull();\n      },\n      date(value) {\n        return new JavascriptDate(value);\n      },\n      regexp(value) {\n        return new JavascriptRegExp(value);\n      },\n      object: (value) => {\n        const classname = new JavascriptClassName(this.utils, route);\n        const save = this.classes.search(new SaveJavascriptClass(classname));\n        const object = new JavascriptClass(save);\n\n        const fields: JavascriptClassField[] = [];\n\n        for (const [key, data] of Object.entries(value)) {\n          const fieldname = new JavascriptClassFieldName(this.utils, key);\n\n          const datatype = this.execute({\n            value: data,\n            route: route.create(key),\n          });\n\n          if (datatype) {\n            const saveField = save.search(\n              new SaveClassField(fieldname, datatype),\n            );\n\n            const field = new JavascriptClassField(saveField, datatype);\n\n            fields.push(field);\n          }\n        }\n\n        object.setFields(fields);\n\n        return object;\n      },\n    });\n\n    return type;\n  }\n}\n","export class Route {\n  private readonly route: string[];\n\n  constructor(init: string[]) {\n    this.route = init;\n  }\n\n  create(name: string): Route {\n    return new Route([...this.route, name]);\n  }\n\n  equal(other: Route): boolean {\n    return other.route.join(\".\") === this.route.join(\".\");\n  }\n\n  clone() {\n    return new Route(this.route);\n  }\n\n  string() {\n    return this.route.join(\".\");\n  }\n}\n","import { ChacaUtils } from \"../../../../utils\";\nimport { JavascriptClasses } from \"./classes\";\nimport { SpaceIndex } from \"../../../core/space-index\";\nimport { ValueCreator } from \"./value-creator\";\nimport { Route } from \"./route\";\nimport { SkipInvalid } from \"../../../core/skip-invalid\";\nimport { DeclarationOnly } from \"../../../core/declaration-only\";\n\ninterface Props {\n  name: string;\n  data: any;\n}\n\nexport class JavascriptCodeCreator {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly indent: SpaceIndex,\n    private readonly types: boolean,\n    private readonly skipInvalid: SkipInvalid,\n    private readonly declarationOnly: DeclarationOnly,\n  ) {}\n\n  execute({ data, name }: Props): string {\n    const classes = new JavascriptClasses();\n    const route = new Route([name]);\n    const creator = new ValueCreator(classes, this.utils, this.skipInvalid);\n\n    const datatype = creator.execute({ route: route, value: data });\n\n    let code = ``;\n\n    if (datatype) {\n      if (!this.types) {\n        code += `const data = ${datatype.string(this.indent)}`;\n      } else {\n        code += `${classes.string(this.indent)}\\n`;\n\n        if (!this.declarationOnly.value()) {\n          code += `export const data: ${datatype.definition()} = ${datatype.string(\n            this.indent,\n          )}`;\n        }\n      }\n    }\n\n    return code;\n  }\n}\n","export class SkipInvalid {\n  private _value: boolean;\n\n  constructor(value: boolean | undefined) {\n    this._value = Boolean(value);\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","export class DeclarationOnly {\n  private readonly _value: boolean;\n\n  constructor(v?: boolean) {\n    this._value = Boolean(v);\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","import {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { Filename } from \"../file-creator/filename\";\nimport { JavascriptCodeCreator } from \"./core/creator\";\nimport { ChacaUtils } from \"../../../utils\";\nimport {\n  IndentConfig,\n  SeparateConfig,\n  SkipInvalidConfig,\n  ZipConfig,\n} from \"../params\";\nimport { SpaceIndex } from \"../../core/space-index\";\nimport { SkipInvalid } from \"../../core/skip-invalid\";\nimport { DeclarationOnly } from \"../../core/declaration-only\";\n\nexport type JavascriptProps = ZipConfig &\n  SeparateConfig &\n  IndentConfig &\n  SkipInvalidConfig;\n\nexport class JavascriptGenerator extends Generator {\n  private readonly separate: boolean;\n\n  private readonly creator: JavascriptCodeCreator;\n\n  constructor(utils: ChacaUtils, config: JavascriptProps) {\n    super({ ext: \"js\", zip: config.zip });\n\n    this.separate = Boolean(config.separate);\n\n    this.creator = new JavascriptCodeCreator(\n      utils,\n      new SpaceIndex(config.indent),\n      false,\n      new SkipInvalid(config.skipInvalid),\n      new DeclarationOnly(false),\n    );\n  }\n\n  async dumpRelational({\n    filename,\n    resolver,\n  }: DumpRelationalProps): Promise<DumpFile[]> {\n    if (this.separate) {\n      const result = [] as DumpFile[];\n\n      for (const r of resolver.getResolvers()) {\n        const code = this.creator.execute({\n          data: await r.resolve(),\n          name: r.getSchemaName(),\n        });\n        const filename = new Filename(r.getSchemaName());\n\n        result.push({ content: code, filename: filename.value() });\n      }\n\n      return result;\n    } else {\n      return this.dump({\n        data: await resolver.resolve(),\n        filename: filename,\n      });\n    }\n  }\n\n  dump({ filename, data }: DumpProps): DumpFile[] {\n    const code = this.creator.execute({\n      data: data,\n      name: filename.value(),\n    });\n\n    return [{ filename: filename.value(), content: code }];\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\n\nexport class DataValidator {\n  execute(data: any): void {\n    let valid = true;\n\n    if (Array.isArray(data)) {\n      for (const obj of data) {\n        if (!(typeof obj === \"object\" && obj !== null)) {\n          valid = false;\n        }\n      }\n    } else {\n      valid = false;\n    }\n\n    if (!valid) {\n      throw new ChacaError(\n        `In the case of the 'csv' format, only an array of objects can be exported.`,\n      );\n    }\n  }\n}\n","import { json2csv } from \"json-2-csv\";\nimport { DataValidator } from \"./validator\";\n\ninterface KeyConverter {\n  field: string;\n  title: string;\n}\n\ntype ParseValueFunction = (\n  value: any,\n  defaultParser: (v: any) => string,\n) => string;\n\ninterface TrimProps {\n  header?: boolean;\n  field?: boolean;\n}\n\ninterface Delimiters {\n  wrap?: string;\n  field?: string;\n  eol?: string;\n}\n\nexport interface CodeProps {\n  /**\n   * Specifies the different types of delimiters\n   * @param delimiter.wrap wrap values in the delimiter of choice (e.g. wrap values in quotes). Default `\"`\n   * @param delimiter.field field delimiter. Default `,`\n   * @param delimiter.eol end of line delimiter. Default `\\n`\n   */\n  delimiter?: Delimiters;\n  /**\n   * Specify the string keys that should be excluded from the output\n   */\n  excludeKeys?: string[];\n  /**\n   * Should nested objects be deep-converted to CSV? Default `true`\n   */\n  expandNestedObjects?: boolean;\n  /**\n   * Should objects in array values be deep-converted to CSV? Default `false`\n   */\n  expandArrayObjects?: boolean;\n  /**\n   * Specify the keys that should be converted.\n   *\n   * @param key.field specifies the key path\n   * @param key.title specifies a more human readable field heading\n   */\n  keys?: KeyConverter[];\n  /**\n   * Specify how values should be converted into CSV format. This function is provided a single field value at a time and must return a `string`\n   */\n  parseValue?: ParseValueFunction;\n  /**\n   * Should the header keys be sorted in alphabetical order? Default `false`\n   */\n  sortHeader?: boolean;\n  /**\n   * @param trim.header should the header fields be trimmed? Default `false`\n   * @param trim.field should the field values be trimmed? Default `false`\n   */\n  trim?: TrimProps;\n  /**\n   * Should array values be \"unwound\" such that there is one line per value in the array? Default `false`\n   */\n  unwindArrays?: boolean;\n}\n\nexport class CsvCodeCreator {\n  constructor(\n    private readonly config: CodeProps,\n    private readonly validator: DataValidator,\n  ) {}\n\n  execute(data: any): string {\n    this.validator.execute(data);\n\n    return json2csv(data, {\n      trimFieldValues: this.config.trim?.field,\n      trimHeaderFields: this.config.trim?.header,\n      excludeKeys: this.config.excludeKeys,\n      keys: this.config.keys,\n      unwindArrays: this.config.unwindArrays,\n      sortHeader: this.config.sortHeader,\n      expandArrayObjects: this.config.expandArrayObjects,\n      expandNestedObjects: this.config.expandNestedObjects,\n      parseValue: this.config.parseValue,\n      emptyFieldValue: \"\",\n      delimiter: {\n        field: this.config.delimiter?.field,\n        eol: this.config.delimiter?.eol,\n        wrap: this.config.delimiter?.wrap,\n      },\n    });\n  }\n}\n","import {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { DataValidator } from \"./core/validator\";\nimport { Filename } from \"../file-creator/filename\";\nimport { ZipConfig } from \"../params\";\nimport { CodeProps, CsvCodeCreator } from \"./core/creator\";\n\nexport type CsvProps = ZipConfig & CodeProps;\n\nexport class CsvGenerator extends Generator {\n  private readonly creator: CsvCodeCreator;\n\n  constructor({\n    zip = false,\n    trim = { field: false, header: false },\n    delimiter = {},\n    excludeKeys = [],\n    expandArrayObjects = false,\n    expandNestedObjects = true,\n    keys,\n    parseValue,\n    sortHeader = false,\n    unwindArrays = false,\n  }: CsvProps) {\n    super({ ext: \"csv\", zip: zip });\n\n    this.creator = new CsvCodeCreator(\n      {\n        trim: trim,\n        delimiter: delimiter,\n        excludeKeys: excludeKeys,\n        expandArrayObjects: expandArrayObjects,\n        expandNestedObjects: expandNestedObjects,\n        sortHeader: sortHeader,\n        unwindArrays: unwindArrays,\n        keys: keys,\n        parseValue: parseValue,\n      },\n      new DataValidator(),\n    );\n  }\n\n  dump({ filename, data }: DumpProps): DumpFile[] {\n    const code = this.creator.execute(data);\n\n    return [{ content: code, filename: filename.value() }];\n  }\n\n  async dumpRelational({ resolver }: DumpRelationalProps): Promise<DumpFile[]> {\n    const result = [] as DumpFile[];\n\n    for (const r of resolver.getResolvers()) {\n      const filename = new Filename(r.getSchemaName());\n      const code = this.creator.execute(await r.resolve());\n\n      result.push({ filename: filename.value(), content: code });\n    }\n\n    return result;\n  }\n}\n","export class Parent {\n  private route: string[];\n\n  constructor(init: string[]) {\n    this.route = init;\n  }\n\n  create(route: string): Parent {\n    const parent = new Parent([...this.route, route]);\n\n    return parent;\n  }\n\n  string() {\n    return this.route.join(\".\");\n  }\n\n  equal(other: Parent) {\n    return other.string() === this.string();\n  }\n}\n","import { Parent } from \"./parent\";\nimport { DataValidator } from \"./validator\";\nimport { ValueCreator } from \"./value-creator\";\n\ninterface Props {\n  data: any;\n  name: string;\n}\n\nexport class ClassesCreator {\n  constructor(\n    private readonly creator: ValueCreator,\n    private readonly validator: DataValidator,\n  ) {}\n\n  execute({ data, name: iname }: Props) {\n    this.validator.execute(data);\n\n    const parent = new Parent([iname]);\n\n    for (const value of data) {\n      this.creator.execute({ parent: parent, value: value, print: true });\n    }\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\nimport { SpaceIndex } from \"../../../core/space-index\";\nimport { Imports } from \"./import\";\nimport { JavaClassFieldName, JavaClassName } from \"./names\";\nimport { JavaClass, JavaDatatype } from \"./types\";\n\nexport class SaveJavaClassField {\n  readonly _name: JavaClassFieldName;\n  private _datatype: JavaDatatype;\n\n  constructor(name: JavaClassFieldName, datatype: JavaDatatype) {\n    this._datatype = datatype;\n    this._name = name;\n  }\n\n  name(): string {\n    return this._name.string();\n  }\n\n  definition(imports: Imports): string {\n    return this._datatype.definition(imports);\n  }\n\n  datatype() {\n    return this._datatype;\n  }\n\n  setDatatype(d: JavaDatatype) {\n    this._datatype = d;\n  }\n}\n\nexport class SaveJavaClass {\n  readonly _name: JavaClassName;\n  readonly fields: SaveJavaClassField[];\n  readonly values: JavaClass[];\n  readonly print: boolean;\n\n  constructor(\n    name: JavaClassName,\n    fields: SaveJavaClassField[],\n    print: boolean,\n  ) {\n    this.fields = fields;\n    this._name = name;\n    this.values = [];\n    this.print = print;\n  }\n\n  variable(): string {\n    return this._name.variable();\n  }\n\n  equal(other: SaveJavaClass): boolean {\n    return this._name.equal(other._name);\n  }\n\n  find(name: JavaClassFieldName, datatype: JavaDatatype): SaveJavaClassField {\n    const found = this.fields.find((f) => f._name.equal(name));\n\n    if (found) {\n      const similar = found.datatype().isSimilar(datatype);\n\n      if (similar) {\n        const greater = found.datatype().greater(datatype);\n        found.setDatatype(greater);\n      } else {\n        const type1 = found.datatype().primitive();\n        const type2 = datatype.primitive();\n\n        throw new ChacaError(\n          `On field '${name.name()}' exist values of type ${type1} and ${type2}. The data must be uniform`,\n        );\n      }\n\n      return found;\n    } else {\n      const create = new SaveJavaClassField(name, datatype);\n      this.fields.push(create);\n\n      return create;\n    }\n  }\n\n  name() {\n    return this._name.string();\n  }\n\n  add(value: JavaClass) {\n    this.values.push(value);\n  }\n\n  definition(index: SpaceIndex, imports: Imports): string {\n    let code = `public class ${this.name()} {\\n`;\n\n    index.push();\n\n    // fields\n    const fields = [] as string[];\n    for (const field of this.fields) {\n      fields.push(\n        index.create(`private ${field.definition(imports)} ${field.name()};`),\n      );\n    }\n\n    code += fields.join(\"\\n\") + \"\\n\\n\";\n\n    // constructor\n    code += index.create(`public ${this.name()}(`);\n\n    code += this.fields\n      .map((f) => {\n        return `${f.definition(imports)} ${f.name()}`;\n      })\n      .join(\", \");\n\n    code += \") {\\n\";\n\n    index.push();\n\n    code += this.fields\n      .map((f) => {\n        return index.create(`this.${f.name()} = ${f.name()};`);\n      })\n      .join(`\\n`);\n\n    index.reverse();\n\n    code += \"\\n\" + index.create(\"}\\n\\n\");\n\n    // getters and setters\n    code += this.fields\n      .map((f) => {\n        let code = ``;\n\n        // getter\n        code += index.create(\n          `public ${f.definition(imports)} ${f._name.getter()}() {\\n`,\n        );\n\n        index.push();\n\n        code += index.create(`return this.${f.name()};\\n`);\n\n        index.reverse();\n\n        code += index.create(`}\\n`);\n\n        // space\n        code += \"\\n\";\n\n        // setter\n        code += index.create(\n          `public void ${f._name.setter()}(${f.definition(\n            imports,\n          )} ${f.name()}) {\\n`,\n        );\n\n        index.push();\n\n        code += index.create(`this.${f.name()} = ${f.name()};\\n`);\n\n        index.reverse();\n\n        code += index.create(`}\\n`);\n\n        return code;\n      })\n      .join(\"\\n\");\n\n    index.reverse();\n\n    code += index.create(`}`);\n\n    return code;\n  }\n}\n\nexport class JavaClasses {\n  readonly classes: SaveJavaClass[];\n\n  constructor() {\n    this.classes = [];\n  }\n\n  find(add: SaveJavaClass): SaveJavaClass {\n    const found = this.classes.find((c) => c.equal(add));\n\n    if (found) {\n      return found;\n    } else {\n      this.classes.push(add);\n\n      return add;\n    }\n  }\n}\n","import { ChacaUtils } from \"../../../../utils\";\nimport { Parent } from \"./parent\";\n\nconst JAVA_RESERVED_WORDS = [\n  \"abstract\",\n  \"assert\",\n  \"boolean\",\n  \"break\",\n  \"byte\",\n  \"case\",\n  \"catch\",\n  \"char\",\n  \"class\",\n  \"const\",\n  \"continue\",\n  \"default\",\n  \"do\",\n  \"double\",\n  \"else\",\n  \"enum\",\n  \"extends\",\n  \"final\",\n  \"finally\",\n  \"float\",\n  \"for\",\n  \"goto\",\n  \"if\",\n  \"implements\",\n  \"import\",\n  \"instanceof\",\n  \"int\",\n  \"interface\",\n  \"long\",\n  \"native\",\n  \"new\",\n  \"package\",\n  \"private\",\n  \"protected\",\n  \"public\",\n  \"return\",\n  \"short\",\n  \"static\",\n  \"strictfp\",\n  \"super\",\n  \"switch\",\n  \"synchronized\",\n  \"this\",\n  \"throw\",\n  \"throws\",\n  \"transient\",\n  \"try\",\n  \"void\",\n  \"volatile\",\n  \"while\",\n  \"true\",\n  \"false\",\n  \"null\",\n  \"var\",\n  \"record\",\n  \"yield\",\n];\n\nexport class JavaClassFieldName {\n  private _name: string;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    name: string,\n  ) {\n    this._name = name;\n  }\n\n  getter(): string {\n    return `${this.utils.camelCase(`get_${this.string()}`)}`;\n  }\n\n  setter(): string {\n    return `${this.utils.camelCase(`set_${this.string()}`)}`;\n  }\n\n  equal(other: JavaClassFieldName): boolean {\n    return this._name === other._name;\n  }\n\n  name(): string {\n    return this._name;\n  }\n\n  string() {\n    const name = this.utils.camelCase(this._name);\n\n    if (JAVA_RESERVED_WORDS.includes(name)) {\n      return `${name}Value`;\n    }\n\n    return name;\n  }\n}\n\nexport class JavaClassName {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly parent: Parent,\n  ) {}\n\n  variable() {\n    return this.utils.camelCase(this.parent.string());\n  }\n\n  name(): string {\n    return this.parent.string();\n  }\n\n  equal(other: JavaClassName): boolean {\n    return this.parent.equal(other.parent);\n  }\n\n  string() {\n    return this.utils.pascalCase(this.parent.string());\n  }\n}\n","export class Import {\n  from: string[];\n\n  constructor(from: string[]) {\n    this.from = from;\n  }\n\n  equal(other: Import): boolean {\n    return other.from.join(\".\") === this.from.join(\".\");\n  }\n}\n\nexport class Imports {\n  imports: Import[];\n\n  constructor() {\n    this.imports = [];\n  }\n\n  add(...imp: Import[]): void {\n    for (const i of imp) {\n      const found = this.imports.find((si) => si.equal(i));\n\n      if (!found) {\n        this.imports.push(i);\n      }\n    }\n  }\n\n  string(): string {\n    let code = ``;\n\n    code += this.imports\n      .map((i) => {\n        return `import ${i.from.join(\".\")};`;\n      })\n      .join(\"\\n\");\n\n    return code;\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\nimport { SpaceIndex } from \"../../../core/space-index\";\nimport { SaveJavaClass, SaveJavaClassField } from \"./classes\";\nimport { Import, Imports } from \"./import\";\nimport { Parent } from \"./parent\";\n\nexport abstract class JavaDatatype {\n  abstract equal(other: JavaDatatype): boolean;\n  abstract definition(imports: Imports): string;\n  abstract string(index: SpaceIndex, imports: Imports): string;\n  abstract primitive(): string;\n  protected abstract similar(other: JavaDatatype): boolean;\n  protected abstract greaterThan(other: JavaDatatype): boolean;\n\n  greater(other: JavaDatatype): JavaDatatype {\n    return this.greaterThan(other) ? this : other;\n  }\n\n  isSimilar(other: JavaDatatype): boolean {\n    return (\n      this.equal(other) ||\n      this.similar(other) ||\n      this instanceof JavaNull ||\n      other instanceof JavaNull\n    );\n  }\n}\n\nexport class JavaString extends JavaDatatype {\n  constructor(private readonly value: string) {\n    super();\n  }\n\n  primitive(): string {\n    return \"string\";\n  }\n\n  protected similar(): boolean {\n    return false;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  definition(): string {\n    return \"String\";\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaString;\n  }\n\n  string(): string {\n    return `${JSON.stringify(this.value)}`;\n  }\n}\n\nabstract class JavaNumber extends JavaDatatype {\n  protected similar(other: JavaDatatype): boolean {\n    return other instanceof JavaNumber;\n  }\n\n  primitive(): string {\n    return \"number\";\n  }\n}\n\nexport class JavaFloat extends JavaNumber {\n  constructor(private readonly value: number) {\n    super();\n  }\n\n  greaterThan(other: JavaDatatype): boolean {\n    return other instanceof JavaInt;\n  }\n\n  definition(): string {\n    return `Float`;\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaFloat;\n  }\n\n  string(): string {\n    if (this.value === Infinity) {\n      return \"Float.POSITIVE_INFINITY\";\n    } else if (this.value === -Infinity) {\n      return \"Float.NEGATIVE_INFINITY\";\n    } else if (Number.isNaN(this.value)) {\n      return \"Float.NaN\";\n    } else {\n      return `${this.value}f`;\n    }\n  }\n}\n\nexport class JavaInt extends JavaNumber {\n  constructor(private readonly value: number) {\n    super();\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  string(): string {\n    return `${this.value}`;\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaInt;\n  }\n\n  definition(): string {\n    return \"Integer\";\n  }\n}\n\nexport class JavaBoolean extends JavaDatatype {\n  constructor(private readonly value: boolean) {\n    super();\n  }\n\n  primitive(): string {\n    return \"boolean\";\n  }\n\n  protected similar(): boolean {\n    return false;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaBoolean;\n  }\n\n  definition(): string {\n    return \"Boolean\";\n  }\n\n  string(): string {\n    return this.value ? \"true\" : \"false\";\n  }\n}\n\nexport class JavaBigint extends JavaDatatype {\n  constructor(private readonly value: bigint) {\n    super();\n  }\n\n  primitive(): string {\n    return \"bigint\";\n  }\n\n  protected similar(): boolean {\n    return false;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  string(_: SpaceIndex, imports: Imports): string {\n    imports.add(new Import([\"java\", \"math\", \"BigInteger\"]));\n\n    return `new BigInteger(\"${this.value.toString()}\")`;\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaBigint;\n  }\n\n  definition(imports: Imports): string {\n    imports.add(new Import([\"java\", \"math\", \"BigInteger\"]));\n\n    return \"BigInteger\";\n  }\n}\n\nexport class JavaDate extends JavaDatatype {\n  constructor(private readonly value: Date) {\n    super();\n  }\n\n  primitive(): string {\n    return \"Date\";\n  }\n\n  protected similar(): boolean {\n    return false;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  string(_: SpaceIndex, imports: Imports): string {\n    imports.add(new Import([\"java\", \"time\", \"LocalDateTime\"]));\n\n    return `LocalDateTime.parse(\"${this.value.toISOString().slice(0, -1)}\")`;\n  }\n\n  definition(imports: Imports): string {\n    imports.add(new Import([\"java\", \"time\", \"LocalDateTime\"]));\n\n    return \"LocalDateTime\";\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaDate;\n  }\n}\n\nexport class JavaRegexp extends JavaDatatype {\n  constructor(private readonly value: RegExp) {\n    super();\n  }\n\n  primitive(): string {\n    return \"RegExp\";\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  protected similar(): boolean {\n    return false;\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaRegexp;\n  }\n\n  string(_: SpaceIndex, imports: Imports): string {\n    imports.add(new Import([\"java\", \"util\", \"regex\", \"Pattern\"]));\n\n    return `Pattern.compile(\"${String(this.value)}\")`;\n  }\n\n  definition(imports: Imports): string {\n    imports.add(new Import([\"java\", \"util\", \"regex\", \"Pattern\"]));\n\n    return \"Pattern\";\n  }\n}\n\nexport class JavaNull extends JavaDatatype {\n  string(): string {\n    return \"null\";\n  }\n\n  primitive(): string {\n    return \"null\";\n  }\n\n  protected similar(): boolean {\n    return true;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  definition(): string {\n    return \"Object\";\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaNull;\n  }\n}\n\nexport class JavaClass extends JavaDatatype {\n  readonly fields: JavaClassField[];\n  readonly save: SaveJavaClass;\n  readonly parent: Parent;\n\n  constructor(save: SaveJavaClass, parent: Parent) {\n    super();\n\n    this.save = save;\n    this.fields = [];\n    this.parent = parent;\n  }\n\n  primitive(): string {\n    return this.save.name();\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  protected similar(other: JavaDatatype): boolean {\n    return other instanceof JavaClass;\n  }\n\n  name() {\n    return this.save.name();\n  }\n\n  string(index: SpaceIndex, imports: Imports): string {\n    let code = `new ${this.name()}(\\n`;\n\n    index.push();\n\n    code += this.save.fields\n      .map((f) => {\n        const found = this.fields.find((sf) => sf.save === f);\n\n        if (found) {\n          return index.create(`${found.string(index, imports)}`);\n        } else {\n          return `null`;\n        }\n      })\n      .join(\",\\n\");\n\n    index.reverse();\n\n    code += \"\\n\" + index.create(\")\");\n\n    return code;\n  }\n\n  equal(other: JavaDatatype): boolean {\n    if (other instanceof JavaClass) {\n      return true;\n    }\n\n    return false;\n  }\n\n  definition(): string {\n    return this.name();\n  }\n\n  setField(field: JavaClassField): void {\n    this.fields.push(field);\n  }\n}\n\nexport class JavaClassField {\n  readonly datatype: JavaDatatype;\n  readonly save: SaveJavaClassField;\n\n  constructor(datatype: JavaDatatype, save: SaveJavaClassField) {\n    this.datatype = datatype;\n    this.save = save;\n  }\n\n  name() {\n    return this.save.name();\n  }\n\n  string(index: SpaceIndex, imports: Imports) {\n    return this.datatype.string(index, imports);\n  }\n\n  definition(imports: Imports): string {\n    return this.datatype.definition(imports);\n  }\n}\n\nexport class JavaArray extends JavaDatatype {\n  private values: JavaDatatype[];\n  private datatype: JavaDatatype | null;\n\n  constructor() {\n    super();\n\n    this.values = [];\n    this.datatype = null;\n  }\n\n  primitive(): string {\n    return `Array`;\n  }\n\n  protected similar(): boolean {\n    return false;\n  }\n\n  protected greaterThan(): boolean {\n    return false;\n  }\n\n  definition(imports: Imports): string {\n    imports.add(new Import([\"java\", \"util\", \"List\"]));\n\n    if (this.datatype) {\n      return `List<${this.datatype.definition(imports)}>`;\n    } else {\n      return `List<Object>`;\n    }\n  }\n\n  string(index: SpaceIndex, imports: Imports): string {\n    imports.add(\n      new Import([\"java\", \"util\", \"List\"]),\n      new Import([\"java\", \"util\", \"Arrays\"]),\n    );\n\n    if (this.values.length === 0) {\n      return `Arrays.asList()`;\n    }\n\n    let code = `Arrays.asList(\\n`;\n\n    index.push();\n\n    code += this.values\n      .map((v) => {\n        return index.create(`${v.string(index, imports)}`);\n      })\n      .join(\",\\n\");\n\n    index.reverse();\n\n    code += \"\\n\" + index.create(\")\");\n\n    return code;\n  }\n\n  equal(other: JavaDatatype): boolean {\n    return other instanceof JavaArray;\n  }\n\n  add(value: JavaDatatype, parent: Parent): void {\n    if (this.datatype) {\n      if (this.datatype.isSimilar(value)) {\n        this.datatype = this.datatype.greater(value);\n      } else {\n        const route = parent.string();\n        const type1 = this.datatype.primitive();\n        const type2 = value.primitive();\n\n        throw new ChacaError(\n          `On field '${route}' exist values of type ${type1} and ${type2}. The data must be uniform`,\n        );\n      }\n    } else {\n      this.datatype = value;\n    }\n\n    this.values.push(value);\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\nimport { ChacaUtils } from \"../../../../utils\";\nimport { Datatype } from \"../../../core/datatype\";\nimport { SkipInvalid } from \"../../../core/skip-invalid\";\nimport { JavaClasses, SaveJavaClass } from \"./classes\";\nimport { JavaClassFieldName, JavaClassName } from \"./names\";\nimport { Parent } from \"./parent\";\nimport {\n  JavaArray,\n  JavaBigint,\n  JavaBoolean,\n  JavaClass,\n  JavaClassField,\n  JavaDatatype,\n  JavaDate,\n  JavaFloat,\n  JavaInt,\n  JavaNull,\n  JavaRegexp,\n  JavaString,\n} from \"./types\";\n\ninterface CreateProps {\n  value: any;\n  parent: Parent;\n  print: boolean;\n}\n\nexport class ValueCreator {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly classes: JavaClasses,\n    private readonly skipInvalid: SkipInvalid,\n  ) {}\n\n  execute({ value, parent, print }: CreateProps): JavaDatatype | null {\n    const type = Datatype.filter<JavaDatatype | null>(value, {\n      bigint(value) {\n        return new JavaBigint(value);\n      },\n      string(value) {\n        return new JavaString(value);\n      },\n      boolean(value) {\n        return new JavaBoolean(value);\n      },\n      regexp: (value) => {\n        return new JavaRegexp(value);\n      },\n      function: () => {\n        if (this.skipInvalid.value()) {\n          return null;\n        }\n\n        throw new ChacaError(`You can not export a function into a java file.`);\n      },\n      date(value) {\n        return new JavaDate(value);\n      },\n      null() {\n        return new JavaNull();\n      },\n      symbol: () => {\n        if (this.skipInvalid.value()) {\n          return null;\n        }\n\n        throw new ChacaError(`You can not export a Symbol into a java file.`);\n      },\n      float(value) {\n        return new JavaFloat(value);\n      },\n      nan(value) {\n        return new JavaFloat(value);\n      },\n      int(value) {\n        return new JavaInt(value);\n      },\n      undefined() {\n        return new JavaNull();\n      },\n      object: (value) => {\n        const saveClass = this.classes.find(\n          new SaveJavaClass(new JavaClassName(this.utils, parent), [], print),\n        );\n\n        const object = new JavaClass(saveClass, parent);\n\n        for (const [key, data] of Object.entries(value)) {\n          const fieldName = new JavaClassFieldName(this.utils, key);\n\n          const newParent = parent.create(key);\n\n          const datatype = this.execute({\n            value: data,\n            parent: newParent,\n            print: false,\n          });\n\n          if (datatype) {\n            const saveField = saveClass.find(fieldName, datatype);\n\n            const field = new JavaClassField(datatype, saveField);\n\n            object.setField(field);\n          }\n        }\n\n        saveClass.add(object);\n\n        return object;\n      },\n      array: (value) => {\n        const array = new JavaArray();\n\n        for (const v of value) {\n          const datatype = this.execute({\n            parent: parent,\n            value: v,\n            print: false,\n          });\n\n          if (datatype) {\n            array.add(datatype, parent);\n          }\n        }\n\n        return array;\n      },\n    });\n\n    return type;\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\n\nexport class DataValidator {\n  execute(data: any): void {\n    let valid = true;\n\n    if (Array.isArray(data)) {\n      for (const obj of data) {\n        if (!(typeof obj === \"object\" && obj !== null && !Array.isArray(obj))) {\n          valid = false;\n        }\n      }\n    } else {\n      valid = false;\n    }\n\n    if (!valid) {\n      throw new ChacaError(\n        `In the case of the 'java' format, only an array of objects can be exported.`,\n      );\n    }\n  }\n}\n","import { DeclarationOnly } from \"../../../core/declaration-only\";\nimport { SpaceIndex } from \"../../../core/space-index\";\nimport { Package } from \"../value-object/package\";\nimport { JavaClasses } from \"./classes\";\nimport { Import, Imports } from \"./import\";\n\ninterface Props {\n  indent: SpaceIndex;\n  package: Package;\n  declarationOnly: DeclarationOnly;\n}\n\nexport interface CodeResult {\n  filename: string;\n  content: string;\n}\n\nexport class JavaCodeCreator {\n  constructor(private readonly config: Props) {}\n\n  execute(classes: JavaClasses): CodeResult[] {\n    const codes: CodeResult[] = [];\n\n    for (const c of classes.classes) {\n      const imports = new Imports();\n\n      const definition = c.definition(this.config.indent, imports);\n      const imp = imports.string();\n\n      let content = this.config.package.string();\n\n      if (imp !== \"\") {\n        content += imp + \"\\n\\n\";\n      }\n\n      content += definition;\n\n      codes.push({ content: content, filename: c.name() });\n    }\n\n    if (!this.config.declarationOnly.value()) {\n      codes.push({ content: this.main(classes), filename: \"Main\" });\n    }\n\n    return codes;\n  }\n\n  private main(classes: JavaClasses): string {\n    const imports = new Imports();\n\n    let code = this.config.package.string();\n\n    // create content\n    let content = ``;\n\n    content += this.config.indent.create(\"public class Main {\\n\");\n\n    this.config.indent.push();\n\n    content += this.config.indent.create(\n      `public static void main(String[] args) {\\n`,\n    );\n\n    this.config.indent.push();\n\n    content += classes.classes\n      .filter((c) => c.print)\n      .map((c) => {\n        imports.add(\n          new Import([\"java\", \"util\", \"List\"]),\n          new Import([\"java\", \"util\", \"LinkedList\"]),\n        );\n\n        const definition = c.name();\n        const variable = c.variable();\n\n        let code = this.config.indent.create(\n          `List<${definition}> ${variable} = new LinkedList<>();\\n`,\n        );\n\n        code += c.values\n          .map((v) => {\n            let code = this.config.indent.create(`${variable}.add(\\n`);\n\n            this.config.indent.push();\n\n            code += this.config.indent.create(\n              v.string(this.config.indent, imports),\n            );\n\n            this.config.indent.reverse();\n\n            code += \"\\n\" + this.config.indent.create(\");\");\n\n            return code;\n          })\n          .join(\"\\n\");\n\n        return code;\n      })\n      .join(\"\\n\\n\");\n\n    this.config.indent.reverse();\n\n    content += \"\\n\" + this.config.indent.create(`}`);\n\n    this.config.indent.reverse();\n\n    content += \"\\n\" + this.config.indent.create(`}`);\n\n    // create code\n    const imp = imports.string();\n\n    if (imp !== \"\") {\n      code += imp + \"\\n\\n\";\n    }\n\n    code += content;\n\n    return code;\n  }\n}\n","export class Package {\n  private readonly _value: string;\n\n  constructor(value?: string) {\n    this._value = typeof value === \"string\" ? value : \"chaca.data\";\n  }\n\n  string() {\n    return `package ${this._value};\\n\\n`;\n  }\n}\n","import {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { ClassesCreator } from \"./core/classes-creator\";\nimport { Filename } from \"../file-creator/filename\";\nimport { ValueCreator } from \"./core/value-creator\";\nimport { JavaClasses } from \"./core/classes\";\nimport { DataValidator } from \"./core/validator\";\nimport { JavaCodeCreator } from \"./core/code-creator\";\nimport { SpaceIndex } from \"../../core/space-index\";\nimport {\n  DeclarationOnlyConfig,\n  IndentConfig,\n  SkipInvalidConfig,\n  ZipConfig,\n} from \"../params\";\nimport { ChacaUtils } from \"../../../utils\";\nimport { SkipInvalid } from \"../../core/skip-invalid\";\nimport { Package } from \"./value-object/package\";\nimport { DeclarationOnly } from \"../../core/declaration-only\";\n\nexport type JavaProps = ZipConfig &\n  IndentConfig &\n  SkipInvalidConfig &\n  DeclarationOnlyConfig & {\n    /** Name of the package in which the classes will be found. Default `chaca.data` */\n    package?: string;\n  };\n\nexport class JavaGenerator extends Generator {\n  private readonly creator: JavaCodeCreator;\n  private readonly skipInvalid: SkipInvalid;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    config: JavaProps,\n  ) {\n    super({ ext: \"java\", zip: config.zip });\n\n    this.creator = new JavaCodeCreator({\n      indent: new SpaceIndex(config.indent),\n      package: new Package(config.package),\n      declarationOnly: new DeclarationOnly(config.declarationOnly),\n    });\n\n    this.skipInvalid = new SkipInvalid(config.skipInvalid);\n  }\n\n  async dumpRelational({ resolver }: DumpRelationalProps): Promise<DumpFile[]> {\n    const classes = new JavaClasses();\n    const valueCreator = new ValueCreator(\n      this.utils,\n      classes,\n      this.skipInvalid,\n    );\n    const validator = new DataValidator();\n    const creator = new ClassesCreator(valueCreator, validator);\n\n    for (const r of resolver.getResolvers()) {\n      creator.execute({\n        name: r.getSchemaName(),\n        data: await r.resolve(),\n      });\n    }\n\n    const result = [] as DumpFile[];\n    for (const { content, filename: ifilename } of this.creator.execute(\n      classes,\n    )) {\n      const filename = new Filename(ifilename);\n\n      result.push({ content: content, filename: filename.value() });\n    }\n\n    return result;\n  }\n\n  dump({ data, filename }: DumpProps): DumpFile[] {\n    const classes = new JavaClasses();\n    const valueCreator = new ValueCreator(\n      this.utils,\n      classes,\n      this.skipInvalid,\n    );\n    const validator = new DataValidator();\n    const creator = new ClassesCreator(valueCreator, validator);\n\n    creator.execute({\n      name: filename.value(),\n      data: data,\n    });\n\n    const result = [] as DumpFile[];\n\n    for (const { content, filename: ifilename } of this.creator.execute(\n      classes,\n    )) {\n      const filename = new Filename(ifilename);\n\n      result.push({ filename: filename.value(), content: content });\n    }\n\n    return result;\n  }\n}\n","import {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { JavascriptCodeCreator } from \"../javascript/core/creator\";\nimport { Filename } from \"../file-creator/filename\";\nimport { ChacaUtils } from \"../../../utils\";\nimport {\n  DeclarationOnlyConfig,\n  IndentConfig,\n  SeparateConfig,\n  SkipInvalidConfig,\n  ZipConfig,\n} from \"../params\";\nimport { SpaceIndex } from \"../../core/space-index\";\nimport { SkipInvalid } from \"../../core/skip-invalid\";\nimport { DeclarationOnly } from \"../../core/declaration-only\";\n\nexport type TypescriptProps = ZipConfig &\n  SeparateConfig &\n  IndentConfig &\n  SkipInvalidConfig &\n  DeclarationOnlyConfig;\n\nexport class TypescriptGenerator extends Generator {\n  private readonly separate: boolean;\n\n  private readonly creator: JavascriptCodeCreator;\n\n  constructor(utils: ChacaUtils, config: TypescriptProps) {\n    super({ ext: \"ts\", zip: config.zip });\n\n    this.separate = Boolean(config.separate);\n\n    this.creator = new JavascriptCodeCreator(\n      utils,\n      new SpaceIndex(config.indent),\n      true,\n      new SkipInvalid(config.skipInvalid),\n      new DeclarationOnly(config.declarationOnly),\n    );\n  }\n\n  dump({ data, filename }: DumpProps): DumpFile[] {\n    const code = this.creator.execute({\n      data: data,\n      name: filename.value(),\n    });\n\n    return [{ content: code, filename: filename.value() }];\n  }\n\n  async dumpRelational({\n    filename,\n    resolver,\n  }: DumpRelationalProps): Promise<DumpFile[]> {\n    if (this.separate) {\n      const result: DumpFile[] = [];\n\n      for (const r of resolver.getResolvers()) {\n        const filename = new Filename(r.getSchemaName());\n\n        const code = this.creator.execute({\n          data: await r.resolve(),\n          name: r.getSchemaName(),\n        });\n\n        result.push({ filename: filename.value(), content: code });\n      }\n\n      return result;\n    } else {\n      return this.dump({ data: await resolver.resolve(), filename: filename });\n    }\n  }\n}\n","import { dump } from \"js-yaml\";\nimport { SpaceIndex } from \"../../../core/space-index\";\n\ninterface Props {\n  sortKeys: boolean | ((a: any, b: any) => number) | undefined;\n  lineWidth: number | undefined;\n  quotingType: \"'\" | '\"' | undefined;\n  indent: SpaceIndex;\n}\n\n// js-yaml has no native bigint support and silently drops them (skipInvalid),\n// so they are converted beforehand: to a number when they fit in a safe\n// integer, to a decimal string otherwise.\nfunction normalizeBigints(value: any): any {\n  if (typeof value === \"bigint\") {\n    const max = BigInt(Number.MAX_SAFE_INTEGER);\n\n    if (value <= max && value >= -max) {\n      return Number(value);\n    }\n\n    return value.toString();\n  }\n\n  if (Array.isArray(value)) {\n    return value.map(normalizeBigints);\n  }\n\n  if (value !== null && typeof value === \"object\") {\n    const prototype = Object.getPrototypeOf(value);\n\n    if (prototype === Object.prototype || prototype === null) {\n      const result: Record<string, any> = {};\n\n      for (const [key, entry] of Object.entries(value)) {\n        result[key] = normalizeBigints(entry);\n      }\n\n      return result;\n    }\n  }\n\n  return value;\n}\n\nexport class YamlCodeCreator {\n  constructor(private readonly config: Props) {}\n\n  execute(data: any): string {\n    return dump(normalizeBigints(data), {\n      skipInvalid: true,\n      indent: this.config.indent.step(),\n      sortKeys: this.config.sortKeys,\n      lineWidth: this.config.lineWidth,\n      quotingType: this.config.quotingType,\n    });\n  }\n}\n","import {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { Filename } from \"../file-creator/filename\";\nimport { YamlCodeCreator } from \"./core/creator\";\nimport { IndentConfig, SeparateConfig, ZipConfig } from \"../params\";\nimport { SpaceIndex } from \"../../core/space-index\";\n\nexport type YamlProps = {\n  /**If `true`, sort keys when dumping YAML. If is a `function`, use the function to sort the keys. Default `false`*/\n  sortKeys?: boolean | ((a: any, b: any) => number);\n\n  /**Set max line width. Default `80`*/\n  lineWidth?: number;\n\n  /**Strings will be quoted using this quoting style. Default `'` */\n  quotingType?: \"'\" | '\"';\n} & ZipConfig &\n  SeparateConfig &\n  IndentConfig;\n\nexport class YamlGenerator extends Generator {\n  private readonly separate: boolean;\n  private readonly creator: YamlCodeCreator;\n\n  constructor(config: YamlProps) {\n    super({ ext: \"yaml\", zip: config.zip });\n\n    this.separate = Boolean(config.separate);\n    this.creator = new YamlCodeCreator({\n      indent: new SpaceIndex(config.indent),\n      lineWidth: config.lineWidth,\n      quotingType: config.quotingType,\n      sortKeys: config.sortKeys,\n    });\n  }\n\n  dump({ data, filename }: DumpProps): DumpFile[] {\n    const code = this.creator.execute(data);\n\n    return [{ content: code, filename: filename.value() }];\n  }\n\n  async dumpRelational({\n    resolver,\n    filename,\n  }: DumpRelationalProps): Promise<DumpFile[]> {\n    if (this.separate) {\n      const result: DumpFile[] = [];\n\n      for (const r of resolver.getResolvers()) {\n        const filename = new Filename(r.getSchemaName());\n        const code = this.creator.execute(await r.resolve());\n\n        result.push({ content: code, filename: filename.value() });\n      }\n\n      return result;\n    } else {\n      return this.dump({ data: await resolver.resolve(), filename: filename });\n    }\n  }\n}\n","import { ChacaUtils } from \"../../../../../utils\";\nimport { SQLExtensionValues } from \"../sql-types\";\nimport { Route } from \"./route\";\n\nconst POSTGRES_RESERVED_WORDS = [\n  \"all\",\n  \"analyse\",\n  \"analyze\",\n  \"and\",\n  \"any\",\n  \"array\",\n  \"as\",\n  \"asc\",\n  \"asymmetric\",\n  \"both\",\n  \"case\",\n  \"cast\",\n  \"check\",\n  \"collate\",\n  \"column\",\n  \"constraint\",\n  \"create\",\n  \"current_catalog\",\n  \"current_date\",\n  \"current_role\",\n  \"current_time\",\n  \"current_timestamp\",\n  \"current_user\",\n  \"default\",\n  \"deferrable\",\n  \"desc\",\n  \"distinct\",\n  \"do\",\n  \"else\",\n  \"end\",\n  \"except\",\n  \"false\",\n  \"fetch\",\n  \"for\",\n  \"foreign\",\n  \"from\",\n  \"grant\",\n  \"group\",\n  \"having\",\n  \"in\",\n  \"initially\",\n  \"intersect\",\n  \"into\",\n  \"lateral\",\n  \"leading\",\n  \"limit\",\n  \"localtime\",\n  \"localtimestamp\",\n  \"not\",\n  \"null\",\n  \"offset\",\n  \"on\",\n  \"only\",\n  \"or\",\n  \"order\",\n  \"placing\",\n  \"primary\",\n  \"references\",\n  \"returning\",\n  \"select\",\n  \"session_user\",\n  \"some\",\n  \"symmetric\",\n  \"table\",\n  \"then\",\n  \"to\",\n  \"trailing\",\n  \"true\",\n  \"union\",\n  \"unique\",\n  \"user\",\n  \"using\",\n  \"variadic\",\n  \"when\",\n  \"where\",\n  \"window\",\n  \"with\",\n];\n\nconst MYSQL_RESERVED_WORDS = [\n  \"accessible\",\n  \"add\",\n  \"all\",\n  \"alter\",\n  \"analyze\",\n  \"and\",\n  \"as\",\n  \"asc\",\n  \"asensitive\",\n  \"before\",\n  \"between\",\n  \"bigint\",\n  \"binary\",\n  \"blob\",\n  \"both\",\n  \"by\",\n  \"call\",\n  \"cascade\",\n  \"case\",\n  \"change\",\n  \"char\",\n  \"character\",\n  \"check\",\n  \"collate\",\n  \"column\",\n  \"condition\",\n  \"constraint\",\n  \"continue\",\n  \"convert\",\n  \"create\",\n  \"cross\",\n  \"cube\",\n  \"cume_dist\",\n  \"current_date\",\n  \"current_time\",\n  \"current_timestamp\",\n  \"current_user\",\n  \"cursor\",\n  \"database\",\n  \"databases\",\n  \"day_hour\",\n  \"day_microsecond\",\n  \"day_minute\",\n  \"day_second\",\n  \"dec\",\n  \"decimal\",\n  \"declare\",\n  \"default\",\n  \"delayed\",\n  \"delete\",\n  \"dense_rank\",\n  \"desc\",\n  \"describe\",\n  \"deterministic\",\n  \"distinct\",\n  \"distinctrow\",\n  \"div\",\n  \"double\",\n  \"drop\",\n  \"dual\",\n  \"each\",\n  \"else\",\n  \"elseif\",\n  \"empty\",\n  \"enclosed\",\n  \"escaped\",\n  \"except\",\n  \"exists\",\n  \"exit\",\n  \"explain\",\n  \"false\",\n  \"fetch\",\n  \"first_value\",\n  \"float\",\n  \"float4\",\n  \"float8\",\n  \"for\",\n  \"force\",\n  \"foreign\",\n  \"from\",\n  \"fulltext\",\n  \"function\",\n  \"generated\",\n  \"get\",\n  \"grant\",\n  \"group\",\n  \"grouping\",\n  \"groups\",\n  \"having\",\n  \"high_priority\",\n  \"hour_microsecond\",\n  \"hour_minute\",\n  \"hour_second\",\n  \"if\",\n  \"ignore\",\n  \"in\",\n  \"index\",\n  \"infile\",\n  \"inner\",\n  \"inout\",\n  \"insensitive\",\n  \"insert\",\n  \"int\",\n  \"int1\",\n  \"int2\",\n  \"int3\",\n  \"int4\",\n  \"int8\",\n  \"integer\",\n  \"interval\",\n  \"into\",\n  \"io_after_gtids\",\n  \"io_before_gtids\",\n  \"is\",\n  \"iterate\",\n  \"join\",\n  \"json_table\",\n  \"key\",\n  \"keys\",\n  \"kill\",\n  \"lag\",\n  \"last_value\",\n  \"lateral\",\n  \"lead\",\n  \"leading\",\n  \"leave\",\n  \"left\",\n  \"like\",\n  \"limit\",\n  \"linear\",\n  \"lines\",\n  \"load\",\n  \"localtime\",\n  \"localtimestamp\",\n  \"lock\",\n  \"long\",\n  \"longblob\",\n  \"longtext\",\n  \"loop\",\n  \"low_priority\",\n  \"master_bind\",\n  \"master_ssl_verify_server_cert\",\n  \"match\",\n  \"maxvalue\",\n  \"mediumblob\",\n  \"mediumint\",\n  \"mediumtext\",\n  \"middleint\",\n  \"minute_microsecond\",\n  \"minute_second\",\n  \"mod\",\n  \"modifies\",\n  \"natural\",\n  \"not\",\n  \"no_write_to_binlog\",\n  \"null\",\n  \"numeric\",\n  \"nth_value\",\n  \"ntile\",\n  \"of\",\n  \"on\",\n  \"optimize\",\n  \"optimizer_costs\",\n  \"option\",\n  \"optionally\",\n  \"or\",\n  \"order\",\n  \"out\",\n  \"outer\",\n  \"outfile\",\n  \"over\",\n  \"partition\",\n  \"percent_rank\",\n  \"precision\",\n  \"primary\",\n  \"procedure\",\n  \"purge\",\n  \"range\",\n  \"rank\",\n  \"read\",\n  \"reads\",\n  \"read_write\",\n  \"real\",\n  \"recursive\",\n  \"references\",\n  \"regexp\",\n  \"release\",\n  \"rename\",\n  \"repeat\",\n  \"replace\",\n  \"require\",\n  \"resignal\",\n  \"restrict\",\n  \"return\",\n  \"revoke\",\n  \"right\",\n  \"rlike\",\n  \"row\",\n  \"rows\",\n  \"row_number\",\n  \"schema\",\n  \"schemas\",\n  \"second_microsecond\",\n  \"select\",\n  \"sensitive\",\n  \"separator\",\n  \"set\",\n  \"show\",\n  \"signal\",\n  \"smallint\",\n  \"spatial\",\n  \"specific\",\n  \"sql\",\n  \"sqlexception\",\n  \"sqlstate\",\n  \"sqlwarning\",\n  \"sql_big_result\",\n  \"sql_calc_found_rows\",\n  \"sql_small_result\",\n  \"ssl\",\n  \"starting\",\n  \"stored\",\n  \"straight_join\",\n  \"system\",\n  \"table\",\n  \"terminated\",\n  \"then\",\n  \"tinyblob\",\n  \"tinyint\",\n  \"tinytext\",\n  \"to\",\n  \"trailing\",\n  \"trigger\",\n  \"true\",\n  \"undo\",\n  \"union\",\n  \"unique\",\n  \"unlock\",\n  \"unsigned\",\n  \"update\",\n  \"usage\",\n  \"use\",\n  \"using\",\n  \"utc_date\",\n  \"utc_time\",\n  \"utc_timestamp\",\n  \"values\",\n  \"varbinary\",\n  \"varchar\",\n  \"varcharacter\",\n  \"varying\",\n  \"virtual\",\n  \"when\",\n  \"where\",\n  \"while\",\n  \"window\",\n  \"with\",\n  \"write\",\n  \"xor\",\n  \"year_month\",\n  \"zerofill\",\n];\n\nfunction quoteReserved(name: string): SQLExtensionValues {\n  const lower = name.toLowerCase();\n  const standard = POSTGRES_RESERVED_WORDS.includes(lower) ? `\"${name}\"` : name;\n  const mysql = MYSQL_RESERVED_WORDS.includes(lower) ? `\\`${name}\\`` : name;\n\n  return { postgres: standard, sqlite: standard, mysql: mysql };\n}\n\nexport class TableName {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly route: Route,\n  ) {}\n\n  create(name: string): TableName {\n    return new TableName(this.utils, this.route.create(name));\n  }\n\n  equal(t: TableName): boolean {\n    return this.route.string() === t.route.string();\n  }\n\n  value(): SQLExtensionValues {\n    return quoteReserved(this.utils.pascalCase(this.route.string()));\n  }\n}\n\nexport class ColumnName {\n  private readonly name: string;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    name: string,\n  ) {\n    this.name = `${name}`;\n  }\n\n  equal(c: ColumnName) {\n    return c.name === this.name;\n  }\n\n  value(): SQLExtensionValues {\n    return quoteReserved(this.utils.snakeCase(this.name));\n  }\n}\n","/**\n * Representation of a value or type definition for each supported\n * SQL extension. Every `SQLDatatype` is forced to declare how it is\n * exported in each one of them.\n */\nexport interface SQLExtensionValues {\n  postgres: string;\n  sqlite: string;\n  mysql: string;\n}\n\nfunction same(value: string): SQLExtensionValues {\n  return { postgres: value, sqlite: value, mysql: value };\n}\n\nexport abstract class SQLDatatype {\n  abstract definition(): SQLExtensionValues;\n  abstract string(): SQLExtensionValues;\n  abstract refValue(): SQLDatatype;\n  abstract primitive(): string;\n  protected abstract greaterThan(other: SQLDatatype): boolean;\n  protected abstract similar(other: SQLDatatype): boolean;\n\n  isSimilar(other: SQLDatatype): boolean {\n    if (other instanceof SQLNull || this instanceof SQLNull) {\n      return true;\n    }\n\n    return other.similar(this);\n  }\n\n  greater(other: SQLDatatype): SQLDatatype {\n    if (other instanceof SQLNull) {\n      return this;\n    }\n\n    if (this instanceof SQLNull) {\n      return other;\n    }\n\n    if (this.greaterThan(other)) {\n      return this;\n    } else {\n      return other;\n    }\n  }\n}\n\nexport class SQLBoolean extends SQLDatatype {\n  constructor(private readonly value: boolean) {\n    super();\n  }\n\n  primitive(): string {\n    return \"boolean\";\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  definition(): SQLExtensionValues {\n    return same(\"BOOLEAN\");\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  string(): SQLExtensionValues {\n    return same(this.value ? \"TRUE\" : \"FALSE\");\n  }\n\n  similar(other: SQLDatatype): boolean {\n    return other instanceof SQLBoolean;\n  }\n}\n\nexport class SQLDate extends SQLDatatype {\n  constructor(private readonly value: Date) {\n    super();\n  }\n\n  primitive(): string {\n    return \"Date\";\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  definition(): SQLExtensionValues {\n    return {\n      postgres: \"TIMESTAMP\",\n      sqlite: \"TEXT\",\n      mysql: \"DATETIME(3)\",\n    };\n  }\n\n  string(): SQLExtensionValues {\n    const iso = this.value.toISOString();\n\n    return {\n      postgres: `'${iso}'`,\n      sqlite: `'${iso}'`,\n      // mysql does not accept the trailing 'Z' zulu marker in datetime literals\n      mysql: `'${iso.slice(0, -1)}'`,\n    };\n  }\n\n  similar(other: SQLDatatype): boolean {\n    return other instanceof SQLDate;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n}\n\nexport class SQLNull extends SQLDatatype {\n  constructor() {\n    super();\n  }\n\n  primitive(): string {\n    return \"null\";\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  definition(): SQLExtensionValues {\n    return same(\"TEXT\");\n  }\n\n  string(): SQLExtensionValues {\n    return same(\"NULL\");\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  similar(other: SQLDatatype): boolean {\n    return other instanceof SQLNull;\n  }\n}\n\nexport abstract class SQLNumber extends SQLDatatype {\n  protected value: number | bigint;\n\n  constructor(value: number | bigint) {\n    super();\n    this.value = value;\n  }\n\n  similar(other: SQLDatatype): boolean {\n    return other instanceof SQLNumber;\n  }\n}\n\nexport class SQLBigint extends SQLNumber {\n  constructor(value: bigint) {\n    super(value);\n  }\n\n  primitive(): string {\n    return \"bigint\";\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  definition(): SQLExtensionValues {\n    return {\n      postgres: \"BIGINT\",\n      sqlite: \"INTEGER\",\n      mysql: \"BIGINT\",\n    };\n  }\n\n  greaterThan(other: SQLDatatype): boolean {\n    if (other instanceof SQLNumber) {\n      return true;\n    }\n\n    return false;\n  }\n\n  string(): SQLExtensionValues {\n    return same(`${this.value}`);\n  }\n}\n\nexport class SQLInteger extends SQLNumber {\n  constructor(value: number) {\n    super(value);\n  }\n\n  primitive(): string {\n    return \"number\";\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n\n  definition(): SQLExtensionValues {\n    return same(\"INTEGER\");\n  }\n\n  string(): SQLExtensionValues {\n    return same(`${this.value}`);\n  }\n}\n\nexport class SQLFloat extends SQLNumber {\n  constructor(value: number) {\n    super(value);\n  }\n\n  primitive(): string {\n    return \"number\";\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  greaterThan(other: SQLDatatype): boolean {\n    if (other instanceof SQLInteger) {\n      return true;\n    }\n\n    return false;\n  }\n\n  definition(): SQLExtensionValues {\n    return {\n      postgres: \"FLOAT\",\n      sqlite: \"REAL\",\n      mysql: \"DOUBLE\",\n    };\n  }\n\n  string(): SQLExtensionValues {\n    // mysql DOUBLE cannot represent Infinity or NaN, so infinities are\n    // clamped to the DOUBLE range limits and NaN falls back to NULL\n    if (this.value === Infinity) {\n      return {\n        postgres: \"'+infinity'\",\n        sqlite: \"9e999\",\n        mysql: `${Number.MAX_VALUE}`,\n      };\n    } else if (this.value === -Infinity) {\n      return {\n        postgres: \"'-infinity'\",\n        sqlite: \"-9e999\",\n        mysql: `${-Number.MAX_VALUE}`,\n      };\n    } else if (Number.isNaN(this.value)) {\n      return {\n        postgres: `'NaN'`,\n        sqlite: `'NaN'`,\n        mysql: \"NULL\",\n      };\n    } else {\n      return same(`${this.value}`);\n    }\n  }\n}\n\nexport abstract class SQLString extends SQLDatatype {\n  constructor(readonly value: string) {\n    super();\n  }\n\n  similar(other: SQLDatatype): boolean {\n    return other instanceof SQLString;\n  }\n\n  primitive(): string {\n    return \"string\";\n  }\n\n  string(): SQLExtensionValues {\n    const escaped = this.value.replace(/'/g, \"''\");\n\n    return {\n      postgres: `'${escaped}'`,\n      sqlite: `'${escaped}'`,\n      // mysql treats backslash as an escape character inside string literals\n      mysql: `'${this.value.replace(/\\\\/g, \"\\\\\\\\\").replace(/'/g, \"''\")}'`,\n    };\n  }\n}\n\nexport class SQLText extends SQLString {\n  constructor(value: string) {\n    super(value);\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  definition(): SQLExtensionValues {\n    return same(\"TEXT\");\n  }\n\n  greaterThan(other: SQLDatatype): boolean {\n    if (other instanceof SQLString) {\n      return true;\n    }\n\n    return false;\n  }\n}\n\nexport class SQLVarchar extends SQLString {\n  constructor(value: string) {\n    super(value);\n  }\n\n  definition(): SQLExtensionValues {\n    return {\n      postgres: \"VARCHAR(255)\",\n      sqlite: \"TEXT\",\n      mysql: \"VARCHAR(255)\",\n    };\n  }\n\n  refValue(): SQLDatatype {\n    return this;\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n}\n\nexport class SQLSerial extends SQLNumber {\n  constructor(v: number) {\n    super(v);\n  }\n\n  primitive(): string {\n    return \"number\";\n  }\n\n  refValue(): SQLDatatype {\n    return new SQLInteger(Number(this.value));\n  }\n\n  string(): SQLExtensionValues {\n    return same(`${this.value}`);\n  }\n\n  definition(): SQLExtensionValues {\n    return {\n      postgres: \"SERIAL\",\n      sqlite: \"INTEGER\",\n      mysql: \"INT AUTO_INCREMENT\",\n    };\n  }\n\n  greaterThan(): boolean {\n    return false;\n  }\n}\n","import { ChacaError } from \"../../../../../../errors\";\nimport { ColumnName } from \"../generators/names\";\nimport { SQLDatatype, SQLExtensionValues, SQLNull } from \"../sql-types\";\nimport { SQLTable } from \"./table\";\n\ninterface Props {\n  isKey: boolean;\n  isNull: boolean;\n  isUnique: boolean;\n  name: ColumnName;\n  autoGenerated: boolean;\n}\n\nexport interface RefTable {\n  table: SQLTable;\n  column: SQLColumn;\n}\n\nexport class SQLColumn {\n  readonly autoGenerated: boolean;\n  _name: ColumnName;\n  private _datatype: SQLDatatype;\n  private _isKey: boolean;\n  private _isNull: boolean;\n  private _unique: boolean;\n  private _ref: RefTable | null;\n  private _disabled: boolean;\n\n  constructor({ autoGenerated, isKey, isNull, name, isUnique }: Props) {\n    this._name = name;\n    this._datatype = new SQLNull();\n    this._isKey = isKey;\n    this._isNull = isNull;\n    this._unique = isUnique;\n    this._ref = null;\n    this.autoGenerated = autoGenerated;\n    this._disabled = false;\n  }\n\n  setName(name: ColumnName) {\n    this._name = name;\n  }\n\n  setUnique(v: boolean) {\n    this._unique = v;\n  }\n\n  setDisabled() {\n    this._disabled = true;\n  }\n\n  disabled() {\n    return this._disabled;\n  }\n\n  isUnique() {\n    return this._unique;\n  }\n\n  isNull() {\n    return this._isNull;\n  }\n\n  isKey() {\n    return this._isKey;\n  }\n\n  datatype() {\n    return this._datatype;\n  }\n\n  setRef(ref: RefTable): void {\n    this._ref = ref;\n  }\n\n  ref() {\n    return this._ref;\n  }\n\n  unique() {\n    return this._unique;\n  }\n\n  equal(other: ColumnName) {\n    return this._name.equal(other);\n  }\n\n  setIsKey(v: boolean): void {\n    this._isKey = v;\n  }\n\n  setIsNull(value: boolean) {\n    this._isNull = value;\n  }\n\n  definition(): SQLExtensionValues {\n    return this._datatype.definition();\n  }\n\n  name() {\n    return this._name.value();\n  }\n\n  setDatatype(table: SQLTable, v: SQLDatatype): void {\n    if (v.isSimilar(this._datatype)) {\n      this._datatype = this._datatype.greater(v);\n\n      if (v instanceof SQLNull) {\n        this._isNull = true;\n      }\n    } else {\n      const route = `${table.name().postgres}.${this.name().postgres}`;\n      const type1 = v.primitive();\n      const type2 = this._datatype.primitive();\n\n      throw new ChacaError(\n        `The values for column '${route}' exist as values of type ${type1} and ${type2}. The data must be uniform`,\n      );\n    }\n  }\n\n  similar(other: SQLColumn): boolean {\n    return other._datatype.isSimilar(this._datatype);\n  }\n}\n","import { SQLDatatype } from \"../sql-types\";\nimport { SQLColumn } from \"./column\";\nimport { SQLTable } from \"./table\";\n\ninterface Props {\n  column: SQLColumn;\n  value: SQLDatatype;\n}\n\nexport class RowColumn {\n  private readonly _column: SQLColumn;\n  private readonly _value: SQLDatatype;\n\n  constructor(table: SQLTable, { column, value }: Props) {\n    this._column = column;\n    this._value = value;\n\n    this._column.setDatatype(table, this._value);\n  }\n\n  column() {\n    return this._column;\n  }\n\n  refValue() {\n    return this._value.refValue();\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","import { ChacaUtils } from \"../../../../../utils\";\nimport { GenerateIds } from \"../../value-object/generate-ids\";\nimport { ColumnName, TableName } from \"../generators/names\";\nimport { SQLDatatype, SQLNull, SQLSerial } from \"../sql-types\";\nimport { SQLColumn } from \"./column\";\nimport { SQLRow } from \"./row\";\nimport { RowColumn } from \"./row-column\";\n\nexport class SQLTable {\n  _name: TableName;\n  readonly rows: SQLRow[];\n  readonly autoGenerated: boolean;\n  private _columns: SQLColumn[];\n  private readonly utils: ChacaUtils;\n\n  constructor(utils: ChacaUtils, name: TableName, autoGenerated: boolean) {\n    this.utils = utils;\n    this.rows = [];\n    this._name = name;\n    this.autoGenerated = autoGenerated;\n    this._columns = [];\n  }\n\n  setName(n: TableName) {\n    this._name = n;\n  }\n\n  notAutogeneratedColumns(): SQLColumn[] {\n    return this._columns.filter((c) => !c.autoGenerated);\n  }\n\n  columns() {\n    return this._columns;\n  }\n\n  keys(): SQLColumn[] {\n    return this._columns.filter((k) => k.isKey());\n  }\n\n  autogeneratedColumns() {\n    return this._columns.filter((c) => c.autoGenerated);\n  }\n\n  deleteAutogeneratedKeys() {\n    const autoGenerateds = this.autogeneratedColumns().filter((c) => c.isKey());\n    this._columns = this.notAutogeneratedColumns();\n\n    for (const row of this.rows) {\n      for (const auto of autoGenerateds) {\n        row.deleteColumn(auto);\n      }\n    }\n  }\n\n  deleteColumn(column: SQLColumn) {\n    this._columns = this._columns.filter((c) => c !== column);\n  }\n\n  get(column: SQLColumn, index: number): SQLDatatype {\n    const row = this.rows[index];\n    const found = row.columns().find((c) => c.column() === column);\n\n    if (found) {\n      return found.value();\n    } else {\n      return new SQLNull();\n    }\n  }\n\n  find(search: string): SQLColumn | null {\n    const name = new ColumnName(this.utils, search);\n    const found = this._columns\n      .filter((c) => !c.autoGenerated && !c.disabled())\n      .find((c) => c.equal(name));\n\n    return found ? found : null;\n  }\n\n  length() {\n    return this.rows.length;\n  }\n\n  equal(name: TableName): boolean {\n    return this._name.equal(name);\n  }\n\n  name() {\n    return this._name.value();\n  }\n\n  lastKeys(): RowColumn[] {\n    const lastRow = this.rows.at(-1);\n\n    if (lastRow) {\n      const keys = this._columns\n        .filter((c) => !c.disabled())\n        .filter((c) => c.isKey());\n\n      return lastRow.columns().filter((c) => keys.includes(c.column()));\n    }\n\n    return [];\n  }\n\n  addColumn(column: SQLColumn, auto: boolean): SQLColumn {\n    const found = this._columns\n      .filter((c) => {\n        return auto ? c.autoGenerated : !c.autoGenerated;\n      })\n      .find((c) => c.equal(column._name));\n\n    if (!found) {\n      this._columns.push(column);\n\n      return column;\n    } else {\n      return found;\n    }\n  }\n\n  addSerial(row: SQLRow, generateId: GenerateIds): SQLColumn {\n    // add serial column\n    const serialColumn = this.addColumn(\n      new SQLColumn({\n        isKey: true,\n        isNull: false,\n        autoGenerated: true,\n        name: new ColumnName(this.utils, \"id\"),\n        isUnique: true,\n      }),\n      true,\n    );\n\n    // add serial\n    const serial = new RowColumn(this, {\n      column: serialColumn,\n      value: new SQLSerial(this.length()),\n    });\n\n    row.add(serial);\n\n    if (!generateId.value()) {\n      serialColumn.setDisabled();\n    }\n\n    return serialColumn;\n  }\n\n  addRow(row: SQLRow) {\n    this.rows.push(row);\n  }\n\n  iterate(func: (values: SQLDatatype[]) => void): void {\n    for (const row of this.rows) {\n      const values = [] as SQLDatatype[];\n\n      for (const column of this._columns.filter((c) => !c.disabled())) {\n        const found = row.columns().find((c) => c.column() === column);\n\n        if (found) {\n          values.push(found.value());\n        } else {\n          values.push(new SQLNull());\n        }\n      }\n\n      func(values);\n    }\n  }\n}\n","import { ChacaUtils } from \"../../../../../utils\";\nimport { SQLColumn } from \"../table/column\";\nimport { SQLRow } from \"../table/row\";\nimport { RowColumn } from \"../table/row-column\";\nimport { SQLTable } from \"../table/table\";\nimport { ColumnName } from \"./names\";\n\ninterface Props {\n  parent: SQLTable;\n  nested: boolean;\n  table: SQLTable;\n  row: SQLRow;\n}\n\nexport class FillParentKeys {\n  constructor(private readonly utils: ChacaUtils) {}\n\n  execute({ parent, nested, table, row }: Props): void {\n    const keys = parent.lastKeys();\n    for (let i = 0; i < keys.length && nested; i++) {\n      const key = keys[i];\n\n      const name = new ColumnName(\n        this.utils,\n        `${parent.name().postgres}_${key.column().name().postgres}`,\n      );\n\n      const column = table.addColumn(\n        new SQLColumn({\n          isKey: false,\n          isNull: false,\n          name: name,\n          autoGenerated: false,\n          isUnique: false,\n        }),\n        false,\n      );\n\n      column.setRef({ table: parent, column: key.column() });\n\n      row.add(\n        new RowColumn(table, {\n          column: column,\n          value: key.refValue(),\n        }),\n      );\n    }\n  }\n}\n","export class Route {\n  private readonly route: string[];\n\n  constructor(init: string[]) {\n    this.route = init;\n  }\n\n  create(name: string): Route {\n    return new Route([...this.route, name]);\n  }\n\n  clone() {\n    return new Route(this.route);\n  }\n\n  string() {\n    return this.route.join(\".\");\n  }\n\n  name() {\n    return this.route.at(-1) as string;\n  }\n\n  parent(): Route {\n    return new Route(this.route.filter((_, i) => i !== this.route.length - 1));\n  }\n\n  static from(i: string): Route {\n    return new Route(i.split(\".\"));\n  }\n}\n","import { SQLDatatype } from \"../sql-types\";\nimport { SQLColumn } from \"./column\";\nimport { RowColumn } from \"./row-column\";\n\nexport class SQLRow {\n  private _columns: RowColumn[];\n\n  constructor() {\n    this._columns = [];\n  }\n\n  add(column: RowColumn) {\n    this._columns.push(column);\n  }\n\n  values(): SQLDatatype[] {\n    return this._columns.map((c) => c.value());\n  }\n\n  columns() {\n    return this._columns;\n  }\n\n  hasKey(...banned: SQLColumn[]): boolean {\n    return this._columns\n      .filter((c) => !c.column().disabled() && !banned.includes(c.column()))\n      .some((c) => c.column().isKey());\n  }\n\n  deleteColumn(column: SQLColumn) {\n    this._columns = this._columns.filter((c) => c.column() === column);\n  }\n}\n","import { ChacaError } from \"../../../../../../errors\";\nimport { ChacaUtils } from \"../../../../../utils\";\nimport { Datatype } from \"../../../../core/datatype\";\nimport { SkipInvalid } from \"../../../../core/skip-invalid\";\nimport { GenerateIds } from \"../../value-object/generate-ids\";\nimport {\n  SQLFloat,\n  SQLInteger,\n  SQLBigint,\n  SQLBoolean,\n  SQLDate,\n  SQLNull,\n  SQLText,\n  SQLVarchar,\n  SQLDatatype,\n} from \"../sql-types\";\nimport { SQLColumn } from \"../table/column\";\nimport { SQLRow } from \"../table/row\";\nimport { RowColumn } from \"../table/row-column\";\nimport { SQLTable } from \"../table/table\";\nimport { SQLTables } from \"../table/tables\";\nimport { FillParentKeys } from \"./fill-parent-keys\";\nimport { TablesFixer } from \"./fixer\";\nimport { ColumnName, TableName } from \"./names\";\nimport { Route } from \"./route\";\n\ninterface Props {\n  route: Route;\n  value: any;\n  parent: SQLTable;\n  current: { row: SQLRow } | null;\n  nested: boolean;\n}\n\nexport class ValueCreator {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly fixer: TablesFixer,\n    private readonly tables: SQLTables,\n    private readonly skipInvalid: SkipInvalid,\n    private readonly generateIds: GenerateIds,\n    private readonly fillParentKeys: FillParentKeys,\n  ) {}\n\n  execute({\n    route,\n    value,\n    current,\n    parent,\n    nested,\n  }: Props): SQLDatatype | null {\n    const type = Datatype.filter<SQLDatatype | null>(value, {\n      int(value) {\n        return new SQLInteger(value);\n      },\n      float(value) {\n        return new SQLFloat(value);\n      },\n      bigint(value) {\n        return new SQLBigint(value);\n      },\n      boolean(value) {\n        return new SQLBoolean(value);\n      },\n      date(value) {\n        return new SQLDate(value);\n      },\n      function: () => {\n        if (!this.skipInvalid.value()) {\n          throw new ChacaError(\n            `You can not export a function into a sql file.`,\n          );\n        }\n\n        return null;\n      },\n      null() {\n        return new SQLNull();\n      },\n      nan(value) {\n        return new SQLFloat(value);\n      },\n      symbol: () => {\n        if (!this.skipInvalid.value()) {\n          throw new ChacaError(`You can not export a Symbol into a sql file.`);\n        }\n\n        return null;\n      },\n      string(value) {\n        if (value.length < 255) {\n          return new SQLVarchar(value);\n        } else {\n          return new SQLText(value);\n        }\n      },\n      regexp(value) {\n        return new SQLText(String(value));\n      },\n      undefined() {\n        return new SQLNull();\n      },\n      object: (value) => {\n        if (current) {\n          for (const [key, data] of Object.entries(value)) {\n            const datatype = this.execute({\n              route: route.create(key),\n              current: null,\n              parent: parent,\n              value: data,\n              nested: true,\n            });\n\n            if (datatype) {\n              const columnName = new ColumnName(this.utils, key);\n\n              const column = parent.addColumn(\n                new SQLColumn({\n                  autoGenerated: false,\n                  isKey: this.fixer.isKey(parent._name, columnName),\n                  isNull: this.fixer.isNull(parent._name, columnName),\n                  name: columnName,\n                  isUnique: this.fixer.isUnique(parent._name, columnName),\n                }),\n                false,\n              );\n\n              current.row.add(\n                new RowColumn(parent, { column: column, value: datatype }),\n              );\n            }\n          }\n        } else {\n          const tableName = new TableName(this.utils, route.clone());\n          const objectTable = this.tables.search(tableName);\n\n          const row = new SQLRow();\n          objectTable.addRow(row);\n\n          const serial = objectTable.addSerial(row, this.generateIds);\n\n          for (const [key, data] of Object.entries(value)) {\n            const datatype = this.execute({\n              route: route.create(key),\n              parent: objectTable,\n              value: data,\n              current: null,\n              nested: true,\n            });\n\n            if (datatype) {\n              const columnName = new ColumnName(this.utils, key);\n\n              const column = objectTable.addColumn(\n                new SQLColumn({\n                  autoGenerated: false,\n                  isKey: this.fixer.isKey(objectTable._name, columnName),\n                  isNull: this.fixer.isNull(objectTable._name, columnName),\n                  name: columnName,\n                  isUnique: this.fixer.isUnique(objectTable._name, columnName),\n                }),\n                false,\n              );\n\n              row.add(\n                new RowColumn(objectTable, { column: column, value: datatype }),\n              );\n\n              if (column.isKey()) {\n                serial.setDisabled();\n              }\n            }\n          }\n\n          this.fillParentKeys.execute({\n            nested: nested,\n            parent: parent,\n            row: row,\n            table: objectTable,\n          });\n\n          if (row.hasKey(serial)) {\n            serial.setDisabled();\n          }\n\n          if (!row.hasKey()) {\n            throw new ChacaError(\n              `The table ${objectTable.name().postgres} must have at least 1 PRIMARY KEY`,\n            );\n          }\n        }\n\n        return null;\n      },\n      array: (value) => {\n        const tableName = new TableName(this.utils, route.clone());\n        const arrayTable = this.tables.add(\n          new SQLTable(this.utils, tableName, true),\n        );\n\n        for (const v of value) {\n          const row = new SQLRow();\n          arrayTable.addRow(row);\n\n          const serial = arrayTable.addSerial(row, this.generateIds);\n\n          const datatype = this.execute({\n            route: route.create(\"array\"),\n            parent: arrayTable,\n            value: v,\n            current: {\n              row: row,\n            },\n            nested: true,\n          });\n\n          if (datatype) {\n            const name = new ColumnName(this.utils, \"value\");\n\n            const column = arrayTable.addColumn(\n              new SQLColumn({\n                name: name,\n                autoGenerated: false,\n                isKey: false,\n                isNull: false,\n                isUnique: false,\n              }),\n              false,\n            );\n\n            row.add(\n              new RowColumn(arrayTable, { column: column, value: datatype }),\n            );\n          }\n\n          this.fillParentKeys.execute({\n            table: arrayTable,\n            nested: nested,\n            parent: parent,\n            row: row,\n          });\n\n          if (row.hasKey(serial)) {\n            serial.setDisabled();\n          }\n\n          if (!row.hasKey()) {\n            throw new ChacaError(\n              `The table ${arrayTable.name().postgres} must have at least 1 PRIMARY KEY`,\n            );\n          }\n        }\n\n        return null;\n      },\n    });\n\n    return type;\n  }\n}\n","import { ChacaUtils } from \"../../../../../utils\";\nimport { DeclarationOnly } from \"../../../../core/declaration-only\";\nimport { SkipInvalid } from \"../../../../core/skip-invalid\";\nimport { GenerateIds } from \"../../value-object/generate-ids\";\nimport { SQLTable } from \"../table/table\";\nimport { SQLTables } from \"../table/tables\";\nimport { FillParentKeys } from \"./fill-parent-keys\";\nimport { TablesFixer } from \"./fixer\";\nimport { TableName } from \"./names\";\nimport { Route } from \"./route\";\nimport { DataValidator } from \"./validator\";\nimport { ValueCreator } from \"./value-creator\";\n\nexport abstract class SQLExtensionGenerator {\n  abstract tables(tables: SQLTables): string;\n  abstract values(tables: SQLTables): string;\n}\n\ninterface BuildProps {\n  name: string;\n  data: any;\n  tables: SQLTables;\n  generateIds: boolean;\n}\n\nexport class SQLDataGenerator {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly generator: SQLExtensionGenerator,\n    private readonly validator: DataValidator,\n    private readonly fixer: TablesFixer,\n    private readonly skipInvalid: SkipInvalid,\n    private readonly declarationOnly: DeclarationOnly,\n    private readonly generateIds: GenerateIds,\n  ) {}\n\n  build({ name: iname, data, tables }: BuildProps) {\n    this.validator.execute(data);\n\n    const route = new Route([iname]);\n    const fillParentKeys = new FillParentKeys(this.utils);\n    const creator = new ValueCreator(\n      this.utils,\n      this.fixer,\n      tables,\n      this.skipInvalid,\n      this.generateIds,\n      fillParentKeys,\n    );\n\n    const table = new SQLTable(\n      this.utils,\n      new TableName(this.utils, route),\n      false,\n    );\n    tables.add(table);\n\n    // create data\n    for (const value of data) {\n      creator.execute({\n        route: route,\n        parent: table,\n        value: value,\n        current: null,\n        nested: false,\n      });\n    }\n  }\n\n  code(tables: SQLTables): string {\n    this.fixer.fixTableNames(tables);\n    this.fixer.fixColumnNames(tables);\n    this.fixer.fixRefFields(tables);\n\n    let code = ``;\n\n    code += this.generator.tables(tables);\n\n    if (!this.declarationOnly.value()) {\n      code += this.generator.values(tables);\n    }\n\n    return code;\n  }\n}\n","import { SpaceIndex } from \"../../../../core/space-index\";\nimport { SQLTables } from \"../table/tables\";\nimport { SQLExtensionGenerator } from \"./base\";\n\nexport class PostgreSQL extends SQLExtensionGenerator {\n  constructor(private readonly index: SpaceIndex) {\n    super();\n  }\n\n  values(tables: SQLTables): string {\n    let code = ``;\n\n    for (const table of tables.tables) {\n      const columns = table\n        .columns()\n        .filter((c) => !c.disabled())\n        .map((c) => c.name().postgres)\n        .join(\", \");\n\n      code += `INSERT INTO ${table.name().postgres} (${columns})\\n`;\n\n      code += `VALUES\\n`;\n\n      const values = [] as string[];\n\n      table.iterate((row) => {\n        this.index.push();\n\n        const v = row.map((v) => v.string().postgres).join(\", \");\n        const rowCode = this.index.create(`(${v})`);\n        values.push(rowCode);\n\n        this.index.reverse();\n      });\n\n      code += `${values.join(\",\\n\")};\\n\\n`;\n    }\n\n    return code;\n  }\n\n  tables(tables: SQLTables): string {\n    let code = ``;\n\n    for (const table of tables.tables) {\n      code += `CREATE TABLE ${table.name().postgres} (\\n`;\n\n      const columns = table\n        .columns()\n        .filter((c) => !c.disabled())\n        .map((column) => {\n          let code = ``;\n\n          this.index.push();\n\n          code += this.index.create(\n            `${column.name().postgres} ${column.definition().postgres}`,\n          );\n\n          if (column.isKey()) {\n            code += ` PRIMARY KEY`;\n          } else {\n            if (column.isUnique()) {\n              code += ` UNIQUE`;\n            }\n\n            if (!column.isNull()) {\n              code += ` NOT NULL`;\n            }\n          }\n\n          const ref = column.ref();\n          if (ref !== null) {\n            const table = ref.table.name().postgres;\n            const col = ref.column.name().postgres;\n\n            code += ` REFERENCES ${table}(${col})`;\n          }\n\n          this.index.reverse();\n\n          return code;\n        })\n        .join(\",\\n\");\n\n      code += `${columns}` + \"\\n\";\n\n      code += `);\\n\\n`;\n    }\n\n    return code;\n  }\n}\n","import { SpaceIndex } from \"../../../../core/space-index\";\nimport { SQLTables } from \"../table/tables\";\nimport { SQLExtensionGenerator } from \"./base\";\n\nexport class SQLite extends SQLExtensionGenerator {\n  constructor(private readonly index: SpaceIndex) {\n    super();\n  }\n\n  values(tables: SQLTables): string {\n    let code = ``;\n\n    for (const table of tables.tables) {\n      const columns = table\n        .columns()\n        .filter((c) => !c.disabled())\n        .map((c) => c.name().sqlite)\n        .join(\", \");\n\n      code += `INSERT INTO ${table.name().sqlite} (${columns})\\n`;\n\n      code += `VALUES\\n`;\n\n      const values = [] as string[];\n\n      table.iterate((row) => {\n        this.index.push();\n\n        const v = row.map((v) => v.string().sqlite).join(\", \");\n        const rowCode = this.index.create(`(${v})`);\n        values.push(rowCode);\n\n        this.index.reverse();\n      });\n\n      code += `${values.join(\",\\n\")};\\n\\n`;\n    }\n\n    return code;\n  }\n\n  tables(tables: SQLTables): string {\n    // sqlite does not enforce foreign keys unless the pragma is enabled\n    let code = `PRAGMA foreign_keys = ON;\\n\\n`;\n\n    for (const table of tables.tables) {\n      code += `CREATE TABLE ${table.name().sqlite} (\\n`;\n\n      const columns = table\n        .columns()\n        .filter((c) => !c.disabled())\n        .map((column) => {\n          let code = ``;\n\n          this.index.push();\n\n          code += this.index.create(\n            `${column.name().sqlite} ${column.definition().sqlite}`,\n          );\n\n          if (column.isKey()) {\n            code += ` PRIMARY KEY`;\n          } else {\n            if (column.isUnique()) {\n              code += ` UNIQUE`;\n            }\n\n            if (!column.isNull()) {\n              code += ` NOT NULL`;\n            }\n          }\n\n          const ref = column.ref();\n          if (ref !== null) {\n            const table = ref.table.name().sqlite;\n            const col = ref.column.name().sqlite;\n\n            code += ` REFERENCES ${table}(${col})`;\n          }\n\n          this.index.reverse();\n\n          return code;\n        })\n        .join(\",\\n\");\n\n      code += `${columns}` + \"\\n\";\n\n      code += `);\\n\\n`;\n    }\n\n    return code;\n  }\n}\n","import { SpaceIndex } from \"../../../../core/space-index\";\nimport { SQLTables } from \"../table/tables\";\nimport { SQLExtensionGenerator } from \"./base\";\n\nexport class MySQL extends SQLExtensionGenerator {\n  constructor(private readonly index: SpaceIndex) {\n    super();\n  }\n\n  values(tables: SQLTables): string {\n    let code = ``;\n\n    for (const table of tables.tables) {\n      const columns = table\n        .columns()\n        .filter((c) => !c.disabled())\n        .map((c) => c.name().mysql)\n        .join(\", \");\n\n      code += `INSERT INTO ${table.name().mysql} (${columns})\\n`;\n\n      code += `VALUES\\n`;\n\n      const values = [] as string[];\n\n      table.iterate((row) => {\n        this.index.push();\n\n        const v = row.map((v) => v.string().mysql).join(\", \");\n        const rowCode = this.index.create(`(${v})`);\n        values.push(rowCode);\n\n        this.index.reverse();\n      });\n\n      code += `${values.join(\",\\n\")};\\n\\n`;\n    }\n\n    return code;\n  }\n\n  tables(tables: SQLTables): string {\n    let code = ``;\n\n    for (const table of tables.tables) {\n      code += `CREATE TABLE ${table.name().mysql} (\\n`;\n\n      const activeColumns = table.columns().filter((c) => !c.disabled());\n\n      const lines = activeColumns.map((column) => {\n        let code = ``;\n\n        this.index.push();\n\n        code += this.index.create(\n          `${column.name().mysql} ${column.definition().mysql}`,\n        );\n\n        if (column.isKey()) {\n          code += ` PRIMARY KEY`;\n        } else {\n          if (column.isUnique()) {\n            code += ` UNIQUE`;\n          }\n\n          if (!column.isNull()) {\n            code += ` NOT NULL`;\n          }\n        }\n\n        this.index.reverse();\n\n        return code;\n      });\n\n      // innodb ignores inline column REFERENCES clauses, so foreign keys\n      // must be declared as table-level constraints\n      for (const column of activeColumns) {\n        const ref = column.ref();\n\n        if (ref !== null) {\n          this.index.push();\n\n          const table = ref.table.name().mysql;\n          const col = ref.column.name().mysql;\n\n          lines.push(\n            this.index.create(\n              `FOREIGN KEY (${column.name().mysql}) REFERENCES ${table}(${col})`,\n            ),\n          );\n\n          this.index.reverse();\n        }\n      }\n\n      code += `${lines.join(\",\\n\")}` + \"\\n\";\n\n      code += `);\\n\\n`;\n    }\n\n    return code;\n  }\n}\n","import { ChacaUtils } from \"../../../../../utils\";\nimport { TableName } from \"../generators/names\";\nimport { SQLTable } from \"./table\";\n\nexport class SQLTables {\n  readonly tables: SQLTable[];\n\n  constructor(private readonly utils: ChacaUtils) {\n    this.tables = [];\n  }\n\n  search(name: TableName): SQLTable {\n    const found = this.tables.find((t) => t.equal(name));\n\n    if (found) {\n      return found;\n    } else {\n      const newTable = new SQLTable(this.utils, name, true);\n      this.tables.push(newTable);\n\n      return newTable;\n    }\n  }\n\n  add(table: SQLTable): SQLTable {\n    const found = this.tables.find((t) => t.equal(table._name));\n\n    if (!found) {\n      this.tables.push(table);\n      return table;\n    } else {\n      return found;\n    }\n  }\n\n  find(search: TableName): SQLTable | null {\n    const found = this.tables.find((t) => t.equal(search));\n\n    return found ? found : null;\n  }\n}\n","import { ChacaError } from \"../../../../../../errors\";\n\nexport class DataValidator {\n  execute(data: any): void {\n    let valid = true;\n\n    if (Array.isArray(data)) {\n      for (const obj of data) {\n        if (!(typeof obj === \"object\" && obj !== null && !Array.isArray(obj))) {\n          valid = false;\n        }\n      }\n    } else {\n      valid = false;\n    }\n\n    if (!valid) {\n      throw new ChacaError(\n        `In the case of the 'postgresql' format, only an array of objects can be exported.`,\n      );\n    }\n  }\n}\n","import { DatasetResolver } from \"../../../../../dataset-resolver/dataset-resolver\";\nimport { SchemaResolver } from \"../../../../../schema-resolver/schema-resolver\";\n\ninterface Props {\n  resolver: DatasetResolver;\n}\n\nexport class TableOrganizer {\n  private schemas = [] as SchemaResolver[];\n\n  execute({ resolver }: Props): SchemaResolver[] {\n    for (const schema of resolver.getResolvers()) {\n      this.search(schema);\n    }\n\n    return this.schemas;\n  }\n\n  private search(resolver: SchemaResolver) {\n    const refs = resolver.getRefNodes();\n\n    for (const ref of refs) {\n      const r = ref.getSchemaRef() as SchemaResolver;\n\n      if (resolver !== r) {\n        this.search(r);\n      }\n    }\n\n    this.add(resolver);\n  }\n\n  private add(schema: SchemaResolver) {\n    if (!this.schemas.includes(schema)) {\n      this.schemas = [...this.schemas, schema];\n    }\n  }\n}\n","import { SQLColumn } from \"../table/column\";\nimport { SQLTable } from \"../table/table\";\nimport { SQLTables } from \"../table/tables\";\nimport { TableName } from \"./names\";\n\ninterface ColumnProps {\n  action(column: SQLColumn, table: SQLTable): void;\n  search: { table: TableName; column: string };\n}\n\ninterface TableProps {\n  action(table: SQLTable): void;\n  search: TableName;\n}\n\nexport class Searcher {\n  constructor(private readonly tables: SQLTables) {}\n\n  table({ action, search }: TableProps): void {\n    const table = this.tables.find(search);\n\n    if (table) {\n      action(table);\n    }\n  }\n\n  column({ search, action }: ColumnProps): void {\n    const table = this.tables.find(search.table);\n\n    if (table) {\n      const column = table.find(search.column);\n\n      if (column) {\n        action(column, table);\n      }\n    }\n  }\n}\n","import { ChacaUtils } from \"../../../../../utils\";\nimport { SQLTables } from \"../table/tables\";\nimport { ColumnName, TableName } from \"./names\";\nimport { Route } from \"./route\";\nimport { Searcher } from \"./searcher\";\n\nexport interface RefColumnParser {\n  column: string;\n  ref: string;\n}\n\ninterface Props {\n  refs: RefColumnParser[];\n  nulls: string[];\n  keys: string[];\n  uniques: string[];\n}\n\nexport class TablesFixer {\n  private readonly refs: RefColumnParser[];\n  private readonly nulls: string[];\n  private readonly keys: string[];\n  private readonly uniques: string[];\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    { keys, nulls, refs, uniques }: Props,\n  ) {\n    this.keys = keys;\n    this.refs = refs;\n    this.nulls = nulls;\n    this.uniques = uniques;\n  }\n\n  fixRefFields(tables: SQLTables): void {\n    const searcher = new Searcher(tables);\n\n    for (const ref of this.refs) {\n      const refRoute = Route.from(ref.ref);\n      const route = Route.from(ref.column);\n\n      const tableName = new TableName(this.utils, route.parent());\n      const refTableName = new TableName(this.utils, refRoute.parent());\n\n      searcher.column({\n        search: { table: refTableName, column: refRoute.name() },\n        action(refColumn, refTable) {\n          searcher.column({\n            search: { column: route.name(), table: tableName },\n            action(column) {\n              column.setRef({ column: refColumn, table: refTable });\n            },\n          });\n        },\n      });\n    }\n  }\n\n  fixColumnNames(tables: SQLTables): void {\n    for (const table of tables.tables) {\n      for (const column of table.columns().filter((c) => !c.disabled())) {\n        let stop = false;\n\n        while (!stop) {\n          const found = table\n            .columns()\n            .filter((c) => !c.disabled())\n            .find((c) => c !== column && c.equal(column._name));\n\n          if (found) {\n            const name = new ColumnName(\n              this.utils,\n              `${column.name().postgres}_1`,\n            );\n            column.setName(name);\n          } else {\n            stop = true;\n          }\n        }\n      }\n    }\n  }\n\n  fixTableNames(tables: SQLTables): void {\n    for (const table of tables.tables) {\n      let stop = false;\n\n      while (!stop) {\n        const found = tables.tables.find(\n          (t) => t !== table && t.equal(table._name),\n        );\n\n        if (found) {\n          const name = table._name.create(\"_1\");\n          table.setName(name);\n        } else {\n          stop = true;\n        }\n      }\n    }\n  }\n\n  isKey(table: TableName, name: ColumnName): boolean {\n    return this.keys.some((k) => {\n      const route = Route.from(k);\n\n      const n = new ColumnName(this.utils, route.name());\n      const t = new TableName(this.utils, route.parent());\n\n      return n.equal(name) && t.equal(table);\n    });\n  }\n\n  isUnique(table: TableName, name: ColumnName): boolean {\n    return this.uniques.some((k) => {\n      const route = Route.from(k);\n\n      const n = new ColumnName(this.utils, route.name());\n      const t = new TableName(this.utils, route.parent());\n\n      return n.equal(name) && t.equal(table);\n    });\n  }\n\n  isNull(table: TableName, name: ColumnName): boolean {\n    return this.nulls.some((k) => {\n      const route = Route.from(k);\n\n      const n = new ColumnName(this.utils, route.name());\n      const t = new TableName(this.utils, route.parent());\n\n      return n.equal(name) && t.equal(table);\n    });\n  }\n}\n","export const DEFAULT_SCHEMA_NAME = \"Schema\";\n","import { DEFAULT_SCHEMA_NAME } from \"../../../../schema/core/default-name\";\n\ninterface Props {\n  include: boolean;\n}\n\nexport class SchemaRouteBuilder {\n  private readonly include: boolean;\n\n  constructor({ include }: Props) {\n    this.include = include;\n  }\n\n  execute(route: string[]): string[] {\n    return route.map((r) => {\n      return this.build(r);\n    });\n  }\n\n  build(r: string): string {\n    if (this.include) {\n      const save = [DEFAULT_SCHEMA_NAME, ...r.split(\".\")];\n\n      return save.join(\".\");\n    }\n\n    return r;\n  }\n}\n","import { SchemaRouteBuilder } from \"./schema-route\";\n\nexport class Keys {\n  private readonly values: string[];\n\n  constructor(builder: SchemaRouteBuilder, v: string[]) {\n    this.values = builder.execute(v);\n  }\n\n  value(): string[] {\n    return this.values;\n  }\n}\n","import { SchemaRouteBuilder } from \"./schema-route\";\n\nexport class Nulls {\n  private readonly values: string[];\n\n  constructor(builder: SchemaRouteBuilder, v: string[]) {\n    this.values = builder.execute(v);\n  }\n\n  value(): string[] {\n    return this.values;\n  }\n}\n","import { RefColumnParser } from \"../core/generators/fixer\";\nimport { SchemaRouteBuilder } from \"./schema-route\";\n\nexport class Refs {\n  private readonly values: RefColumnParser[];\n\n  constructor(builder: SchemaRouteBuilder, v: RefColumnParser[]) {\n    this.values = v.map((r) => {\n      return { column: builder.build(r.column), ref: builder.build(r.ref) };\n    });\n  }\n\n  value() {\n    return this.values;\n  }\n}\n","import { SchemaRouteBuilder } from \"./schema-route\";\n\nexport class Uniques {\n  private readonly values: string[];\n\n  constructor(builder: SchemaRouteBuilder, v: string[]) {\n    this.values = builder.execute(v);\n  }\n\n  value(): string[] {\n    return this.values;\n  }\n}\n","export class GenerateIds {\n  private readonly _value: boolean;\n\n  constructor(v?: boolean) {\n    if (v === undefined) {\n      this._value = true;\n    } else {\n      this._value = Boolean(v);\n    }\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","import { ExportSQLFormat } from \"../../interfaces/export\";\nimport {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { PostgreSQL } from \"./core/generators/postgres\";\nimport { SQLite } from \"./core/generators/sqlite\";\nimport { MySQL } from \"./core/generators/mysql\";\nimport {\n  SQLDataGenerator,\n  SQLExtensionGenerator,\n} from \"./core/generators/base\";\nimport { SQLTables } from \"./core/table/tables\";\nimport { DataValidator } from \"./core/generators/validator\";\nimport { TableOrganizer } from \"./core/generators/organizer\";\nimport { RefColumnParser, TablesFixer } from \"./core/generators/fixer\";\nimport { ChacaUtils } from \"../../../utils\";\nimport {\n  DeclarationOnlyConfig,\n  IndentConfig,\n  SkipInvalidConfig,\n  ZipConfig,\n} from \"../params\";\nimport { SpaceIndex } from \"../../core/space-index\";\nimport { SkipInvalid } from \"../../core/skip-invalid\";\nimport { DeclarationOnly } from \"../../core/declaration-only\";\nimport { SchemaRouteBuilder } from \"./value-object/schema-route\";\nimport { Keys } from \"./value-object/keys\";\nimport { Nulls } from \"./value-object/nulls\";\nimport { Refs } from \"./value-object/refs\";\nimport { Uniques } from \"./value-object/uniques\";\nimport { DEFAULT_SCHEMA_NAME } from \"../../../schema/core/default-name\";\nimport { GenerateIds } from \"./value-object/generate-ids\";\n\nexport type SQLProps = ZipConfig &\n  IndentConfig &\n  SkipInvalidConfig &\n  DeclarationOnlyConfig & {\n    /** columns that will be converted to `PRIMARY KEYS` */\n    keys?: string[];\n    /** columns that will be converted to `UNIQUE` */\n    uniques?: string[];\n    /** columns that can accept null values */\n    nulls?: string[];\n    /** columns that will be converted to `FOREIGN KEYS` */\n    refs?: RefColumnParser[];\n    /** Generates a sequential id for tables that are created and for which no PRIMARY KEY is defined */\n    generateIds?: boolean;\n  };\n\nexport class SQLGenerator extends Generator {\n  private readonly indent: SpaceIndex;\n  private readonly skipInvalid: SkipInvalid;\n  private readonly declarationOnly: DeclarationOnly;\n  private readonly keys: string[];\n  private readonly uniques: string[];\n  private readonly nulls: string[];\n  private readonly refs: RefColumnParser[];\n  private readonly generateIds: GenerateIds;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly format: ExportSQLFormat,\n    config: SQLProps,\n  ) {\n    super({ ext: \"sql\", zip: config.zip });\n\n    this.indent = new SpaceIndex(config.indent);\n    this.skipInvalid = new SkipInvalid(config.skipInvalid);\n    this.declarationOnly = new DeclarationOnly(config.declarationOnly);\n    this.keys = config.keys ? config.keys : [];\n    this.nulls = config.nulls ? config.nulls : [];\n    this.refs = config.refs ? config.refs : [];\n    this.uniques = config.uniques ? config.uniques : [];\n    this.generateIds = new GenerateIds(config.generateIds);\n  }\n\n  async dumpRelational({\n    resolver,\n    filename,\n  }: DumpRelationalProps): Promise<DumpFile[]> {\n    const routeBuilder = new SchemaRouteBuilder({ include: false });\n    const fixer = new TablesFixer(this.utils, {\n      keys: [\n        ...resolver.getKeyNodes().map((n) => {\n          return n.getFieldRoute().string();\n        }),\n        ...new Keys(routeBuilder, this.keys).value(),\n      ],\n      nulls: [\n        ...resolver.getPossibleNullNodes().map((n) => {\n          return n.getFieldRoute().string();\n        }),\n        ...new Nulls(routeBuilder, this.nulls).value(),\n      ],\n      refs: [\n        ...resolver.getRefsNodes().map((n) => {\n          return {\n            column: n.getFieldRoute().string(),\n            ref: n.getRefFieldRoute().string(),\n          };\n        }),\n        ...new Refs(routeBuilder, this.refs).value(),\n      ],\n      uniques: new Uniques(routeBuilder, this.uniques).value(),\n    });\n    const allTables = new SQLTables(this.utils);\n    const organizer = new TableOrganizer();\n    const validator = new DataValidator();\n    const generator = new SQLDataGenerator(\n      this.utils,\n      this.extension(),\n      validator,\n      fixer,\n      this.skipInvalid,\n      this.declarationOnly,\n      this.generateIds,\n    );\n\n    const resolvers = organizer.execute({ resolver: resolver });\n\n    for (const r of resolvers) {\n      const tables = new SQLTables(this.utils);\n\n      generator.build({\n        name: r.getSchemaName(),\n        data: await r.resolve(),\n        tables: tables,\n        generateIds: false,\n      });\n\n      tables.tables.forEach((t) => allTables.add(t));\n    }\n\n    const code = generator.code(allTables);\n\n    return [{ filename: filename.value(), content: code }];\n  }\n\n  dump({ data, filename }: DumpProps): DumpFile[] {\n    const routeBuilder = new SchemaRouteBuilder({ include: true });\n    const fixer = new TablesFixer(this.utils, {\n      keys: new Keys(routeBuilder, this.keys).value(),\n      nulls: new Nulls(routeBuilder, this.nulls).value(),\n      refs: new Refs(routeBuilder, this.refs).value(),\n      uniques: new Uniques(routeBuilder, this.uniques).value(),\n    });\n\n    const tables = new SQLTables(this.utils);\n    const validator = new DataValidator();\n    const generator = new SQLDataGenerator(\n      this.utils,\n      this.extension(),\n      validator,\n      fixer,\n      this.skipInvalid,\n      this.declarationOnly,\n      this.generateIds,\n    );\n\n    generator.build({\n      name: DEFAULT_SCHEMA_NAME,\n      data: data,\n      tables: tables,\n      generateIds: false,\n    });\n\n    const code = generator.code(tables);\n\n    return [{ content: code, filename: filename.value() }];\n  }\n\n  private extension(): SQLExtensionGenerator {\n    if (this.format === \"sqlite\") {\n      return new SQLite(this.indent);\n    }\n\n    if (this.format === \"mysql\") {\n      return new MySQL(this.indent);\n    }\n\n    return new PostgreSQL(this.indent);\n  }\n}\n","import { Imports } from \"./import\";\nimport { PythonDatatype } from \"./type\";\n\nexport class UnionDatatypes {\n  readonly datatypes: PythonDatatype[];\n\n  constructor() {\n    this.datatypes = [];\n  }\n\n  setDatatype(dat: PythonDatatype) {\n    const exists = this.datatypes.some((d) => d.equal(dat));\n\n    if (!exists) {\n      this.datatypes.push(dat);\n    }\n  }\n\n  length(): number {\n    return this.datatypes.length;\n  }\n\n  declaration(imports: Imports): string {\n    if (this.datatypes.length === 1) {\n      const type = this.datatypes[0];\n\n      return `${type.declaration(imports)}`;\n    } else {\n      imports.add({ from: \"typing\", modules: [\"Union\"] });\n\n      const types = this.datatypes\n        .map((d) => d.declaration(imports))\n        .join(\", \");\n\n      return `Union[${types}]`;\n    }\n  }\n\n  equal(union: UnionDatatypes): boolean {\n    const [min, max] =\n      union.length() >= this.length() ? [this, union] : [union, this];\n\n    let equal = true;\n    for (const datatype of min.datatypes) {\n      const exist = max.datatypes.some((d) => d.equal(datatype));\n\n      if (!exist) {\n        equal = false;\n        break;\n      }\n    }\n\n    return equal;\n  }\n}\n","import { SpaceIndex } from \"../../../core/space-index\";\nimport { Imports } from \"./import\";\nimport { UnionDatatypes } from \"./union\";\nimport { SaveClassField, SavePythonClass } from \"./classes\";\n\nexport abstract class PythonDatatype {\n  abstract string(index: SpaceIndex, imports: Imports): string;\n  abstract declaration(imports: Imports): string;\n  abstract equal(other: PythonDatatype): boolean;\n}\n\nexport class PythonString extends PythonDatatype {\n  constructor(private readonly value: string) {\n    super();\n  }\n\n  string(): string {\n    return `${JSON.stringify(this.value)}`;\n  }\n\n  declaration(): string {\n    return \"str\";\n  }\n\n  equal(other: PythonDatatype): boolean {\n    return other instanceof PythonString;\n  }\n}\n\nexport class PythonFloat extends PythonDatatype {\n  constructor(private readonly value: number) {\n    super();\n  }\n\n  string(): string {\n    if (this.value === Infinity) {\n      return \"float('inf')\";\n    } else if (this.value === -Infinity) {\n      return \"float('-inf')\";\n    } else if (Number.isNaN(this.value)) {\n      return `float('nan')`;\n    }\n\n    return `${this.value}`;\n  }\n\n  declaration(): string {\n    return \"float\";\n  }\n\n  equal(other: PythonDatatype): boolean {\n    return other instanceof PythonFloat;\n  }\n}\n\nexport class PythonInt extends PythonDatatype {\n  constructor(private readonly value: number | bigint) {\n    super();\n  }\n\n  string(): string {\n    return `${this.value}`;\n  }\n\n  declaration(): string {\n    return \"int\";\n  }\n\n  equal(other: PythonDatatype): boolean {\n    return other instanceof PythonInt;\n  }\n}\n\nexport class PythonBoolean extends PythonDatatype {\n  constructor(private readonly value: boolean) {\n    super();\n  }\n\n  string(): string {\n    return this.value ? \"True\" : \"False\";\n  }\n\n  declaration(): string {\n    return \"bool\";\n  }\n\n  equal(other: PythonDatatype): boolean {\n    return other instanceof PythonBoolean;\n  }\n}\n\nexport class PythonNone extends PythonDatatype {\n  constructor() {\n    super();\n  }\n\n  string(): string {\n    return \"None\";\n  }\n\n  declaration() {\n    return \"None\";\n  }\n\n  equal(other: PythonDatatype): boolean {\n    return other instanceof PythonNone;\n  }\n}\n\nexport class PythonDate extends PythonDatatype {\n  constructor(private readonly value: Date) {\n    super();\n  }\n\n  string(_: SpaceIndex, imports: Imports): string {\n    imports.add({ from: \"datetime\", modules: [] });\n\n    return `datetime.datetime.fromisoformat(\"${this.value.toISOString()}\")`;\n  }\n\n  declaration(imports: Imports): string {\n    imports.add({ from: \"datetime\", modules: [] });\n\n    return \"datetime.datetime\";\n  }\n\n  equal(other: PythonDatatype): boolean {\n    return other instanceof PythonDate;\n  }\n}\n\nexport class PythonClass extends PythonDatatype {\n  readonly fields: PythonClassField[];\n  readonly save: SavePythonClass;\n\n  constructor(save: SavePythonClass) {\n    super();\n\n    this.fields = [];\n    this.save = save;\n  }\n\n  name() {\n    return this.save.name();\n  }\n\n  string(index: SpaceIndex, imports: Imports): string {\n    if (this.fields.length === 0) {\n      return `${this.name()}()`;\n    }\n\n    let code = `${this.name()}(\\n`;\n\n    index.push();\n\n    const fields = this.fields\n      .map((f) => index.create(`${f.name()}=${f.string(index, imports)}`))\n      .join(\",\\n\");\n\n    code += fields + \"\\n\";\n\n    index.reverse();\n\n    code += index.create(\")\");\n\n    return code;\n  }\n\n  equal(other: PythonDatatype): boolean {\n    if (other instanceof PythonClass) {\n      return true;\n    }\n\n    return false;\n  }\n\n  declaration(): string {\n    return this.name();\n  }\n\n  setFields(fields: PythonClassField[]): void {\n    for (const field of fields) {\n      this.fields.push(field);\n    }\n\n    this.save.setFields(fields);\n  }\n}\n\nexport class PythonArray extends PythonDatatype {\n  private readonly datatypes: UnionDatatypes;\n  private readonly values: PythonDatatype[];\n\n  constructor() {\n    super();\n\n    this.values = [];\n    this.datatypes = new UnionDatatypes();\n  }\n\n  setValue(d: PythonDatatype): void {\n    this.datatypes.setDatatype(d);\n    this.values.push(d);\n  }\n\n  declaration(imports: Imports): string {\n    imports.add({ from: \"typing\", modules: [\"List\"] });\n\n    const types = this.datatypes.declaration(imports);\n\n    return `List[${types}]`;\n  }\n\n  string(index: SpaceIndex, imports: Imports): string {\n    if (this.values.length === 0) {\n      return `[]`;\n    }\n\n    let code = `[\\n`;\n\n    index.push();\n\n    code +=\n      this.values\n        .map((d) => index.create(d.string(index, imports)))\n        .join(\",\\n\") + \"\\n\";\n\n    index.reverse();\n\n    code += index.create(\"]\");\n\n    return code;\n  }\n\n  equal(other: PythonDatatype): boolean {\n    if (other instanceof PythonArray) {\n      return other.datatypes.equal(this.datatypes);\n    }\n\n    return false;\n  }\n}\n\nexport class PythonRegExp extends PythonDatatype {\n  constructor(private readonly value: RegExp) {\n    super();\n  }\n\n  string(_: SpaceIndex, imports: Imports): string {\n    imports.add({ from: \"re\", modules: [] });\n\n    return `re.compile(r'${this.value.source}')`;\n  }\n\n  declaration(imports: Imports): string {\n    imports.add({ from: \"re\", modules: [] });\n\n    return \"re.Pattern\";\n  }\n\n  equal(other: PythonDatatype): boolean {\n    return other instanceof PythonRegExp;\n  }\n}\n\nexport class PythonClassField {\n  readonly save: SaveClassField;\n  readonly datatype: PythonDatatype;\n\n  constructor(save: SaveClassField, datatype: PythonDatatype) {\n    this.datatype = datatype;\n    this.save = save;\n  }\n\n  name(): string {\n    return this.save.name();\n  }\n\n  string(index: SpaceIndex, imports: Imports) {\n    return this.datatype.string(index, imports);\n  }\n\n  definition(imports: Imports): string {\n    return this.datatype.declaration(imports);\n  }\n}\n","import { SpaceIndex } from \"../../../core/space-index\";\nimport { Imports } from \"./import\";\nimport { PythonClassFieldName, PythonClassName } from \"./names\";\nimport { PythonClassField, PythonDatatype, PythonNone } from \"./type\";\nimport { UnionDatatypes } from \"./union\";\n\nexport class SaveClassField {\n  private _name: PythonClassFieldName;\n  readonly datatypes: UnionDatatypes;\n  private _optional: boolean;\n\n  constructor(name: PythonClassFieldName, datatype: PythonDatatype) {\n    this.datatypes = new UnionDatatypes();\n    this.datatypes.setDatatype(datatype);\n    this._name = name;\n    this._optional = false;\n  }\n\n  optional() {\n    return this._optional;\n  }\n\n  setDatatype(d: PythonDatatype): void {\n    if (d instanceof PythonNone) {\n      this._optional = true;\n    } else {\n      this.datatypes.setDatatype(d);\n    }\n  }\n\n  name() {\n    return this._name.string();\n  }\n\n  equal(other: SaveClassField): boolean {\n    return other._name.equal(this._name);\n  }\n\n  declaration(imports: Imports) {\n    imports.add({ from: \"typing\", modules: [\"TypedDict\"] });\n\n    return this.datatypes.declaration(imports);\n  }\n}\n\nexport class SavePythonClass {\n  private _name: PythonClassName;\n  readonly fields: SaveClassField[];\n\n  constructor(name: PythonClassName) {\n    this.fields = [];\n    this._name = name;\n  }\n\n  setFields(fields: PythonClassField[]) {\n    const founds = [] as SaveClassField[];\n\n    for (const field of fields) {\n      const found = this.fields.find((f) => f === field.save);\n\n      if (found) {\n        found.setDatatype(field.datatype);\n        founds.push(found);\n      }\n    }\n\n    for (const field of this.fields) {\n      if (!founds.includes(field)) {\n        field.setDatatype(new PythonNone());\n      }\n    }\n  }\n\n  equal(other: SavePythonClass): boolean {\n    return other._name.equal(this._name);\n  }\n\n  name() {\n    return this._name.string();\n  }\n\n  search(field: SaveClassField): SaveClassField {\n    const found = this.fields.find((f) => f.equal(field));\n\n    if (found) {\n      return found;\n    } else {\n      this.fields.push(field);\n      return field;\n    }\n  }\n\n  definition(index: SpaceIndex, imports: Imports): string {\n    imports.add({ from: \"typing\", modules: [\"TypedDict\"] });\n\n    let code = `class ${this.name()}(TypedDict):\\n`;\n\n    index.push();\n\n    code += this.fields\n      .map((f) => {\n        if (f.optional()) {\n          imports.add({ from: \"typing\", modules: [\"Optional\"] });\n\n          return index.create(\n            `${f.name()}: Optional[${f.datatypes.declaration(imports)}]`,\n          );\n        } else {\n          return index.create(\n            `${f.name()}: ${f.datatypes.declaration(imports)}`,\n          );\n        }\n      })\n      .join(\"\\n\");\n\n    index.reverse();\n\n    return code;\n  }\n}\n\nexport class PythonClasses {\n  private readonly classes: SavePythonClass[];\n\n  constructor() {\n    this.classes = [];\n  }\n\n  search(name: PythonClassName): SavePythonClass {\n    const create = new SavePythonClass(name);\n    const found = this.classes.find((c) => c.equal(create));\n\n    if (found) {\n      return found;\n    } else {\n      this.classes.push(create);\n      return create;\n    }\n  }\n\n  definition(index: SpaceIndex, imports: Imports): string {\n    let code = ``;\n\n    code += this.classes\n      .reverse()\n      .map((c) => {\n        return `${c.definition(index, imports)}\\n`;\n      })\n      .join(\"\\n\");\n\n    return code;\n  }\n}\n","export interface Import {\n  from: string;\n  modules: string[];\n}\n\nexport class Imports {\n  imports: Import[];\n\n  constructor() {\n    this.imports = [];\n  }\n\n  add(imp: Import): void {\n    const result = [] as Import[];\n\n    let found = false;\n    for (let i = 0; i < this.imports.length; i++) {\n      const save = this.imports[i];\n\n      if (save.from === imp.from) {\n        found = true;\n\n        const newModules = [...save.modules] as string[];\n\n        for (const module of imp.modules) {\n          const exist = newModules.includes(module);\n\n          if (!exist) {\n            newModules.push(module);\n          }\n        }\n\n        save.modules = newModules;\n      }\n\n      result.push(save);\n    }\n\n    if (!found) {\n      result.push(imp);\n    }\n\n    this.imports = result;\n  }\n\n  string(): string {\n    let code = ``;\n\n    this.imports.forEach((i) => {\n      if (i.modules.length > 0) {\n        code += `from ${i.from} import ${i.modules.join(\", \")}\\n`;\n      } else {\n        code += `import ${i.from}\\n`;\n      }\n    });\n\n    return code;\n  }\n}\n","export class Route {\n  private route: string[];\n\n  constructor(init: string[]) {\n    this.route = init;\n  }\n\n  create(r: string): Route {\n    return new Route([...this.route, r]);\n  }\n\n  string(): string {\n    return this.route.join(\".\");\n  }\n\n  clone() {\n    return new Route(this.route);\n  }\n\n  equal(other: Route): boolean {\n    return other.route.join(\".\") === this.route.join(\".\");\n  }\n}\n","import { ChacaUtils } from \"../../../../utils\";\nimport { Route } from \"./route\";\n\nconst PYTHON_RESERVED_WORDS = [\n  \"and\",\n  \"as\",\n  \"assert\",\n  \"async\",\n  \"await\",\n  \"break\",\n  \"class\",\n  \"continue\",\n  \"def\",\n  \"del\",\n  \"elif\",\n  \"else\",\n  \"except\",\n  \"finally\",\n  \"for\",\n  \"from\",\n  \"global\",\n  \"if\",\n  \"import\",\n  \"in\",\n  \"is\",\n  \"lambda\",\n  \"nonlocal\",\n  \"not\",\n  \"or\",\n  \"pass\",\n  \"raise\",\n  \"return\",\n  \"try\",\n  \"while\",\n  \"with\",\n  \"yield\",\n];\n\nexport class PythonClassName {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private route: Route,\n  ) {}\n\n  equal(other: PythonClassName): boolean {\n    return other.route.equal(this.route);\n  }\n\n  string() {\n    return this.utils.pascalCase(this.route.string());\n  }\n}\n\nexport class PythonClassFieldName {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private _name: string,\n  ) {}\n\n  equal(other: PythonClassFieldName): boolean {\n    return other._name === this._name;\n  }\n\n  string() {\n    const name = this.utils.snakeCase(this._name);\n\n    if (PYTHON_RESERVED_WORDS.includes(name)) {\n      return `${name}_`;\n    }\n\n    return name;\n  }\n}\n","import { ChacaError } from \"../../../../../errors\";\nimport { ChacaUtils } from \"../../../../utils\";\nimport { Datatype } from \"../../../core/datatype\";\nimport { SkipInvalid } from \"../../../core/skip-invalid\";\nimport { PythonClasses, SaveClassField } from \"./classes\";\nimport { PythonClassFieldName, PythonClassName } from \"./names\";\nimport { Route } from \"./route\";\nimport {\n  PythonArray,\n  PythonBoolean,\n  PythonDatatype,\n  PythonClass,\n  PythonClassField,\n  PythonDate,\n  PythonFloat,\n  PythonInt,\n  PythonNone,\n  PythonRegExp,\n  PythonString,\n} from \"./type\";\n\ninterface Props {\n  route: Route;\n  value: any;\n}\n\nexport class ValueCreator {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly classes: PythonClasses,\n    private readonly skipInvalid: SkipInvalid,\n  ) {}\n\n  execute({ route, value }: Props): PythonDatatype | null {\n    const type = Datatype.filter<PythonDatatype | null>(value, {\n      string(value) {\n        return new PythonString(value);\n      },\n      int(value) {\n        return new PythonInt(value);\n      },\n      float(value) {\n        return new PythonFloat(value);\n      },\n      nan(value) {\n        return new PythonFloat(value);\n      },\n      undefined() {\n        return new PythonNone();\n      },\n      boolean(value) {\n        return new PythonBoolean(value);\n      },\n      array: (value) => {\n        const array = new PythonArray();\n\n        for (const v of value) {\n          const datatype = this.execute({ route: route.clone(), value: v });\n\n          if (datatype) {\n            array.setValue(datatype);\n          }\n        }\n\n        return array;\n      },\n      null() {\n        return new PythonNone();\n      },\n      date(value) {\n        return new PythonDate(value);\n      },\n      regexp(value) {\n        return new PythonRegExp(value);\n      },\n      object: (value) => {\n        const classname = new PythonClassName(this.utils, route);\n        const save = this.classes.search(classname);\n\n        const object = new PythonClass(save);\n        const fields: PythonClassField[] = [];\n\n        for (const [key, data] of Object.entries(value)) {\n          const fieldname = new PythonClassFieldName(this.utils, key);\n\n          const datatype = this.execute({\n            route: route.create(key),\n            value: data,\n          });\n\n          if (datatype) {\n            const saveField = save.search(\n              new SaveClassField(fieldname, datatype),\n            );\n\n            const field = new PythonClassField(saveField, datatype);\n\n            fields.push(field);\n          }\n        }\n\n        object.setFields(fields);\n\n        return object;\n      },\n      bigint(value) {\n        return new PythonInt(value);\n      },\n      function: () => {\n        if (this.skipInvalid.value()) {\n          return null;\n        }\n\n        throw new ChacaError(\n          `You can not export a function into a python file.`,\n        );\n      },\n      symbol: () => {\n        if (this.skipInvalid.value()) {\n          return null;\n        }\n\n        throw new ChacaError(`You can not export a Symbol into a python file.`);\n      },\n    });\n\n    return type;\n  }\n}\n","import { ChacaUtils } from \"../../../../utils\";\nimport { DeclarationOnly } from \"../../../core/declaration-only\";\nimport { SkipInvalid } from \"../../../core/skip-invalid\";\nimport { SpaceIndex } from \"../../../core/space-index\";\nimport { PythonClasses } from \"./classes\";\nimport { Imports } from \"./import\";\nimport { Route } from \"./route\";\nimport { ValueCreator } from \"./value-creator\";\n\ninterface Props {\n  data: any;\n  name: string;\n}\n\nexport class PythonCodeCreator {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly skipInvalid: SkipInvalid,\n    private readonly indent: SpaceIndex,\n    private readonly declarationOnly: DeclarationOnly,\n  ) {}\n\n  execute({ data, name }: Props): string {\n    const imports = new Imports();\n    const classes = new PythonClasses();\n    const route = new Route([name]);\n    const creator = new ValueCreator(this.utils, classes, this.skipInvalid);\n\n    const datatype = creator.execute({ route: route, value: data });\n\n    const classesDef = classes.definition(this.indent, imports);\n\n    if (datatype) {\n      const declaration = datatype.declaration(imports);\n      const content = datatype.string(this.indent, imports);\n      const imp = imports.string();\n\n      let code = ``;\n\n      if (imp !== \"\") code += `${imports.string()}\\n`;\n\n      if (classesDef !== \"\") code += `${classesDef}\\n`;\n\n      if (!this.declarationOnly.value()) {\n        code += `data: ${declaration} = ${content}\\n`;\n      }\n\n      return code;\n    } else {\n      return ``;\n    }\n  }\n}\n","import {\n  DumpFile,\n  DumpProps,\n  DumpRelationalProps,\n  Generator,\n} from \"../generator/generator\";\nimport { PythonCodeCreator } from \"./core/creator\";\nimport { Filename } from \"../file-creator/filename\";\nimport { ChacaUtils } from \"../../../utils\";\nimport {\n  DeclarationOnlyConfig,\n  IndentConfig,\n  SeparateConfig,\n  SkipInvalidConfig,\n  ZipConfig,\n} from \"../params\";\nimport { SkipInvalid } from \"../../core/skip-invalid\";\nimport { SpaceIndex } from \"../../core/space-index\";\nimport { DeclarationOnly } from \"../../core/declaration-only\";\n\nexport type PythonProps = ZipConfig &\n  SeparateConfig &\n  IndentConfig &\n  SkipInvalidConfig &\n  DeclarationOnlyConfig;\n\nexport class PythonGenerator extends Generator {\n  private readonly separate: boolean;\n\n  private readonly creator: PythonCodeCreator;\n\n  constructor(utils: ChacaUtils, config: PythonProps) {\n    super({ ext: \"py\", zip: config.zip });\n\n    this.separate = Boolean(config.separate);\n\n    this.creator = new PythonCodeCreator(\n      utils,\n      new SkipInvalid(config.skipInvalid),\n      new SpaceIndex(config.indent),\n      new DeclarationOnly(config.declarationOnly),\n    );\n  }\n\n  dump({ filename, data }: DumpProps): DumpFile[] {\n    const code = this.creator.execute({\n      data: data,\n      name: filename.value(),\n    });\n\n    return [{ filename: filename.value(), content: code }];\n  }\n\n  async dumpRelational({\n    filename,\n    resolver,\n  }: DumpRelationalProps): Promise<DumpFile[]> {\n    if (this.separate) {\n      const result = [] as DumpFile[];\n\n      for (const r of resolver.getResolvers()) {\n        const code = this.creator.execute({\n          data: await r.resolve(),\n          name: r.getSchemaName(),\n        });\n        const filename = new Filename(r.getSchemaName());\n\n        result.push({ content: code, filename: filename.value() });\n      }\n\n      return result;\n    } else {\n      const code = this.creator.execute({\n        data: await resolver.resolve(),\n        name: filename.value(),\n      });\n\n      return [{ content: code, filename: filename.value() }];\n    }\n  }\n}\n","import { ChacaError } from \"../../../../errors\";\nimport { ChacaUtils } from \"../../../utils\";\nimport {\n  CsvGenerator,\n  Generator,\n  JavaGenerator,\n  JavascriptGenerator,\n  JsonGenerator,\n  PythonGenerator,\n  SQLGenerator,\n  TypescriptGenerator,\n  YamlGenerator,\n} from \"../../generators\";\nimport { ExportFormat } from \"../../interfaces/export\";\n\nexport class GeneratorFilter {\n  constructor(private readonly utils: ChacaUtils) {}\n\n  execute(format: ExportFormat): Generator {\n    let gen: Generator;\n\n    if (format === \"json\") {\n      gen = new JsonGenerator({});\n    } else if (format === \"javascript\") {\n      gen = new JavascriptGenerator(this.utils, {});\n    } else if (format === \"csv\") {\n      gen = new CsvGenerator({});\n    } else if (format === \"java\") {\n      gen = new JavaGenerator(this.utils, {});\n    } else if (format === \"typescript\") {\n      gen = new TypescriptGenerator(this.utils, {});\n    } else if (format === \"yaml\") {\n      gen = new YamlGenerator({});\n    } else if (\n      format === \"postgresql\" ||\n      format === \"sqlite\" ||\n      format === \"mysql\"\n    ) {\n      gen = new SQLGenerator(this.utils, format, {});\n    } else if (format === \"python\") {\n      gen = new PythonGenerator(this.utils, {});\n    }\n\n    // object config\n    else if (typeof format === \"object\" && format !== null) {\n      if (format.ext === \"json\") {\n        gen = new JsonGenerator(format);\n      } else if (format.ext === \"csv\") {\n        gen = new CsvGenerator(format);\n      } else if (format.ext === \"java\") {\n        gen = new JavaGenerator(this.utils, format);\n      } else if (format.ext === \"javascript\") {\n        gen = new JavascriptGenerator(this.utils, format);\n      } else if (\n        format.ext === \"postgresql\" ||\n        format.ext === \"sqlite\" ||\n        format.ext === \"mysql\"\n      ) {\n        gen = new SQLGenerator(this.utils, format.ext, format);\n      } else if (format.ext === \"python\") {\n        gen = new PythonGenerator(this.utils, format);\n      } else if (format.ext === \"typescript\") {\n        gen = new TypescriptGenerator(this.utils, format);\n      } else if (format.ext === \"yaml\") {\n        gen = new YamlGenerator(format);\n      } else {\n        throw new ChacaError(`Format '${format}' invalid for exportation`);\n      }\n    }\n\n    // else\n    else {\n      throw new ChacaError(`Format '${format}' invalid for exportation`);\n    }\n\n    return gen;\n  }\n}\n","import {\n  CsvFormatConfig,\n  ExportFormat,\n  JavaFormatConfig,\n  JavascriptFormatConfig,\n  JsonFormatConfig,\n  PostgresqlFormatConfig,\n  SqliteFormatConfig,\n  MysqlFormatConfig,\n  PythonFormatConfig,\n  TypescriptFormatConfig,\n  YamlFormatConfig,\n} from \"../interfaces/export\";\nimport { ChacaError } from \"../../../errors\";\n\nexport class FileFormat {\n  private _value: ExportFormat;\n\n  constructor(format?: ExportFormat) {\n    if (typeof format === \"string\") {\n      this._value = format;\n    } else if (typeof format === \"object\" && format !== null) {\n      if (format.ext === \"json\") {\n        this._value = this.validateJson(format);\n      } else if (format.ext === \"csv\") {\n        this._value = this.validateCsv(format);\n      } else if (format.ext === \"java\") {\n        this._value = this.validateJava(format);\n      } else if (format.ext === \"javascript\") {\n        this._value = this.validateJs(format);\n      } else if (format.ext === \"postgresql\") {\n        this._value = this.validatePostgresql(format);\n      } else if (format.ext === \"sqlite\") {\n        this._value = this.validateSqlite(format);\n      } else if (format.ext === \"mysql\") {\n        this._value = this.validateMysql(format);\n      } else if (format.ext === \"python\") {\n        this._value = this.validatePython(format);\n      } else if (format.ext === \"typescript\") {\n        this._value = this.validateTs(format);\n      } else if (format.ext === \"yaml\") {\n        this._value = this.validateYaml(format);\n      } else {\n        throw new ChacaError(`Invalid format for exportation`);\n      }\n    } else {\n      throw new ChacaError(`Invalid format for exportation`);\n    }\n\n    this._value = format;\n  }\n\n  private validateYaml(format: YamlFormatConfig): YamlFormatConfig {\n    const config: YamlFormatConfig = { ext: \"yaml\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validateTs(format: TypescriptFormatConfig): TypescriptFormatConfig {\n    const config: TypescriptFormatConfig = { ext: \"typescript\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validatePython(format: PythonFormatConfig): PythonFormatConfig {\n    const config: PythonFormatConfig = { ext: \"python\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validatePostgresql(\n    format: PostgresqlFormatConfig,\n  ): PostgresqlFormatConfig {\n    const config: PostgresqlFormatConfig = { ext: \"postgresql\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validateSqlite(format: SqliteFormatConfig): SqliteFormatConfig {\n    const config: SqliteFormatConfig = { ext: \"sqlite\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validateMysql(format: MysqlFormatConfig): MysqlFormatConfig {\n    const config: MysqlFormatConfig = { ext: \"mysql\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validateJs(format: JavascriptFormatConfig): JavascriptFormatConfig {\n    const config: JavascriptFormatConfig = { ext: \"javascript\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validateCsv(format: CsvFormatConfig): CsvFormatConfig {\n    const config: CsvFormatConfig = { ext: \"csv\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validateJson(format: JsonFormatConfig): JsonFormatConfig {\n    const config: JsonFormatConfig = {\n      ext: \"json\",\n    };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.separate = Boolean(format.separate);\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  private validateJava(format: JavaFormatConfig): JavaFormatConfig {\n    const config: JavaFormatConfig = { ext: \"java\" };\n\n    if (typeof format === \"object\" && format !== null) {\n      config.zip = Boolean(format.zip);\n    }\n\n    return config;\n  }\n\n  public value() {\n    return this._value;\n  }\n}\n","import { ChacaError } from \"../../../errors\";\n\nexport class FileName {\n  private _value: string;\n\n  constructor(name?: string) {\n    if (typeof name !== \"string\" || name.trim() === \"\") {\n      throw new ChacaError(\"A file name is necesary to export your data\");\n    }\n\n    this._value = name;\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","export class Verbose {\n  private _value = false;\n\n  constructor(verbose?: boolean) {\n    if (typeof verbose === \"boolean\") {\n      this._value = verbose;\n    }\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","export class ExtensionFilename {\n  private readonly _value: string;\n\n  constructor(name: string, ext: string) {\n    this._value = `${name}.${ext}`;\n  }\n\n  value() {\n    return this._value;\n  }\n}\n","import { DatatypeModule } from \"../../../../modules/datatype\";\nimport { DatasetSchema } from \"../../../dataset-resolver/interfaces/dataset-schema\";\nimport { DatasetResolver } from \"../../../dataset-resolver/dataset-resolver\";\nimport { ChacaUtils } from \"../../../utils\";\nimport { Filename } from \"../../generators/file-creator/filename\";\nimport { DumpFile } from \"../../generators/generator/generator\";\nimport { DumpConfig } from \"../../interfaces/export\";\nimport { FileFormat } from \"../../value-object/format\";\nimport { FileName } from \"../../value-object/name\";\nimport { Verbose } from \"../../value-object/verbose\";\nimport { GeneratorFilter } from \"../generator-filter/generator-filter\";\nimport { ExtensionFilename } from \"./value-object/filename\";\n\nexport class DumpResolver {\n  private readonly format: FileFormat;\n  private readonly filename: FileName;\n  private readonly verbose: Verbose;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    private readonly filter: GeneratorFilter,\n    config: DumpConfig,\n  ) {\n    this.format = new FileFormat(config.format);\n    this.filename = new FileName(config.filename);\n    this.verbose = new Verbose(config.verbose);\n  }\n\n  data(data: any): DumpFile[] {\n    const generator = this.filter.execute(this.format.value());\n\n    const result = generator.dump({\n      data: data,\n      filename: new Filename(this.filename.value()),\n    });\n\n    return result.map((r) => {\n      return {\n        content: r.content,\n        filename: new ExtensionFilename(r.filename, generator.ext).value(),\n      };\n    });\n  }\n\n  async relational(schemas: DatasetSchema[]): Promise<DumpFile[]> {\n    const generator = this.filter.execute(this.format.value());\n\n    const resolver = new DatasetResolver(this.utils, this.datatypeModule, {\n      schemas: schemas,\n      verbose: this.verbose.value(),\n    });\n\n    const result = await generator.dumpRelational({\n      resolver: resolver,\n      filename: new Filename(this.filename.value()),\n    });\n\n    return result.map((r) => {\n      return {\n        content: r.content,\n        filename: new ExtensionFilename(r.filename, generator.ext).value(),\n      };\n    });\n  }\n}\n\nexport type { DumpFile, DumpConfig };\n","import { ChacaError } from \"../../../../errors\";\nimport { FileWriter } from \"../file-writer\";\n\n/**\n * `FileWriter` used in environments without a filesystem (browsers) or when a\n * writer was not injected. Serialization still works through `transform`/`dump`;\n * only writing files to disk is unavailable, so this writer fails loudly with a\n * message that points to the in-memory alternative.\n */\nexport class UnavailableFileWriter implements FileWriter {\n  write(): Promise<string[]> {\n    throw new ChacaError(\n      \"'export' writes files to the filesystem and is not available in this environment. \" +\n        \"Use 'transform' to get the serialized file contents in memory instead.\",\n    );\n  }\n}\n","import { ChacaError } from \"../../../errors\";\nimport {\n  DatasetSchemaCount,\n  DatasetSchemaCountFunction,\n} from \"../../dataset-resolver/interfaces/dataset-schema\";\nimport { DatasetStore } from \"../../dataset-store/dataset-store\";\n\ninterface Props {\n  store: DatasetStore;\n}\n\ninterface CreateProps {\n  value: DatasetSchemaCount;\n  singleSchema: boolean;\n  name: string;\n}\n\nexport abstract class SchemaCountExecutor {\n  static create({\n    value,\n    name,\n    singleSchema,\n  }: CreateProps): SchemaCountExecutor {\n    if (typeof value === \"number\") {\n      return new IntegerSchemaCount(value);\n    } else if (typeof value === \"function\") {\n      return new FunctionSchemaCount(value);\n    } else {\n      throw new ChacaError(\n        singleSchema\n          ? `You have to specify a number of documents to create the schema`\n          : `You have to specify a number of documents to create the schema '${name}'`,\n      );\n    }\n  }\n\n  abstract value(props: Props): Promise<number>;\n}\n\nexport class IntegerSchemaCount extends SchemaCountExecutor {\n  constructor(private readonly limit: number) {\n    super();\n  }\n\n  value(): Promise<number> {\n    return new Promise((resolve) => resolve(this.limit));\n  }\n}\n\nexport class FunctionSchemaCount extends SchemaCountExecutor {\n  constructor(private readonly func: DatasetSchemaCountFunction) {\n    super();\n  }\n\n  async value(props: Props): Promise<number> {\n    const value = await this.func({ store: props.store });\n\n    return value;\n  }\n}\n","import { ChacaError } from \"../../../errors\";\n\ninterface Props {\n  singleSchema: boolean;\n  name: string;\n}\n\nexport class SchemaCount {\n  private readonly singleSchema: boolean;\n  private readonly name: string;\n  private _value: number | null;\n  private readonly observers: Array<(v: number) => void>;\n\n  constructor({ singleSchema, name }: Props) {\n    this.singleSchema = singleSchema;\n    this.name = name;\n    this._value = null;\n    this.observers = [];\n  }\n\n  setValue(v: number) {\n    if (typeof v === \"number\") {\n      if (v >= 0) {\n        this._value = v;\n\n        for (const o of this.observers) {\n          o(v);\n        }\n      } else {\n        throw new ChacaError(\n          this.singleSchema\n            ? `The number of documents to generate for the schema cannot be a negative value`\n            : `The number of documents to generate for schema '${this.name}' cannot be a negative value (${v})`,\n        );\n      }\n    } else {\n      throw new ChacaError(\n        this.singleSchema\n          ? `You have to specify a number of documents to create the schema`\n          : `You have to specify a number of documents to create the schema '${this.name}'`,\n      );\n    }\n  }\n\n  value() {\n    return this._value;\n  }\n\n  register(fun: (v: number) => void): void {\n    this.observers.push(fun);\n  }\n}\n","﻿import { ExportResolver } from \"../export/resolvers/export/export\";\nimport { SchemaInput } from \"./interfaces/schema\";\nimport {\n  CliExportable,\n  DumpConfig,\n  FileConfig,\n} from \"../export/interfaces/export\";\nimport { SchemaResolver } from \"../schema-resolver/schema-resolver\";\nimport { ChacaUtils } from \"../utils\";\nimport { DatatypeModule } from \"../../modules/datatype\";\nimport { GeneratorFilter } from \"../export/resolvers/generator-filter/generator-filter\";\nimport { DumpResolver } from \"../export/resolvers/dump/dump\";\nimport { DumpFile } from \"../export/generators/generator/generator\";\nimport { FileWriter } from \"../export/writers/file-writer\";\nimport { UnavailableFileWriter } from \"../export/writers/unavailable/unavailable-file-writer\";\nimport { DEFAULT_SCHEMA_NAME } from \"./core/default-name\";\nimport { SchemaCountExecutor } from \"../schema-resolver/value-object/schema-count-executor\";\nimport { SchemaCount } from \"../schema-resolver/value-object/schema-count\";\n\nexport class Schema<K = any> implements CliExportable {\n  constructor(\n    readonly input: SchemaInput,\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    private readonly fileWriter: FileWriter = new UnavailableFileWriter(),\n  ) {}\n\n  /**\n   * Generates and serializes schema data as a specific file format\n   *\n   * @param documents number of documents that you want to create\n   * @param props.filename name for the file\n   * @param props.format file extension (`'java'` | `'csv'` | `'typescript'` | `'json'` | `'javascript'` | `'yaml'` | `'postgresql'` | `'sqlite'` | `'mysql'` | `'python'`)\n   */\n  async transform(documents: number, props: DumpConfig): Promise<DumpFile[]> {\n    const filter = new GeneratorFilter(this.utils);\n    const resolver = new DumpResolver(\n      this.utils,\n      this.datatypeModule,\n      filter,\n      props,\n    );\n\n    const data = await this.array(documents);\n\n    return resolver.data(data);\n  }\n\n  /**\n   * Generate and export the schema documents\n   * @param documents number of documents that you want to create\n   * @param config.filename file name\n   * @param config.location location of the file\n   * @param config.format file extension (`'java'` | `'csv'` | `'typescript'` | `'json'` | `'javascript'` | `'yaml'` | `'postgresql'` | `'sqlite'` | `'mysql'` | `'python'`)\n   *\n   * @returns Promise<string[]>\n   */\n  async export(documents: number, config: FileConfig): Promise<string[]> {\n    const filter = new GeneratorFilter(this.utils);\n    const resolver = new ExportResolver(\n      this.utils,\n      this.datatypeModule,\n      filter,\n      this.fileWriter,\n      config,\n    );\n\n    const routes = await resolver.relational([\n      { name: config.filename, documents: documents, schema: this },\n    ]);\n\n    return routes;\n  }\n\n  /**\n   * Adapts the CLI's uniform export call to the schema `export` signature.\n   * @internal\n   */\n  exportFromCli(documents: number, config: FileConfig): Promise<string[]> {\n    return this.export(documents, config);\n  }\n\n  /**\n   * Generate a schema document\n   */\n  async object(): Promise<K> {\n    const result = await this.array(1);\n\n    return result[0];\n  }\n\n  /**\n   * Generate an array of schema documents\n   * @param countDocuments number of documents that you want to create\n   */\n  array(countDocuments: number): Promise<K[]> {\n    const name = DEFAULT_SCHEMA_NAME;\n\n    const schemaToResolve = new SchemaResolver<K>(\n      this.utils,\n      this.datatypeModule,\n      {\n        name: name,\n        input: this.input,\n        count: new SchemaCount({\n          name: name,\n          singleSchema: true,\n        }),\n        countExecutor: SchemaCountExecutor.create({\n          value: countDocuments,\n          singleSchema: true,\n          name: name,\n        }),\n        schemaIndex: 0,\n        consoleVerbose: false,\n      },\n    );\n\n    return schemaToResolve.resolve();\n  }\n}\n","import { IsArrayConfig } from \"../../schema/interfaces/schema\";\n\nexport class FieldIsArray {\n  private readonly _value: IsArrayConfig;\n  private valid = true;\n\n  constructor(isArray?: IsArrayConfig) {\n    this._value = this.validate(isArray);\n  }\n\n  value() {\n    return this._value;\n  }\n\n  can(): boolean {\n    return (\n      (typeof this._value === \"number\" && this._value > 0) ||\n      typeof this._value === \"function\"\n    );\n  }\n\n  isValid(): boolean {\n    return this.valid;\n  }\n\n  private validate(isArray?: IsArrayConfig): IsArrayConfig {\n    let value: IsArrayConfig;\n\n    if (typeof isArray === \"number\") {\n      value = isArray;\n    } else if (typeof isArray === \"function\") {\n      value = isArray;\n    } else if (typeof isArray === \"object\" && isArray !== null) {\n      const min = typeof isArray.min === \"number\" ? isArray.min : undefined;\n      const max = typeof isArray.max === \"number\" ? isArray.max : undefined;\n\n      value = { min: min, max: max };\n    } else if (typeof isArray === \"undefined\") {\n      value = undefined;\n    } else {\n      value = undefined;\n      this.valid = false;\n    }\n\n    return value;\n  }\n}\n","import { PossibleNullConfig } from \"../../schema/interfaces/schema\";\n\nexport class FieldPossibleNull {\n  private _value: PossibleNullConfig;\n  private valid = true;\n\n  constructor(possible?: PossibleNullConfig) {\n    this._value = this.validate(possible);\n  }\n\n  value() {\n    return this._value;\n  }\n\n  isValid(): boolean {\n    return this.valid;\n  }\n\n  can(): boolean {\n    return (\n      (typeof this._value === \"number\" && this._value > 0) ||\n      this._value === true ||\n      typeof this._value === \"function\"\n    );\n  }\n\n  private validate(pos?: PossibleNullConfig): PossibleNullConfig {\n    let value: PossibleNullConfig;\n\n    if (typeof pos === \"number\") {\n      value = pos;\n    } else if (typeof pos === \"function\") {\n      value = pos;\n    } else if (typeof pos === \"boolean\") {\n      value = pos;\n    } else if (typeof pos === \"undefined\") {\n      value = undefined;\n    } else {\n      value = 0;\n      this.valid = false;\n    }\n\n    return value;\n  }\n}\n","import { ChacaError } from \"../../../errors\";\nimport { KeyField, RefField, SequenceField } from \"../../fields/core\";\nimport { KeyFieldResolverProps } from \"../../resolvers/core/key/key-resolver\";\nimport {\n  CustomFieldResolver,\n  KeyFieldResolver,\n  RefFieldResolver,\n  SequenceFieldResolver,\n} from \"../../resolvers/core\";\nimport { NodeRoute } from \"../../input-tree/core/node/value-object/route\";\n\nexport class InputKeyField {\n  private _resolver: KeyFieldResolver;\n\n  constructor(route: NodeRoute, schema: KeyField) {\n    let type: KeyFieldResolverProps;\n    if (schema.field instanceof RefField) {\n      type = new RefFieldResolver(schema.field.refField);\n    } else if (schema.field instanceof SequenceField) {\n      type = new SequenceFieldResolver(schema.field.config);\n    } else if (typeof schema.field === \"function\") {\n      type = new CustomFieldResolver(schema.field);\n    } else {\n      throw new ChacaError(\n        `The field '${route.string()}' has a incorrect type for key definition`,\n      );\n    }\n\n    this._resolver = new KeyFieldResolver(type);\n  }\n\n  resolver() {\n    return this._resolver;\n  }\n}\n","import { ChacaError } from \"../../../errors\";\nimport {\n  EnumField,\n  KeyField,\n  PickField,\n  ProbabilityField,\n  RefField,\n  SequenceField,\n  SequentialField,\n} from \"../../fields/core\";\nimport {\n  CustomFieldResolver,\n  EnumFieldResolver,\n  MixedFieldResolver,\n  PickFieldResolver,\n  ProbabilityFieldResolver,\n  RefFieldResolver,\n  SequenceFieldResolver,\n  SequentialFieldResolver,\n} from \"../../resolvers/core\";\nimport { IResolver } from \"../../resolvers/interfaces/resolvers\";\nimport { Schema } from \"../../schema/schema\";\nimport {\n  FieldObjectInput,\n  FieldTypes,\n  ResolverObject,\n  SchemaInput,\n} from \"../../schema/interfaces/schema\";\nimport { FieldIsArray } from \"./array\";\nimport { FieldPossibleNull } from \"./possible-null\";\nimport { InputKeyField } from \"./input-key\";\nimport { NodeRoute } from \"../../input-tree/core/node/value-object/route\";\n\ninterface Filter {\n  config?: FieldTypes;\n  route: NodeRoute;\n}\n\nexport type ISchemaToResolve = Record<string, ResolverObject>;\n\nexport class SchemaToResolve {\n  private _schema: ISchemaToResolve;\n\n  constructor(route: NodeRoute, obj: SchemaInput) {\n    this._schema = this.validate(route, obj);\n  }\n\n  value() {\n    return this._schema;\n  }\n\n  private filter({ config, route }: Filter): IResolver {\n    let returnResolver: IResolver;\n\n    if (config) {\n      if (typeof config === \"function\") {\n        returnResolver = new CustomFieldResolver(config);\n      } else {\n        if (config instanceof Schema) {\n          returnResolver = new MixedFieldResolver(config);\n        } else if (config instanceof PickField) {\n          returnResolver = new PickFieldResolver(config.values);\n        } else if (config instanceof RefField) {\n          returnResolver = new RefFieldResolver(config.refField);\n        } else if (config instanceof SequentialField) {\n          returnResolver = new SequentialFieldResolver(\n            config.values,\n            config.config,\n          );\n        } else if (config instanceof ProbabilityField) {\n          returnResolver = new ProbabilityFieldResolver(config.values);\n        } else if (config instanceof KeyField) {\n          returnResolver = new InputKeyField(route, config).resolver();\n        } else if (config instanceof SequenceField) {\n          returnResolver = new SequenceFieldResolver(config.config);\n        } else if (config instanceof EnumField) {\n          returnResolver = new EnumFieldResolver(config.values);\n        } else {\n          throw new ChacaError(`${config} is not a valid field type`);\n        }\n      }\n    } else {\n      throw new ChacaError(`${config} is not a valid field type`);\n    }\n\n    return returnResolver;\n  }\n\n  private validate(route: NodeRoute, obj: SchemaInput): ISchemaToResolve {\n    const schemaToSave = {} as ISchemaToResolve;\n\n    for (const [key, field] of Object.entries(obj)) {\n      const resolverObject = {\n        isArray: new FieldIsArray(),\n        possibleNull: new FieldPossibleNull(),\n      } as ResolverObject;\n\n      if (typeof field === \"object\" && field !== null && \"type\" in field) {\n        const fieldObject = field as FieldObjectInput;\n        const type = this.filter({ config: fieldObject.type, route: route });\n\n        resolverObject.type = type;\n\n        const configArray = new FieldIsArray(fieldObject.isArray);\n        const configNull = new FieldPossibleNull(fieldObject.possibleNull);\n\n        resolverObject.possibleNull = configNull;\n        resolverObject.isArray = configArray;\n      } else {\n        const type = this.filter({ config: field, route: route });\n        resolverObject.type = type;\n      }\n\n      schemaToSave[key] = resolverObject;\n    }\n\n    return schemaToSave;\n  }\n}\n","import { ChacaError } from \"../../errors\";\nimport { ResolverObject } from \"../schema/interfaces/schema\";\nimport {\n  CustomFieldResolver,\n  EnumFieldResolver,\n  KeyFieldResolver,\n  MixedFieldResolver,\n  ProbabilityFieldResolver,\n  RefFieldResolver,\n  SequenceFieldResolver,\n} from \"../resolvers/core\";\nimport { Schema } from \"../schema/schema\";\nimport {\n  InputTreeNode,\n  CustomValueNode,\n  EnumValueNode,\n  KeyValueNode,\n  MixedValueNode,\n  PickValueNode,\n  ProbabilityValueNode,\n  RefValueNode,\n  SequenceValueNode,\n  SequentialValueNode,\n} from \"./core\";\nimport { SequentialFieldResolver } from \"../resolvers/core/sequential/sequential-resolver\";\nimport { SchemaStore } from \"../schema-store/schema-store\";\nimport { PickFieldResolver } from \"../resolvers/core/pick/pick-resolver\";\nimport { ChacaUtils } from \"../utils\";\nimport { PossibleNullMapper } from \"./core/map/possible-null\";\nimport { NotNull } from \"./core/possible-null/possible-null\";\nimport { IsArrayMapper } from \"./core/map/is-array\";\nimport { DatatypeModule } from \"../../modules/datatype\";\nimport { NotArray } from \"./core/is-array/is-array\";\nimport { Count } from \"./core/pick/value-object/count\";\nimport { Values } from \"./core/pick/value-object/values\";\nimport { ChancesArray } from \"./core/probability/value-object/chances-array\";\nimport { Step } from \"./core/sequence/value-object/step\";\nimport { StartsWith } from \"./core/sequence/value-object/starts-with\";\nimport { ResolverValidator } from \"./core/validators/resolver\";\nimport { NodeRoute } from \"./core/node/value-object/route\";\nimport { SchemaToResolve } from \"../schema-resolver/value-object/schema-input\";\nimport { SchemaCount } from \"../schema-resolver/value-object/schema-count\";\n\ninterface Props {\n  name: string;\n  schemaToResolve: SchemaToResolve;\n  schemasStore: SchemaStore;\n  count: SchemaCount;\n}\n\ninterface CreateNodeProps {\n  actualRoute: NodeRoute;\n  object: ResolverObject;\n}\n\ninterface CreateSubNodesProps {\n  actualRoute: NodeRoute;\n  parentNode: MixedValueNode;\n  schema: Schema;\n}\n\nexport class ChacaInputTree {\n  private nodes: InputTreeNode[];\n  private schemasStore: SchemaStore;\n  private name: string;\n  private count: SchemaCount;\n\n  // ref nodes\n  private refToResolve: RefValueNode[];\n\n  private readonly nullMapper: PossibleNullMapper;\n  private readonly arrayMapper: IsArrayMapper;\n\n  private readonly resolverValidator: ResolverValidator;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    { name, schemaToResolve, schemasStore, count }: Props,\n  ) {\n    this.nullMapper = new PossibleNullMapper(this.utils);\n    this.arrayMapper = new IsArrayMapper(this.datatypeModule);\n\n    this.resolverValidator = new ResolverValidator();\n\n    this.schemasStore = schemasStore;\n    this.name = name;\n    this.count = count;\n\n    this.refToResolve = [];\n    this.nodes = [];\n\n    for (const [key, obj] of Object.entries<ResolverObject>(\n      schemaToResolve.value(),\n    )) {\n      const route = new NodeRoute([this.name, key]);\n\n      const newNode = this.createNodeByType({\n        actualRoute: route,\n        object: obj,\n      });\n\n      this.insertNode(newNode);\n    }\n  }\n\n  getRefNodes(): RefValueNode[] {\n    return this.refToResolve;\n  }\n\n  getFields() {\n    return this.nodes;\n  }\n\n  private createNodeByType({\n    actualRoute,\n    object,\n  }: CreateNodeProps): InputTreeNode {\n    let returnNode: InputTreeNode;\n\n    this.resolverValidator.execute({\n      route: actualRoute.string(),\n      config: object,\n    });\n\n    const possibleNull = this.nullMapper.execute({\n      route: actualRoute.string(),\n      value: object.possibleNull,\n      countDocs: this.count,\n    });\n\n    const isArray = this.arrayMapper.execute({\n      route: actualRoute.string(),\n      value: object.isArray,\n    });\n\n    if (object.type instanceof CustomFieldResolver) {\n      returnNode = new CustomValueNode(\n        actualRoute,\n        isArray,\n        possibleNull,\n        object.type.fun,\n      );\n    } else if (object.type instanceof PickFieldResolver) {\n      const values = new Values({\n        route: actualRoute.string(),\n        values: object.type.values.values,\n      });\n\n      const count = Count.create(this.datatypeModule, {\n        count: object.type.values.count,\n        options: values,\n        route: actualRoute.string(),\n      });\n\n      returnNode = new PickValueNode(\n        this.datatypeModule,\n        actualRoute,\n        isArray,\n        possibleNull,\n        count,\n        values,\n      );\n    } else if (object.type instanceof ProbabilityFieldResolver) {\n      const options = new ChancesArray(this.utils, {\n        options: object.type.values,\n        route: actualRoute.string(),\n      });\n\n      returnNode = new ProbabilityValueNode(\n        actualRoute,\n        isArray,\n        possibleNull,\n        options,\n      );\n    } else if (object.type instanceof EnumFieldResolver) {\n      returnNode = new EnumValueNode(\n        this.utils,\n        actualRoute,\n        isArray,\n        possibleNull,\n        object.type.array,\n      );\n    } else if (object.type instanceof MixedFieldResolver) {\n      const node = new MixedValueNode(actualRoute, isArray, possibleNull);\n\n      this.createSubNodes({\n        actualRoute: actualRoute,\n        parentNode: node,\n        schema: object.type.schema,\n      });\n\n      returnNode = node;\n    } else if (object.type instanceof RefFieldResolver) {\n      const newRefNode = new RefValueNode(\n        this.utils,\n        actualRoute,\n        isArray,\n        possibleNull,\n        object.type.refField,\n        this.schemasStore,\n      );\n\n      // añadir a lo ref fields del tree\n      this.refToResolve.push(newRefNode);\n\n      returnNode = newRefNode;\n    } else if (object.type instanceof SequentialFieldResolver) {\n      returnNode = new SequentialValueNode(\n        actualRoute,\n        possibleNull,\n        object.type.valuesArray,\n        object.type.config,\n      );\n    } else if (object.type instanceof SequenceFieldResolver) {\n      const step = new Step({\n        route: actualRoute.string(),\n        value: object.type.getConfig().step,\n      });\n\n      const startsWith = new StartsWith({\n        value: object.type.getConfig().startsWith,\n        route: actualRoute.string(),\n      });\n\n      returnNode = new SequenceValueNode(\n        actualRoute,\n        possibleNull,\n        startsWith,\n        step,\n      );\n    } else if (object.type instanceof KeyFieldResolver) {\n      if (object.type.type instanceof SequenceFieldResolver) {\n        const step = new Step({\n          route: actualRoute.string(),\n          value: object.type.type.getConfig().step,\n        });\n\n        const startsWith = new StartsWith({\n          value: object.type.type.getConfig().startsWith,\n          route: actualRoute.string(),\n        });\n\n        const schemaValueNode = new SequenceValueNode(\n          actualRoute,\n          new NotNull(),\n          startsWith,\n          step,\n        );\n\n        returnNode = new KeyValueNode(actualRoute, schemaValueNode);\n      } else if (object.type.type instanceof CustomFieldResolver) {\n        const customNode = new CustomValueNode(\n          actualRoute,\n          new NotArray(),\n          new NotNull(),\n          object.type.type.fun,\n        );\n\n        returnNode = new KeyValueNode(actualRoute, customNode);\n      } else {\n        const refValueNode = new RefValueNode(\n          this.utils,\n          actualRoute,\n          new NotArray(),\n          new NotNull(),\n          object.type.type.refField,\n          this.schemasStore,\n        );\n\n        // añadir a lo ref fields del tree\n        this.refToResolve.push(refValueNode);\n\n        returnNode = new KeyValueNode(actualRoute, refValueNode);\n      }\n    } else {\n      throw new ChacaError(\n        `The field '${actualRoute.string()}' have an incorrect resolver`,\n      );\n    }\n\n    return returnNode;\n  }\n\n  private createSubNodes({\n    actualRoute,\n    parentNode,\n    schema,\n  }: CreateSubNodesProps) {\n    const object = new SchemaToResolve(actualRoute, schema.input);\n\n    for (const [key, obj] of Object.entries<ResolverObject>(object.value())) {\n      const fieldRoute = actualRoute.create(key);\n\n      const newNode = this.createNodeByType({\n        actualRoute: fieldRoute,\n        object: obj,\n      });\n\n      parentNode.insertNode(newNode);\n    }\n  }\n\n  insertNode(node: InputTreeNode) {\n    this.nodes.push(node);\n  }\n\n  checkIfFieldExists(fieldTreeRoute: string[]): boolean {\n    if (this.name === fieldTreeRoute[0]) {\n      let exists = false;\n\n      for (let i = 0; i < this.nodes.length && !exists; i++) {\n        if (this.nodes[i].getName() === fieldTreeRoute[1]) {\n          const routeWithoutFirstElement = fieldTreeRoute.slice(2);\n          const found = this.nodes[i].checkIfFieldExists(\n            routeWithoutFirstElement,\n          );\n\n          if (!found) {\n            break;\n          } else {\n            exists = true;\n          }\n        }\n      }\n\n      return exists;\n    } else {\n      return false;\n    }\n  }\n\n  searchRefNodes(): void {\n    this.refToResolve.forEach((r) => r.searchSchemaRef());\n  }\n\n  getPossibleNullNodes(): InputTreeNode[] {\n    const nodes = [] as InputTreeNode[];\n\n    this.nodes.forEach((n) => {\n      if (n.isPossibleNull()) {\n        nodes.push(n);\n      }\n\n      if (n instanceof MixedValueNode) {\n        const subNodes = n.getPossibleNullNodes();\n        subNodes.forEach((s) => nodes.push(s));\n      }\n    });\n\n    return nodes;\n  }\n\n  getKeyFields(): KeyValueNode[] {\n    const keys = [] as KeyValueNode[];\n\n    this.nodes.forEach((n) => {\n      if (n instanceof KeyValueNode) {\n        keys.push(n);\n      } else if (n instanceof MixedValueNode) {\n        const subKeys = n.getKeyFields();\n        subKeys.forEach((k) => keys.push(k));\n      }\n    });\n\n    return keys;\n  }\n}\n","import { NodeRoute } from \"../input-tree/core/node/value-object/route\";\nimport { SearchedRefValue } from \"../input-tree/core/ref/interfaces/ref\";\nimport { GetStoreValueConfig } from \"../schema-store/interfaces/schema-store\";\nimport { DocumentTree } from \"./classes/document/document-tree\";\nimport { FieldNode } from \"./classes/node/field-node\";\n\ninterface GetRefValuesProps {\n  caller: NodeRoute;\n  search: NodeRoute;\n}\n\nexport class ChacaResultTree<D = any> {\n  constructor(readonly name: string) {}\n\n  private documents: DocumentTree<D>[] = [];\n\n  getDocumentByIndex(index: number): DocumentTree<D> {\n    return this.documents[index];\n  }\n\n  insertDocument(document: DocumentTree<D>) {\n    this.documents.push(document);\n  }\n\n  async getAllValuesByNodeRoute(\n    fieldTreeRoute: string[],\n    config: GetStoreValueConfig,\n  ): Promise<FieldNode[]> {\n    const whereFunction = config.where;\n\n    let filterDocuemnts: DocumentTree<D>[];\n\n    if (whereFunction) {\n      filterDocuemnts = [];\n\n      for (const d of this.documents) {\n        const isValid: boolean =\n          d !== config.omitDocument &&\n          (await whereFunction(d.getDocumentObject()));\n\n        if (isValid) {\n          filterDocuemnts.push(d);\n        }\n      }\n    } else {\n      filterDocuemnts = this.documents;\n    }\n\n    const allNodes = [] as FieldNode[];\n\n    filterDocuemnts.forEach((d) => {\n      const foundNode = d.getNodeByNodeRoute(fieldTreeRoute);\n      allNodes.push(foundNode);\n    });\n\n    return allNodes;\n  }\n\n  getAllRefValuesByNodeRoute({\n    search,\n    caller,\n  }: GetRefValuesProps): SearchedRefValue[] {\n    const allValues: SearchedRefValue[] = [];\n\n    this.documents.forEach((d) => {\n      // quitar el primer elemento de la ruta pues pertenece al nombre del schema al que pertenece\n      const found = d.getRefValueByNodeRoute({\n        search: search.pop(),\n        caller: caller,\n      });\n\n      allValues.push({ resultNode: found, document: d });\n    });\n\n    return allValues;\n  }\n\n  getDocumentsArray(): D[] {\n    return this.documents.map((d) => d.getDocumentObject());\n  }\n\n  getDocuments(): DocumentTree<D>[] {\n    return this.documents;\n  }\n}\n","import { ChacaError, CyclicAccessDataError } from \"../../errors\";\nimport { NodeRoute } from \"../input-tree/core/node/value-object/route\";\nimport { DocumentTree } from \"../result-tree/classes/document/document-tree\";\nimport { FieldNode } from \"../result-tree/classes/node/field-node\";\nimport { SchemaResolver } from \"../schema-resolver/schema-resolver\";\nimport { GetStoreValueConfig } from \"./interfaces/schema-store\";\n\ninterface ValueProps {\n  route: string;\n  config: GetStoreValueConfig;\n  caller: NodeRoute;\n}\n\nexport class SchemaStore {\n  constructor(private schemas: SchemaResolver[]) {}\n\n  private validateFieldToGet(route: string, caller: string): string[] {\n    if (typeof route !== \"string\") {\n      throw new ChacaError(\n        `From '${caller}'. The field to get must be an array separated by points`,\n      );\n    }\n\n    return route.split(\".\");\n  }\n\n  get(index: number) {\n    return this.schemas[index];\n  }\n\n  setInjectedSchemas(array: SchemaResolver[]): void {\n    this.schemas = array;\n  }\n\n  getSchemasResolvers() {\n    return this.schemas;\n  }\n\n  async value<D = any>({\n    caller,\n    config,\n    route,\n  }: ValueProps): Promise<Array<FieldNode | DocumentTree<D>>> {\n    const routeArray = this.validateFieldToGet(route, caller.string());\n\n    let foundSchema = false;\n    let values = [] as Array<FieldNode | DocumentTree<D>>;\n\n    for (let i = 0; i < this.schemas.length && !foundSchema; i++) {\n      const currentSchema = this.schemas[i];\n\n      if (currentSchema.getSchemaName() === routeArray[0]) {\n        if (currentSchema === config.omitResolver) {\n          throw new ChacaError(\n            `From '${caller.string()}'. You are trying to access the documents of the current schema, if you want this use the store.currentDocuments method`,\n          );\n        }\n\n        if (currentSchema.dangerCyclic()) {\n          throw new CyclicAccessDataError(\n            `From '${caller.string()}', you are trying to access '${currentSchema.getSchemaName()}' when this one is being created`,\n          );\n        }\n\n        await currentSchema.buildTrees(caller);\n\n        values = await currentSchema.getAllValuesByRoute(\n          routeArray.slice(1),\n          config,\n        );\n\n        foundSchema = true;\n      }\n    }\n\n    return values;\n  }\n}\n","import { InputTreeNode, MixedValueNode } from \"../../input-tree/core\";\nimport { MixedFieldNode } from \"../../result-tree/classes/mixed\";\nimport { FieldNode } from \"../../result-tree/classes/node/field-node\";\nimport { FillSolution } from \"./fill-solution\";\nimport { SolutionCreator } from \"./solution-creator\";\n\ninterface Props {\n  field: InputTreeNode;\n  indexDoc: number;\n  node: FieldNode;\n}\n\nexport class SubFieldsCreator {\n  constructor(\n    private readonly creator: SolutionCreator,\n    private readonly fillSolution: FillSolution,\n  ) {}\n\n  async execute({ field, indexDoc, node }: Props): Promise<void> {\n    if (field instanceof MixedValueNode && node instanceof MixedFieldNode) {\n      const subFields = field.getFields();\n\n      for (const subField of subFields) {\n        // filtrar el subField segun su tipo\n        const solution = await this.creator.execute({\n          field: subField,\n          indexDoc: indexDoc,\n        });\n\n        // insertar la solucion del field en la solucion del mixed field pasado por parametro\n        node.insertNode(solution);\n\n        await this.fillSolution.execute({\n          indexDoc: indexDoc,\n          input: subField,\n          solution: solution,\n        });\n      }\n    }\n  }\n}\n","import { ChacaError, NotExistRefFieldError } from \"../../../../errors\";\nimport { FieldNode, GetRefValueProps } from \"../node/field-node\";\nimport { SingleResultNode } from \"../single-result\";\n\ninterface Props {\n  name: string;\n  limit: number;\n}\n\nexport class ArrayResultNode extends FieldNode {\n  private nodes: FieldNode[] = [];\n  readonly limit: number;\n\n  constructor({ name, limit }: Props) {\n    super(name);\n    this.limit = limit;\n  }\n\n  value(): unknown[] {\n    return this.nodes.map((n) => n.value());\n  }\n\n  insertNode(n: FieldNode) {\n    this.nodes.push(n);\n  }\n\n  getNodeByRoute(fieldTreeRoute: string[]): FieldNode {\n    if (fieldTreeRoute.length === 0) {\n      return this;\n    } else {\n      throw new ChacaError(\n        `The field ${fieldTreeRoute.join(\".\")} do not exists`,\n      );\n    }\n  }\n\n  getRefValueByNodeRoute({\n    baseSearch,\n    caller,\n  }: GetRefValueProps): SingleResultNode {\n    throw new NotExistRefFieldError(caller.string(), baseSearch.string());\n  }\n}\n","import { SchemaResolver } from \"../schema-resolver\";\nimport { DatasetStore } from \"../../dataset-store/dataset-store\";\nimport { InputTreeNode } from \"../../input-tree/core\";\nimport { ChacaResultTree } from \"../../result-tree/chaca-result-tree\";\nimport { SchemaStore } from \"../../schema-store/schema-store\";\nimport { FieldNode } from \"../../result-tree/classes/node/field-node\";\nimport { ArrayResultNode } from \"../../result-tree/classes/array\";\nimport { SingleResultNode } from \"../../result-tree/classes/single-result\";\n\ninterface Props {\n  field: InputTreeNode;\n  indexDoc: number;\n}\n\nexport class SolutionCreator {\n  constructor(\n    private readonly schemasStore: SchemaStore,\n    private resultTree: ChacaResultTree,\n    private readonly resolver: SchemaResolver,\n  ) {}\n\n  async execute({ field, indexDoc }: Props): Promise<FieldNode> {\n    const currentDocument = this.resultTree.getDocumentByIndex(indexDoc);\n\n    const store = new DatasetStore({\n      schemasStore: this.schemasStore,\n      omitCurrentDocument: currentDocument,\n      omitResolver: this.resolver,\n      caller: field.getFieldRoute(),\n    });\n\n    const isNull = await field.isNull({\n      store: store,\n      currentDocument: currentDocument,\n      index: indexDoc,\n    });\n\n    if (!isNull) {\n      const limit = await field.getIsArray().execute({\n        currentDocument: currentDocument,\n        store: store,\n      });\n\n      // en caso de ser un array\n      if (limit !== undefined) {\n        const arrayNode = new ArrayResultNode({\n          name: field.getName(),\n          limit: limit,\n        });\n\n        return arrayNode;\n      }\n\n      // ifs not an array\n      else {\n        const node = await field.generate({\n          currentDocument: currentDocument,\n          indexDoc: indexDoc,\n          schemaIndex: this.resolver.index,\n          store: store,\n        });\n\n        return node;\n      }\n    } else {\n      return new SingleResultNode({\n        value: null,\n        name: field.getName(),\n      });\n    }\n  }\n}\n","import { InputTreeNode } from \"../../input-tree/core\";\nimport { ArrayResultNode } from \"../../result-tree/classes/array\";\nimport { FieldNode } from \"../../result-tree/classes/node/field-node\";\nimport { FillSolution } from \"./fill-solution\";\nimport { SolutionCreator } from \"./solution-creator\";\n\ninterface Props {\n  solution: FieldNode;\n  input: InputTreeNode;\n  indexDoc: number;\n}\n\nexport class ArrayCreator {\n  constructor(\n    private readonly creator: SolutionCreator,\n    private readonly fillSolution: FillSolution,\n  ) {}\n\n  async execute({ indexDoc, input, solution }: Props): Promise<void> {\n    if (solution instanceof ArrayResultNode) {\n      for (let i = 0; i < solution.limit; i++) {\n        const field = input.getNoArrayNode();\n\n        // resolver el field y guardarlo en un nodo\n        const s = await this.creator.execute({\n          field: field,\n          indexDoc: indexDoc,\n        });\n\n        // si el field se quedo sin valores posibles, las iteraciones restantes\n        // darian el mismo resultado vacio, por lo que se descarta este nodo y\n        // el array queda unicamente con los valores que si se pudieron generar\n        if (field.stopArrayFill()) {\n          break;\n        }\n\n        // insertar el field en el array de soluciones\n        solution.insertNode(s);\n\n        // fill solution\n        await this.fillSolution.execute({\n          indexDoc: indexDoc,\n          input: input,\n          solution: s,\n        });\n      }\n    }\n  }\n}\n","import { InputTreeNode } from \"../../input-tree/core\";\nimport { FieldNode } from \"../../result-tree/classes/node/field-node\";\nimport { ArrayCreator } from \"./array-creator\";\nimport { SubFieldsCreator } from \"./sub-fields-creator\";\n\ninterface Props {\n  solution: FieldNode;\n  indexDoc: number;\n  input: InputTreeNode;\n}\n\nexport class FillSolution {\n  subFieldsCreator: SubFieldsCreator;\n  arrayCreator: ArrayCreator;\n\n  async execute({ indexDoc, input, solution }: Props): Promise<void> {\n    await this.subFieldsCreator.execute({\n      field: input,\n      indexDoc: indexDoc,\n      node: solution,\n    });\n\n    // if is array\n    await this.arrayCreator.execute({\n      indexDoc: indexDoc,\n      input: input,\n      solution: solution,\n    });\n  }\n}\n","import { ChacaError, NotExistRefFieldError } from \"../../../../errors\";\nimport { NodeRoute } from \"../../../input-tree/core/node/value-object/route\";\nimport { FieldNode } from \"../node/field-node\";\nimport { SingleResultNode } from \"../single-result\";\n\ninterface GetRefValueByRouteProps {\n  caller: NodeRoute;\n  search: NodeRoute;\n}\n\nexport class DocumentTree<D = any> {\n  private nodes: FieldNode[] = [];\n\n  insertField(newField: FieldNode) {\n    this.nodes.push(newField);\n  }\n\n  getDocumentObject(): D {\n    let returnObject = {} as D;\n\n    for (const n of this.nodes) {\n      const nodeName = n.name;\n      const nodeValue = n.value();\n\n      returnObject = { ...returnObject, [nodeName]: nodeValue };\n    }\n\n    return returnObject;\n  }\n\n  getNodeByNodeRoute(fieldTreeRoute: string[]): FieldNode {\n    let returnValue = undefined;\n\n    for (let i = 0; i < this.nodes.length && returnValue === undefined; i++) {\n      if (this.nodes[i].name === fieldTreeRoute[0]) {\n        returnValue = this.nodes[i].getNodeByRoute(fieldTreeRoute.slice(1));\n      }\n    }\n\n    if (returnValue !== undefined) {\n      return returnValue;\n    } else {\n      throw new ChacaError(\n        `The field ${fieldTreeRoute.join(\".\")} do not exists`,\n      );\n    }\n  }\n\n  getRefValueByNodeRoute({\n    caller,\n    search,\n  }: GetRefValueByRouteProps): SingleResultNode {\n    let returnValue = undefined;\n\n    for (let i = 0; i < this.nodes.length && returnValue === undefined; i++) {\n      if (this.nodes[i].name === search.array()[0]) {\n        returnValue = this.nodes[i].getRefValueByRoute({\n          caller: caller,\n          search: search.pop(),\n          baseSearch: search,\n        });\n      }\n    }\n\n    if (returnValue) {\n      return returnValue;\n    } else {\n      throw new NotExistRefFieldError(caller.string(), search.string());\n    }\n  }\n}\n","import { ChacaError } from \"../../../errors\";\n\nexport class SchemaName {\n  private _value: string;\n\n  constructor(\n    name: string,\n    private readonly index: number,\n  ) {\n    this._value = this.validate(name);\n  }\n\n  value(): string {\n    return this._value;\n  }\n\n  private validate(name: string): string {\n    if (typeof name === \"string\" && name.trim() !== \"\") {\n      return name;\n    } else {\n      throw new ChacaError(\n        `You must provide a name for the schema on index ${this.index}`,\n      );\n    }\n  }\n}\n","import { ChacaError, CyclicAccessDataError } from \"../../errors\";\nimport { ChacaUtils } from \"../utils\";\nimport { SchemaInput } from \"../schema/interfaces/schema\";\nimport { ChacaInputTree } from \"../input-tree/chaca-input-tree\";\nimport { InputTreeNode, RefValueNode, KeyValueNode } from \"../input-tree/core\";\nimport { ChacaResultTree } from \"../result-tree/chaca-result-tree\";\nimport { SchemaStore } from \"../schema-store/schema-store\";\nimport { GetStoreValueConfig } from \"../schema-store/interfaces/schema-store\";\nimport { SearchedRefValue } from \"../input-tree/core/ref/interfaces/ref\";\nimport { DatatypeModule } from \"../../modules/datatype\";\nimport { SubFieldsCreator } from \"./core/sub-fields-creator\";\nimport { NodeRoute } from \"../input-tree/core/node/value-object/route\";\nimport { SolutionCreator } from \"./core/solution-creator\";\nimport { ArrayCreator } from \"./core/array-creator\";\nimport { FillSolution } from \"./core/fill-solution\";\nimport { SchemaToResolve } from \"./value-object/schema-input\";\nimport { DocumentTree } from \"../result-tree/classes/document/document-tree\";\nimport { FieldNode } from \"../result-tree/classes/node/field-node\";\nimport { SchemaName } from \"./value-object/schema-name\";\nimport { SchemaCountExecutor } from \"./value-object/schema-count-executor\";\nimport { DatasetStore } from \"../dataset-store/dataset-store\";\nimport { SchemaCount } from \"./value-object/schema-count\";\n\ninterface GetRefValueProps {\n  caller: NodeRoute;\n  search: NodeRoute;\n}\n\ninterface Props {\n  name: string;\n  input: SchemaInput;\n  countExecutor: SchemaCountExecutor;\n  count: SchemaCount;\n  schemaIndex: number;\n  consoleVerbose: boolean;\n}\n\nexport class SchemaResolver<K = any> {\n  private readonly subFieldsCreator: SubFieldsCreator;\n  private readonly solutionCreator: SolutionCreator;\n  private readonly arrayCreator: ArrayCreator;\n  private readonly fillSolution: FillSolution;\n\n  readonly index: number;\n  readonly route: NodeRoute;\n\n  private inputTree: ChacaInputTree | null = null;\n  private resultTree: ChacaResultTree<K>;\n  private name: string;\n  private countDocExecutor: SchemaCountExecutor;\n  private count: SchemaCount;\n  private input: SchemaToResolve;\n\n  private isBuilding = false;\n  private finishBuilding = false;\n\n  private schemasStore: SchemaStore;\n\n  private consoleVerbose = false;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    { consoleVerbose, count, countExecutor, schemaIndex, name, input }: Props,\n  ) {\n    this.index = schemaIndex;\n    this.name = new SchemaName(name, this.index).value();\n    this.schemasStore = new SchemaStore([]);\n    this.route = new NodeRoute([name]);\n    this.input = new SchemaToResolve(this.route, input);\n    this.consoleVerbose = consoleVerbose;\n\n    this.resultTree = new ChacaResultTree<K>(this.name);\n    this.countDocExecutor = countExecutor;\n    this.count = count;\n\n    this.fillSolution = new FillSolution();\n    this.solutionCreator = new SolutionCreator(\n      this.schemasStore,\n      this.resultTree,\n      this,\n    );\n    this.arrayCreator = new ArrayCreator(\n      this.solutionCreator,\n      this.fillSolution,\n    );\n    this.subFieldsCreator = new SubFieldsCreator(\n      this.solutionCreator,\n      this.fillSolution,\n    );\n\n    // set fill solution dependencies\n    this.fillSolution.arrayCreator = this.arrayCreator;\n    this.fillSolution.subFieldsCreator = this.subFieldsCreator;\n  }\n\n  async resolve(): Promise<K[]> {\n    this.buildInputTree();\n\n    await this.buildTrees(this.route);\n\n    return this.getDocumentsArray();\n  }\n\n  getKeyNodes(): KeyValueNode[] {\n    let keys = [] as KeyValueNode[];\n\n    if (this.inputTree) {\n      keys = this.inputTree.getKeyFields();\n    }\n\n    return keys;\n  }\n\n  getPossibleNullNodes(): InputTreeNode[] {\n    let nodes = [] as InputTreeNode[];\n\n    if (this.inputTree) {\n      nodes = this.inputTree.getPossibleNullNodes();\n    }\n\n    return nodes;\n  }\n\n  getRefNodes(): RefValueNode[] {\n    if (this.inputTree) {\n      return this.inputTree.getRefNodes();\n    } else {\n      return [];\n    }\n  }\n\n  getSchemaToResolve() {\n    return this.input;\n  }\n\n  buildInputTree(): void {\n    if (this.inputTree === null) {\n      this.inputTree = new ChacaInputTree(this.utils, this.datatypeModule, {\n        name: this.name,\n        schemaToResolve: this.input,\n        schemasStore: this.schemasStore,\n        count: this.count,\n      });\n    }\n  }\n\n  getSchemaName(): string {\n    return this.name;\n  }\n\n  isFinishBuilding() {\n    return this.finishBuilding;\n  }\n\n  isBuildingTrees(): boolean {\n    return this.isBuilding;\n  }\n\n  setInjectedSchemas(array: SchemaResolver[]): void {\n    this.schemasStore.setInjectedSchemas(array);\n  }\n\n  getInputTree() {\n    return this.inputTree;\n  }\n\n  getResultTree() {\n    return this.resultTree;\n  }\n\n  async getAllValuesByRoute(\n    fieldToGet: string[],\n    config: GetStoreValueConfig,\n  ): Promise<Array<DocumentTree<K> | FieldNode>> {\n    if (fieldToGet.length === 0) {\n      const whereFunction = config.where;\n\n      if (whereFunction) {\n        const filterDocuments = [];\n\n        for (const d of this.resultTree.getDocuments()) {\n          const condition =\n            d !== config.omitDocument &&\n            (await whereFunction(d.getDocumentObject()));\n\n          if (condition) {\n            filterDocuments.push(d);\n          }\n        }\n\n        return filterDocuments;\n      } else {\n        return this.resultTree.getDocuments();\n      }\n    } else {\n      const allNodes = await this.resultTree.getAllValuesByNodeRoute(\n        fieldToGet,\n        config,\n      );\n\n      return allNodes;\n    }\n  }\n\n  getAllRefValuesByNodeRoute({\n    caller,\n    search,\n  }: GetRefValueProps): SearchedRefValue[] {\n    return this.resultTree.getAllRefValuesByNodeRoute({\n      caller: caller,\n      search: search,\n    });\n  }\n\n  searchRefNodes() {\n    if (this.inputTree) {\n      this.inputTree.searchRefNodes();\n    }\n  }\n\n  dangerCyclic(): boolean {\n    if (!this.finishBuilding && this.isBuilding) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  async buildTrees(caller: NodeRoute): Promise<void> {\n    if (!this.finishBuilding) {\n      if (!this.isBuilding) {\n        if (this.inputTree) {\n          if (this.consoleVerbose) {\n            // eslint-disable-next-line no-console\n            console.log(`Creating ${this.name} data...`);\n          }\n\n          // indicar que se está construyendo los datos\n          this.isBuilding = true;\n\n          // calculate count\n          let count: number;\n          const save = this.count.value();\n\n          if (save === null) {\n            count = await this.countDocExecutor.value({\n              store: new DatasetStore({\n                caller: this.route,\n                omitResolver: this,\n                schemasStore: this.schemasStore,\n              }),\n            });\n\n            this.count.setValue(count);\n          } else {\n            count = save;\n          }\n\n          for (let indexDoc = 0; indexDoc < count; indexDoc++) {\n            const newDoc = new DocumentTree<K>();\n\n            // insertar el nuevo documento\n            this.resultTree.insertDocument(newDoc);\n\n            // recorrer los fields del dataset actual para crear cada uno en el documento que le pertenece\n            for (const datField of this.inputTree.getFields()) {\n              const solution = await this.solutionCreator.execute({\n                field: datField,\n                indexDoc: indexDoc,\n              });\n\n              // insertar la solucion del field en el documento\n              newDoc.insertField(solution);\n\n              await this.fillSolution.execute({\n                solution: solution,\n                input: datField,\n                indexDoc: indexDoc,\n              });\n            }\n          }\n\n          // indicar que se acabo de construir\n          this.isBuilding = false;\n\n          // indicar que ha acabado de crear los result trees\n          this.finishBuilding = true;\n        } else {\n          throw new ChacaError(\n            `It's imposible create the result trees for the schema ${this.name}, because the input tree was not created yet.`,\n          );\n        }\n      } else {\n        throw new CyclicAccessDataError(\n          `From ${caller.string()}, you are trying to access ${\n            this.name\n          } when this one is being created`,\n        );\n      }\n    }\n  }\n\n  getDocumentsArray(omitDocument?: DocumentTree<K>): K[] {\n    const result: K[] = [];\n\n    for (const d of this.getResultTree().getDocuments()) {\n      if (d !== omitDocument) {\n        result.push(d.getDocumentObject());\n      }\n    }\n\n    return result;\n  }\n}\n","import { ChacaError } from \"../../errors\";\nimport { DatatypeModule } from \"../../modules/datatype\";\nimport { InputTreeNode, KeyValueNode, RefValueNode } from \"../input-tree/core\";\nimport { SchemaResolver } from \"../schema-resolver/schema-resolver\";\nimport { SchemaCount } from \"../schema-resolver/value-object/schema-count\";\nimport { SchemaCountExecutor } from \"../schema-resolver/value-object/schema-count-executor\";\nimport { ChacaUtils } from \"../utils\";\nimport { DatasetSchema } from \"./interfaces/dataset-schema\";\n\ninterface Props {\n  schemas: DatasetSchema[];\n  verbose: boolean;\n}\n\nexport class DatasetResolver<K = any> {\n  private resolvers: SchemaResolver[] = [];\n  private readonly verbose: boolean;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    { schemas, verbose }: Props,\n  ) {\n    this.verbose = verbose;\n    this.createSchemaResolvers(schemas);\n    this.validateNotRepeatSchemaNames(schemas);\n    this.injectSchemas();\n    this.buildInputTrees();\n    this.buildRefFields();\n  }\n\n  getResolvers() {\n    return this.resolvers;\n  }\n\n  private validateNotRepeatSchemaNames(schemas: DatasetSchema[]): void {\n    for (let i = 0; i < schemas.length; i++) {\n      const notRepeat = schemas.filter(\n        (s) => s.name.trim() === schemas[i].name.trim(),\n      );\n\n      if (notRepeat.length > 1) {\n        throw new ChacaError(\n          `The name '${schemas[i].name}' is repeat. Your schemas must have different names`,\n        );\n      }\n    }\n  }\n\n  private buildRefFields() {\n    this.resolvers.forEach((r) => r.searchRefNodes());\n  }\n\n  private createSchemaResolvers(schemas: DatasetSchema[]): void {\n    this.resolvers = schemas.map((schema, schemaIndex) => {\n      if (typeof schema === \"object\" && schema !== null) {\n        return new SchemaResolver(this.utils, this.datatypeModule, {\n          name: schema.name,\n          input: schema.schema.input,\n          countExecutor: SchemaCountExecutor.create({\n            value: schema.documents,\n            name: schema.name,\n            singleSchema: false,\n          }),\n          count: new SchemaCount({ name: schema.name, singleSchema: false }),\n          schemaIndex: schemaIndex,\n          consoleVerbose: this.verbose,\n        });\n      } else {\n        const message = `You must provide a object with the schema configuration. Example: { name: 'User', schema: UserSchema, documents: 50 }`;\n\n        throw new ChacaError(message);\n      }\n    });\n  }\n\n  private injectSchemas(): void {\n    // inyectar los schema resolvers restantes a cada schema resolver\n    for (const resolver of this.resolvers) {\n      resolver.setInjectedSchemas(this.resolvers);\n    }\n  }\n\n  private buildInputTrees(): void {\n    this.resolvers.forEach((r) => r.buildInputTree());\n  }\n\n  async resolve(): Promise<K> {\n    let data = {} as K;\n\n    for (const r of this.resolvers) {\n      data = { ...data, [r.getSchemaName()]: await r.resolve() };\n    }\n\n    return data;\n  }\n\n  getRefsNodes() {\n    const nodes = [] as RefValueNode[];\n\n    this.resolvers.forEach((r) => {\n      nodes.push(...r.getRefNodes());\n    });\n\n    return nodes;\n  }\n\n  getPossibleNullNodes() {\n    const nodes = [] as InputTreeNode[];\n\n    this.resolvers.forEach((r) => {\n      nodes.push(...r.getPossibleNullNodes());\n    });\n\n    return nodes;\n  }\n\n  getKeyNodes() {\n    const nodes = [] as KeyValueNode[];\n\n    this.resolvers.forEach((r) => {\n      nodes.push(...r.getKeyNodes());\n    });\n\n    return nodes;\n  }\n}\n","import { ChacaError } from \"../../../errors\";\n\nexport class Location {\n  private _value: string;\n\n  constructor(location?: string) {\n    if (typeof location !== \"string\") {\n      throw new ChacaError(\"The file needs a location for exportation\");\n    }\n\n    this._value = location;\n  }\n\n  public value() {\n    return this._value;\n  }\n}\n","import { FileConfig } from \"../../interfaces/export\";\nimport { DatasetSchema } from \"../../../dataset-resolver/interfaces/dataset-schema\";\nimport { DatasetResolver } from \"../../../dataset-resolver/dataset-resolver\";\nimport { FileName } from \"../../value-object/name\";\nimport { Location } from \"../../value-object/location\";\nimport { FileFormat } from \"../../value-object/format\";\nimport { Verbose } from \"../../value-object/verbose\";\nimport { ChacaUtils } from \"../../../utils\";\nimport { DatatypeModule } from \"../../../../modules/datatype\";\nimport { GeneratorFilter } from \"../generator-filter/generator-filter\";\nimport { FileWriter } from \"../../writers/file-writer\";\nimport { Filename } from \"../../generators/file-creator/filename\";\n\nexport class ExportResolver {\n  private readonly format: FileFormat;\n  private readonly filename: FileName;\n  private readonly location: Location;\n  private readonly verbose: Verbose;\n\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    private readonly filter: GeneratorFilter,\n    private readonly writer: FileWriter,\n    config: FileConfig,\n  ) {\n    this.filename = new FileName(config.filename);\n    this.format = new FileFormat(config.format);\n    this.location = new Location(config.location);\n    this.verbose = new Verbose(config.verbose);\n  }\n\n  data(data: any): Promise<string[]> {\n    const gen = this.filter.execute(this.format.value());\n\n    const files = gen.dump({\n      data: data,\n      filename: new Filename(this.filename.value()),\n    });\n\n    return this.writer.write({\n      files: files,\n      ext: gen.ext,\n      zip: gen.zip,\n      location: this.location.value(),\n      filename: this.filename.value(),\n    });\n  }\n\n  async relational(schemas: DatasetSchema[]): Promise<string[]> {\n    const gen = this.filter.execute(this.format.value());\n\n    const resolver = new DatasetResolver(this.utils, this.datatypeModule, {\n      schemas: schemas,\n      verbose: this.verbose.value(),\n    });\n\n    const files = await gen.dumpRelational({\n      resolver: resolver,\n      filename: new Filename(this.filename.value()),\n    });\n\n    return this.writer.write({\n      files: files,\n      ext: gen.ext,\n      zip: gen.zip,\n      location: this.location.value(),\n      filename: this.filename.value(),\n    });\n  }\n}\n","﻿import { DatatypeModule } from \"../../modules/datatype\";\nimport { DatasetSchema } from \"../dataset-resolver/interfaces/dataset-schema\";\nimport { DatasetResolver } from \"../dataset-resolver/dataset-resolver\";\nimport { ExportResolver } from \"../export/resolvers/export/export\";\nimport {\n  CliExportable,\n  DumpConfig,\n  FileConfig,\n} from \"../export/interfaces/export\";\nimport { ChacaUtils } from \"../utils\";\nimport { GeneratorFilter } from \"../export/resolvers/generator-filter/generator-filter\";\nimport { DumpResolver } from \"../export/resolvers/dump/dump\";\nimport { DumpFile } from \"../export/generators/generator/generator\";\nimport { FileWriter } from \"../export/writers/file-writer\";\nimport { UnavailableFileWriter } from \"../export/writers/unavailable/unavailable-file-writer\";\n\nexport class Dataset<K = any> implements CliExportable {\n  constructor(\n    private readonly schemas: DatasetSchema[],\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    private readonly fileWriter: FileWriter = new UnavailableFileWriter(),\n  ) {}\n\n  /**\n   * Generates and serializes dataset data as a specific file format\n   *\n   * @param props.filename name for the file\n   * @param props.format file extension (`'java'` | `'csv'` | `'typescript'` | `'json'` | `'javascript'` | `'yaml'` | `'postgresql'` | `'sqlite'` | `'mysql'` | `'python'`)\n   * @param config.verbose show log in console progretion\n   */\n  transform(props: DumpConfig): Promise<DumpFile[]> {\n    const filter = new GeneratorFilter(this.utils);\n    const resolver = new DumpResolver(\n      this.utils,\n      this.datatypeModule,\n      filter,\n      props,\n    );\n\n    return resolver.relational(this.schemas);\n  }\n\n  /**\n   * Generate and export data from relational schemas\n   * @param schemas Array with the schemas config\n   * @param config.filename file name\n   * @param config.location location of the file\n   * @param config.format file extension (`'java'` | `'csv'` | `'typescript'` | `'json'` | `'javascript'` | `'yaml'` | `'postgresql'` | `'sqlite'` | `'mysql'` | `'python'`)\n   * @param config.verbose show log in console progretion\n   */\n  async export(config: FileConfig): Promise<string[]> {\n    const filter = new GeneratorFilter(this.utils);\n    const resolver = new ExportResolver(\n      this.utils,\n      this.datatypeModule,\n      filter,\n      this.fileWriter,\n      config,\n    );\n    const routes = await resolver.relational(this.schemas);\n\n    return routes;\n  }\n\n  /**\n   * Adapts the CLI's uniform export call to the dataset `export` signature.\n   * The document count is defined per schema, so it is ignored here.\n   * @internal\n   */\n  exportFromCli(_documents: number, config: FileConfig): Promise<string[]> {\n    return this.export(config);\n  }\n\n  /**\n   * Generates the dataset data through the defined schemas\n   */\n  async generate(): Promise<K> {\n    const resolver = new DatasetResolver<K>(this.utils, this.datatypeModule, {\n      schemas: this.schemas,\n      verbose: false,\n    });\n\n    return await resolver.resolve();\n  }\n}\n","﻿import { KeyField, KeyFieldProps } from \"./core/fields/core/key/key-field\";\nimport { ChacaUtils } from \"./core/utils\";\nimport { SchemaInput } from \"./core/schema/interfaces/schema\";\nimport { DatasetSchema } from \"./core/dataset-resolver/interfaces/dataset-schema\";\nimport { ExportResolver } from \"./core/export/resolvers/export/export\";\nimport { FileWriter } from \"./core/export/writers/file-writer\";\nimport { DumpConfig, FileConfig } from \"./core/export/interfaces/export\";\nimport { PickField, PickFieldProps } from \"./core/fields/core/pick/pick-field\";\nimport { DatatypeModule } from \"./modules/datatype\";\nimport { GeneratorFilter } from \"./core/export/resolvers/generator-filter/generator-filter\";\nimport { DumpFile } from \"./core/export/generators/generator/generator\";\nimport { DumpResolver } from \"./core/export/resolvers/dump/dump\";\nimport {\n  EnumField,\n  ProbabilityField,\n  RefField,\n  SequenceField,\n  SequentialField,\n} from \"./core/fields/core\";\nimport { ProbabilityOption } from \"./core/fields/core/probability/probability-field\";\nimport { Dataset } from \"./core/dataset/dataset\";\nimport { SequenceFieldProps } from \"./core/fields/core/sequence/sequence-field\";\nimport { SequentialFieldConfig } from \"./core/fields/core/sequential/sequential-field\";\nimport { FieldToRef, RefFieldConfig } from \"./core/fields/core/ref/ref-field\";\nimport { Schema } from \"./core/schema/schema\";\n\nexport class Chaca {\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    readonly utils: ChacaUtils,\n    private readonly fileWriter: FileWriter,\n  ) {}\n\n  /**\n   * @param input The object with the keys and type of each field\n   *\n   * @example\n   * chaca.schema({\n   *    id: chaca.key(() => modules.id.uuid()),\n   *    image: () => modules.image.film(),\n   *    name: () => modules.person.firstName()\n   * })\n   */\n  schema<K = any>(input: SchemaInput): Schema<K> {\n    const newSchema = new Schema<K>(\n      input,\n      this.utils,\n      this.datatypeModule,\n      this.fileWriter,\n    );\n    return newSchema;\n  }\n\n  /**\n   * Create a reference field for a selected schema\n   * @param field Configuration of the reference field. the field location must be separated points\n   * @param config.unique The value to be referenced will only be taken once by this schema. Default `false`\n   * @param config.where Function that filters the fields to reference\n   * @param config.nullOnEmpty When there are no more documents to reference, the generated value will be null. Default `false`\n   *\n   * @example\n   * chaca.ref('schema.field')\n   */\n  ref(field: FieldToRef, config?: RefFieldConfig): RefField {\n    return new RefField(field, config);\n  }\n\n  /**\n   * Sequential field\n   *\n   * @param values Array of the secuential values\n   * @param config.loop Boolean indicating whether the values should be generated cyclically. Default `false`\n   * @example\n   * chaca.schema({\n   *   number: chaca.sequential([1, 2, 3])\n   * })\n   *\n   * // array result\n   * [\n   *    { number: 1 },\n   *    { number: 2 },\n   *    { number: 3 }\n   * ]\n   */\n  sequential<K = any>(values: K[], config?: SequentialFieldConfig) {\n    return new SequentialField(values, config);\n  }\n\n  /**\n   * Sequence field\n   * @param config.startsWith Init value for the field. Default `1`\n   * @param config.step Step between field values in schema documents. Default `1`\n   *\n   * @example\n   * chaca.sequence()\n   * chaca.sequence({ startsWith: 10 })\n   * chaca.sequence({ step: 0.5 })\n   */\n  sequence(config?: SequenceFieldProps) {\n    return new SequenceField(config);\n  }\n\n  /**\n   * Key field\n   * @param field field that will return the value. Could be (`RefField` | `SequenceField` | `CustomField` )\n   *\n   * @example\n   * chaca.key(chaca.sequence())\n   * chaca.key(() => modules.id.uuid())\n   */\n  key(field: KeyFieldProps) {\n    return new KeyField(field);\n  }\n\n  /**\n   * Enum field\n   * @param values Array of posible values\n   *\n   * @example\n   * chaca.enum([\"category1\", \"category2\", \"category3\"])\n   */\n  enum<R = any>(values: ReadonlyArray<R>) {\n    return new EnumField<R>(values);\n  }\n\n  /**\n   * Export the data to a selected code format\n   * @param data Data you want to export\n   * @param config.filename file name\n   * @param config.location location of the file\n   * @param config.format file extension (`'java'` | `'csv'` | `'typescript'` | `'json'` | `'javascript'` | `'yaml'` | `'postgresql'` | `'sqlite'` | `'mysql'` | `'python'`)\n   *\n   * @example\n   * const data = [\n   *  { id: 1, name: 'Alberto', age: 20 },\n   *  { id: 2, name: 'Carolina', age: 28 }\n   * ]\n   * const config = { filename: 'users', format: 'json', location: '../../data' }\n   *\n   * await chaca.export(data, config)\n   *\n   * @returns\n   * Promise<string[]>\n   */\n  async export(data: any, config: FileConfig): Promise<string[]> {\n    const filter = new GeneratorFilter(this.utils);\n    const resolver = new ExportResolver(\n      this.utils,\n      this.datatypeModule,\n      filter,\n      this.fileWriter,\n      config,\n    );\n\n    const route = await resolver.data(data);\n\n    return route;\n  }\n\n  /**\n   * Generate data from realtional schemas\n   * @param schemas Array with the schemas config\n   */\n  dataset<K = any>(schemas: DatasetSchema[]): Dataset<K> {\n    const dataset = new Dataset<K>(\n      schemas,\n      this.utils,\n      this.datatypeModule,\n      this.fileWriter,\n    );\n    return dataset;\n  }\n\n  /**\n   * Probability field\n   * @param options Array of options to choose from. Where each one has the 'chance' parameter to indicate the probability of being chosen.\n   *\n   * @example\n   * chaca.probability([\n   *   { chance: 0.9, value: 10 },\n   *   { chance: 0.5, value: 5 },\n   *   { chance: 0.1, value: 1 },\n   * ])\n   */\n  probability<T = any>(options: ProbabilityOption<T>[]): ProbabilityField<T> {\n    return new ProbabilityField<T>(options);\n  }\n\n  /**\n   * Select a number of elements in an array so that all selected values are not repeated\n   *\n   * @param props.values array of values\n   * @param props.count number of items to select\n   *\n   * @example\n   * chaca.pick({\n   *    values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n   *    count: 3\n   * })\n   *\n   * // [2, 6, 10] or [4, 5, 1] or [1, 9, 8] or ...\n   */\n  pick<V = any>(props: PickFieldProps<V>) {\n    return new PickField<V>(props);\n  }\n\n  /**\n   * Serializes `data` as a specific file format\n   *\n   * @param data Data to transform\n   * @param props.filename name for the file\n   * @param props.format file extension (`'java'` | `'csv'` | `'typescript'` | `'json'` | `'javascript'` | `'yaml'` | `'postgresql'` | `'sqlite'` | `'mysql'` | `'python'`)\n   */\n  transform(data: any, props: DumpConfig): DumpFile[] {\n    const filter = new GeneratorFilter(this.utils);\n    const resolver = new DumpResolver(\n      this.utils,\n      this.datatypeModule,\n      filter,\n      props,\n    );\n\n    return resolver.data(data);\n  }\n}\n","export const SPECIAL_CHARACTERS = [\n  \"!\",\n  '\"',\n  \"#\",\n  \"$\",\n  \"%\",\n  \"&\",\n  \"'\",\n  \"(\",\n  \")\",\n  \"*\",\n  \"+\",\n  \",\",\n  \"-\",\n  \".\",\n  \"/\",\n  \":\",\n  \";\",\n  \"<\",\n  \"=\",\n  \">\",\n  \"?\",\n  \"@\",\n  \"[\",\n  \"\\\\\",\n  \"]\",\n  \"^\",\n  \"_\",\n  \"`\",\n  \"{\",\n  \"|\",\n  \"}\",\n  \"~\",\n];\n","const allCharacters = \"abcdefghijklmnopqrstuvwxyz\";\n\nexport const LOWER_CHARACTERS = allCharacters.split(\"\");\nexport const UPPER_CHARACTERS = allCharacters\n  .split(\"\")\n  .map((el) => el.toUpperCase());\nexport const MIXED_CHARACTERS = [...LOWER_CHARACTERS, ...UPPER_CHARACTERS];\n","import { ChacaUtils } from \"../../core/utils\";\nimport { SPECIAL_CHARACTERS } from \"./constants/special-characters\";\nimport {\n  LOWER_CHARACTERS,\n  MIXED_CHARACTERS,\n  UPPER_CHARACTERS,\n} from \"./constants/characters\";\nimport { ChacaError } from \"../../errors\";\n\nexport type Case = \"lower\" | \"upper\" | \"mixed\";\n\nexport type BigIntProps = {\n  min?: bigint;\n  max?: bigint;\n};\nexport type NumericProps = {\n  allowLeadingZeros?: boolean;\n  length?: number;\n  prefix?: string;\n  banned?: string[];\n};\n\nexport type AlphaNumericProps = {\n  length?: number;\n  case?: Case;\n  banned?: string[] | string;\n  prefix?: string;\n};\n\nexport type BinaryCodeProps = {\n  length?: number;\n  prefix?: string;\n};\n\nexport type OctalProps = {\n  length?: number;\n  prefix?: string;\n};\n\nexport type FloatProps = {\n  min?: number;\n  max?: number;\n  precision?: number;\n};\n\nexport type NumberProps = {\n  min?: number;\n  max?: number;\n  precision?: number;\n};\n\nexport type IntProps = {\n  min?: number;\n  max?: number;\n};\n\nexport type HexadecimalProps = {\n  length?: number;\n  case?: Case;\n};\n\nexport type MatrixProps = {\n  x_size?: number;\n  y_size?: number;\n  min?: number;\n  max?: number;\n  precision?: number;\n};\n\nexport type CharacterProps = {\n  case?: Case;\n};\n\nexport type CharactersProps = {\n  length?: number;\n  case?: Case;\n};\n\nexport class DatatypeModule {\n  private readonly MIN_RANDOM_VALUE = -999999;\n  private readonly MAX_RANDOM_VALUE = 999999;\n  private readonly MAX_PRECISION = 16;\n\n  constructor(private readonly utils: ChacaUtils) {}\n\n  readonly constants = {\n    upperCharacters: UPPER_CHARACTERS,\n    lowerCharacters: LOWER_CHARACTERS,\n    mixedCharacters: MIXED_CHARACTERS,\n    specialCharacters: SPECIAL_CHARACTERS,\n    numbers: [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"],\n  };\n\n  /**\n   * Returns a [BigInt](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#bigint_type) number.\n   * The bounds are inclusive.\n   *\n   * @param args.min Lower bound for generated bigint. Defaults to `0n`.\n   * @param args.max Upper bound for generated bigint. Defaults to `min + 999999999999999n`.\n   *\n   * @throws When `min` is greater than `max`.\n   *\n   * @example\n   * modules.datatype.bigInt() // 55422n\n   * modules.datatype.bigInt({ min: 1000000n }) // 431433n\n   * modules.datatype.bigInt({ max: 100n }) // 42n\n   * modules.datatype.bigInt({ min: 10n, max: 100n }) // 36n\n   */\n  bigint({ max: imax, min: imin }: BigIntProps = {}): bigint {\n    const min = typeof imin === \"bigint\" ? imin : BigInt(0);\n    const max = typeof imax === \"bigint\" ? imax : min + BigInt(999999999999999);\n\n    if (max === min) {\n      return min;\n    }\n\n    if (max < min) {\n      throw new ChacaError(`Max ${max} should be larger then min ${min}.`);\n    }\n\n    const delta = max - min;\n\n    const offset =\n      BigInt(\n        this.numeric({\n          length: delta.toString(10).length,\n          allowLeadingZeros: true,\n        }),\n      ) %\n      (delta + BigInt(1));\n\n    return min + offset;\n  }\n\n  /**\n   * Returns a keyboard special character\n   *\n   * @example modules.datatype.specialCharacter() // '_'\n   *\n   * @returns string\n   */\n  specialCharacter(): string {\n    return this.utils.oneOfArray(SPECIAL_CHARACTERS);\n  }\n\n  /**\n   * Returns a boolean\n   *\n   * @example modules.datatype.boolean() // true\n   *\n   * @returns boolean\n   */\n  boolean(): boolean {\n    return this.utils.oneOfArray([true, false]);\n  }\n\n  /**\n   * Returns a integer number\n   *\n   * @param args.min Minimun posible value (inclusive)\n   * @param args.max Maximun posible value (exclusive)\n   *\n   * @example\n   * modules.datatype.int() // 462\n   * modules.datatype.int({ min: 10, max: 30 }) // 28\n   *\n   * @returns number\n   */\n  int({ max, min }: IntProps = {}): number {\n    let range: number;\n\n    if (typeof max === \"number\" && typeof min === \"number\") {\n      if (min > max) {\n        throw new ChacaError(`Max ${max} should be greater than min ${min}.`);\n      }\n\n      range = max - min;\n    } else if (typeof max === \"number\" && typeof min === \"undefined\") {\n      range = max;\n    } else if (typeof max === \"undefined\" && typeof min === \"number\") {\n      range = this.MAX_RANDOM_VALUE - min;\n    } else {\n      range = this.utils.oneOfArray([\n        this.MAX_RANDOM_VALUE,\n        this.MIN_RANDOM_VALUE,\n      ]);\n    }\n\n    const val = Math.floor(Math.random() * range + (min || 0));\n\n    return val;\n  }\n\n  /**\n   * Returns a float number\n   *\n   * @param args.min Minimun posible value\n   * @param args.max Maximun posible value\n   * @param args.precision Precision of the float. Must be a value between `1` and `20`\n   *\n   * @example\n   * modules.datatype.float() // 462.12\n   * modules.datatype.float({ min: 10, max: 30 }) // 10.23\n   * modules.datatype.float({ precision: 4 }) // 90.5362\n   *\n   * @returns number\n   */\n  float({ max, min, precision }: FloatProps = {}): number {\n    let range: number;\n\n    if (typeof max === \"number\" && typeof min === \"number\") {\n      if (min > max) {\n        throw new ChacaError(`Max ${max} should be greater than min ${min}.`);\n      }\n\n      range = max - min;\n    } else if (typeof max === \"number\" && typeof min === \"undefined\") {\n      range = max;\n    } else if (typeof max === \"undefined\" && typeof min === \"number\") {\n      range = this.MAX_RANDOM_VALUE - min;\n    } else {\n      range = this.utils.oneOfArray([\n        this.MAX_RANDOM_VALUE,\n        this.MIN_RANDOM_VALUE,\n      ]);\n    }\n\n    const pres: number =\n      typeof precision === \"number\" &&\n      precision > 0 &&\n      precision <= this.MAX_PRECISION\n        ? precision\n        : this.int({ min: 1, max: 10 });\n\n    const randomNum = Math.random() * range + (min || 0);\n    const factor = Math.pow(10, pres);\n\n    const returnValue = Math.round(randomNum * factor) / factor;\n\n    return returnValue;\n  }\n\n  /**\n   * Returns a number\n   * @param args.min Minimun posible value\n   * @param args.max Maximun posible value\n   * @param args.precision Precision of the number. Must be a value between `0` and `20`.\n   * @example\n   * modules.datatype.number() // 301\n   * modules.datatype.number({ min: 10, max: 30 }) // 10.2327\n   * @returns number\n   */\n  number({ max, min, precision }: NumberProps = {}): number {\n    let val: number;\n\n    const pres =\n      typeof precision === \"number\" && precision >= 0\n        ? precision\n        : this.int({ min: 0, max: 10 });\n\n    if (pres === 0) {\n      val = this.int({ max, min });\n    } else {\n      val = this.float({ max, min, precision });\n    }\n\n    return val;\n  }\n\n  /**\n   * Returns a string with a hexadecimal code\n   *\n   * @param args.case Case of the values inside de hexadecimal code (`mixed` | `lower` | `upper`)\n   * @param args.length Lenght of the hexadecimal code\n   *\n   * @example\n   * modules.datatype.hexadecimal() // '009df'\n   * modules.datatype.hexadecimal({ length: 3 }) // '01D'\n   * modules.datatype.hexadecimal({ lenght: 3, case: 'upper' }) // 'DE20'\n   * @returns string\n   */\n  hexadecimal({\n    length: ilength,\n    case: icase = \"mixed\",\n  }: HexadecimalProps = {}): string {\n    const utils = new ChacaUtils();\n\n    const numbers = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n    const characters = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\"];\n\n    const length =\n      typeof ilength === \"number\" && ilength >= 0\n        ? ilength\n        : this.int({ min: 5, max: 10 });\n    const c = icase ? icase : \"mixed\";\n\n    let ret = \"\";\n    for (let i = 1; i <= length; i++) {\n      ret = ret.concat(\n        utils.oneOfArray([\n          ...numbers,\n          ...characters.map((el) => {\n            if (c === \"lower\") {\n              return el.toLowerCase();\n            } else if (c === \"upper\") {\n              return el;\n            } else {\n              return utils.oneOfArray([el.toLowerCase(), el.toUpperCase()]);\n            }\n          }),\n        ]),\n      );\n    }\n\n    return ret;\n  }\n\n  /**\n   * Return a two dimension matriz of numbers\n   *\n   * @param args.x_size Columns size\n   * @param args.y_size Row size\n   * @param args.min Min value for the numbers of the matrix\n   * @param args.max Max value for the numbers of the matrix\n   * @param args.precision Number precision of the matrix\n   *\n   * @example\n   * modules.datatype.matrix() // [[1, 0, 5], [5, 10, 9]]\n   * modules.datatype.matrix({ x_size: 4, y_size: 2 }) // [[1, 2], [0, 0], [1, 1], [4, 5]]\n   */\n  matrix({\n    x_size: ix_size,\n    max,\n    min,\n    precision,\n    y_size: iy_size,\n  }: MatrixProps = {}): number[][] {\n    const x_size =\n      typeof ix_size === \"number\" && ix_size >= 0\n        ? ix_size\n        : this.int({ min: 1, max: 10 });\n\n    const y_size =\n      typeof iy_size === \"number\" && iy_size >= 0\n        ? iy_size\n        : this.int({ min: 1, max: 10 });\n\n    return Array.from({ length: x_size }).map(() => {\n      return Array.from({ length: y_size }).map(() => {\n        return this.number({\n          min: min,\n          max: max,\n          precision: precision,\n        });\n      });\n    });\n  }\n\n  /**\n   * Returns a character\n   *\n   * @param args.case Case of the characters (`lower`, `upper` or `mixed`)\n   *\n   * @example\n   * modules.datatype.character() // 'c'\n   * modules.datatype.character({ case: 'upper' }) // \"H\"\n   *\n   * @returns string\n   */\n  character({ case: icase = \"mixed\" }: CharacterProps = {}): string {\n    return this.characters({ length: 1, case: icase });\n  }\n\n  /**\n   * Returns a series of characters\n   *\n   * @param args.length Length of characters.\n   * @param args.case Case of the characters (`lower`, `upper` or `mixed`)\n   *\n   * @example\n   * modules.datatype.characters() // 'v'\n   * modules.datatype.characters({ length: 5 }) // 'bhtlw'\n   * modules.datatype.characters({ length: 5, case: 'upper' }) // 'HQRSD'\n   *\n   * @returns string\n   */\n  characters({ case: icase = \"mixed\", length }: CharactersProps = {}): string {\n    const len =\n      typeof length === \"number\" && length >= 0\n        ? length\n        : this.int({ min: 5, max: 10 });\n\n    let charactersToRet: string[];\n\n    if (icase) {\n      if (icase === \"lower\") {\n        charactersToRet = this.constants.lowerCharacters;\n      } else if (icase === \"upper\") {\n        charactersToRet = this.constants.upperCharacters;\n      } else {\n        charactersToRet = this.constants.mixedCharacters;\n      }\n    } else {\n      charactersToRet = this.constants.mixedCharacters;\n    }\n\n    let ret = \"\";\n    for (let i = 1; i <= len; i++) {\n      ret = ret.concat(this.utils.oneOfArray(charactersToRet));\n    }\n\n    return ret;\n  }\n\n  /**\n   * Returns a string with a binary code\n   * @param args.length Length of the binary code\n   * @example\n   * modules.datatype.binaryCode() // '00101'\n   * modules.datatype.binaryCode({ length: 6 }) // '010100'\n   * @returns string\n   */\n  binaryCode({ length: ilength, prefix = \"\" }: BinaryCodeProps = {}): string {\n    const length =\n      typeof ilength === \"number\" && ilength >= 0 ? ilength : undefined;\n\n    return this.generateByLength(prefix, length, () =>\n      String(this.utils.oneOfArray([0, 1])),\n    );\n  }\n\n  /**\n   * @param args.length Length of the string\n   * @param args.case Case of the string. (`lower`, `upper`, `mixed`)\n   * @param args.banned Characters that cannot appear in the string. It can be an array of characters or a string with all the characters\n   * @param args.prefix Prefix for the generated string\n   *\n   * @example\n   * modules.datatype.alphaNumeric() // \"F43jUs\"\n   * modules.datatype.alphaNumeric({ length: 5 }) // \"n3jO4\"\n   * modules.datatype.alphaNumeric({ length: 7, case = \"lower\" }) // \"ow3kn42\"\n   * @returns string\n   */\n  alphaNumeric({\n    length: ilength,\n    case: icase = \"mixed\",\n    banned: ibanned,\n    prefix = \"\",\n  }: AlphaNumericProps = {}): string {\n    const length =\n      typeof ilength === \"number\" && ilength >= 0 ? ilength : undefined;\n\n    const banned: string[] = [];\n\n    if (ibanned) {\n      if (typeof ibanned === \"string\") {\n        for (let i = 0; i < ibanned.length; i++) {\n          banned.push(ibanned[i]);\n        }\n      } else if (Array.isArray(ibanned)) {\n        for (const c of ibanned) {\n          banned.push(c);\n        }\n      }\n    }\n\n    const selectNumbers = this.constants.numbers.filter(\n      (el) => !banned.includes(el),\n    );\n\n    const characters = this.filterCharacters(icase);\n    const selectCharacters = characters.filter((el) => {\n      let is = true;\n\n      banned.forEach((b) => {\n        if (b === el) is = false;\n      });\n\n      return is;\n    });\n\n    const selectValues = [...selectCharacters, ...selectNumbers];\n\n    return this.generateByLength(prefix, length, () =>\n      this.utils.oneOfArray(selectValues),\n    );\n  }\n\n  /**\n   * Returns an [octal](https://en.wikipedia.org/wiki/Octal) string.\n   *\n   * @param args.length The number or range of characters to generate after the prefix.\n   * @param args.prefix Prefix for the generated number. Defaults to `'0o'`.\n   *\n   * @example\n   * modules.datatype.octal() // '0o3'\n   * modules.datatype.octal({ length: 10 }) // '0o1526216210'\n   * modules.datatype.octal({ prefix: '0o' }) // '0o7'\n   * modules.datatype.octal({ length: 10, prefix: 'oct_' }) // 'oct_1542153414'\n   */\n  octal({ length: ilength, prefix = \"0o\" }: OctalProps = {}): string {\n    const length =\n      typeof ilength === \"number\" && ilength >= 0 ? ilength : undefined;\n\n    return this.generateByLength(prefix, length, () => {\n      return this.utils.oneOfArray([\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\"]);\n    });\n  }\n\n  /**\n   * Generates a given length string of digits.\n   *\n   * @param args.length The number or range of digits to generate.\n   * @param args.allowLeadingZeros Whether leading zeros are allowed or not. Defaults to `true`.\n   * @param args.banned An array of digits which should be excluded in the generated string. Defaults to `[]`.\n   * @param args.prefix Prefix for the generated string\n   *\n   * @example\n   * modules.datatype.numeric() // '2'\n   * modules.datatype.numeric({ length: 42, allowLeadingZeros: false }) // '72564846278453876543517840713421451546115'\n   * modules.datatype.numeric({ length: 6, exclude: ['0'] }) // '943228'\n   *\n   */\n  numeric({\n    length: ilength,\n    allowLeadingZeros = true,\n    prefix = \"\",\n    banned = [],\n  }: NumericProps = {}): string {\n    const numbers = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n\n    const length =\n      typeof ilength === \"number\" && ilength >= 0 ? ilength : undefined;\n\n    let firstNotZero = false;\n    return this.generateByLength(prefix, length, () => {\n      const value = this.utils.oneOfArray(\n        numbers\n          .filter((n) => {\n            if (!firstNotZero && !allowLeadingZeros) {\n              return n !== \"0\";\n            }\n\n            return true;\n          })\n          .filter((n) => !banned.includes(n)),\n      );\n\n      if (value !== undefined) {\n        if (value !== \"0\") {\n          firstNotZero = true;\n        }\n\n        return value;\n      } else {\n        return \"\";\n      }\n    });\n  }\n\n  private filterCharacters(fCase?: Case): string[] {\n    if (fCase === \"upper\") {\n      return this.constants.upperCharacters;\n    } else if (fCase === \"lower\") {\n      return this.constants.lowerCharacters;\n    } else {\n      return this.constants.mixedCharacters;\n    }\n  }\n\n  private generateByLength(\n    prefix: string,\n    length: number | undefined,\n    func: () => string,\n  ): string {\n    let str = prefix;\n\n    if (length !== undefined) {\n      for (let i = 0; i < length - prefix.length; i++) {\n        str += func();\n      }\n\n      return str.slice(0, length);\n    } else {\n      const min = prefix.length + 4;\n      const max = min + 6;\n\n      for (let i = 0; i < this.int({ min: min, max: max }); i++) {\n        str += func();\n      }\n    }\n\n    return str;\n  }\n}\n","import { ChacaError } from \"../../errors\";\nimport { DatatypeModule } from \"../../modules/datatype\";\nimport {\n  LOWER_CHARACTERS,\n  MIXED_CHARACTERS,\n  UPPER_CHARACTERS,\n} from \"../../modules/datatype/constants/characters\";\nimport { Case } from \"change-case-all\";\n\nexport type TimeUnits =\n  \"years\" | \"seconds\" | \"minutes\" | \"days\" | \"hours\" | \"months\";\n\nexport type SumDateRangeProps = {\n  date: Date;\n  value: number;\n  range: TimeUnits;\n};\n\nexport interface PickProps<T> {\n  values: T[];\n  count: number;\n}\n\nexport interface MultipleProps<T = any> {\n  count: number;\n  generator(index: number): T;\n}\n\nexport interface ReplaceSymbolsProps {\n  symbols?: Record<string, string[]>;\n  banned?: string[];\n}\n\nexport class ChacaUtils {\n  private readonly datatypeModule = new DatatypeModule(this);\n\n  /**\n   * Returns one element from an array\n   *\n   * @param list Array of values to return\n   * @example\n   * chaca.utils.oneOfArray([1, 2, 3, 5, 4]) // 3\n   * chaca.utils.oneOfArray(['Hi!!!', 'Chaca the best!!!', 10]) // 'Chaca the best!!!'\n   * chaca.utils.oneOfArray([]) // undefined\n   */\n  oneOfArray<T>(list: ReadonlyArray<T>) {\n    return list[Math.floor(Math.random() * list.length)];\n  }\n\n  /**\n   * Parses the given string symbol by symbols and replaces the placeholder appropriately.\n   *\n   * - `#` will be replaced with a digit (`0` - `9`).\n   * - `?` will be replaced with an upper letter ('A' - 'Z')\n   * - `$` will be replaced with a lower letter ('a' - 'z')\n   * - `*` will be replaced with either a digit or letter.\n   *\n   * @param text The template string to parse.\n   * @param props.banned values that cannot appear in the string\n   * @param props.symbols object with your own symbol definitions\n   *\n   * @example\n   * chaca.utils.replaceSymbols('#####') // '98441'\n   * chaca.utils.replaceSymbols('?????') // 'ZYRQQ'\n   * chaca.utils.replaceSymbols('***$$') // '4Z3pa'\n   * chaca.utils.replaceSymbols('Your pin is: #?*#?*') // 'Your pin is: 0T85L1'\n   * chaca.utils.replaceSymbols('#####', { banned: [\"3\", \"7\", \"8\"] }) // '91220'\n   *\n   * @returns string\n   */\n  replaceSymbols(\n    text: string,\n    { banned, symbols: ownSymbols }: ReplaceSymbolsProps = {\n      banned: [],\n      symbols: {},\n    },\n  ): string {\n    let ret = \"\";\n\n    const numbers = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n\n    const symbols: Record<string, string[]> = {\n      \"#\": numbers,\n      \"?\": UPPER_CHARACTERS,\n      $: LOWER_CHARACTERS,\n      \"*\": [...numbers, ...MIXED_CHARACTERS],\n      ...ownSymbols,\n    };\n\n    for (let i = 0; i < text.length; i++) {\n      let val: string = text[i];\n\n      for (const [key, values] of Object.entries(symbols)) {\n        if (text[i] === key) {\n          const options = values.filter((v) => {\n            if (banned) {\n              return !banned.includes(v);\n            }\n\n            return true;\n          });\n\n          if (options.length === 0) {\n            throw new ChacaError(\n              `For symbol '${key}' there are no values to choose`,\n            );\n          }\n\n          val = this.oneOfArray(options);\n\n          break;\n        }\n      }\n\n      ret += val;\n    }\n\n    return ret;\n  }\n\n  /**\n   * Convert a string to camel case\n   *\n   * @param text string to transform\n   *\n   * @example\n   * chaca.utils.camelCase('Hello World') // 'helloWorld'\n   * chaca.utils.camelCase('hiFriend') // 'hiFriend'\n   *\n   * @returns string\n   */\n  camelCase(text: string): string {\n    return Case.camel(text);\n  }\n\n  /**\n   * Convert a string to snake case\n   *\n   * @param text string to transform\n   *\n   * @example\n   * chaca.utils.snakeCase('Hello World') // 'hello_world'\n   * chaca.utils.snakeCase('hiFriend') // 'hi_friend'\n   *\n   * @returns string\n   */\n  snakeCase(text: string): string {\n    return Case.snake(text);\n  }\n\n  /**\n   * Convert a string to dot case\n   *\n   * @param text string to transform\n   *\n   * @example\n   * chaca.utils.dotCase('Hello World') // 'hello.world'\n   * chaca.utils.dotCase('hiFriend') // 'hi.friend'\n   *\n   * @returns string\n   */\n  dotCase(text: string): string {\n    return Case.dot(text);\n  }\n\n  /**\n   * Convert a string to sentence case\n   *\n   * @param text string to transform\n   *\n   * @example\n   * chaca.utils.sentenceCase('Hello World') // 'Hello world'\n   * chaca.utils.sentenceCase('hiFriend') // 'Hi friend'\n   *\n   * @returns string\n   */\n  sentenceCase(text: string): string {\n    return Case.sentence(text);\n  }\n\n  /**\n   * Convert a string to capital case\n   *\n   * @param text string to transform\n   *\n   * @example\n   * chaca.utils.capitalCase('Hello World') // 'Hello World'\n   * chaca.utils.capitalCase('hiFriend') // 'Hi Friend'\n   *\n   * @returns string\n   */\n  capitalCase(text: string): string {\n    return Case.capital(text);\n  }\n\n  /**\n   * Convert a string to pascal case\n   *\n   * @param text string to transform\n   *\n   * @example\n   * chaca.utils.pascalCase('Hello World') // 'HelloWorld'\n   * chaca.utils.pascalCase('hiFriend') // 'HiFriend'\n   *\n   * @returns string\n   */\n  pascalCase(text: string): string {\n    return Case.pascal(text);\n  }\n\n  /**\n   * Sum a range value to a date\n   *\n   * @param param.date Date to modify\n   * @param param.range Time unit (`\"years\"` | `\"seconds\"` | `\"minutes\"` | `\"days\"`| `\"hours\"` | `\"months\"`)\n   * @param param.value Amount of time unit\n   *\n   * @returns string\n   */\n  sumDateRange({ date, range, value }: SumDateRangeProps): Date {\n    switch (range) {\n      case \"years\":\n        date.setFullYear(date.getFullYear() + value);\n        break;\n      case \"months\":\n        date.setMonth(date.getMonth() + value);\n        break;\n      case \"days\":\n        date.setDate(date.getDate() + value);\n        break;\n      case \"hours\":\n        date.setHours(date.getHours() + value);\n        break;\n      case \"minutes\":\n        date.setMinutes(date.getMinutes() + value);\n        break;\n      case \"seconds\":\n        date.setSeconds(date.getSeconds() + value);\n        break;\n      default:\n        throw new ChacaError(\"Invalid date range\");\n    }\n\n    return date;\n  }\n\n  /**\n   * Chooses a series of elements from an array of values, preventing an element from being selected more than once\n   *\n   * @param args.values Values array\n   * @param args.count Number of items to select\n   *\n   * @example\n   * chaca.utils.pick({ values: [1, 2, 3, 4, 5], count: 2 }) // [2, 4]\n   * chaca.utils.pick({ values: [1, 2, 3, 4, 5], count: 3 }) // [1, 5, 3]\n   */\n  pick<T = any>({ values, count }: PickProps<T>): T[] {\n    if (count > values.length) {\n      throw new ChacaError(\n        `The number of elements to select must be less or equal than the array length`,\n      );\n    }\n\n    if (count === values.length) {\n      return [...values];\n    } else {\n      const generate = (banned: number[]): number => {\n        let num = this.datatypeModule.int({\n          min: 0,\n          max: values.length,\n        });\n\n        while (banned.includes(num)) {\n          num = this.datatypeModule.int({\n            min: 0,\n            max: values.length,\n          });\n        }\n\n        return num;\n      };\n\n      const result = [] as T[];\n      const banned = [] as number[];\n\n      let i = 0;\n\n      while (i < count) {\n        const index = generate(banned);\n\n        banned.push(index);\n        result.push(values[index]);\n\n        i++;\n      }\n\n      return result;\n    }\n  }\n\n  /**\n   * Generates an array containing values returned by the given method.\n   *\n   * @param args.count The number of elements to generate.\n   *\n   * @example\n   * chaca.utils.multiple({ generator: () => modules.person.firstName(), count: 3 }) // [ 'Aniya', 'Norval', 'Dallin' ]\n   * chaca.utils.multiple({ generator: () => modules.person.firstName(), count: 3 }) // [ 'Santos', 'Lavinia', 'Lavinia' ]\n   * chaca.utils.multiple({ generator: (i) => `element-${i}`, count: 3 }) // [ 'element-0', 'element-1', 'element-2' ]\n   */\n  multiple<T = any>({ generator, count }: MultipleProps<T>): T[] {\n    const result = [] as T[];\n\n    for (let i = 0; i < count; i++) {\n      const value = generator(i);\n      result.push(value);\n    }\n\n    return result;\n  }\n}\n","import { DatatypeModule } from \"../datatype\";\nimport { ulid } from \"ulid\";\nimport { createId } from \"@paralleldrive/cuid2\";\nimport { v4 } from \"uuid\";\nimport { nanoid } from \"nanoid\";\n\nexport type NanoidProps = {\n  length?: number;\n};\n\nexport class IdModule {\n  constructor(private readonly datatypeModule: DatatypeModule) {}\n\n  /**\n   * Returns a MongoDB [ObjectId](https://docs.mongodb.com/manual/reference/method/ObjectId/) string.\n   *\n   * @example\n   * modules.id.mongodbId() // 'e175cac316a79afdd0ad3afb'\n   *\n   * @returns string\n   */\n  mongodbId(): string {\n    return this.datatypeModule.hexadecimal({ case: \"lower\", length: 24 });\n  }\n\n  /**\n   * Returns a UUID v4 ([Universally Unique Identifier](https://en.wikipedia.org/wiki/Universally_unique_identifier)).\n   *\n   * @example\n   * modules.id.uuid() // '4136cd0b-d90b-4af7-b485-5d1ded8db252'\n   *\n   * @returns string\n   */\n  uuid(): string {\n    return v4();\n  }\n\n  /**\n   * Generates a [Nano ID](https://github.com/ai/nanoid).\n   *\n   * @param length Length of the generated string. Defaults to `20`.\n   *\n   * @example\n   * modules.id.nanoid() // 'ptL0KpX_yRMI98JFr6B3n'\n   * modules.id.nanoid({ length: 10 }) // 'VsvwSdm_Am'\n   */\n  nanoid({ length: ilength }: NanoidProps = {}) {\n    const length = typeof ilength === \"number\" && ilength >= 0 ? ilength : 20;\n\n    return nanoid(length);\n  }\n\n  /**\n   * Generates a [ULID](https://github.com/ulid/javascript)\n   *\n   * @example\n   * modules.id.ulid() // \"01ARZ3NDEKTSV4RRFFQ69G5FAV\"\n   *\n   * @returns string\n   */\n  ulid(): string {\n    return ulid();\n  }\n\n  /**\n   * Generates a [CUID](https://github.com/paralleldrive/cuid2)\n   *\n   * @example\n   * modules.id.cuid() // \"tz4a98xxat96iws9zmbrgj3a\"\n   *\n   * @returns string\n   */\n  cuid(): string {\n    return createId();\n  }\n}\n","import { Emojis } from \"..\";\n\nexport const EMOJIS: Emojis = {\n  smiley: [\n    \"😀\",\n    \"😃\",\n    \"😄\",\n    \"😁\",\n    \"😆\",\n    \"😅\",\n    \"🤣\",\n    \"😂\",\n    \"🙂\",\n    \"🙃\",\n    \"😉\",\n    \"😊\",\n    \"😇\",\n    \"🥰\",\n    \"😍\",\n    \"🤩\",\n    \"😘\",\n    \"😗\",\n    \"☺️\",\n    \"😚\",\n    \"😙\",\n    \"🥲\",\n    \"😋\",\n    \"😛\",\n    \"😜\",\n    \"🤪\",\n    \"😝\",\n    \"🤑\",\n    \"🤗\",\n    \"🤭\",\n    \"🤫\",\n    \"🤔\",\n    \"🤐\",\n    \"🤨\",\n    \"😐\",\n    \"😑\",\n    \"😶\",\n    \"😶‍🌫️\",\n    \"😏\",\n    \"😒\",\n    \"🙄\",\n    \"😬\",\n    \"😮‍💨\",\n    \"🤥\",\n    \"😌\",\n    \"😔\",\n    \"😪\",\n    \"🤤\",\n    \"😴\",\n    \"😷\",\n    \"🤒\",\n    \"🤕\",\n    \"🤢\",\n    \"🤮\",\n    \"🤧\",\n    \"🥵\",\n    \"🥶\",\n    \"🥴\",\n    \"😵\",\n    \"😵‍💫\",\n    \"🤯\",\n    \"🤠\",\n    \"🥳\",\n    \"🥸\",\n    \"😎\",\n    \"🤓\",\n    \"🧐\",\n    \"😕\",\n    \"😟\",\n    \"🙁\",\n    \"☹️\",\n    \"😮\",\n    \"😯\",\n    \"😲\",\n    \"😳\",\n    \"🥺\",\n    \"😦\",\n    \"😧\",\n    \"😨\",\n    \"😰\",\n    \"😥\",\n    \"😢\",\n    \"😭\",\n    \"😱\",\n    \"😖\",\n    \"😣\",\n    \"😞\",\n    \"😓\",\n    \"😩\",\n    \"😫\",\n    \"🥱\",\n    \"😤\",\n    \"😡\",\n    \"😠\",\n    \"🤬\",\n    \"😈\",\n    \"👿\",\n    \"💀\",\n    \"☠️\",\n    \"💩\",\n    \"🤡\",\n    \"👹\",\n    \"👺\",\n    \"👻\",\n    \"👽\",\n    \"👾\",\n    \"🤖\",\n    \"😺\",\n    \"😸\",\n    \"😹\",\n    \"😻\",\n    \"😼\",\n    \"😽\",\n    \"🙀\",\n    \"😿\",\n    \"😾\",\n    \"🙈\",\n    \"🙉\",\n    \"🙊\",\n    \"💋\",\n    \"💌\",\n    \"💘\",\n    \"💝\",\n    \"💖\",\n    \"💗\",\n    \"💓\",\n    \"💞\",\n    \"💕\",\n    \"💟\",\n    \"❣️\",\n    \"💔\",\n    \"❤️‍🔥\",\n    \"❤️‍🩹\",\n    \"❤️\",\n    \"🧡\",\n    \"💛\",\n    \"💚\",\n    \"💙\",\n    \"💜\",\n    \"🤎\",\n    \"🖤\",\n    \"🤍\",\n    \"💯\",\n    \"💢\",\n    \"💥\",\n    \"💫\",\n    \"💦\",\n    \"💨\",\n    \"🕳️\",\n    \"💣\",\n    \"💬\",\n    \"👁️‍🗨️\",\n    \"🗨️\",\n    \"🗯️\",\n    \"💭\",\n    \"💤\",\n  ],\n  body: [\n    \"👋\",\n    \"👋🏻\",\n    \"👋🏼\",\n    \"👋🏽\",\n    \"👋🏾\",\n    \"👋🏿\",\n    \"🤚\",\n    \"🤚🏻\",\n    \"🤚🏼\",\n    \"🤚🏽\",\n    \"🤚🏾\",\n    \"🤚🏿\",\n    \"🖐️\",\n    \"🖐🏻\",\n    \"🖐🏼\",\n    \"🖐🏽\",\n    \"🖐🏾\",\n    \"🖐🏿\",\n    \"✋\",\n    \"✋🏻\",\n    \"✋🏼\",\n    \"✋🏽\",\n    \"✋🏾\",\n    \"✋🏿\",\n    \"🖖\",\n    \"🖖🏻\",\n    \"🖖🏼\",\n    \"🖖🏽\",\n    \"🖖🏾\",\n    \"🖖🏿\",\n    \"👌\",\n    \"👌🏻\",\n    \"👌🏼\",\n    \"👌🏽\",\n    \"👌🏾\",\n    \"👌🏿\",\n    \"🤌\",\n    \"🤌🏻\",\n    \"🤌🏼\",\n    \"🤌🏽\",\n    \"🤌🏾\",\n    \"🤌🏿\",\n    \"🤏\",\n    \"🤏🏻\",\n    \"🤏🏼\",\n    \"🤏🏽\",\n    \"🤏🏾\",\n    \"🤏🏿\",\n    \"✌️\",\n    \"✌🏻\",\n    \"✌🏼\",\n    \"✌🏽\",\n    \"✌🏾\",\n    \"✌🏿\",\n    \"🤞\",\n    \"🤞🏻\",\n    \"🤞🏼\",\n    \"🤞🏽\",\n    \"🤞🏾\",\n    \"🤞🏿\",\n    \"🤟\",\n    \"🤟🏻\",\n    \"🤟🏼\",\n    \"🤟🏽\",\n    \"🤟🏾\",\n    \"🤟🏿\",\n    \"🤘\",\n    \"🤘🏻\",\n    \"🤘🏼\",\n    \"🤘🏽\",\n    \"🤘🏾\",\n    \"🤘🏿\",\n    \"🤙\",\n    \"🤙🏻\",\n    \"🤙🏼\",\n    \"🤙🏽\",\n    \"🤙🏾\",\n    \"🤙🏿\",\n    \"👈\",\n    \"👈🏻\",\n    \"👈🏼\",\n    \"👈🏽\",\n    \"👈🏾\",\n    \"👈🏿\",\n    \"👉\",\n    \"👉🏻\",\n    \"👉🏼\",\n    \"👉🏽\",\n    \"👉🏾\",\n    \"👉🏿\",\n    \"👆\",\n    \"👆🏻\",\n    \"👆🏼\",\n    \"👆🏽\",\n    \"👆🏾\",\n    \"👆🏿\",\n    \"🖕\",\n    \"🖕🏻\",\n    \"🖕🏼\",\n    \"🖕🏽\",\n    \"🖕🏾\",\n    \"🖕🏿\",\n    \"👇\",\n    \"👇🏻\",\n    \"👇🏼\",\n    \"👇🏽\",\n    \"👇🏾\",\n    \"👇🏿\",\n    \"☝️\",\n    \"☝🏻\",\n    \"☝🏼\",\n    \"☝🏽\",\n    \"☝🏾\",\n    \"☝🏿\",\n    \"👍\",\n    \"👍🏻\",\n    \"👍🏼\",\n    \"👍🏽\",\n    \"👍🏾\",\n    \"👍🏿\",\n    \"👎\",\n    \"👎🏻\",\n    \"👎🏼\",\n    \"👎🏽\",\n    \"👎🏾\",\n    \"👎🏿\",\n    \"✊\",\n    \"✊🏻\",\n    \"✊🏼\",\n    \"✊🏽\",\n    \"✊🏾\",\n    \"✊🏿\",\n    \"👊\",\n    \"👊🏻\",\n    \"👊🏼\",\n    \"👊🏽\",\n    \"👊🏾\",\n    \"👊🏿\",\n    \"🤛\",\n    \"🤛🏻\",\n    \"🤛🏼\",\n    \"🤛🏽\",\n    \"🤛🏾\",\n    \"🤛🏿\",\n    \"🤜\",\n    \"🤜🏻\",\n    \"🤜🏼\",\n    \"🤜🏽\",\n    \"🤜🏾\",\n    \"🤜🏿\",\n    \"👏\",\n    \"👏🏻\",\n    \"👏🏼\",\n    \"👏🏽\",\n    \"👏🏾\",\n    \"👏🏿\",\n    \"🙌\",\n    \"🙌🏻\",\n    \"🙌🏼\",\n    \"🙌🏽\",\n    \"🙌🏾\",\n    \"🙌🏿\",\n    \"👐\",\n    \"👐🏻\",\n    \"👐🏼\",\n    \"👐🏽\",\n    \"👐🏾\",\n    \"👐🏿\",\n    \"🤲\",\n    \"🤲🏻\",\n    \"🤲🏼\",\n    \"🤲🏽\",\n    \"🤲🏾\",\n    \"🤲🏿\",\n    \"🤝\",\n    \"🙏\",\n    \"🙏🏻\",\n    \"🙏🏼\",\n    \"🙏🏽\",\n    \"🙏🏾\",\n    \"🙏🏿\",\n    \"✍️\",\n    \"✍🏻\",\n    \"✍🏼\",\n    \"✍🏽\",\n    \"✍🏾\",\n    \"✍🏿\",\n    \"💅\",\n    \"💅🏻\",\n    \"💅🏼\",\n    \"💅🏽\",\n    \"💅🏾\",\n    \"💅🏿\",\n    \"🤳\",\n    \"🤳🏻\",\n    \"🤳🏼\",\n    \"🤳🏽\",\n    \"🤳🏾\",\n    \"🤳🏿\",\n    \"💪\",\n    \"💪🏻\",\n    \"💪🏼\",\n    \"💪🏽\",\n    \"💪🏾\",\n    \"💪🏿\",\n    \"🦾\",\n    \"🦿\",\n    \"🦵\",\n    \"🦵🏻\",\n    \"🦵🏼\",\n    \"🦵🏽\",\n    \"🦵🏾\",\n    \"🦵🏿\",\n    \"🦶\",\n    \"🦶🏻\",\n    \"🦶🏼\",\n    \"🦶🏽\",\n    \"🦶🏾\",\n    \"🦶🏿\",\n    \"👂\",\n    \"👂🏻\",\n    \"👂🏼\",\n    \"👂🏽\",\n    \"👂🏾\",\n    \"👂🏿\",\n    \"🦻\",\n    \"🦻🏻\",\n    \"🦻🏼\",\n    \"🦻🏽\",\n    \"🦻🏾\",\n    \"🦻🏿\",\n    \"👃\",\n    \"👃🏻\",\n    \"👃🏼\",\n    \"👃🏽\",\n    \"👃🏾\",\n    \"👃🏿\",\n    \"🧠\",\n    \"🫀\",\n    \"🫁\",\n    \"🦷\",\n    \"🦴\",\n    \"👀\",\n    \"👁️\",\n    \"👅\",\n    \"👄\",\n  ],\n  person: [\n    \"👶\",\n    \"👶🏻\",\n    \"👶🏼\",\n    \"👶🏽\",\n    \"👶🏾\",\n    \"👶🏿\",\n    \"🧒\",\n    \"🧒🏻\",\n    \"🧒🏼\",\n    \"🧒🏽\",\n    \"🧒🏾\",\n    \"🧒🏿\",\n    \"👦\",\n    \"👦🏻\",\n    \"👦🏼\",\n    \"👦🏽\",\n    \"👦🏾\",\n    \"👦🏿\",\n    \"👧\",\n    \"👧🏻\",\n    \"👧🏼\",\n    \"👧🏽\",\n    \"👧🏾\",\n    \"👧🏿\",\n    \"🧑\",\n    \"🧑🏻\",\n    \"🧑🏼\",\n    \"🧑🏽\",\n    \"🧑🏾\",\n    \"🧑🏿\",\n    \"👱\",\n    \"👱🏻\",\n    \"👱🏼\",\n    \"👱🏽\",\n    \"👱🏾\",\n    \"👱🏿\",\n    \"👨\",\n    \"👨🏻\",\n    \"👨🏼\",\n    \"👨🏽\",\n    \"👨🏾\",\n    \"👨🏿\",\n    \"🧔\",\n    \"🧔🏻\",\n    \"🧔🏼\",\n    \"🧔🏽\",\n    \"🧔🏾\",\n    \"🧔🏿\",\n    \"🧔‍♂️\",\n    \"🧔🏻‍♂️\",\n    \"🧔🏼‍♂️\",\n    \"🧔🏽‍♂️\",\n    \"🧔🏾‍♂️\",\n    \"🧔🏿‍♂️\",\n    \"🧔‍♀️\",\n    \"🧔🏻‍♀️\",\n    \"🧔🏼‍♀️\",\n    \"🧔🏽‍♀️\",\n    \"🧔🏾‍♀️\",\n    \"🧔🏿‍♀️\",\n    \"👨‍🦰\",\n    \"👨🏻‍🦰\",\n    \"👨🏼‍🦰\",\n    \"👨🏽‍🦰\",\n    \"👨🏾‍🦰\",\n    \"👨🏿‍🦰\",\n    \"👨‍🦱\",\n    \"👨🏻‍🦱\",\n    \"👨🏼‍🦱\",\n    \"👨🏽‍🦱\",\n    \"👨🏾‍🦱\",\n    \"👨🏿‍🦱\",\n    \"👨‍🦳\",\n    \"👨🏻‍🦳\",\n    \"👨🏼‍🦳\",\n    \"👨🏽‍🦳\",\n    \"👨🏾‍🦳\",\n    \"👨🏿‍🦳\",\n    \"👨‍🦲\",\n    \"👨🏻‍🦲\",\n    \"👨🏼‍🦲\",\n    \"👨🏽‍🦲\",\n    \"👨🏾‍🦲\",\n    \"👨🏿‍🦲\",\n    \"👩\",\n    \"👩🏻\",\n    \"👩🏼\",\n    \"👩🏽\",\n    \"👩🏾\",\n    \"👩🏿\",\n    \"👩‍🦰\",\n    \"👩🏻‍🦰\",\n    \"👩🏼‍🦰\",\n    \"👩🏽‍🦰\",\n    \"👩🏾‍🦰\",\n    \"👩🏿‍🦰\",\n    \"🧑‍🦰\",\n    \"🧑🏻‍🦰\",\n    \"🧑🏼‍🦰\",\n    \"🧑🏽‍🦰\",\n    \"🧑🏾‍🦰\",\n    \"🧑🏿‍🦰\",\n    \"👩‍🦱\",\n    \"👩🏻‍🦱\",\n    \"👩🏼‍🦱\",\n    \"👩🏽‍🦱\",\n    \"👩🏾‍🦱\",\n    \"👩🏿‍🦱\",\n    \"🧑‍🦱\",\n    \"🧑🏻‍🦱\",\n    \"🧑🏼‍🦱\",\n    \"🧑🏽‍🦱\",\n    \"🧑🏾‍🦱\",\n    \"🧑🏿‍🦱\",\n    \"👩‍🦳\",\n    \"👩🏻‍🦳\",\n    \"👩🏼‍🦳\",\n    \"👩🏽‍🦳\",\n    \"👩🏾‍🦳\",\n    \"👩🏿‍🦳\",\n    \"🧑‍🦳\",\n    \"🧑🏻‍🦳\",\n    \"🧑🏼‍🦳\",\n    \"🧑🏽‍🦳\",\n    \"🧑🏾‍🦳\",\n    \"🧑🏿‍🦳\",\n    \"👩‍🦲\",\n    \"👩🏻‍🦲\",\n    \"👩🏼‍🦲\",\n    \"👩🏽‍🦲\",\n    \"👩🏾‍🦲\",\n    \"👩🏿‍🦲\",\n    \"🧑‍🦲\",\n    \"🧑🏻‍🦲\",\n    \"🧑🏼‍🦲\",\n    \"🧑🏽‍🦲\",\n    \"🧑🏾‍🦲\",\n    \"🧑🏿‍🦲\",\n    \"👱‍♀️\",\n    \"👱🏻‍♀️\",\n    \"👱🏼‍♀️\",\n    \"👱🏽‍♀️\",\n    \"👱🏾‍♀️\",\n    \"👱🏿‍♀️\",\n    \"👱‍♂️\",\n    \"👱🏻‍♂️\",\n    \"👱🏼‍♂️\",\n    \"👱🏽‍♂️\",\n    \"👱🏾‍♂️\",\n    \"👱🏿‍♂️\",\n    \"🧓\",\n    \"🧓🏻\",\n    \"🧓🏼\",\n    \"🧓🏽\",\n    \"🧓🏾\",\n    \"🧓🏿\",\n    \"👴\",\n    \"👴🏻\",\n    \"👴🏼\",\n    \"👴🏽\",\n    \"👴🏾\",\n    \"👴🏿\",\n    \"👵\",\n    \"👵🏻\",\n    \"👵🏼\",\n    \"👵🏽\",\n    \"👵🏾\",\n    \"👵🏿\",\n    \"🙍\",\n    \"🙍🏻\",\n    \"🙍🏼\",\n    \"🙍🏽\",\n    \"🙍🏾\",\n    \"🙍🏿\",\n    \"🙍‍♂️\",\n    \"🙍🏻‍♂️\",\n    \"🙍🏼‍♂️\",\n    \"🙍🏽‍♂️\",\n    \"🙍🏾‍♂️\",\n    \"🙍🏿‍♂️\",\n    \"🙍‍♀️\",\n    \"🙍🏻‍♀️\",\n    \"🙍🏼‍♀️\",\n    \"🙍🏽‍♀️\",\n    \"🙍🏾‍♀️\",\n    \"🙍🏿‍♀️\",\n    \"🙎\",\n    \"🙎🏻\",\n    \"🙎🏼\",\n    \"🙎🏽\",\n    \"🙎🏾\",\n    \"🙎🏿\",\n    \"🙎‍♂️\",\n    \"🙎🏻‍♂️\",\n    \"🙎🏼‍♂️\",\n    \"🙎🏽‍♂️\",\n    \"🙎🏾‍♂️\",\n    \"🙎🏿‍♂️\",\n    \"🙎‍♀️\",\n    \"🙎🏻‍♀️\",\n    \"🙎🏼‍♀️\",\n    \"🙎🏽‍♀️\",\n    \"🙎🏾‍♀️\",\n    \"🙎🏿‍♀️\",\n    \"🙅\",\n    \"🙅🏻\",\n    \"🙅🏼\",\n    \"🙅🏽\",\n    \"🙅🏾\",\n    \"🙅🏿\",\n    \"🙅‍♂️\",\n    \"🙅🏻‍♂️\",\n    \"🙅🏼‍♂️\",\n    \"🙅🏽‍♂️\",\n    \"🙅🏾‍♂️\",\n    \"🙅🏿‍♂️\",\n    \"🙅‍♀️\",\n    \"🙅🏻‍♀️\",\n    \"🙅🏼‍♀️\",\n    \"🙅🏽‍♀️\",\n    \"🙅🏾‍♀️\",\n    \"🙅🏿‍♀️\",\n    \"🙆\",\n    \"🙆🏻\",\n    \"🙆🏼\",\n    \"🙆🏽\",\n    \"🙆🏾\",\n    \"🙆🏿\",\n    \"🙆‍♂️\",\n    \"🙆🏻‍♂️\",\n    \"🙆🏼‍♂️\",\n    \"🙆🏽‍♂️\",\n    \"🙆🏾‍♂️\",\n    \"🙆🏿‍♂️\",\n    \"🙆‍♀️\",\n    \"🙆🏻‍♀️\",\n    \"🙆🏼‍♀️\",\n    \"🙆🏽‍♀️\",\n    \"🙆🏾‍♀️\",\n    \"🙆🏿‍♀️\",\n    \"💁\",\n    \"💁🏻\",\n    \"💁🏼\",\n    \"💁🏽\",\n    \"💁🏾\",\n    \"💁🏿\",\n    \"💁‍♂️\",\n    \"💁🏻‍♂️\",\n    \"💁🏼‍♂️\",\n    \"💁🏽‍♂️\",\n    \"💁🏾‍♂️\",\n    \"💁🏿‍♂️\",\n    \"💁‍♀️\",\n    \"💁🏻‍♀️\",\n    \"💁🏼‍♀️\",\n    \"💁🏽‍♀️\",\n    \"💁🏾‍♀️\",\n    \"💁🏿‍♀️\",\n    \"🙋\",\n    \"🙋🏻\",\n    \"🙋🏼\",\n    \"🙋🏽\",\n    \"🙋🏾\",\n    \"🙋🏿\",\n    \"🙋‍♂️\",\n    \"🙋🏻‍♂️\",\n    \"🙋🏼‍♂️\",\n    \"🙋🏽‍♂️\",\n    \"🙋🏾‍♂️\",\n    \"🙋🏿‍♂️\",\n    \"🙋‍♀️\",\n    \"🙋🏻‍♀️\",\n    \"🙋🏼‍♀️\",\n    \"🙋🏽‍♀️\",\n    \"🙋🏾‍♀️\",\n    \"🙋🏿‍♀️\",\n    \"🧏\",\n    \"🧏🏻\",\n    \"🧏🏼\",\n    \"🧏🏽\",\n    \"🧏🏾\",\n    \"🧏🏿\",\n    \"🧏‍♂️\",\n    \"🧏🏻‍♂️\",\n    \"🧏🏼‍♂️\",\n    \"🧏🏽‍♂️\",\n    \"🧏🏾‍♂️\",\n    \"🧏🏿‍♂️\",\n    \"🧏‍♀️\",\n    \"🧏🏻‍♀️\",\n    \"🧏🏼‍♀️\",\n    \"🧏🏽‍♀️\",\n    \"🧏🏾‍♀️\",\n    \"🧏🏿‍♀️\",\n    \"🙇\",\n    \"🙇🏻\",\n    \"🙇🏼\",\n    \"🙇🏽\",\n    \"🙇🏾\",\n    \"🙇🏿\",\n    \"🙇‍♂️\",\n    \"🙇🏻‍♂️\",\n    \"🙇🏼‍♂️\",\n    \"🙇🏽‍♂️\",\n    \"🙇🏾‍♂️\",\n    \"🙇🏿‍♂️\",\n    \"🙇‍♀️\",\n    \"🙇🏻‍♀️\",\n    \"🙇🏼‍♀️\",\n    \"🙇🏽‍♀️\",\n    \"🙇🏾‍♀️\",\n    \"🙇🏿‍♀️\",\n    \"🤦\",\n    \"🤦🏻\",\n    \"🤦🏼\",\n    \"🤦🏽\",\n    \"🤦🏾\",\n    \"🤦🏿\",\n    \"🤦‍♂️\",\n    \"🤦🏻‍♂️\",\n    \"🤦🏼‍♂️\",\n    \"🤦🏽‍♂️\",\n    \"🤦🏾‍♂️\",\n    \"🤦🏿‍♂️\",\n    \"🤦‍♀️\",\n    \"🤦🏻‍♀️\",\n    \"🤦🏼‍♀️\",\n    \"🤦🏽‍♀️\",\n    \"🤦🏾‍♀️\",\n    \"🤦🏿‍♀️\",\n    \"🤷\",\n    \"🤷🏻\",\n    \"🤷🏼\",\n    \"🤷🏽\",\n    \"🤷🏾\",\n    \"🤷🏿\",\n    \"🤷‍♂️\",\n    \"🤷🏻‍♂️\",\n    \"🤷🏼‍♂️\",\n    \"🤷🏽‍♂️\",\n    \"🤷🏾‍♂️\",\n    \"🤷🏿‍♂️\",\n    \"🤷‍♀️\",\n    \"🤷🏻‍♀️\",\n    \"🤷🏼‍♀️\",\n    \"🤷🏽‍♀️\",\n    \"🤷🏾‍♀️\",\n    \"🤷🏿‍♀️\",\n    \"🧑‍⚕️\",\n    \"🧑🏻‍⚕️\",\n    \"🧑🏼‍⚕️\",\n    \"🧑🏽‍⚕️\",\n    \"🧑🏾‍⚕️\",\n    \"🧑🏿‍⚕️\",\n    \"👨‍⚕️\",\n    \"👨🏻‍⚕️\",\n    \"👨🏼‍⚕️\",\n    \"👨🏽‍⚕️\",\n    \"👨🏾‍⚕️\",\n    \"👨🏿‍⚕️\",\n    \"👩‍⚕️\",\n    \"👩🏻‍⚕️\",\n    \"👩🏼‍⚕️\",\n    \"👩🏽‍⚕️\",\n    \"👩🏾‍⚕️\",\n    \"👩🏿‍⚕️\",\n    \"🧑‍🎓\",\n    \"🧑🏻‍🎓\",\n    \"🧑🏼‍🎓\",\n    \"🧑🏽‍🎓\",\n    \"🧑🏾‍🎓\",\n    \"🧑🏿‍🎓\",\n    \"👨‍🎓\",\n    \"👨🏻‍🎓\",\n    \"👨🏼‍🎓\",\n    \"👨🏽‍🎓\",\n    \"👨🏾‍🎓\",\n    \"👨🏿‍🎓\",\n    \"👩‍🎓\",\n    \"👩🏻‍🎓\",\n    \"👩🏼‍🎓\",\n    \"👩🏽‍🎓\",\n    \"👩🏾‍🎓\",\n    \"👩🏿‍🎓\",\n    \"🧑‍🏫\",\n    \"🧑🏻‍🏫\",\n    \"🧑🏼‍🏫\",\n    \"🧑🏽‍🏫\",\n    \"🧑🏾‍🏫\",\n    \"🧑🏿‍🏫\",\n    \"👨‍🏫\",\n    \"👨🏻‍🏫\",\n    \"👨🏼‍🏫\",\n    \"👨🏽‍🏫\",\n    \"👨🏾‍🏫\",\n    \"👨🏿‍🏫\",\n    \"👩‍🏫\",\n    \"👩🏻‍🏫\",\n    \"👩🏼‍🏫\",\n    \"👩🏽‍🏫\",\n    \"👩🏾‍🏫\",\n    \"👩🏿‍🏫\",\n    \"🧑‍⚖️\",\n    \"🧑🏻‍⚖️\",\n    \"🧑🏼‍⚖️\",\n    \"🧑🏽‍⚖️\",\n    \"🧑🏾‍⚖️\",\n    \"🧑🏿‍⚖️\",\n    \"👨‍⚖️\",\n    \"👨🏻‍⚖️\",\n    \"👨🏼‍⚖️\",\n    \"👨🏽‍⚖️\",\n    \"👨🏾‍⚖️\",\n    \"👨🏿‍⚖️\",\n    \"👩‍⚖️\",\n    \"👩🏻‍⚖️\",\n    \"👩🏼‍⚖️\",\n    \"👩🏽‍⚖️\",\n    \"👩🏾‍⚖️\",\n    \"👩🏿‍⚖️\",\n    \"🧑‍🌾\",\n    \"🧑🏻‍🌾\",\n    \"🧑🏼‍🌾\",\n    \"🧑🏽‍🌾\",\n    \"🧑🏾‍🌾\",\n    \"🧑🏿‍🌾\",\n    \"👨‍🌾\",\n    \"👨🏻‍🌾\",\n    \"👨🏼‍🌾\",\n    \"👨🏽‍🌾\",\n    \"👨🏾‍🌾\",\n    \"👨🏿‍🌾\",\n    \"👩‍🌾\",\n    \"👩🏻‍🌾\",\n    \"👩🏼‍🌾\",\n    \"👩🏽‍🌾\",\n    \"👩🏾‍🌾\",\n    \"👩🏿‍🌾\",\n    \"🧑‍🍳\",\n    \"🧑🏻‍🍳\",\n    \"🧑🏼‍🍳\",\n    \"🧑🏽‍🍳\",\n    \"🧑🏾‍🍳\",\n    \"🧑🏿‍🍳\",\n    \"👨‍🍳\",\n    \"👨🏻‍🍳\",\n    \"👨🏼‍🍳\",\n    \"👨🏽‍🍳\",\n    \"👨🏾‍🍳\",\n    \"👨🏿‍🍳\",\n    \"👩‍🍳\",\n    \"👩🏻‍🍳\",\n    \"👩🏼‍🍳\",\n    \"👩🏽‍🍳\",\n    \"👩🏾‍🍳\",\n    \"👩🏿‍🍳\",\n    \"🧑‍🔧\",\n    \"🧑🏻‍🔧\",\n    \"🧑🏼‍🔧\",\n    \"🧑🏽‍🔧\",\n    \"🧑🏾‍🔧\",\n    \"🧑🏿‍🔧\",\n    \"👨‍🔧\",\n    \"👨🏻‍🔧\",\n    \"👨🏼‍🔧\",\n    \"👨🏽‍🔧\",\n    \"👨🏾‍🔧\",\n    \"👨🏿‍🔧\",\n    \"👩‍🔧\",\n    \"👩🏻‍🔧\",\n    \"👩🏼‍🔧\",\n    \"👩🏽‍🔧\",\n    \"👩🏾‍🔧\",\n    \"👩🏿‍🔧\",\n    \"🧑‍🏭\",\n    \"🧑🏻‍🏭\",\n    \"🧑🏼‍🏭\",\n    \"🧑🏽‍🏭\",\n    \"🧑🏾‍🏭\",\n    \"🧑🏿‍🏭\",\n    \"👨‍🏭\",\n    \"👨🏻‍🏭\",\n    \"👨🏼‍🏭\",\n    \"👨🏽‍🏭\",\n    \"👨🏾‍🏭\",\n    \"👨🏿‍🏭\",\n    \"👩‍🏭\",\n    \"👩🏻‍🏭\",\n    \"👩🏼‍🏭\",\n    \"👩🏽‍🏭\",\n    \"👩🏾‍🏭\",\n    \"👩🏿‍🏭\",\n    \"🧑‍💼\",\n    \"🧑🏻‍💼\",\n    \"🧑🏼‍💼\",\n    \"🧑🏽‍💼\",\n    \"🧑🏾‍💼\",\n    \"🧑🏿‍💼\",\n    \"👨‍💼\",\n    \"👨🏻‍💼\",\n    \"👨🏼‍💼\",\n    \"👨🏽‍💼\",\n    \"👨🏾‍💼\",\n    \"👨🏿‍💼\",\n    \"👩‍💼\",\n    \"👩🏻‍💼\",\n    \"👩🏼‍💼\",\n    \"👩🏽‍💼\",\n    \"👩🏾‍💼\",\n    \"👩🏿‍💼\",\n    \"🧑‍🔬\",\n    \"🧑🏻‍🔬\",\n    \"🧑🏼‍🔬\",\n    \"🧑🏽‍🔬\",\n    \"🧑🏾‍🔬\",\n    \"🧑🏿‍🔬\",\n    \"👨‍🔬\",\n    \"👨🏻‍🔬\",\n    \"👨🏼‍🔬\",\n    \"👨🏽‍🔬\",\n    \"👨🏾‍🔬\",\n    \"👨🏿‍🔬\",\n    \"👩‍🔬\",\n    \"👩🏻‍🔬\",\n    \"👩🏼‍🔬\",\n    \"👩🏽‍🔬\",\n    \"👩🏾‍🔬\",\n    \"👩🏿‍🔬\",\n    \"🧑‍💻\",\n    \"🧑🏻‍💻\",\n    \"🧑🏼‍💻\",\n    \"🧑🏽‍💻\",\n    \"🧑🏾‍💻\",\n    \"🧑🏿‍💻\",\n    \"👨‍💻\",\n    \"👨🏻‍💻\",\n    \"👨🏼‍💻\",\n    \"👨🏽‍💻\",\n    \"👨🏾‍💻\",\n    \"👨🏿‍💻\",\n    \"👩‍💻\",\n    \"👩🏻‍💻\",\n    \"👩🏼‍💻\",\n    \"👩🏽‍💻\",\n    \"👩🏾‍💻\",\n    \"👩🏿‍💻\",\n    \"🧑‍🎤\",\n    \"🧑🏻‍🎤\",\n    \"🧑🏼‍🎤\",\n    \"🧑🏽‍🎤\",\n    \"🧑🏾‍🎤\",\n    \"🧑🏿‍🎤\",\n    \"👨‍🎤\",\n    \"👨🏻‍🎤\",\n    \"👨🏼‍🎤\",\n    \"👨🏽‍🎤\",\n    \"👨🏾‍🎤\",\n    \"👨🏿‍🎤\",\n    \"👩‍🎤\",\n    \"👩🏻‍🎤\",\n    \"👩🏼‍🎤\",\n    \"👩🏽‍🎤\",\n    \"👩🏾‍🎤\",\n    \"👩🏿‍🎤\",\n    \"🧑‍🎨\",\n    \"🧑🏻‍🎨\",\n    \"🧑🏼‍🎨\",\n    \"🧑🏽‍🎨\",\n    \"🧑🏾‍🎨\",\n    \"🧑🏿‍🎨\",\n    \"👨‍🎨\",\n    \"👨🏻‍🎨\",\n    \"👨🏼‍🎨\",\n    \"👨🏽‍🎨\",\n    \"👨🏾‍🎨\",\n    \"👨🏿‍🎨\",\n    \"👩‍🎨\",\n    \"👩🏻‍🎨\",\n    \"👩🏼‍🎨\",\n    \"👩🏽‍🎨\",\n    \"👩🏾‍🎨\",\n    \"👩🏿‍🎨\",\n    \"🧑‍✈️\",\n    \"🧑🏻‍✈️\",\n    \"🧑🏼‍✈️\",\n    \"🧑🏽‍✈️\",\n    \"🧑🏾‍✈️\",\n    \"🧑🏿‍✈️\",\n    \"👨‍✈️\",\n    \"👨🏻‍✈️\",\n    \"👨🏼‍✈️\",\n    \"👨🏽‍✈️\",\n    \"👨🏾‍✈️\",\n    \"👨🏿‍✈️\",\n    \"👩‍✈️\",\n    \"👩🏻‍✈️\",\n    \"👩🏼‍✈️\",\n    \"👩🏽‍✈️\",\n    \"👩🏾‍✈️\",\n    \"👩🏿‍✈️\",\n    \"🧑‍🚀\",\n    \"🧑🏻‍🚀\",\n    \"🧑🏼‍🚀\",\n    \"🧑🏽‍🚀\",\n    \"🧑🏾‍🚀\",\n    \"🧑🏿‍🚀\",\n    \"👨‍🚀\",\n    \"👨🏻‍🚀\",\n    \"👨🏼‍🚀\",\n    \"👨🏽‍🚀\",\n    \"👨🏾‍🚀\",\n    \"👨🏿‍🚀\",\n    \"👩‍🚀\",\n    \"👩🏻‍🚀\",\n    \"👩🏼‍🚀\",\n    \"👩🏽‍🚀\",\n    \"👩🏾‍🚀\",\n    \"👩🏿‍🚀\",\n    \"🧑‍🚒\",\n    \"🧑🏻‍🚒\",\n    \"🧑🏼‍🚒\",\n    \"🧑🏽‍🚒\",\n    \"🧑🏾‍🚒\",\n    \"🧑🏿‍🚒\",\n    \"👨‍🚒\",\n    \"👨🏻‍🚒\",\n    \"👨🏼‍🚒\",\n    \"👨🏽‍🚒\",\n    \"👨🏾‍🚒\",\n    \"👨🏿‍🚒\",\n    \"👩‍🚒\",\n    \"👩🏻‍🚒\",\n    \"👩🏼‍🚒\",\n    \"👩🏽‍🚒\",\n    \"👩🏾‍🚒\",\n    \"👩🏿‍🚒\",\n    \"👮\",\n    \"👮🏻\",\n    \"👮🏼\",\n    \"👮🏽\",\n    \"👮🏾\",\n    \"👮🏿\",\n    \"👮‍♂️\",\n    \"👮🏻‍♂️\",\n    \"👮🏼‍♂️\",\n    \"👮🏽‍♂️\",\n    \"👮🏾‍♂️\",\n    \"👮🏿‍♂️\",\n    \"👮‍♀️\",\n    \"👮🏻‍♀️\",\n    \"👮🏼‍♀️\",\n    \"👮🏽‍♀️\",\n    \"👮🏾‍♀️\",\n    \"👮🏿‍♀️\",\n    \"🕵️\",\n    \"🕵🏻\",\n    \"🕵🏼\",\n    \"🕵🏽\",\n    \"🕵🏾\",\n    \"🕵🏿\",\n    \"🕵️‍♂️\",\n    \"🕵🏻‍♂️\",\n    \"🕵🏼‍♂️\",\n    \"🕵🏽‍♂️\",\n    \"🕵🏾‍♂️\",\n    \"🕵🏿‍♂️\",\n    \"🕵️‍♀️\",\n    \"🕵🏻‍♀️\",\n    \"🕵🏼‍♀️\",\n    \"🕵🏽‍♀️\",\n    \"🕵🏾‍♀️\",\n    \"🕵🏿‍♀️\",\n    \"💂\",\n    \"💂🏻\",\n    \"💂🏼\",\n    \"💂🏽\",\n    \"💂🏾\",\n    \"💂🏿\",\n    \"💂‍♂️\",\n    \"💂🏻‍♂️\",\n    \"💂🏼‍♂️\",\n    \"💂🏽‍♂️\",\n    \"💂🏾‍♂️\",\n    \"💂🏿‍♂️\",\n    \"💂‍♀️\",\n    \"💂🏻‍♀️\",\n    \"💂🏼‍♀️\",\n    \"💂🏽‍♀️\",\n    \"💂🏾‍♀️\",\n    \"💂🏿‍♀️\",\n    \"🥷\",\n    \"🥷🏻\",\n    \"🥷🏼\",\n    \"🥷🏽\",\n    \"🥷🏾\",\n    \"🥷🏿\",\n    \"👷\",\n    \"👷🏻\",\n    \"👷🏼\",\n    \"👷🏽\",\n    \"👷🏾\",\n    \"👷🏿\",\n    \"👷‍♂️\",\n    \"👷🏻‍♂️\",\n    \"👷🏼‍♂️\",\n    \"👷🏽‍♂️\",\n    \"👷🏾‍♂️\",\n    \"👷🏿‍♂️\",\n    \"👷‍♀️\",\n    \"👷🏻‍♀️\",\n    \"👷🏼‍♀️\",\n    \"👷🏽‍♀️\",\n    \"👷🏾‍♀️\",\n    \"👷🏿‍♀️\",\n    \"🤴\",\n    \"🤴🏻\",\n    \"🤴🏼\",\n    \"🤴🏽\",\n    \"🤴🏾\",\n    \"🤴🏿\",\n    \"👸\",\n    \"👸🏻\",\n    \"👸🏼\",\n    \"👸🏽\",\n    \"👸🏾\",\n    \"👸🏿\",\n    \"👳\",\n    \"👳🏻\",\n    \"👳🏼\",\n    \"👳🏽\",\n    \"👳🏾\",\n    \"👳🏿\",\n    \"👳‍♂️\",\n    \"👳🏻‍♂️\",\n    \"👳🏼‍♂️\",\n    \"👳🏽‍♂️\",\n    \"👳🏾‍♂️\",\n    \"👳🏿‍♂️\",\n    \"👳‍♀️\",\n    \"👳🏻‍♀️\",\n    \"👳🏼‍♀️\",\n    \"👳🏽‍♀️\",\n    \"👳🏾‍♀️\",\n    \"👳🏿‍♀️\",\n    \"👲\",\n    \"👲🏻\",\n    \"👲🏼\",\n    \"👲🏽\",\n    \"👲🏾\",\n    \"👲🏿\",\n    \"🧕\",\n    \"🧕🏻\",\n    \"🧕🏼\",\n    \"🧕🏽\",\n    \"🧕🏾\",\n    \"🧕🏿\",\n    \"🤵\",\n    \"🤵🏻\",\n    \"🤵🏼\",\n    \"🤵🏽\",\n    \"🤵🏾\",\n    \"🤵🏿\",\n    \"🤵‍♂️\",\n    \"🤵🏻‍♂️\",\n    \"🤵🏼‍♂️\",\n    \"🤵🏽‍♂️\",\n    \"🤵🏾‍♂️\",\n    \"🤵🏿‍♂️\",\n    \"🤵‍♀️\",\n    \"🤵🏻‍♀️\",\n    \"🤵🏼‍♀️\",\n    \"🤵🏽‍♀️\",\n    \"🤵🏾‍♀️\",\n    \"🤵🏿‍♀️\",\n    \"👰\",\n    \"👰🏻\",\n    \"👰🏼\",\n    \"👰🏽\",\n    \"👰🏾\",\n    \"👰🏿\",\n    \"👰‍♂️\",\n    \"👰🏻‍♂️\",\n    \"👰🏼‍♂️\",\n    \"👰🏽‍♂️\",\n    \"👰🏾‍♂️\",\n    \"👰🏿‍♂️\",\n    \"👰‍♀️\",\n    \"👰🏻‍♀️\",\n    \"👰🏼‍♀️\",\n    \"👰🏽‍♀️\",\n    \"👰🏾‍♀️\",\n    \"👰🏿‍♀️\",\n    \"🤰\",\n    \"🤰🏻\",\n    \"🤰🏼\",\n    \"🤰🏽\",\n    \"🤰🏾\",\n    \"🤰🏿\",\n    \"🤱\",\n    \"🤱🏻\",\n    \"🤱🏼\",\n    \"🤱🏽\",\n    \"🤱🏾\",\n    \"🤱🏿\",\n    \"👩‍🍼\",\n    \"👩🏻‍🍼\",\n    \"👩🏼‍🍼\",\n    \"👩🏽‍🍼\",\n    \"👩🏾‍🍼\",\n    \"👩🏿‍🍼\",\n    \"👨‍🍼\",\n    \"👨🏻‍🍼\",\n    \"👨🏼‍🍼\",\n    \"👨🏽‍🍼\",\n    \"👨🏾‍🍼\",\n    \"👨🏿‍🍼\",\n    \"🧑‍🍼\",\n    \"🧑🏻‍🍼\",\n    \"🧑🏼‍🍼\",\n    \"🧑🏽‍🍼\",\n    \"🧑🏾‍🍼\",\n    \"🧑🏿‍🍼\",\n    \"👼\",\n    \"👼🏻\",\n    \"👼🏼\",\n    \"👼🏽\",\n    \"👼🏾\",\n    \"👼🏿\",\n    \"🎅\",\n    \"🎅🏻\",\n    \"🎅🏼\",\n    \"🎅🏽\",\n    \"🎅🏾\",\n    \"🎅🏿\",\n    \"🤶\",\n    \"🤶🏻\",\n    \"🤶🏼\",\n    \"🤶🏽\",\n    \"🤶🏾\",\n    \"🤶🏿\",\n    \"🧑‍🎄\",\n    \"🧑🏻‍🎄\",\n    \"🧑🏼‍🎄\",\n    \"🧑🏽‍🎄\",\n    \"🧑🏾‍🎄\",\n    \"🧑🏿‍🎄\",\n    \"🦸\",\n    \"🦸🏻\",\n    \"🦸🏼\",\n    \"🦸🏽\",\n    \"🦸🏾\",\n    \"🦸🏿\",\n    \"🦸‍♂️\",\n    \"🦸🏻‍♂️\",\n    \"🦸🏼‍♂️\",\n    \"🦸🏽‍♂️\",\n    \"🦸🏾‍♂️\",\n    \"🦸🏿‍♂️\",\n    \"🦸‍♀️\",\n    \"🦸🏻‍♀️\",\n    \"🦸🏼‍♀️\",\n    \"🦸🏽‍♀️\",\n    \"🦸🏾‍♀️\",\n    \"🦸🏿‍♀️\",\n    \"🦹\",\n    \"🦹🏻\",\n    \"🦹🏼\",\n    \"🦹🏽\",\n    \"🦹🏾\",\n    \"🦹🏿\",\n    \"🦹‍♂️\",\n    \"🦹🏻‍♂️\",\n    \"🦹🏼‍♂️\",\n    \"🦹🏽‍♂️\",\n    \"🦹🏾‍♂️\",\n    \"🦹🏿‍♂️\",\n    \"🦹‍♀️\",\n    \"🦹🏻‍♀️\",\n    \"🦹🏼‍♀️\",\n    \"🦹🏽‍♀️\",\n    \"🦹🏾‍♀️\",\n    \"🦹🏿‍♀️\",\n    \"🧙\",\n    \"🧙🏻\",\n    \"🧙🏼\",\n    \"🧙🏽\",\n    \"🧙🏾\",\n    \"🧙🏿\",\n    \"🧙‍♂️\",\n    \"🧙🏻‍♂️\",\n    \"🧙🏼‍♂️\",\n    \"🧙🏽‍♂️\",\n    \"🧙🏾‍♂️\",\n    \"🧙🏿‍♂️\",\n    \"🧙‍♀️\",\n    \"🧙🏻‍♀️\",\n    \"🧙🏼‍♀️\",\n    \"🧙🏽‍♀️\",\n    \"🧙🏾‍♀️\",\n    \"🧙🏿‍♀️\",\n    \"🧚\",\n    \"🧚🏻\",\n    \"🧚🏼\",\n    \"🧚🏽\",\n    \"🧚🏾\",\n    \"🧚🏿\",\n    \"🧚‍♂️\",\n    \"🧚🏻‍♂️\",\n    \"🧚🏼‍♂️\",\n    \"🧚🏽‍♂️\",\n    \"🧚🏾‍♂️\",\n    \"🧚🏿‍♂️\",\n    \"🧚‍♀️\",\n    \"🧚🏻‍♀️\",\n    \"🧚🏼‍♀️\",\n    \"🧚🏽‍♀️\",\n    \"🧚🏾‍♀️\",\n    \"🧚🏿‍♀️\",\n    \"🧛\",\n    \"🧛🏻\",\n    \"🧛🏼\",\n    \"🧛🏽\",\n    \"🧛🏾\",\n    \"🧛🏿\",\n    \"🧛‍♂️\",\n    \"🧛🏻‍♂️\",\n    \"🧛🏼‍♂️\",\n    \"🧛🏽‍♂️\",\n    \"🧛🏾‍♂️\",\n    \"🧛🏿‍♂️\",\n    \"🧛‍♀️\",\n    \"🧛🏻‍♀️\",\n    \"🧛🏼‍♀️\",\n    \"🧛🏽‍♀️\",\n    \"🧛🏾‍♀️\",\n    \"🧛🏿‍♀️\",\n    \"🧜\",\n    \"🧜🏻\",\n    \"🧜🏼\",\n    \"🧜🏽\",\n    \"🧜🏾\",\n    \"🧜🏿\",\n    \"🧜‍♂️\",\n    \"🧜🏻‍♂️\",\n    \"🧜🏼‍♂️\",\n    \"🧜🏽‍♂️\",\n    \"🧜🏾‍♂️\",\n    \"🧜🏿‍♂️\",\n    \"🧜‍♀️\",\n    \"🧜🏻‍♀️\",\n    \"🧜🏼‍♀️\",\n    \"🧜🏽‍♀️\",\n    \"🧜🏾‍♀️\",\n    \"🧜🏿‍♀️\",\n    \"🧝\",\n    \"🧝🏻\",\n    \"🧝🏼\",\n    \"🧝🏽\",\n    \"🧝🏾\",\n    \"🧝🏿\",\n    \"🧝‍♂️\",\n    \"🧝🏻‍♂️\",\n    \"🧝🏼‍♂️\",\n    \"🧝🏽‍♂️\",\n    \"🧝🏾‍♂️\",\n    \"🧝🏿‍♂️\",\n    \"🧝‍♀️\",\n    \"🧝🏻‍♀️\",\n    \"🧝🏼‍♀️\",\n    \"🧝🏽‍♀️\",\n    \"🧝🏾‍♀️\",\n    \"🧝🏿‍♀️\",\n    \"🧞\",\n    \"🧞‍♂️\",\n    \"🧞‍♀️\",\n    \"🧟\",\n    \"🧟‍♂️\",\n    \"🧟‍♀️\",\n    \"💆\",\n    \"💆🏻\",\n    \"💆🏼\",\n    \"💆🏽\",\n    \"💆🏾\",\n    \"💆🏿\",\n    \"💆‍♂️\",\n    \"💆🏻‍♂️\",\n    \"💆🏼‍♂️\",\n    \"💆🏽‍♂️\",\n    \"💆🏾‍♂️\",\n    \"💆🏿‍♂️\",\n    \"💆‍♀️\",\n    \"💆🏻‍♀️\",\n    \"💆🏼‍♀️\",\n    \"💆🏽‍♀️\",\n    \"💆🏾‍♀️\",\n    \"💆🏿‍♀️\",\n    \"💇\",\n    \"💇🏻\",\n    \"💇🏼\",\n    \"💇🏽\",\n    \"💇🏾\",\n    \"💇🏿\",\n    \"💇‍♂️\",\n    \"💇🏻‍♂️\",\n    \"💇🏼‍♂️\",\n    \"💇🏽‍♂️\",\n    \"💇🏾‍♂️\",\n    \"💇🏿‍♂️\",\n    \"💇‍♀️\",\n    \"💇🏻‍♀️\",\n    \"💇🏼‍♀️\",\n    \"💇🏽‍♀️\",\n    \"💇🏾‍♀️\",\n    \"💇🏿‍♀️\",\n    \"🚶\",\n    \"🚶🏻\",\n    \"🚶🏼\",\n    \"🚶🏽\",\n    \"🚶🏾\",\n    \"🚶🏿\",\n    \"🚶‍♂️\",\n    \"🚶🏻‍♂️\",\n    \"🚶🏼‍♂️\",\n    \"🚶🏽‍♂️\",\n    \"🚶🏾‍♂️\",\n    \"🚶🏿‍♂️\",\n    \"🚶‍♀️\",\n    \"🚶🏻‍♀️\",\n    \"🚶🏼‍♀️\",\n    \"🚶🏽‍♀️\",\n    \"🚶🏾‍♀️\",\n    \"🚶🏿‍♀️\",\n    \"🧍\",\n    \"🧍🏻\",\n    \"🧍🏼\",\n    \"🧍🏽\",\n    \"🧍🏾\",\n    \"🧍🏿\",\n    \"🧍‍♂️\",\n    \"🧍🏻‍♂️\",\n    \"🧍🏼‍♂️\",\n    \"🧍🏽‍♂️\",\n    \"🧍🏾‍♂️\",\n    \"🧍🏿‍♂️\",\n    \"🧍‍♀️\",\n    \"🧍🏻‍♀️\",\n    \"🧍🏼‍♀️\",\n    \"🧍🏽‍♀️\",\n    \"🧍🏾‍♀️\",\n    \"🧍🏿‍♀️\",\n    \"🧎\",\n    \"🧎🏻\",\n    \"🧎🏼\",\n    \"🧎🏽\",\n    \"🧎🏾\",\n    \"🧎🏿\",\n    \"🧎‍♂️\",\n    \"🧎🏻‍♂️\",\n    \"🧎🏼‍♂️\",\n    \"🧎🏽‍♂️\",\n    \"🧎🏾‍♂️\",\n    \"🧎🏿‍♂️\",\n    \"🧎‍♀️\",\n    \"🧎🏻‍♀️\",\n    \"🧎🏼‍♀️\",\n    \"🧎🏽‍♀️\",\n    \"🧎🏾‍♀️\",\n    \"🧎🏿‍♀️\",\n    \"🧑‍🦯\",\n    \"🧑🏻‍🦯\",\n    \"🧑🏼‍🦯\",\n    \"🧑🏽‍🦯\",\n    \"🧑🏾‍🦯\",\n    \"🧑🏿‍🦯\",\n    \"👨‍🦯\",\n    \"👨🏻‍🦯\",\n    \"👨🏼‍🦯\",\n    \"👨🏽‍🦯\",\n    \"👨🏾‍🦯\",\n    \"👨🏿‍🦯\",\n    \"👩‍🦯\",\n    \"👩🏻‍🦯\",\n    \"👩🏼‍🦯\",\n    \"👩🏽‍🦯\",\n    \"👩🏾‍🦯\",\n    \"👩🏿‍🦯\",\n    \"🧑‍🦼\",\n    \"🧑🏻‍🦼\",\n    \"🧑🏼‍🦼\",\n    \"🧑🏽‍🦼\",\n    \"🧑🏾‍🦼\",\n    \"🧑🏿‍🦼\",\n    \"👨‍🦼\",\n    \"👨🏻‍🦼\",\n    \"👨🏼‍🦼\",\n    \"👨🏽‍🦼\",\n    \"👨🏾‍🦼\",\n    \"👨🏿‍🦼\",\n    \"👩‍🦼\",\n    \"👩🏻‍🦼\",\n    \"👩🏼‍🦼\",\n    \"👩🏽‍🦼\",\n    \"👩🏾‍🦼\",\n    \"👩🏿‍🦼\",\n    \"🧑‍🦽\",\n    \"🧑🏻‍🦽\",\n    \"🧑🏼‍🦽\",\n    \"🧑🏽‍🦽\",\n    \"🧑🏾‍🦽\",\n    \"🧑🏿‍🦽\",\n    \"👨‍🦽\",\n    \"👨🏻‍🦽\",\n    \"👨🏼‍🦽\",\n    \"👨🏽‍🦽\",\n    \"👨🏾‍🦽\",\n    \"👨🏿‍🦽\",\n    \"👩‍🦽\",\n    \"👩🏻‍🦽\",\n    \"👩🏼‍🦽\",\n    \"👩🏽‍🦽\",\n    \"👩🏾‍🦽\",\n    \"👩🏿‍🦽\",\n    \"🏃\",\n    \"🏃🏻\",\n    \"🏃🏼\",\n    \"🏃🏽\",\n    \"🏃🏾\",\n    \"🏃🏿\",\n    \"🏃‍♂️\",\n    \"🏃🏻‍♂️\",\n    \"🏃🏼‍♂️\",\n    \"🏃🏽‍♂️\",\n    \"🏃🏾‍♂️\",\n    \"🏃🏿‍♂️\",\n    \"🏃‍♀️\",\n    \"🏃🏻‍♀️\",\n    \"🏃🏼‍♀️\",\n    \"🏃🏽‍♀️\",\n    \"🏃🏾‍♀️\",\n    \"🏃🏿‍♀️\",\n    \"💃\",\n    \"💃🏻\",\n    \"💃🏼\",\n    \"💃🏽\",\n    \"💃🏾\",\n    \"💃🏿\",\n    \"🕺\",\n    \"🕺🏻\",\n    \"🕺🏼\",\n    \"🕺🏽\",\n    \"🕺🏾\",\n    \"🕺🏿\",\n    \"🕴️\",\n    \"🕴🏻\",\n    \"🕴🏼\",\n    \"🕴🏽\",\n    \"🕴🏾\",\n    \"🕴🏿\",\n    \"👯\",\n    \"👯‍♂️\",\n    \"👯‍♀️\",\n    \"🧖\",\n    \"🧖🏻\",\n    \"🧖🏼\",\n    \"🧖🏽\",\n    \"🧖🏾\",\n    \"🧖🏿\",\n    \"🧖‍♂️\",\n    \"🧖🏻‍♂️\",\n    \"🧖🏼‍♂️\",\n    \"🧖🏽‍♂️\",\n    \"🧖🏾‍♂️\",\n    \"🧖🏿‍♂️\",\n    \"🧖‍♀️\",\n    \"🧖🏻‍♀️\",\n    \"🧖🏼‍♀️\",\n    \"🧖🏽‍♀️\",\n    \"🧖🏾‍♀️\",\n    \"🧖🏿‍♀️\",\n    \"🧗\",\n    \"🧗🏻\",\n    \"🧗🏼\",\n    \"🧗🏽\",\n    \"🧗🏾\",\n    \"🧗🏿\",\n    \"🧗‍♂️\",\n    \"🧗🏻‍♂️\",\n    \"🧗🏼‍♂️\",\n    \"🧗🏽‍♂️\",\n    \"🧗🏾‍♂️\",\n    \"🧗🏿‍♂️\",\n    \"🧗‍♀️\",\n    \"🧗🏻‍♀️\",\n    \"🧗🏼‍♀️\",\n    \"🧗🏽‍♀️\",\n    \"🧗🏾‍♀️\",\n    \"🧗🏿‍♀️\",\n    \"🤺\",\n    \"🏇\",\n    \"🏇🏻\",\n    \"🏇🏼\",\n    \"🏇🏽\",\n    \"🏇🏾\",\n    \"🏇🏿\",\n    \"⛷️\",\n    \"🏂\",\n    \"🏂🏻\",\n    \"🏂🏼\",\n    \"🏂🏽\",\n    \"🏂🏾\",\n    \"🏂🏿\",\n    \"🏌️\",\n    \"🏌🏻\",\n    \"🏌🏼\",\n    \"🏌🏽\",\n    \"🏌🏾\",\n    \"🏌🏿\",\n    \"🏌️‍♂️\",\n    \"🏌🏻‍♂️\",\n    \"🏌🏼‍♂️\",\n    \"🏌🏽‍♂️\",\n    \"🏌🏾‍♂️\",\n    \"🏌🏿‍♂️\",\n    \"🏌️‍♀️\",\n    \"🏌🏻‍♀️\",\n    \"🏌🏼‍♀️\",\n    \"🏌🏽‍♀️\",\n    \"🏌🏾‍♀️\",\n    \"🏌🏿‍♀️\",\n    \"🏄\",\n    \"🏄🏻\",\n    \"🏄🏼\",\n    \"🏄🏽\",\n    \"🏄🏾\",\n    \"🏄🏿\",\n    \"🏄‍♂️\",\n    \"🏄🏻‍♂️\",\n    \"🏄🏼‍♂️\",\n    \"🏄🏽‍♂️\",\n    \"🏄🏾‍♂️\",\n    \"🏄🏿‍♂️\",\n    \"🏄‍♀️\",\n    \"🏄🏻‍♀️\",\n    \"🏄🏼‍♀️\",\n    \"🏄🏽‍♀️\",\n    \"🏄🏾‍♀️\",\n    \"🏄🏿‍♀️\",\n    \"🚣\",\n    \"🚣🏻\",\n    \"🚣🏼\",\n    \"🚣🏽\",\n    \"🚣🏾\",\n    \"🚣🏿\",\n    \"🚣‍♂️\",\n    \"🚣🏻‍♂️\",\n    \"🚣🏼‍♂️\",\n    \"🚣🏽‍♂️\",\n    \"🚣🏾‍♂️\",\n    \"🚣🏿‍♂️\",\n    \"🚣‍♀️\",\n    \"🚣🏻‍♀️\",\n    \"🚣🏼‍♀️\",\n    \"🚣🏽‍♀️\",\n    \"🚣🏾‍♀️\",\n    \"🚣🏿‍♀️\",\n    \"🏊\",\n    \"🏊🏻\",\n    \"🏊🏼\",\n    \"🏊🏽\",\n    \"🏊🏾\",\n    \"🏊🏿\",\n    \"🏊‍♂️\",\n    \"🏊🏻‍♂️\",\n    \"🏊🏼‍♂️\",\n    \"🏊🏽‍♂️\",\n    \"🏊🏾‍♂️\",\n    \"🏊🏿‍♂️\",\n    \"🏊‍♀️\",\n    \"🏊🏻‍♀️\",\n    \"🏊🏼‍♀️\",\n    \"🏊🏽‍♀️\",\n    \"🏊🏾‍♀️\",\n    \"🏊🏿‍♀️\",\n    \"⛹️\",\n    \"⛹🏻\",\n    \"⛹🏼\",\n    \"⛹🏽\",\n    \"⛹🏾\",\n    \"⛹🏿\",\n    \"⛹️‍♂️\",\n    \"⛹🏻‍♂️\",\n    \"⛹🏼‍♂️\",\n    \"⛹🏽‍♂️\",\n    \"⛹🏾‍♂️\",\n    \"⛹🏿‍♂️\",\n    \"⛹️‍♀️\",\n    \"⛹🏻‍♀️\",\n    \"⛹🏼‍♀️\",\n    \"⛹🏽‍♀️\",\n    \"⛹🏾‍♀️\",\n    \"⛹🏿‍♀️\",\n    \"🏋️\",\n    \"🏋🏻\",\n    \"🏋🏼\",\n    \"🏋🏽\",\n    \"🏋🏾\",\n    \"🏋🏿\",\n    \"🏋️‍♂️\",\n    \"🏋🏻‍♂️\",\n    \"🏋🏼‍♂️\",\n    \"🏋🏽‍♂️\",\n    \"🏋🏾‍♂️\",\n    \"🏋🏿‍♂️\",\n    \"🏋️‍♀️\",\n    \"🏋🏻‍♀️\",\n    \"🏋🏼‍♀️\",\n    \"🏋🏽‍♀️\",\n    \"🏋🏾‍♀️\",\n    \"🏋🏿‍♀️\",\n    \"🚴\",\n    \"🚴🏻\",\n    \"🚴🏼\",\n    \"🚴🏽\",\n    \"🚴🏾\",\n    \"🚴🏿\",\n    \"🚴‍♂️\",\n    \"🚴🏻‍♂️\",\n    \"🚴🏼‍♂️\",\n    \"🚴🏽‍♂️\",\n    \"🚴🏾‍♂️\",\n    \"🚴🏿‍♂️\",\n    \"🚴‍♀️\",\n    \"🚴🏻‍♀️\",\n    \"🚴🏼‍♀️\",\n    \"🚴🏽‍♀️\",\n    \"🚴🏾‍♀️\",\n    \"🚴🏿‍♀️\",\n    \"🚵\",\n    \"🚵🏻\",\n    \"🚵🏼\",\n    \"🚵🏽\",\n    \"🚵🏾\",\n    \"🚵🏿\",\n    \"🚵‍♂️\",\n    \"🚵🏻‍♂️\",\n    \"🚵🏼‍♂️\",\n    \"🚵🏽‍♂️\",\n    \"🚵🏾‍♂️\",\n    \"🚵🏿‍♂️\",\n    \"🚵‍♀️\",\n    \"🚵🏻‍♀️\",\n    \"🚵🏼‍♀️\",\n    \"🚵🏽‍♀️\",\n    \"🚵🏾‍♀️\",\n    \"🚵🏿‍♀️\",\n    \"🤸\",\n    \"🤸🏻\",\n    \"🤸🏼\",\n    \"🤸🏽\",\n    \"🤸🏾\",\n    \"🤸🏿\",\n    \"🤸‍♂️\",\n    \"🤸🏻‍♂️\",\n    \"🤸🏼‍♂️\",\n    \"🤸🏽‍♂️\",\n    \"🤸🏾‍♂️\",\n    \"🤸🏿‍♂️\",\n    \"🤸‍♀️\",\n    \"🤸🏻‍♀️\",\n    \"🤸🏼‍♀️\",\n    \"🤸🏽‍♀️\",\n    \"🤸🏾‍♀️\",\n    \"🤸🏿‍♀️\",\n    \"🤼\",\n    \"🤼‍♂️\",\n    \"🤼‍♀️\",\n    \"🤽\",\n    \"🤽🏻\",\n    \"🤽🏼\",\n    \"🤽🏽\",\n    \"🤽🏾\",\n    \"🤽🏿\",\n    \"🤽‍♂️\",\n    \"🤽🏻‍♂️\",\n    \"🤽🏼‍♂️\",\n    \"🤽🏽‍♂️\",\n    \"🤽🏾‍♂️\",\n    \"🤽🏿‍♂️\",\n    \"🤽‍♀️\",\n    \"🤽🏻‍♀️\",\n    \"🤽🏼‍♀️\",\n    \"🤽🏽‍♀️\",\n    \"🤽🏾‍♀️\",\n    \"🤽🏿‍♀️\",\n    \"🤾\",\n    \"🤾🏻\",\n    \"🤾🏼\",\n    \"🤾🏽\",\n    \"🤾🏾\",\n    \"🤾🏿\",\n    \"🤾‍♂️\",\n    \"🤾🏻‍♂️\",\n    \"🤾🏼‍♂️\",\n    \"🤾🏽‍♂️\",\n    \"🤾🏾‍♂️\",\n    \"🤾🏿‍♂️\",\n    \"🤾‍♀️\",\n    \"🤾🏻‍♀️\",\n    \"🤾🏼‍♀️\",\n    \"🤾🏽‍♀️\",\n    \"🤾🏾‍♀️\",\n    \"🤾🏿‍♀️\",\n    \"🤹\",\n    \"🤹🏻\",\n    \"🤹🏼\",\n    \"🤹🏽\",\n    \"🤹🏾\",\n    \"🤹🏿\",\n    \"🤹‍♂️\",\n    \"🤹🏻‍♂️\",\n    \"🤹🏼‍♂️\",\n    \"🤹🏽‍♂️\",\n    \"🤹🏾‍♂️\",\n    \"🤹🏿‍♂️\",\n    \"🤹‍♀️\",\n    \"🤹🏻‍♀️\",\n    \"🤹🏼‍♀️\",\n    \"🤹🏽‍♀️\",\n    \"🤹🏾‍♀️\",\n    \"🤹🏿‍♀️\",\n    \"🧘\",\n    \"🧘🏻\",\n    \"🧘🏼\",\n    \"🧘🏽\",\n    \"🧘🏾\",\n    \"🧘🏿\",\n    \"🧘‍♂️\",\n    \"🧘🏻‍♂️\",\n    \"🧘🏼‍♂️\",\n    \"🧘🏽‍♂️\",\n    \"🧘🏾‍♂️\",\n    \"🧘🏿‍♂️\",\n    \"🧘‍♀️\",\n    \"🧘🏻‍♀️\",\n    \"🧘🏼‍♀️\",\n    \"🧘🏽‍♀️\",\n    \"🧘🏾‍♀️\",\n    \"🧘🏿‍♀️\",\n    \"🛀\",\n    \"🛀🏻\",\n    \"🛀🏼\",\n    \"🛀🏽\",\n    \"🛀🏾\",\n    \"🛀🏿\",\n    \"🛌\",\n    \"🛌🏻\",\n    \"🛌🏼\",\n    \"🛌🏽\",\n    \"🛌🏾\",\n    \"🛌🏿\",\n    \"🧑‍🤝‍🧑\",\n    \"🧑🏻‍🤝‍🧑🏻\",\n    \"🧑🏻‍🤝‍🧑🏼\",\n    \"🧑🏻‍🤝‍🧑🏽\",\n    \"🧑🏻‍🤝‍🧑🏾\",\n    \"🧑🏻‍🤝‍🧑🏿\",\n    \"🧑🏼‍🤝‍🧑🏻\",\n    \"🧑🏼‍🤝‍🧑🏼\",\n    \"🧑🏼‍🤝‍🧑🏽\",\n    \"🧑🏼‍🤝‍🧑🏾\",\n    \"🧑🏼‍🤝‍🧑🏿\",\n    \"🧑🏽‍🤝‍🧑🏻\",\n    \"🧑🏽‍🤝‍🧑🏼\",\n    \"🧑🏽‍🤝‍🧑🏽\",\n    \"🧑🏽‍🤝‍🧑🏾\",\n    \"🧑🏽‍🤝‍🧑🏿\",\n    \"🧑🏾‍🤝‍🧑🏻\",\n    \"🧑🏾‍🤝‍🧑🏼\",\n    \"🧑🏾‍🤝‍🧑🏽\",\n    \"🧑🏾‍🤝‍🧑🏾\",\n    \"🧑🏾‍🤝‍🧑🏿\",\n    \"🧑🏿‍🤝‍🧑🏻\",\n    \"🧑🏿‍🤝‍🧑🏼\",\n    \"🧑🏿‍🤝‍🧑🏽\",\n    \"🧑🏿‍🤝‍🧑🏾\",\n    \"🧑🏿‍🤝‍🧑🏿\",\n    \"👭\",\n    \"👭🏻\",\n    \"👩🏻‍🤝‍👩🏼\",\n    \"👩🏻‍🤝‍👩🏽\",\n    \"👩🏻‍🤝‍👩🏾\",\n    \"👩🏻‍🤝‍👩🏿\",\n    \"👩🏼‍🤝‍👩🏻\",\n    \"👭🏼\",\n    \"👩🏼‍🤝‍👩🏽\",\n    \"👩🏼‍🤝‍👩🏾\",\n    \"👩🏼‍🤝‍👩🏿\",\n    \"👩🏽‍🤝‍👩🏻\",\n    \"👩🏽‍🤝‍👩🏼\",\n    \"👭🏽\",\n    \"👩🏽‍🤝‍👩🏾\",\n    \"👩🏽‍🤝‍👩🏿\",\n    \"👩🏾‍🤝‍👩🏻\",\n    \"👩🏾‍🤝‍👩🏼\",\n    \"👩🏾‍🤝‍👩🏽\",\n    \"👭🏾\",\n    \"👩🏾‍🤝‍👩🏿\",\n    \"👩🏿‍🤝‍👩🏻\",\n    \"👩🏿‍🤝‍👩🏼\",\n    \"👩🏿‍🤝‍👩🏽\",\n    \"👩🏿‍🤝‍👩🏾\",\n    \"👭🏿\",\n    \"👫\",\n    \"👫🏻\",\n    \"👩🏻‍🤝‍👨🏼\",\n    \"👩🏻‍🤝‍👨🏽\",\n    \"👩🏻‍🤝‍👨🏾\",\n    \"👩🏻‍🤝‍👨🏿\",\n    \"👩🏼‍🤝‍👨🏻\",\n    \"👫🏼\",\n    \"👩🏼‍🤝‍👨🏽\",\n    \"👩🏼‍🤝‍👨🏾\",\n    \"👩🏼‍🤝‍👨🏿\",\n    \"👩🏽‍🤝‍👨🏻\",\n    \"👩🏽‍🤝‍👨🏼\",\n    \"👫🏽\",\n    \"👩🏽‍🤝‍👨🏾\",\n    \"👩🏽‍🤝‍👨🏿\",\n    \"👩🏾‍🤝‍👨🏻\",\n    \"👩🏾‍🤝‍👨🏼\",\n    \"👩🏾‍🤝‍👨🏽\",\n    \"👫🏾\",\n    \"👩🏾‍🤝‍👨🏿\",\n    \"👩🏿‍🤝‍👨🏻\",\n    \"👩🏿‍🤝‍👨🏼\",\n    \"👩🏿‍🤝‍👨🏽\",\n    \"👩🏿‍🤝‍👨🏾\",\n    \"👫🏿\",\n    \"👬\",\n    \"👬🏻\",\n    \"👨🏻‍🤝‍👨🏼\",\n    \"👨🏻‍🤝‍👨🏽\",\n    \"👨🏻‍🤝‍👨🏾\",\n    \"👨🏻‍🤝‍👨🏿\",\n    \"👨🏼‍🤝‍👨🏻\",\n    \"👬🏼\",\n    \"👨🏼‍🤝‍👨🏽\",\n    \"👨🏼‍🤝‍👨🏾\",\n    \"👨🏼‍🤝‍👨🏿\",\n    \"👨🏽‍🤝‍👨🏻\",\n    \"👨🏽‍🤝‍👨🏼\",\n    \"👬🏽\",\n    \"👨🏽‍🤝‍👨🏾\",\n    \"👨🏽‍🤝‍👨🏿\",\n    \"👨🏾‍🤝‍👨🏻\",\n    \"👨🏾‍🤝‍👨🏼\",\n    \"👨🏾‍🤝‍👨🏽\",\n    \"👬🏾\",\n    \"👨🏾‍🤝‍👨🏿\",\n    \"👨🏿‍🤝‍👨🏻\",\n    \"👨🏿‍🤝‍👨🏼\",\n    \"👨🏿‍🤝‍👨🏽\",\n    \"👨🏿‍🤝‍👨🏾\",\n    \"👬🏿\",\n    \"💏\",\n    \"💏🏻\",\n    \"💏🏼\",\n    \"💏🏽\",\n    \"💏🏾\",\n    \"💏🏿\",\n    \"🧑🏻‍❤️‍💋‍🧑🏼\",\n    \"🧑🏻‍❤️‍💋‍🧑🏽\",\n    \"🧑🏻‍❤️‍💋‍🧑🏾\",\n    \"🧑🏻‍❤️‍💋‍🧑🏿\",\n    \"🧑🏼‍❤️‍💋‍🧑🏻\",\n    \"🧑🏼‍❤️‍💋‍🧑🏽\",\n    \"🧑🏼‍❤️‍💋‍🧑🏾\",\n    \"🧑🏼‍❤️‍💋‍🧑🏿\",\n    \"🧑🏽‍❤️‍💋‍🧑🏻\",\n    \"🧑🏽‍❤️‍💋‍🧑🏼\",\n    \"🧑🏽‍❤️‍💋‍🧑🏾\",\n    \"🧑🏽‍❤️‍💋‍🧑🏿\",\n    \"🧑🏾‍❤️‍💋‍🧑🏻\",\n    \"🧑🏾‍❤️‍💋‍🧑🏼\",\n    \"🧑🏾‍❤️‍💋‍🧑🏽\",\n    \"🧑🏾‍❤️‍💋‍🧑🏿\",\n    \"🧑🏿‍❤️‍💋‍🧑🏻\",\n    \"🧑🏿‍❤️‍💋‍🧑🏼\",\n    \"🧑🏿‍❤️‍💋‍🧑🏽\",\n    \"🧑🏿‍❤️‍💋‍🧑🏾\",\n    \"👩‍❤️‍💋‍👨\",\n    \"👩🏻‍❤️‍💋‍👨🏻\",\n    \"👩🏻‍❤️‍💋‍👨🏼\",\n    \"👩🏻‍❤️‍💋‍👨🏽\",\n    \"👩🏻‍❤️‍💋‍👨🏾\",\n    \"👩🏻‍❤️‍💋‍👨🏿\",\n    \"👩🏼‍❤️‍💋‍👨🏻\",\n    \"👩🏼‍❤️‍💋‍👨🏼\",\n    \"👩🏼‍❤️‍💋‍👨🏽\",\n    \"👩🏼‍❤️‍💋‍👨🏾\",\n    \"👩🏼‍❤️‍💋‍👨🏿\",\n    \"👩🏽‍❤️‍💋‍👨🏻\",\n    \"👩🏽‍❤️‍💋‍👨🏼\",\n    \"👩🏽‍❤️‍💋‍👨🏽\",\n    \"👩🏽‍❤️‍💋‍👨🏾\",\n    \"👩🏽‍❤️‍💋‍👨🏿\",\n    \"👩🏾‍❤️‍💋‍👨🏻\",\n    \"👩🏾‍❤️‍💋‍👨🏼\",\n    \"👩🏾‍❤️‍💋‍👨🏽\",\n    \"👩🏾‍❤️‍💋‍👨🏾\",\n    \"👩🏾‍❤️‍💋‍👨🏿\",\n    \"👩🏿‍❤️‍💋‍👨🏻\",\n    \"👩🏿‍❤️‍💋‍👨🏼\",\n    \"👩🏿‍❤️‍💋‍👨🏽\",\n    \"👩🏿‍❤️‍💋‍👨🏾\",\n    \"👩🏿‍❤️‍💋‍👨🏿\",\n    \"👨‍❤️‍💋‍👨\",\n    \"👨🏻‍❤️‍💋‍👨🏻\",\n    \"👨🏻‍❤️‍💋‍👨🏼\",\n    \"👨🏻‍❤️‍💋‍👨🏽\",\n    \"👨🏻‍❤️‍💋‍👨🏾\",\n    \"👨🏻‍❤️‍💋‍👨🏿\",\n    \"👨🏼‍❤️‍💋‍👨🏻\",\n    \"👨🏼‍❤️‍💋‍👨🏼\",\n    \"👨🏼‍❤️‍💋‍👨🏽\",\n    \"👨🏼‍❤️‍💋‍👨🏾\",\n    \"👨🏼‍❤️‍💋‍👨🏿\",\n    \"👨🏽‍❤️‍💋‍👨🏻\",\n    \"👨🏽‍❤️‍💋‍👨🏼\",\n    \"👨🏽‍❤️‍💋‍👨🏽\",\n    \"👨🏽‍❤️‍💋‍👨🏾\",\n    \"👨🏽‍❤️‍💋‍👨🏿\",\n    \"👨🏾‍❤️‍💋‍👨🏻\",\n    \"👨🏾‍❤️‍💋‍👨🏼\",\n    \"👨🏾‍❤️‍💋‍👨🏽\",\n    \"👨🏾‍❤️‍💋‍👨🏾\",\n    \"👨🏾‍❤️‍💋‍👨🏿\",\n    \"👨🏿‍❤️‍💋‍👨🏻\",\n    \"👨🏿‍❤️‍💋‍👨🏼\",\n    \"👨🏿‍❤️‍💋‍👨🏽\",\n    \"👨🏿‍❤️‍💋‍👨🏾\",\n    \"👨🏿‍❤️‍💋‍👨🏿\",\n    \"👩‍❤️‍💋‍👩\",\n    \"👩🏻‍❤️‍💋‍👩🏻\",\n    \"👩🏻‍❤️‍💋‍👩🏼\",\n    \"👩🏻‍❤️‍💋‍👩🏽\",\n    \"👩🏻‍❤️‍💋‍👩🏾\",\n    \"👩🏻‍❤️‍💋‍👩🏿\",\n    \"👩🏼‍❤️‍💋‍👩🏻\",\n    \"👩🏼‍❤️‍💋‍👩🏼\",\n    \"👩🏼‍❤️‍💋‍👩🏽\",\n    \"👩🏼‍❤️‍💋‍👩🏾\",\n    \"👩🏼‍❤️‍💋‍👩🏿\",\n    \"👩🏽‍❤️‍💋‍👩🏻\",\n    \"👩🏽‍❤️‍💋‍👩🏼\",\n    \"👩🏽‍❤️‍💋‍👩🏽\",\n    \"👩🏽‍❤️‍💋‍👩🏾\",\n    \"👩🏽‍❤️‍💋‍👩🏿\",\n    \"👩🏾‍❤️‍💋‍👩🏻\",\n    \"👩🏾‍❤️‍💋‍👩🏼\",\n    \"👩🏾‍❤️‍💋‍👩🏽\",\n    \"👩🏾‍❤️‍💋‍👩🏾\",\n    \"👩🏾‍❤️‍💋‍👩🏿\",\n    \"👩🏿‍❤️‍💋‍👩🏻\",\n    \"👩🏿‍❤️‍💋‍👩🏼\",\n    \"👩🏿‍❤️‍💋‍👩🏽\",\n    \"👩🏿‍❤️‍💋‍👩🏾\",\n    \"👩🏿‍❤️‍💋‍👩🏿\",\n    \"💑\",\n    \"💑🏻\",\n    \"💑🏼\",\n    \"💑🏽\",\n    \"💑🏾\",\n    \"💑🏿\",\n    \"🧑🏻‍❤️‍🧑🏼\",\n    \"🧑🏻‍❤️‍🧑🏽\",\n    \"🧑🏻‍❤️‍🧑🏾\",\n    \"🧑🏻‍❤️‍🧑🏿\",\n    \"🧑🏼‍❤️‍🧑🏻\",\n    \"🧑🏼‍❤️‍🧑🏽\",\n    \"🧑🏼‍❤️‍🧑🏾\",\n    \"🧑🏼‍❤️‍🧑🏿\",\n    \"🧑🏽‍❤️‍🧑🏻\",\n    \"🧑🏽‍❤️‍🧑🏼\",\n    \"🧑🏽‍❤️‍🧑🏾\",\n    \"🧑🏽‍❤️‍🧑🏿\",\n    \"🧑🏾‍❤️‍🧑🏻\",\n    \"🧑🏾‍❤️‍🧑🏼\",\n    \"🧑🏾‍❤️‍🧑🏽\",\n    \"🧑🏾‍❤️‍🧑🏿\",\n    \"🧑🏿‍❤️‍🧑🏻\",\n    \"🧑🏿‍❤️‍🧑🏼\",\n    \"🧑🏿‍❤️‍🧑🏽\",\n    \"🧑🏿‍❤️‍🧑🏾\",\n    \"👩‍❤️‍👨\",\n    \"👩🏻‍❤️‍👨🏻\",\n    \"👩🏻‍❤️‍👨🏼\",\n    \"👩🏻‍❤️‍👨🏽\",\n    \"👩🏻‍❤️‍👨🏾\",\n    \"👩🏻‍❤️‍👨🏿\",\n    \"👩🏼‍❤️‍👨🏻\",\n    \"👩🏼‍❤️‍👨🏼\",\n    \"👩🏼‍❤️‍👨🏽\",\n    \"👩🏼‍❤️‍👨🏾\",\n    \"👩🏼‍❤️‍👨🏿\",\n    \"👩🏽‍❤️‍👨🏻\",\n    \"👩🏽‍❤️‍👨🏼\",\n    \"👩🏽‍❤️‍👨🏽\",\n    \"👩🏽‍❤️‍👨🏾\",\n    \"👩🏽‍❤️‍👨🏿\",\n    \"👩🏾‍❤️‍👨🏻\",\n    \"👩🏾‍❤️‍👨🏼\",\n    \"👩🏾‍❤️‍👨🏽\",\n    \"👩🏾‍❤️‍👨🏾\",\n    \"👩🏾‍❤️‍👨🏿\",\n    \"👩🏿‍❤️‍👨🏻\",\n    \"👩🏿‍❤️‍👨🏼\",\n    \"👩🏿‍❤️‍👨🏽\",\n    \"👩🏿‍❤️‍👨🏾\",\n    \"👩🏿‍❤️‍👨🏿\",\n    \"👨‍❤️‍👨\",\n    \"👨🏻‍❤️‍👨🏻\",\n    \"👨🏻‍❤️‍👨🏼\",\n    \"👨🏻‍❤️‍👨🏽\",\n    \"👨🏻‍❤️‍👨🏾\",\n    \"👨🏻‍❤️‍👨🏿\",\n    \"👨🏼‍❤️‍👨🏻\",\n    \"👨🏼‍❤️‍👨🏼\",\n    \"👨🏼‍❤️‍👨🏽\",\n    \"👨🏼‍❤️‍👨🏾\",\n    \"👨🏼‍❤️‍👨🏿\",\n    \"👨🏽‍❤️‍👨🏻\",\n    \"👨🏽‍❤️‍👨🏼\",\n    \"👨🏽‍❤️‍👨🏽\",\n    \"👨🏽‍❤️‍👨🏾\",\n    \"👨🏽‍❤️‍👨🏿\",\n    \"👨🏾‍❤️‍👨🏻\",\n    \"👨🏾‍❤️‍👨🏼\",\n    \"👨🏾‍❤️‍👨🏽\",\n    \"👨🏾‍❤️‍👨🏾\",\n    \"👨🏾‍❤️‍👨🏿\",\n    \"👨🏿‍❤️‍👨🏻\",\n    \"👨🏿‍❤️‍👨🏼\",\n    \"👨🏿‍❤️‍👨🏽\",\n    \"👨🏿‍❤️‍👨🏾\",\n    \"👨🏿‍❤️‍👨🏿\",\n    \"👩‍❤️‍👩\",\n    \"👩🏻‍❤️‍👩🏻\",\n    \"👩🏻‍❤️‍👩🏼\",\n    \"👩🏻‍❤️‍👩🏽\",\n    \"👩🏻‍❤️‍👩🏾\",\n    \"👩🏻‍❤️‍👩🏿\",\n    \"👩🏼‍❤️‍👩🏻\",\n    \"👩🏼‍❤️‍👩🏼\",\n    \"👩🏼‍❤️‍👩🏽\",\n    \"👩🏼‍❤️‍👩🏾\",\n    \"👩🏼‍❤️‍👩🏿\",\n    \"👩🏽‍❤️‍👩🏻\",\n    \"👩🏽‍❤️‍👩🏼\",\n    \"👩🏽‍❤️‍👩🏽\",\n    \"👩🏽‍❤️‍👩🏾\",\n    \"👩🏽‍❤️‍👩🏿\",\n    \"👩🏾‍❤️‍👩🏻\",\n    \"👩🏾‍❤️‍👩🏼\",\n    \"👩🏾‍❤️‍👩🏽\",\n    \"👩🏾‍❤️‍👩🏾\",\n    \"👩🏾‍❤️‍👩🏿\",\n    \"👩🏿‍❤️‍👩🏻\",\n    \"👩🏿‍❤️‍👩🏼\",\n    \"👩🏿‍❤️‍👩🏽\",\n    \"👩🏿‍❤️‍👩🏾\",\n    \"👩🏿‍❤️‍👩🏿\",\n    \"👪\",\n    \"👨‍👩‍👦\",\n    \"👨‍👩‍👧\",\n    \"👨‍👩‍👧‍👦\",\n    \"👨‍👩‍👦‍👦\",\n    \"👨‍👩‍👧‍👧\",\n    \"👨‍👨‍👦\",\n    \"👨‍👨‍👧\",\n    \"👨‍👨‍👧‍👦\",\n    \"👨‍👨‍👦‍👦\",\n    \"👨‍👨‍👧‍👧\",\n    \"👩‍👩‍👦\",\n    \"👩‍👩‍👧\",\n    \"👩‍👩‍👧‍👦\",\n    \"👩‍👩‍👦‍👦\",\n    \"👩‍👩‍👧‍👧\",\n    \"👨‍👦\",\n    \"👨‍👦‍👦\",\n    \"👨‍👧\",\n    \"👨‍👧‍👦\",\n    \"👨‍👧‍👧\",\n    \"👩‍👦\",\n    \"👩‍👦‍👦\",\n    \"👩‍👧\",\n    \"👩‍👧‍👦\",\n    \"👩‍👧‍👧\",\n    \"🗣️\",\n    \"👤\",\n    \"👥\",\n    \"🫂\",\n    \"👣\",\n  ],\n  nature: [\n    \"🐵\",\n    \"🐒\",\n    \"🦍\",\n    \"🦧\",\n    \"🐶\",\n    \"🐕\",\n    \"🦮\",\n    \"🐕‍🦺\",\n    \"🐩\",\n    \"🐺\",\n    \"🦊\",\n    \"🦝\",\n    \"🐱\",\n    \"🐈\",\n    \"🐈‍⬛\",\n    \"🦁\",\n    \"🐯\",\n    \"🐅\",\n    \"🐆\",\n    \"🐴\",\n    \"🐎\",\n    \"🦄\",\n    \"🦓\",\n    \"🦌\",\n    \"🦬\",\n    \"🐮\",\n    \"🐂\",\n    \"🐃\",\n    \"🐄\",\n    \"🐷\",\n    \"🐖\",\n    \"🐗\",\n    \"🐽\",\n    \"🐏\",\n    \"🐑\",\n    \"🐐\",\n    \"🐪\",\n    \"🐫\",\n    \"🦙\",\n    \"🦒\",\n    \"🐘\",\n    \"🦣\",\n    \"🦏\",\n    \"🦛\",\n    \"🐭\",\n    \"🐁\",\n    \"🐀\",\n    \"🐹\",\n    \"🐰\",\n    \"🐇\",\n    \"🐿️\",\n    \"🦫\",\n    \"🦔\",\n    \"🦇\",\n    \"🐻\",\n    \"🐻‍❄️\",\n    \"🐨\",\n    \"🐼\",\n    \"🦥\",\n    \"🦦\",\n    \"🦨\",\n    \"🦘\",\n    \"🦡\",\n    \"🐾\",\n    \"🦃\",\n    \"🐔\",\n    \"🐓\",\n    \"🐣\",\n    \"🐤\",\n    \"🐥\",\n    \"🐦\",\n    \"🐧\",\n    \"🕊️\",\n    \"🦅\",\n    \"🦆\",\n    \"🦢\",\n    \"🦉\",\n    \"🦤\",\n    \"🪶\",\n    \"🦩\",\n    \"🦚\",\n    \"🦜\",\n    \"🐸\",\n    \"🐊\",\n    \"🐢\",\n    \"🦎\",\n    \"🐍\",\n    \"🐲\",\n    \"🐉\",\n    \"🦕\",\n    \"🦖\",\n    \"🐳\",\n    \"🐋\",\n    \"🐬\",\n    \"🦭\",\n    \"🐟\",\n    \"🐠\",\n    \"🐡\",\n    \"🦈\",\n    \"🐙\",\n    \"🐚\",\n    \"🐌\",\n    \"🦋\",\n    \"🐛\",\n    \"🐜\",\n    \"🐝\",\n    \"🪲\",\n    \"🐞\",\n    \"🦗\",\n    \"🪳\",\n    \"🕷️\",\n    \"🕸️\",\n    \"🦂\",\n    \"🦟\",\n    \"🪰\",\n    \"🪱\",\n    \"🦠\",\n    \"💐\",\n    \"🌸\",\n    \"💮\",\n    \"🏵️\",\n    \"🌹\",\n    \"🥀\",\n    \"🌺\",\n    \"🌻\",\n    \"🌼\",\n    \"🌷\",\n    \"🌱\",\n    \"🪴\",\n    \"🌲\",\n    \"🌳\",\n    \"🌴\",\n    \"🌵\",\n    \"🌾\",\n    \"🌿\",\n    \"☘️\",\n    \"🍀\",\n    \"🍁\",\n    \"🍂\",\n    \"🍃\",\n  ],\n  food: [\n    \"🍇\",\n    \"🍈\",\n    \"🍉\",\n    \"🍊\",\n    \"🍋\",\n    \"🍌\",\n    \"🍍\",\n    \"🥭\",\n    \"🍎\",\n    \"🍏\",\n    \"🍐\",\n    \"🍑\",\n    \"🍒\",\n    \"🍓\",\n    \"🫐\",\n    \"🥝\",\n    \"🍅\",\n    \"🫒\",\n    \"🥥\",\n    \"🥑\",\n    \"🍆\",\n    \"🥔\",\n    \"🥕\",\n    \"🌽\",\n    \"🌶️\",\n    \"🫑\",\n    \"🥒\",\n    \"🥬\",\n    \"🥦\",\n    \"🧄\",\n    \"🧅\",\n    \"🍄\",\n    \"🥜\",\n    \"🌰\",\n    \"🍞\",\n    \"🥐\",\n    \"🥖\",\n    \"🫓\",\n    \"🥨\",\n    \"🥯\",\n    \"🥞\",\n    \"🧇\",\n    \"🧀\",\n    \"🍖\",\n    \"🍗\",\n    \"🥩\",\n    \"🥓\",\n    \"🍔\",\n    \"🍟\",\n    \"🍕\",\n    \"🌭\",\n    \"🥪\",\n    \"🌮\",\n    \"🌯\",\n    \"🫔\",\n    \"🥙\",\n    \"🧆\",\n    \"🥚\",\n    \"🍳\",\n    \"🥘\",\n    \"🍲\",\n    \"🫕\",\n    \"🥣\",\n    \"🥗\",\n    \"🍿\",\n    \"🧈\",\n    \"🧂\",\n    \"🥫\",\n    \"🍱\",\n    \"🍘\",\n    \"🍙\",\n    \"🍚\",\n    \"🍛\",\n    \"🍜\",\n    \"🍝\",\n    \"🍠\",\n    \"🍢\",\n    \"🍣\",\n    \"🍤\",\n    \"🍥\",\n    \"🥮\",\n    \"🍡\",\n    \"🥟\",\n    \"🥠\",\n    \"🥡\",\n    \"🦀\",\n    \"🦞\",\n    \"🦐\",\n    \"🦑\",\n    \"🦪\",\n    \"🍦\",\n    \"🍧\",\n    \"🍨\",\n    \"🍩\",\n    \"🍪\",\n    \"🎂\",\n    \"🍰\",\n    \"🧁\",\n    \"🥧\",\n    \"🍫\",\n    \"🍬\",\n    \"🍭\",\n    \"🍮\",\n    \"🍯\",\n    \"🍼\",\n    \"🥛\",\n    \"☕\",\n    \"🫖\",\n    \"🍵\",\n    \"🍶\",\n    \"🍾\",\n    \"🍷\",\n    \"🍸\",\n    \"🍹\",\n    \"🍺\",\n    \"🍻\",\n    \"🥂\",\n    \"🥃\",\n    \"🥤\",\n    \"🧋\",\n    \"🧃\",\n    \"🧉\",\n    \"🧊\",\n    \"🥢\",\n    \"🍽️\",\n    \"🍴\",\n    \"🥄\",\n    \"🔪\",\n    \"🏺\",\n  ],\n  travel: [\n    \"🌍\",\n    \"🌎\",\n    \"🌏\",\n    \"🌐\",\n    \"🗺️\",\n    \"🗾\",\n    \"🧭\",\n    \"🏔️\",\n    \"⛰️\",\n    \"🌋\",\n    \"🗻\",\n    \"🏕️\",\n    \"🏖️\",\n    \"🏜️\",\n    \"🏝️\",\n    \"🏞️\",\n    \"🏟️\",\n    \"🏛️\",\n    \"🏗️\",\n    \"🧱\",\n    \"🪨\",\n    \"🪵\",\n    \"🛖\",\n    \"🏘️\",\n    \"🏚️\",\n    \"🏠\",\n    \"🏡\",\n    \"🏢\",\n    \"🏣\",\n    \"🏤\",\n    \"🏥\",\n    \"🏦\",\n    \"🏨\",\n    \"🏩\",\n    \"🏪\",\n    \"🏫\",\n    \"🏬\",\n    \"🏭\",\n    \"🏯\",\n    \"🏰\",\n    \"💒\",\n    \"🗼\",\n    \"🗽\",\n    \"⛪\",\n    \"🕌\",\n    \"🛕\",\n    \"🕍\",\n    \"⛩️\",\n    \"🕋\",\n    \"⛲\",\n    \"⛺\",\n    \"🌁\",\n    \"🌃\",\n    \"🏙️\",\n    \"🌄\",\n    \"🌅\",\n    \"🌆\",\n    \"🌇\",\n    \"🌉\",\n    \"♨️\",\n    \"🎠\",\n    \"🎡\",\n    \"🎢\",\n    \"💈\",\n    \"🎪\",\n    \"🚂\",\n    \"🚃\",\n    \"🚄\",\n    \"🚅\",\n    \"🚆\",\n    \"🚇\",\n    \"🚈\",\n    \"🚉\",\n    \"🚊\",\n    \"🚝\",\n    \"🚞\",\n    \"🚋\",\n    \"🚌\",\n    \"🚍\",\n    \"🚎\",\n    \"🚐\",\n    \"🚑\",\n    \"🚒\",\n    \"🚓\",\n    \"🚔\",\n    \"🚕\",\n    \"🚖\",\n    \"🚗\",\n    \"🚘\",\n    \"🚙\",\n    \"🛻\",\n    \"🚚\",\n    \"🚛\",\n    \"🚜\",\n    \"🏎️\",\n    \"🏍️\",\n    \"🛵\",\n    \"🦽\",\n    \"🦼\",\n    \"🛺\",\n    \"🚲\",\n    \"🛴\",\n    \"🛹\",\n    \"🛼\",\n    \"🚏\",\n    \"🛣️\",\n    \"🛤️\",\n    \"🛢️\",\n    \"⛽\",\n    \"🚨\",\n    \"🚥\",\n    \"🚦\",\n    \"🛑\",\n    \"🚧\",\n    \"⚓\",\n    \"⛵\",\n    \"🛶\",\n    \"🚤\",\n    \"🛳️\",\n    \"⛴️\",\n    \"🛥️\",\n    \"🚢\",\n    \"✈️\",\n    \"🛩️\",\n    \"🛫\",\n    \"🛬\",\n    \"🪂\",\n    \"💺\",\n    \"🚁\",\n    \"🚟\",\n    \"🚠\",\n    \"🚡\",\n    \"🛰️\",\n    \"🚀\",\n    \"🛸\",\n    \"🛎️\",\n    \"🧳\",\n    \"⌛\",\n    \"⏳\",\n    \"⌚\",\n    \"⏰\",\n    \"⏱️\",\n    \"⏲️\",\n    \"🕰️\",\n    \"🕛\",\n    \"🕧\",\n    \"🕐\",\n    \"🕜\",\n    \"🕑\",\n    \"🕝\",\n    \"🕒\",\n    \"🕞\",\n    \"🕓\",\n    \"🕟\",\n    \"🕔\",\n    \"🕠\",\n    \"🕕\",\n    \"🕡\",\n    \"🕖\",\n    \"🕢\",\n    \"🕗\",\n    \"🕣\",\n    \"🕘\",\n    \"🕤\",\n    \"🕙\",\n    \"🕥\",\n    \"🕚\",\n    \"🕦\",\n    \"🌑\",\n    \"🌒\",\n    \"🌓\",\n    \"🌔\",\n    \"🌕\",\n    \"🌖\",\n    \"🌗\",\n    \"🌘\",\n    \"🌙\",\n    \"🌚\",\n    \"🌛\",\n    \"🌜\",\n    \"🌡️\",\n    \"☀️\",\n    \"🌝\",\n    \"🌞\",\n    \"🪐\",\n    \"⭐\",\n    \"🌟\",\n    \"🌠\",\n    \"🌌\",\n    \"☁️\",\n    \"⛅\",\n    \"⛈️\",\n    \"🌤️\",\n    \"🌥️\",\n    \"🌦️\",\n    \"🌧️\",\n    \"🌨️\",\n    \"🌩️\",\n    \"🌪️\",\n    \"🌫️\",\n    \"🌬️\",\n    \"🌀\",\n    \"🌈\",\n    \"🌂\",\n    \"☂️\",\n    \"☔\",\n    \"⛱️\",\n    \"⚡\",\n    \"❄️\",\n    \"☃️\",\n    \"⛄\",\n    \"☄️\",\n    \"🔥\",\n    \"💧\",\n    \"🌊\",\n  ],\n  activity: [\n    \"🎃\",\n    \"🎄\",\n    \"🎆\",\n    \"🎇\",\n    \"🧨\",\n    \"✨\",\n    \"🎈\",\n    \"🎉\",\n    \"🎊\",\n    \"🎋\",\n    \"🎍\",\n    \"🎎\",\n    \"🎏\",\n    \"🎐\",\n    \"🎑\",\n    \"🧧\",\n    \"🎀\",\n    \"🎁\",\n    \"🎗️\",\n    \"🎟️\",\n    \"🎫\",\n    \"🎖️\",\n    \"🏆\",\n    \"🏅\",\n    \"🥇\",\n    \"🥈\",\n    \"🥉\",\n    \"⚽\",\n    \"⚾\",\n    \"🥎\",\n    \"🏀\",\n    \"🏐\",\n    \"🏈\",\n    \"🏉\",\n    \"🎾\",\n    \"🥏\",\n    \"🎳\",\n    \"🏏\",\n    \"🏑\",\n    \"🏒\",\n    \"🥍\",\n    \"🏓\",\n    \"🏸\",\n    \"🥊\",\n    \"🥋\",\n    \"🥅\",\n    \"⛳\",\n    \"⛸️\",\n    \"🎣\",\n    \"🤿\",\n    \"🎽\",\n    \"🎿\",\n    \"🛷\",\n    \"🥌\",\n    \"🎯\",\n    \"🪀\",\n    \"🪁\",\n    \"🎱\",\n    \"🔮\",\n    \"🪄\",\n    \"🧿\",\n    \"🎮\",\n    \"🕹️\",\n    \"🎰\",\n    \"🎲\",\n    \"🧩\",\n    \"🧸\",\n    \"🪅\",\n    \"🪆\",\n    \"♠️\",\n    \"♥️\",\n    \"♦️\",\n    \"♣️\",\n    \"♟️\",\n    \"🃏\",\n    \"🀄\",\n    \"🎴\",\n    \"🎭\",\n    \"🖼️\",\n    \"🎨\",\n    \"🧵\",\n    \"🪡\",\n    \"🧶\",\n    \"🪢\",\n  ],\n  object: [\n    \"👓\",\n    \"🕶️\",\n    \"🥽\",\n    \"🥼\",\n    \"🦺\",\n    \"👔\",\n    \"👕\",\n    \"👖\",\n    \"🧣\",\n    \"🧤\",\n    \"🧥\",\n    \"🧦\",\n    \"👗\",\n    \"👘\",\n    \"🥻\",\n    \"🩱\",\n    \"🩲\",\n    \"🩳\",\n    \"👙\",\n    \"👚\",\n    \"👛\",\n    \"👜\",\n    \"👝\",\n    \"🛍️\",\n    \"🎒\",\n    \"🩴\",\n    \"👞\",\n    \"👟\",\n    \"🥾\",\n    \"🥿\",\n    \"👠\",\n    \"👡\",\n    \"🩰\",\n    \"👢\",\n    \"👑\",\n    \"👒\",\n    \"🎩\",\n    \"🎓\",\n    \"🧢\",\n    \"🪖\",\n    \"⛑️\",\n    \"📿\",\n    \"💄\",\n    \"💍\",\n    \"💎\",\n    \"🔇\",\n    \"🔈\",\n    \"🔉\",\n    \"🔊\",\n    \"📢\",\n    \"📣\",\n    \"📯\",\n    \"🔔\",\n    \"🔕\",\n    \"🎼\",\n    \"🎵\",\n    \"🎶\",\n    \"🎙️\",\n    \"🎚️\",\n    \"🎛️\",\n    \"🎤\",\n    \"🎧\",\n    \"📻\",\n    \"🎷\",\n    \"🪗\",\n    \"🎸\",\n    \"🎹\",\n    \"🎺\",\n    \"🎻\",\n    \"🪕\",\n    \"🥁\",\n    \"🪘\",\n    \"📱\",\n    \"📲\",\n    \"☎️\",\n    \"📞\",\n    \"📟\",\n    \"📠\",\n    \"🔋\",\n    \"🔌\",\n    \"💻\",\n    \"🖥️\",\n    \"🖨️\",\n    \"⌨️\",\n    \"🖱️\",\n    \"🖲️\",\n    \"💽\",\n    \"💾\",\n    \"💿\",\n    \"📀\",\n    \"🧮\",\n    \"🎥\",\n    \"🎞️\",\n    \"📽️\",\n    \"🎬\",\n    \"📺\",\n    \"📷\",\n    \"📸\",\n    \"📹\",\n    \"📼\",\n    \"🔍\",\n    \"🔎\",\n    \"🕯️\",\n    \"💡\",\n    \"🔦\",\n    \"🏮\",\n    \"🪔\",\n    \"📔\",\n    \"📕\",\n    \"📖\",\n    \"📗\",\n    \"📘\",\n    \"📙\",\n    \"📚\",\n    \"📓\",\n    \"📒\",\n    \"📃\",\n    \"📜\",\n    \"📄\",\n    \"📰\",\n    \"🗞️\",\n    \"📑\",\n    \"🔖\",\n    \"🏷️\",\n    \"💰\",\n    \"🪙\",\n    \"💴\",\n    \"💵\",\n    \"💶\",\n    \"💷\",\n    \"💸\",\n    \"💳\",\n    \"🧾\",\n    \"💹\",\n    \"✉️\",\n    \"📧\",\n    \"📨\",\n    \"📩\",\n    \"📤\",\n    \"📥\",\n    \"📦\",\n    \"📫\",\n    \"📪\",\n    \"📬\",\n    \"📭\",\n    \"📮\",\n    \"🗳️\",\n    \"✏️\",\n    \"✒️\",\n    \"🖋️\",\n    \"🖊️\",\n    \"🖌️\",\n    \"🖍️\",\n    \"📝\",\n    \"💼\",\n    \"📁\",\n    \"📂\",\n    \"🗂️\",\n    \"📅\",\n    \"📆\",\n    \"🗒️\",\n    \"🗓️\",\n    \"📇\",\n    \"📈\",\n    \"📉\",\n    \"📊\",\n    \"📋\",\n    \"📌\",\n    \"📍\",\n    \"📎\",\n    \"🖇️\",\n    \"📏\",\n    \"📐\",\n    \"✂️\",\n    \"🗃️\",\n    \"🗄️\",\n    \"🗑️\",\n    \"🔒\",\n    \"🔓\",\n    \"🔏\",\n    \"🔐\",\n    \"🔑\",\n    \"🗝️\",\n    \"🔨\",\n    \"🪓\",\n    \"⛏️\",\n    \"⚒️\",\n    \"🛠️\",\n    \"🗡️\",\n    \"⚔️\",\n    \"🔫\",\n    \"🪃\",\n    \"🏹\",\n    \"🛡️\",\n    \"🪚\",\n    \"🔧\",\n    \"🪛\",\n    \"🔩\",\n    \"⚙️\",\n    \"🗜️\",\n    \"⚖️\",\n    \"🦯\",\n    \"🔗\",\n    \"⛓️\",\n    \"🪝\",\n    \"🧰\",\n    \"🧲\",\n    \"🪜\",\n    \"⚗️\",\n    \"🧪\",\n    \"🧫\",\n    \"🧬\",\n    \"🔬\",\n    \"🔭\",\n    \"📡\",\n    \"💉\",\n    \"🩸\",\n    \"💊\",\n    \"🩹\",\n    \"🩺\",\n    \"🚪\",\n    \"🛗\",\n    \"🪞\",\n    \"🪟\",\n    \"🛏️\",\n    \"🛋️\",\n    \"🪑\",\n    \"🚽\",\n    \"🪠\",\n    \"🚿\",\n    \"🛁\",\n    \"🪤\",\n    \"🪒\",\n    \"🧴\",\n    \"🧷\",\n    \"🧹\",\n    \"🧺\",\n    \"🧻\",\n    \"🪣\",\n    \"🧼\",\n    \"🪥\",\n    \"🧽\",\n    \"🧯\",\n    \"🛒\",\n    \"🚬\",\n    \"⚰️\",\n    \"🪦\",\n    \"⚱️\",\n    \"🗿\",\n    \"🪧\",\n  ],\n  symbol: [\n    \"🏧\",\n    \"🚮\",\n    \"🚰\",\n    \"♿\",\n    \"🚹\",\n    \"🚺\",\n    \"🚻\",\n    \"🚼\",\n    \"🚾\",\n    \"🛂\",\n    \"🛃\",\n    \"🛄\",\n    \"🛅\",\n    \"⚠️\",\n    \"🚸\",\n    \"⛔\",\n    \"🚫\",\n    \"🚳\",\n    \"🚭\",\n    \"🚯\",\n    \"🚱\",\n    \"🚷\",\n    \"📵\",\n    \"🔞\",\n    \"☢️\",\n    \"☣️\",\n    \"⬆️\",\n    \"↗️\",\n    \"➡️\",\n    \"↘️\",\n    \"⬇️\",\n    \"↙️\",\n    \"⬅️\",\n    \"↖️\",\n    \"↕️\",\n    \"↔️\",\n    \"↩️\",\n    \"↪️\",\n    \"⤴️\",\n    \"⤵️\",\n    \"🔃\",\n    \"🔄\",\n    \"🔙\",\n    \"🔚\",\n    \"🔛\",\n    \"🔜\",\n    \"🔝\",\n    \"🛐\",\n    \"⚛️\",\n    \"🕉️\",\n    \"✡️\",\n    \"☸️\",\n    \"☯️\",\n    \"✝️\",\n    \"☦️\",\n    \"☪️\",\n    \"☮️\",\n    \"🕎\",\n    \"🔯\",\n    \"♈\",\n    \"♉\",\n    \"♊\",\n    \"♋\",\n    \"♌\",\n    \"♍\",\n    \"♎\",\n    \"♏\",\n    \"♐\",\n    \"♑\",\n    \"♒\",\n    \"♓\",\n    \"⛎\",\n    \"🔀\",\n    \"🔁\",\n    \"🔂\",\n    \"▶️\",\n    \"⏩\",\n    \"⏭️\",\n    \"⏯️\",\n    \"◀️\",\n    \"⏪\",\n    \"⏮️\",\n    \"🔼\",\n    \"⏫\",\n    \"🔽\",\n    \"⏬\",\n    \"⏸️\",\n    \"⏹️\",\n    \"⏺️\",\n    \"⏏️\",\n    \"🎦\",\n    \"🔅\",\n    \"🔆\",\n    \"📶\",\n    \"📳\",\n    \"📴\",\n    \"♀️\",\n    \"♂️\",\n    \"⚧️\",\n    \"✖️\",\n    \"➕\",\n    \"➖\",\n    \"➗\",\n    \"♾️\",\n    \"‼️\",\n    \"⁉️\",\n    \"❓\",\n    \"❔\",\n    \"❕\",\n    \"❗\",\n    \"〰️\",\n    \"💱\",\n    \"💲\",\n    \"⚕️\",\n    \"♻️\",\n    \"⚜️\",\n    \"🔱\",\n    \"📛\",\n    \"🔰\",\n    \"⭕\",\n    \"✅\",\n    \"☑️\",\n    \"✔️\",\n    \"❌\",\n    \"❎\",\n    \"➰\",\n    \"➿\",\n    \"〽️\",\n    \"✳️\",\n    \"✴️\",\n    \"❇️\",\n    \"©️\",\n    \"®️\",\n    \"™️\",\n    \"#️⃣\",\n    \"*️⃣\",\n    \"0️⃣\",\n    \"1️⃣\",\n    \"2️⃣\",\n    \"3️⃣\",\n    \"4️⃣\",\n    \"5️⃣\",\n    \"6️⃣\",\n    \"7️⃣\",\n    \"8️⃣\",\n    \"9️⃣\",\n    \"🔟\",\n    \"🔠\",\n    \"🔡\",\n    \"🔢\",\n    \"🔣\",\n    \"🔤\",\n    \"🅰️\",\n    \"🆎\",\n    \"🅱️\",\n    \"🆑\",\n    \"🆒\",\n    \"🆓\",\n    \"ℹ️\",\n    \"🆔\",\n    \"Ⓜ️\",\n    \"🆕\",\n    \"🆖\",\n    \"🅾️\",\n    \"🆗\",\n    \"🅿️\",\n    \"🆘\",\n    \"🆙\",\n    \"🆚\",\n    \"🈁\",\n    \"🈂️\",\n    \"🈷️\",\n    \"🈶\",\n    \"🈯\",\n    \"🉐\",\n    \"🈹\",\n    \"🈚\",\n    \"🈲\",\n    \"🉑\",\n    \"🈸\",\n    \"🈴\",\n    \"🈳\",\n    \"㊗️\",\n    \"㊙️\",\n    \"🈺\",\n    \"🈵\",\n    \"🔴\",\n    \"🟠\",\n    \"🟡\",\n    \"🟢\",\n    \"🔵\",\n    \"🟣\",\n    \"🟤\",\n    \"⚫\",\n    \"⚪\",\n    \"🟥\",\n    \"🟧\",\n    \"🟨\",\n    \"🟩\",\n    \"🟦\",\n    \"🟪\",\n    \"🟫\",\n    \"⬛\",\n    \"⬜\",\n    \"◼️\",\n    \"◻️\",\n    \"◾\",\n    \"◽\",\n    \"▪️\",\n    \"▫️\",\n    \"🔶\",\n    \"🔷\",\n    \"🔸\",\n    \"🔹\",\n    \"🔺\",\n    \"🔻\",\n    \"💠\",\n    \"🔘\",\n    \"🔳\",\n    \"🔲\",\n  ],\n};\n","export const DOMAIN_SUFFIX = [\"com\", \"biz\", \"info\", \"name\", \"net\", \"org\"];\n","import { HttpStatus } from \"..\";\n\nexport const HTTP_STATUS: HttpStatus = {\n  informational: [100, 101, 102, 103],\n  success: [200, 201, 202, 203, 204, 205, 206, 207, 208, 226],\n  redirection: [300, 301, 302, 303, 304, 305, 306, 307, 308],\n  clientError: [\n    400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,\n    415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429, 431, 451,\n  ],\n  serverError: [500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511],\n};\n","export const HTTP_METHODS = [\"GET\", \"PATCH\", \"DELETE\", \"POST\", \"PUT\"];\n","import { ChacaUtils } from \"../../../core/utils\";\nimport { DatatypeModule } from \"../../datatype\";\n\ntype OS = \"lin\" | \"mac\" | \"win\";\n\ntype Browser = \"chrome\" | \"iexplorer\" | \"firefox\" | \"safari\" | \"opera\";\n\nconst LANGUAGES = [\n  \"AB\",\n  \"AF\",\n  \"AN\",\n  \"AR\",\n  \"AS\",\n  \"AZ\",\n  \"BE\",\n  \"BG\",\n  \"BN\",\n  \"BO\",\n  \"BR\",\n  \"BS\",\n  \"CA\",\n  \"CE\",\n  \"CO\",\n  \"CS\",\n  \"CU\",\n  \"CY\",\n  \"DA\",\n  \"DE\",\n  \"EL\",\n  \"EN\",\n  \"EO\",\n  \"ES\",\n  \"ET\",\n  \"EU\",\n  \"FA\",\n  \"FI\",\n  \"FJ\",\n  \"FO\",\n  \"FR\",\n  \"FY\",\n  \"GA\",\n  \"GD\",\n  \"GL\",\n  \"GV\",\n  \"HE\",\n  \"HI\",\n  \"HR\",\n  \"HT\",\n  \"HU\",\n  \"HY\",\n  \"ID\",\n  \"IS\",\n  \"IT\",\n  \"JA\",\n  \"JV\",\n  \"KA\",\n  \"KG\",\n  \"KO\",\n  \"KU\",\n  \"KW\",\n  \"KY\",\n  \"LA\",\n  \"LB\",\n  \"LI\",\n  \"LN\",\n  \"LT\",\n  \"LV\",\n  \"MG\",\n  \"MK\",\n  \"MN\",\n  \"MO\",\n  \"MS\",\n  \"MT\",\n  \"MY\",\n  \"NB\",\n  \"NE\",\n  \"NL\",\n  \"NN\",\n  \"NO\",\n  \"OC\",\n  \"PL\",\n  \"PT\",\n  \"RM\",\n  \"RO\",\n  \"RU\",\n  \"SC\",\n  \"SE\",\n  \"SK\",\n  \"SL\",\n  \"SO\",\n  \"SQ\",\n  \"SR\",\n  \"SV\",\n  \"SW\",\n  \"TK\",\n  \"TR\",\n  \"TY\",\n  \"UK\",\n  \"UR\",\n  \"UZ\",\n  \"VI\",\n  \"VO\",\n  \"YI\",\n  \"ZH\",\n];\n\nexport function GenerateUserAgent(\n  datatypeModule: DatatypeModule,\n  utils: ChacaUtils,\n): string {\n  const weightedKeyFromObject = <T extends Record<string, number>>(\n    obj: T,\n  ): keyof T => {\n    //returns a random key from the passed object; keys are weighted by the decimal probability in their value\n    const rand = datatypeModule.int({ min: 0, max: 100 }) / 100;\n    let min = 0;\n    let max = 0;\n    let return_val = \"\";\n\n    for (const key in obj) {\n      if (Object.prototype.hasOwnProperty.call(obj, key)) {\n        max = obj[key] + min;\n        return_val = key;\n        if (rand >= min && rand <= max) {\n          break;\n        }\n        min = min + obj[key];\n      }\n    }\n\n    return return_val;\n  };\n\n  const randomLang = (): string => utils.oneOfArray(LANGUAGES);\n\n  const randomBrowserAndOS = (): [Browser, OS] => {\n    const browser: Browser = weightedKeyFromObject({\n      chrome: 0.45132810566,\n      iexplorer: 0.27477061836,\n      firefox: 0.19384170608,\n      safari: 0.06186781118,\n      opera: 0.01574236955,\n    });\n\n    const os: OS = weightedKeyFromObject(\n      {\n        chrome: { win: 0.89, mac: 0.09, lin: 0.02 },\n        firefox: { win: 0.83, mac: 0.16, lin: 0.01 },\n        opera: { win: 0.91, mac: 0.03, lin: 0.06 },\n        safari: { win: 0.04, mac: 0.96 },\n        iexplorer: { win: 1 },\n      }[browser],\n    ) as OS;\n\n    return [browser, os];\n  };\n\n  const randomProc = (arch: OS): string => {\n    const procs = {\n      lin: [\"i686\", \"x86_64\"],\n      mac: { Intel: 0.48, PPC: 0.01, \"U; Intel\": 0.48, \"U; PPC\": 0.01 },\n      win: [\"\", \"WOW64\", \"Win64; x64\"],\n    };\n    const archValue = procs[arch];\n    const proc = Array.isArray(archValue)\n      ? utils.oneOfArray(archValue)\n      : weightedKeyFromObject(archValue);\n\n    return proc;\n  };\n\n  const randomRevision = (dots: number): string => {\n    let return_val = \"\";\n    //generate a random revision\n    //dots = 2 returns .x.y where x & y are between 0 and 9\n    for (let x = 0; x < dots; x++) {\n      return_val += `.${datatypeModule.int({ min: 0, max: 9 })}`;\n    }\n    return return_val;\n  };\n\n  const version_string = {\n    net() {\n      return [\n        datatypeModule.int({ min: 1, max: 4 }),\n        datatypeModule.int({ min: 0, max: 9 }),\n        datatypeModule.int({ min: 10000, max: 99999 }),\n        datatypeModule.int({ min: 0, max: 9 }),\n      ].join(\".\");\n    },\n    nt() {\n      return [\n        datatypeModule.int({ min: 5, max: 6 }),\n        datatypeModule.int({ min: 0, max: 3 }),\n      ].join(\".\");\n    },\n    ie() {\n      return datatypeModule.int({ min: 7, max: 11 });\n    },\n    trident() {\n      return [\n        datatypeModule.int({ min: 3, max: 7 }),\n        datatypeModule.int({ min: 0, max: 1 }),\n      ].join(\".\");\n    },\n    osx(delim?: string) {\n      return [\n        10,\n        datatypeModule.int({ min: 5, max: 10 }),\n        datatypeModule.int({ min: 0, max: 9 }),\n      ].join(delim || \".\");\n    },\n    chrome() {\n      return [\n        datatypeModule.int({ min: 13, max: 39 }),\n        0,\n        datatypeModule.int({ min: 800, max: 899 }),\n        0,\n      ].join(\".\");\n    },\n    presto() {\n      return `2.9.${datatypeModule.int({ min: 160, max: 190 })}`;\n    },\n    presto2() {\n      return `${datatypeModule.int({ min: 10, max: 12 })}.00`;\n    },\n    safari() {\n      return [\n        datatypeModule.int({ min: 531, max: 538 }),\n        datatypeModule.int({ min: 0, max: 2 }),\n        datatypeModule.int({ min: 0, max: 2 }),\n      ].join(\".\");\n    },\n  };\n\n  const browserMap = {\n    firefox(arch: OS): string {\n      //https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference\n      const firefox_ver = `${datatypeModule.int({\n          min: 5,\n          max: 15,\n        })}${randomRevision(2)}`,\n        gecko_ver = `Gecko/20100101 Firefox/${firefox_ver}`,\n        proc = randomProc(arch),\n        os_ver =\n          arch === \"win\"\n            ? `(Windows NT ${version_string.nt()}${proc ? `; ${proc}` : \"\"}`\n            : arch === \"mac\"\n              ? `(Macintosh; ${proc} Mac OS X ${version_string.osx()}`\n              : `(X11; Linux ${proc}`;\n\n      return `Mozilla/5.0 ${os_ver}; rv:${firefox_ver.slice(\n        0,\n        -2,\n      )}) ${gecko_ver}`;\n    },\n\n    iexplorer(): string {\n      const ver = version_string.ie();\n\n      if (ver >= 11) {\n        //http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx\n        return `Mozilla/5.0 (Windows NT 6.${datatypeModule.int({\n          min: 1,\n          max: 3,\n        })}; Trident/7.0; ${\n          datatypeModule.boolean() ? \"Touch; \" : \"\"\n        }rv:11.0) like Gecko`;\n      }\n\n      //http://msdn.microsoft.com/en-us/library/ie/ms537503(v=vs.85).aspx\n      return `Mozilla/5.0 (compatible; MSIE ${ver}.0; Windows NT ${version_string.nt()}; Trident/${version_string.trident()}${\n        datatypeModule.boolean() ? `; .NET CLR ${version_string.net()}` : \"\"\n      })`;\n    },\n\n    opera(arch: OS): string {\n      //http://www.opera.com/docs/history/\n      const presto_ver = ` Presto/${version_string.presto()} Version/${version_string.presto2()})`,\n        os_ver =\n          arch === \"win\"\n            ? `(Windows NT ${version_string.nt()}; U; ${randomLang()}${presto_ver}`\n            : arch === \"lin\"\n              ? `(X11; Linux ${randomProc(arch)}; U; ${randomLang()}${presto_ver}`\n              : `(Macintosh; Intel Mac OS X ${version_string.osx()} U; ${randomLang()} Presto/${version_string.presto()} Version/${version_string.presto2()})`;\n\n      return `Opera/${datatypeModule.int({\n        min: 9,\n        max: 14,\n      })}.${datatypeModule.int({\n        min: 0,\n        max: 99,\n      })} ${os_ver}`;\n    },\n\n    safari(arch: OS): string {\n      const safari = version_string.safari(),\n        ver = `${datatypeModule.int({\n          min: 4,\n          max: 7,\n        })}.${datatypeModule.int({\n          min: 0,\n          max: 1,\n        })}.${datatypeModule.int({ min: 0, max: 10 })}`,\n        os_ver =\n          arch === \"mac\"\n            ? `(Macintosh; ${randomProc(\"mac\")} Mac OS X ${version_string.osx(\n                \"_\",\n              )} rv:${datatypeModule.int({\n                min: 2,\n                max: 6,\n              })}.0; ${randomLang()}) `\n            : `(Windows; U; Windows NT ${version_string.nt()})`;\n\n      return `Mozilla/5.0 ${os_ver}AppleWebKit/${safari} (KHTML, like Gecko) Version/${ver} Safari/${safari}`;\n    },\n\n    chrome(arch: OS): string {\n      const safari = version_string.safari(),\n        os_ver =\n          arch === \"mac\"\n            ? `(Macintosh; ${randomProc(\"mac\")} Mac OS X ${version_string.osx(\n                \"_\",\n              )}) `\n            : arch === \"win\"\n              ? `(Windows; U; Windows NT ${version_string.nt()})`\n              : `(X11; Linux ${randomProc(arch)}`;\n\n      return `Mozilla/5.0 ${os_ver} AppleWebKit/${safari} (KHTML, like Gecko) Chrome/${version_string.chrome()} Safari/${safari}`;\n    },\n  };\n\n  const [browser, arch] = randomBrowserAndOS();\n  return browserMap[browser](arch);\n}\n","export const PROTOCOL = [\n  \"https\",\n  \"http\",\n  \"tcp\",\n  \"udp\",\n  \"ip\",\n  \"pop\",\n  \"smtp\",\n  \"dhcp\",\n  \"l2tp\",\n  \"ftp\",\n  \"imap\",\n];\n","export const OAUTH_PROVIDER = [\n  \"Amazon\",\n  \"AOL\",\n  \"Autodesk\",\n  \"Apple\",\n  \"Basecamp\",\n  \"Battle.net\",\n  \"Bitbucket\",\n  \"bitly\",\n  \"Box\",\n  \"ClearScore\",\n  \"Cloud Foundry\",\n  \"Dailymotion\",\n  \"Deutsche Telekom\",\n  \"deviantART\",\n  \"Discogs\",\n  \"Discord\",\n  \"Dropbox\",\n  \"Etsy\",\n  \"Evernote\",\n  \"Facebook\",\n  \"FatSecret\",\n  \"Fitbit\",\n  \"Flickr\",\n  \"Formstack\",\n  \"Foursquare\",\n  \"GitHub\",\n  \"GitLab\",\n  \"Goodreads\",\n  \"Google\",\n  \"Google App Engine\",\n  \"Groundspeak\",\n  \"Huddle\",\n  \"Imgur\",\n  \"Instagram\",\n  \"IntelCloud Services\",\n  \"Jive Software\",\n  \"Keycloak\",\n  \"LinkedIn\",\n  \"LoginRadius\",\n  \"Microsoft services\",\n  \"Mixi\",\n  \"MySpace\",\n  \"MoreTeam\",\n  \"Netflix\",\n  \"NetIQ\",\n  \"Okta\",\n  \"OpenAM\",\n  \"OpenStreetMap\",\n  \"OpenTable\",\n  \"ORCID\",\n  \"PayPal\",\n  \"Ping Identity\",\n  \"Pixiv\",\n  \"Plurk\",\n  \"Reddit\",\n  \"Salesforce.com\",\n  \"Sina Weibo\",\n  \"Spotify\",\n  \"Stack Exchange\",\n  \"StatusNet\",\n  \"Strava\",\n  \"Stripe\",\n  \"Trello\",\n  \"Tumblr\",\n  \"Twitch\",\n  \"Twitter\",\n  \"Ubuntu One\",\n  \"Viadeo\",\n  \"Vimeo\",\n  \"VK\",\n  \"WeChat\",\n  \"Withings\",\n  \"WooCommerce\",\n  \"WordPress.com\",\n  \"WSO2 Identity Server\",\n  \"Xero\",\n  \"XING\",\n  \"Yahoo!\",\n  \"Yammer\",\n  \"Yandex\",\n  \"Yelp\",\n  \"Zendesk\",\n];\n","export const LOCALE = [\n  \"cz\",\n  \"ge\",\n  \"ne\",\n  \"it\",\n  \"de_CH\",\n  \"en_AU_ocker\",\n  \"ja\",\n  \"ar\",\n  \"en_CA\",\n  \"pt_BR\",\n  \"de\",\n  \"es\",\n  \"vi\",\n  \"hr\",\n  \"en_ZA\",\n  \"fr\",\n  \"id_ID\",\n  \"nb_NO\",\n  \"zh_TW\",\n  \"ro\",\n  \"pl\",\n  \"en_GB\",\n  \"en_AU\",\n  \"fr_CA\",\n  \"hy\",\n  \"ko\",\n  \"en_BORK\",\n  \"es_MX\",\n  \"en_IE\",\n  \"az\",\n  \"nl_BE\",\n  \"en_US\",\n  \"sk\",\n  \"fr_CH\",\n  \"en_IND\",\n  \"sv\",\n  \"fi\",\n  \"en\",\n  \"zh_CN\",\n  \"he\",\n  \"pt_PT\",\n  \"de_AT\",\n];\n","export const EMAIL_PROVIDER = [\n  \"aim\",\n  \"alice\",\n  \"aliceadsl\",\n  \"aol\",\n  \"arcor\",\n  \"att\",\n  \"bellsouth\",\n  \"bigpond\",\n  \"bluewin\",\n  \"blueyonder\",\n  \"bol\",\n  \"centurytel\",\n  \"charter\",\n  \"chello\",\n  \"club-internet\",\n  \"comcast\",\n  \"earthlink\",\n  \"facebook\",\n  \"free\",\n  \"freenet\",\n  \"frontiernet\",\n  \"gmail\",\n  \"gmx\",\n  \"googlemail\",\n  \"hetnet\",\n  \"home\",\n  \"hotmail\",\n  \"ig\",\n  \"juno\",\n  \"laposte\",\n  \"libero\",\n  \"live\",\n  \"mac\",\n  \"mail\",\n  \"me\",\n  \"msn\",\n  \"neuf\",\n  \"ntlworld\",\n  \"optonline\",\n  \"optusnet\",\n  \"orange\",\n  \"outlook\",\n  \"planet\",\n  \"qq\",\n  \"rambler\",\n  \"rediffmail\",\n  \"rocketmail\",\n  \"sbcglobal\",\n  \"sfr\",\n  \"shaw\",\n  \"sky\",\n  \"skynet\",\n  \"sympatico\",\n  \"t-online\",\n  \"telenet\",\n  \"terra\",\n  \"tin\",\n  \"tiscali\",\n  \"unaref\",\n  \"uol\",\n  \"verizon\",\n  \"virgilio\",\n  \"voila\",\n  \"wanadoo\",\n  \"web\",\n  \"windstream\",\n  \"yahoo\",\n  \"yandex\",\n  \"zonnet\",\n];\n","export const BROWSERS = [\n  \"Chrome\",\n  \"Edge\",\n  \"Firefox\",\n  \"Internet Explorer\",\n  \"Safari\",\n  \"Opera\",\n  \"Yandex\",\n  \"Chromium\",\n  \"Vivaldi\",\n  \"Baidu\",\n  \"Brave\",\n];\n","import { DatatypeModule } from \"../../datatype\";\n\nexport class Password {\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    readonly consonants: RegExp,\n    readonly vowel: RegExp,\n  ) {}\n\n  execute(\n    length: number,\n    memorable: boolean,\n    i_pattern: RegExp,\n    prefix: string,\n  ): string {\n    if (prefix.length >= length) {\n      return prefix;\n    }\n\n    let pattern: RegExp = i_pattern;\n    if (memorable) {\n      if (prefix.match(this.consonants)) {\n        pattern = this.vowel;\n      } else {\n        pattern = this.consonants;\n      }\n    }\n\n    const n = this.datatypeModule.int({ min: 0, max: 94 }) + 33;\n    let char = String.fromCharCode(n);\n\n    if (memorable) {\n      char = char.toLowerCase();\n    }\n\n    if (!char.match(pattern)) {\n      return this.execute(length, memorable, pattern, prefix);\n    }\n\n    return this.execute(length, memorable, pattern, prefix + char);\n  }\n}\n","import { ChacaUtils } from \"../../core/utils\";\nimport { EMOJIS } from \"./constants/emojis\";\nimport { DOMAIN_SUFFIX } from \"./constants/domainSuffix\";\nimport { HTTP_STATUS } from \"./constants/httpStatus\";\nimport { HTTP_METHODS } from \"./constants/http_method\";\nimport { GenerateUserAgent } from \"./core/user-agent\";\nimport { PersonModule } from \"../person\";\nimport { PROTOCOL } from \"./constants/protocol\";\nimport { OAUTH_PROVIDER } from \"./constants/oauth\";\nimport { LOCALE } from \"./constants/locale\";\nimport { EMAIL_PROVIDER } from \"./constants/email_provider\";\nimport { BROWSERS } from \"./constants/browser\";\nimport { DatatypeModule } from \"../datatype\";\nimport { WordModule } from \"../word\";\nimport { Password } from \"./core/password\";\n\nexport type HttpStatus = {\n  informational: number[];\n  success: number[];\n  redirection: number[];\n  clientError: number[];\n  serverError: number[];\n};\n\nexport type Emojis = {\n  smiley: string[];\n  body: string[];\n  person: string[];\n  nature: string[];\n  food: string[];\n  travel: string[];\n  activity: string[];\n  object: string[];\n  symbol: string[];\n};\n\ntype EmojiProps = {\n  emoji?: keyof Emojis;\n};\n\ntype EmailArgs = {\n  firstName?: string;\n  lastName?: string;\n  provider?: string;\n};\n\ntype PasswordArgs = {\n  length?: number;\n  memorable?: boolean;\n  prefix?: string;\n  pattern?: RegExp;\n};\n\ntype UrlArgs = {\n  secure?: boolean;\n};\n\ntype UsernameArgs = {\n  firstName?: string;\n  lastName?: string;\n};\n\nexport class InternetModule {\n  private readonly passwordCreator: Password;\n\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    private readonly utils: ChacaUtils,\n    private readonly personModule: PersonModule,\n    private readonly wordModule: WordModule,\n  ) {\n    const vowel = /[aeiouAEIOU]$/;\n    const consonant = /[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]$/;\n\n    this.passwordCreator = new Password(this.datatypeModule, consonant, vowel);\n  }\n\n  readonly constants = {\n    emojis: EMOJIS,\n    domainSuffixs: DOMAIN_SUFFIX,\n    httpStatus: HTTP_STATUS,\n    httpMethods: HTTP_METHODS,\n    protocols: PROTOCOL,\n    oauthProviders: OAUTH_PROVIDER,\n    locales: LOCALE,\n    emailProviders: EMAIL_PROVIDER,\n    browsers: BROWSERS,\n  };\n\n  /**\n   * Returns a browser name\n   *\n   * @example\n   * modules.internet.browser() // 'Opera'\n   *\n   * @returns string\n   */\n  browser(): string {\n    return this.utils.oneOfArray(this.constants.browsers);\n  }\n\n  /**\n   * Generate a random OAuth provider\n   *\n   * @example\n   * modules.internet.oauthProvider() // 'Amazon'\n   *\n   * @returns string\n   */\n  oauthProvider(): string {\n    return this.utils.oneOfArray(this.constants.oauthProviders);\n  }\n\n  /**\n   * Returns a random locale\n   *\n   * @example\n   * modules.internet.locale() // 'es_MX'\n   *\n   * @returns string\n   */\n  locale(): string {\n    return this.utils.oneOfArray(this.constants.locales);\n  }\n\n  /**\n   * Returns a random email provider\n   *\n   * @example\n   * modules.internet.emailProvider() // 'gmail'\n   *\n   * @returns string\n   */\n  emailProvider(): string {\n    return this.utils.oneOfArray(this.constants.emailProviders);\n  }\n\n  /**\n   * Returns a user email\n   * @param args.firstName owner first name\n   * @param args.lastName owner last name\n   * @param args.provider email provider\n   *\n   * @example\n   * modules.internet.email() // 'juan527120@gmail.com'\n   * modules.internet.email({ firstName: 'pedro', lastName: 'Scott', provider: 'yahoo.com' }) // \"pedro_scott@yahoo.com\"\n   *\n   * @returns string\n   */\n  email({ firstName, lastName, provider: iprovider }: EmailArgs = {}): string {\n    const provider = iprovider\n      ? iprovider\n      : this.utils.oneOfArray(this.constants.emailProviders);\n\n    const username = this.username({\n      firstName: firstName,\n      lastName: lastName,\n    });\n\n    const domain = provider.includes(\".\") ? provider : `${provider}.com`;\n    const email = `${username}@${domain}`;\n\n    return email.toLowerCase();\n  }\n\n  /**\n   * Returns a password.\n   *\n   * @param args.length The length of the password to generate. Defaults to `15`.\n   * @param args.memorable Whether the generated password should be memorable. Defaults to `false`.\n   * @param args.pattern The pattern that all chars should match should match.\n   * This option will be ignored, if `memorable` is `true`. Defaults to `/\\w/`.\n   * @param args.prefix The prefix to use. Defaults to `''`.\n   *\n   * @example\n   * modules.internet.password() // '89G1wJuBLbGziIs'\n   * modules.internet.password({ length: 20 }) // 'aF55c_8O9kZaPOrysFB_'\n   * modules.internet.password({ length: 20, memorable: true }) // 'lawetimufozujosodedi'\n   * modules.internet.password({ length: 20, memorable: true, pattern: /[A-Z]/ }) // 'HMAQDFFYLDDUTBKVNFVS'\n   * modules.internet.password({ length: 20, memorable: true, pattern: /[A-Z]/, prefix: 'Hello ' }) // 'Hello IREOXTDWPERQSB'\n   *\n   * @returns string\n   */\n  password({\n    length,\n    memorable: imemorable,\n    pattern: ipattern,\n    prefix: iprefix,\n  }: PasswordArgs = {}): string {\n    const len = length && length > 0 ? length : 15;\n    const memorable = imemorable ? imemorable : false;\n    const pattern =\n      ipattern instanceof RegExp ? ipattern : this.passwordCreator.consonants;\n    const prefix = iprefix ? iprefix : \"\";\n\n    return this.passwordCreator.execute(len, memorable, pattern, prefix);\n  }\n\n  /**\n   * Returns a string with a web url\n   *\n   * @example\n   * modules.internet.url() // 'http://words.info.net'\n   *\n   * @param args.secure The url has a secure protocol or not\n   *\n   * @returns\n   */\n  url({ secure }: UrlArgs = {}): string {\n    if (typeof secure === \"boolean\") {\n      const sec = secure ? \"https\" : \"http\";\n\n      return `${sec}://${this.domainName()}.${this.domainSuffix()}`;\n    } else {\n      return `${this.protocol()}://${this.domainName()}.${this.domainSuffix()}`;\n    }\n  }\n\n  /**\n   * Returns a profile user name\n   *\n   * @param args.firstName owner first name\n   * @param args.lastName owner last name\n   *\n   * @example\n   * modules.internet.username() // 'juan527134'\n   * modules.internet.username({ firstName: 'pedro', lastName: 'Scott' }) // 'pedro_scott'\n   *\n   * @returns string\n   */\n  username({\n    firstName: ifirstName,\n    lastName: ilastName,\n  }: UsernameArgs = {}): string {\n    const firstName = ifirstName\n      ? this.utils.camelCase(ifirstName)\n      : this.personModule.firstName({ language: \"en\" });\n    const lastName = ilastName ? this.utils.camelCase(ilastName) : \"\";\n\n    const ran = this.datatypeModule.int({ min: 0, max: 3 });\n\n    const genNumbers = (): string => {\n      const countNumbers = this.datatypeModule.int({ min: 1, max: 5 });\n\n      return this.utils.replaceSymbols(\n        Array.from({ length: countNumbers })\n          .map(() => \"#\")\n          .join(\"\"),\n      );\n    };\n\n    const genSymbol = (): string => {\n      return this.utils.oneOfArray([\".\", \"-\", \"_\"]);\n    };\n\n    let result: string;\n    if (ran === 0) {\n      const numbers = this.utils.replaceSymbols(genNumbers());\n      result = `${firstName}${lastName}${numbers}`;\n    } else if (ran === 1) {\n      const symbol = genSymbol();\n      result = `${firstName}${symbol}${lastName}`;\n    } else if (ran === 2) {\n      const numbers = genNumbers();\n      result = `${firstName}${numbers}${lastName}`;\n    } else {\n      const symbol = genSymbol();\n      const number = genNumbers();\n\n      result = `${firstName}${symbol}${lastName}${number}`;\n    }\n\n    return result;\n  }\n\n  /**\n   * Returns a http method\n   * @example\n   * modules.internet.httpMethod() // 'GET'\n   * @returns `GET` | `PATCH` | `DELETE` | `POST` | `PUT`\n   */\n  httpMethod(): string {\n    return this.utils.oneOfArray(HTTP_METHODS);\n  }\n\n  /**\n   * Returns a IPv6 address\n   * @example modules.internet.ipv6() // '269f:1230:73e3:318d:842b:daab:326d:897b'\n   * @returns string\n   */\n  ipv6(): string {\n    const randHash = () => {\n      let result = \"\";\n\n      for (let i = 0; i < 4; i++) {\n        result += this.utils.oneOfArray([\n          \"0\",\n          \"1\",\n          \"2\",\n          \"3\",\n          \"4\",\n          \"5\",\n          \"6\",\n          \"7\",\n          \"8\",\n          \"9\",\n          \"a\",\n          \"b\",\n          \"c\",\n          \"d\",\n          \"e\",\n          \"f\",\n        ]);\n      }\n      return result;\n    };\n\n    const result: string[] = [];\n    for (let i = 0; i < 8; i++) {\n      result[i] = randHash();\n    }\n\n    return result.join(\":\");\n  }\n\n  /**\n   * Returns a IPv4 address.\n   *\n   * @example modules.internet.ipv4() // '245.108.222.0'\n   *\n   * @returns string\n   */\n  ipv4(): string {\n    let retString = \"\";\n\n    for (let i = 1; i <= 4; i++) {\n      const val = this.datatypeModule.int({ max: 255, min: 0 });\n\n      if (i === 4) {\n        retString += `${val}`;\n      } else {\n        retString += `${val}.`;\n      }\n    }\n\n    return retString;\n  }\n\n  /**\n   * Return an emoji\n   * @param args.emoji emoji category\n   * @example modules.internet.emoji() // '🔎'\n   * @returns string\n   */\n  emoji({ emoji: iemoji }: EmojiProps = {}): string {\n    const utils = new ChacaUtils();\n\n    const emoji = iemoji ? iemoji : undefined;\n\n    if (emoji) {\n      const selEmoji = EMOJIS[emoji];\n      if (selEmoji) {\n        return utils.oneOfArray(selEmoji);\n      } else {\n        let retEmojis: string[] = [];\n        for (const val of Object.values(EMOJIS)) {\n          retEmojis = [...retEmojis, ...val];\n        }\n\n        return utils.oneOfArray(retEmojis);\n      }\n    } else {\n      let retEmojis: string[] = [];\n      for (const val of Object.values(EMOJIS)) {\n        retEmojis = [...retEmojis, ...val];\n      }\n\n      return utils.oneOfArray(retEmojis);\n    }\n  }\n\n  /**\n   * Returns a mac address\n   * @example modules.internet.mac() // '32:8e:2e:09:c6:05'\n   * @returns string\n   */\n  mac(): string {\n    let retString = \"\";\n\n    const lowerCharacters = this.datatypeModule.constants.lowerCharacters;\n    const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n\n    for (let i = 1; i <= 6; i++) {\n      for (let j = 1; j <= 2; j++) {\n        retString += `${String(\n          this.utils.oneOfArray([...numbers, ...lowerCharacters]),\n        )}`;\n      }\n\n      if (i !== 6) retString += `:`;\n    }\n\n    return retString;\n  }\n\n  /**\n   * Returns a port number\n   * @example\n   * modules.internet.port() // 8001\n   * @returns string\n   */\n  port(): number {\n    return this.datatypeModule.int({ min: 0, max: 65535 });\n  }\n\n  /**\n   * Returns a string with a browser user agent\n   * @example modules.internet.userAgent() // 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_8_8)  AppleWebKit/536.0.2 (KHTML, like Gecko) Chrome/27.0.849.0 Safari/536.0.2'\n   * @returns string\n   */\n  userAgent(): string {\n    return GenerateUserAgent(this.datatypeModule, this.utils);\n  }\n\n  /**\n   * Returns a web protocol\n   * @example modules.internet.protocol() // 'https'\n   * @returns string\n   */\n  protocol(): string {\n    return this.utils.oneOfArray(this.constants.protocols);\n  }\n\n  /**\n   * Returns a domain suffix\n   * @example modules.internet.domainSuffix() // '.com'\n   * @returns string\n   */\n  domainSuffix(): string {\n    return this.utils.oneOfArray(DOMAIN_SUFFIX);\n  }\n\n  /**\n   * Returns a domain word\n   * @example modules.internet.domainName() // 'words.info'\n   * @returns string\n   */\n  domainName(): string {\n    const name: string = this.wordModule.noun({ language: \"en\" });\n    const tale = this.datatypeModule.boolean();\n\n    if (tale) {\n      const t = this.utils.oneOfArray([\n        \"info\",\n        this.wordModule.adjective({ language: \"en\" }),\n      ]);\n      const sep = this.utils.oneOfArray([\".\", \"-\"]);\n\n      return `${name}${sep}${t}`;\n    } else {\n      return name;\n    }\n  }\n\n  /**\n   * Returns a web http status code\n   * @example modules.internet.httpStatusCode() // 201\n   * @returns string\n   */\n  httpStatusCode(): number {\n    const sel = this.utils.oneOfArray(\n      Object.keys(HTTP_STATUS),\n    ) as keyof HttpStatus;\n\n    return this.utils.oneOfArray(HTTP_STATUS[sel]);\n  }\n\n  /**\n   * Generates a random IPv4 or IPv6 address.\n   *\n   * @example\n   * modules.internet.ip() // '245.108.222.0'\n   * modules.internet.ip() // '4e5:f9c5:4337:abfd:9caf:1135:41ad:d8d3'\n   */\n  ip(): string {\n    return this.datatypeModule.boolean() ? this.ipv4() : this.ipv6();\n  }\n}\n","import { loremIpsum } from \"lorem-ipsum\";\nimport { DatatypeModule } from \"../datatype\";\n\nexport type WordsProps = {\n  count?: number;\n};\n\nexport type ParagraphProps = {\n  count?: number;\n};\n\nexport type SlugProps = {\n  wordCount?: number;\n};\n\nexport type SentencesProps = {\n  sentencesCount?: number;\n  separator?: string;\n  wordsMax?: number;\n  wordsMin?: number;\n};\n\nexport type SentenceProps = { wordsMax?: number; wordsMin?: number };\n\nexport type ParagraphsProps = {\n  paragraphsCount?: number;\n  separator?: string;\n  minSentences?: number;\n  maxSentences?: number;\n};\n\nexport class LoremModule {\n  constructor(private readonly datatypeModule: DatatypeModule) {}\n\n  /**\n   * @param args.paragraphsCount Number of paragraphs. Default `3`\n   * @param args.separator Separator between paragraphs. Default `\\n`\n   * @param args.maxSentences Maximun of sentences of each paragraphs\n   * @param args.minSentences Min of sentences of each paragraphs\n   *\n   * @example modules.lorem.paragraphs()\n   * @returns string\n   */\n  paragraphs({\n    maxSentences,\n    minSentences,\n    paragraphsCount,\n    separator: iseparator,\n  }: ParagraphsProps = {}): string {\n    const separator = iseparator ? iseparator : \"\\n\";\n    const cant =\n      typeof paragraphsCount === \"number\" && paragraphsCount > 0\n        ? paragraphsCount\n        : 3;\n    const minS =\n      typeof minSentences === \"number\" && minSentences > 0\n        ? minSentences\n        : undefined;\n    const maxS =\n      typeof maxSentences === \"number\" && maxSentences > 0\n        ? maxSentences\n        : undefined;\n\n    return loremIpsum({\n      format: \"plain\",\n      suffix: separator,\n      count: cant,\n      paragraphUpperBound: maxS,\n      paragraphLowerBound: minS,\n      units: \"paragraphs\",\n    });\n  }\n\n  /**\n   * @param args.sentencesCount Number of sentences. Default in `3`\n   * @param args.separator Separator between sentences. Default `\\n`\n   * @param args.wordsMin Minimun of words in each sentence\n   * @param args.wordsMax Maximun of words in each sentence\n   *\n   * @example modules.lorem.sentences()\n   * @returns\n   */\n  sentences({\n    sentencesCount,\n    separator: iseparator,\n    wordsMax,\n    wordsMin,\n  }: SentencesProps = {}): string {\n    const cant =\n      typeof sentencesCount === \"number\" && sentencesCount > 0\n        ? sentencesCount\n        : 3;\n    const separator = iseparator ? iseparator : \"\\n\";\n    const wordMin =\n      typeof wordsMin === \"number\" && wordsMin > 0 ? wordsMin : undefined;\n    const wordMax =\n      typeof wordsMax === \"number\" && wordsMax > 0 ? wordsMax : undefined;\n\n    return loremIpsum({\n      format: \"plain\",\n      units: \"sentences\",\n      count: cant,\n      suffix: separator,\n      sentenceLowerBound: wordMin,\n      sentenceUpperBound: wordMax,\n    });\n  }\n\n  /**\n   * @param args.wordCount Number of words in the slug. Default `3`\n   * @example modules.lorem.slug() // 'lorem-ipsum-ad'\n   * @returns string\n   */\n  slug({ wordCount }: SlugProps = {}): string {\n    const cant = typeof wordCount === \"number\" && wordCount > 0 ? wordCount : 3;\n\n    const words = loremIpsum({\n      format: \"plain\",\n      count: cant,\n      units: \"words\",\n    });\n\n    let retString = \"\";\n    for (let i = 0; i < words.length; i++) {\n      retString = retString.concat(words[i] === \" \" ? \"-\" : words[i]);\n    }\n\n    return retString;\n  }\n\n  /**\n   *\n   * @param args.count Number or words.\n   * @example modules.lorem.words() // 'lorem ipsum in'\n   * @returns string\n   */\n  words({ count: icount }: WordsProps = {}): string {\n    const count =\n      typeof icount === \"number\" && icount >= 0\n        ? icount\n        : this.datatypeModule.int({ min: 5, max: 10 });\n\n    return loremIpsum({ format: \"plain\", units: \"words\", count: count });\n  }\n\n  /**\n   * Generates a word .\n   *\n   * @example\n   * modules.lorem.word() // 'temporibus'\n   */\n  word(): string {\n    return loremIpsum({ format: \"plain\", units: \"words\", count: 1 });\n  }\n\n  /**\n   * Generates a paragraph with the given number of sentences.\n   *\n   * @param args.count The number of sentences to generate.\n   *\n   * @example\n   * modules.lorem.paragraph()\n   *\n   */\n  paragraph({ count: icount }: ParagraphProps = {}): string {\n    const count =\n      typeof icount === \"number\" && icount > 0\n        ? icount\n        : this.datatypeModule.int({ min: 3, max: 10 });\n\n    return loremIpsum({\n      format: \"plain\",\n      paragraphUpperBound: count,\n      paragraphLowerBound: count,\n      units: \"paragraphs\",\n    });\n  }\n\n  /**\n   * Generates a single sentence.\n   *\n   * @param args.wordsMin Minimun of words\n   * @param args.wordsMax Maximun of words\n   *\n   * @example\n   * modules.lorem.sentence() // 'Voluptatum cupiditate suscipit autem eveniet aut dolorem aut officiis distinctio.'\n   * modules.lorem.sentence(5) // 'Laborum voluptatem officiis est et.'\n   * modules.lorem.sentence({ min: 3, max: 5 }) // 'Fugiat repellendus nisi.'\n   */\n  sentence({ wordsMax, wordsMin }: SentenceProps = {}): string {\n    const wordMin =\n      typeof wordsMin === \"number\" && wordsMin > 0 ? wordsMin : undefined;\n    const wordMax =\n      typeof wordsMax === \"number\" && wordsMax > 0 ? wordsMax : undefined;\n\n    return loremIpsum({\n      format: \"plain\",\n      units: \"sentences\",\n      count: 1,\n      sentenceLowerBound: wordMin,\n      sentenceUpperBound: wordMax,\n    });\n  }\n}\n","import { DatatypeModule } from \"../datatype\";\nimport { WordModule } from \"../word\";\n\ninterface ImageProps {\n  width?: number;\n  height?: number;\n}\n\ninterface CategoryProps {\n  width?: number;\n  height?: number;\n  category?: string;\n}\n\nexport class ImageModule {\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    private readonly wordModule: WordModule,\n  ) {}\n\n  private buildUrl(\n    category: string = this.wordModule.noun({ language: \"en\" }),\n    { height: iheight, width: iwidth }: ImageProps = {},\n  ) {\n    const size = this.datatypeModule.int({ min: 640, max: 4000 });\n\n    const width = iwidth ? iwidth : size;\n    const height = iheight ? iheight : size;\n\n    const url = `https://lexica.art/api/v1/search?q=${encodeURIComponent(\n      category,\n    )}&width=${width}&height=${height}`;\n\n    return url;\n  }\n\n  /**\n   * Returns an image url from a category\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @example\n   * modules.image.category({ category: \"soccer\" })\n   *\n   * @returns string\n   */\n  category(props: CategoryProps = {}): string {\n    return this.buildUrl(props.category, props);\n  }\n\n  /**\n   * Return a food image url\n   *\n   * @example\n   * modules.image.food()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  food(props?: ImageProps): string {\n    return this.buildUrl(\"food\", props);\n  }\n\n  /**\n   * Return a event image url\n   *\n   * @example\n   * modules.image.event()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  event(props?: ImageProps): string {\n    return this.buildUrl(\"event\", props);\n  }\n\n  /**\n   * Return a wallpaper image url\n   *\n   * @example\n   * modules.image.wallpaper()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  wallpaper(props?: ImageProps): string {\n    return this.buildUrl(\"wallpaper\", props);\n  }\n\n  /**\n   * Return a 3D image url\n   *\n   * @example\n   * modules.image.treeDimension()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  threeDimension(props?: ImageProps): string {\n    return this.buildUrl(\"3d\", props);\n  }\n\n  /**\n   * Return a architecture image url\n   *\n   * @example\n   * modules.image.architecture()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  architecture(props?: ImageProps): string {\n    return this.buildUrl(\"architecture\", props);\n  }\n\n  /**\n   * Return a nature image url\n   *\n   * @example\n   * modules.image.nature()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  nature(props?: ImageProps): string {\n    return this.buildUrl(\"nature\", props);\n  }\n\n  /**\n   * Return a fashion image url\n   *\n   * @example\n   * modules.image.fashion()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  fashion(props?: ImageProps): string {\n    return this.buildUrl(\"fashion\", props);\n  }\n\n  /**\n   * Return a film image url\n   *\n   * @example\n   * modules.image.film()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  film(props?: ImageProps): string {\n    return this.buildUrl(\"film\", props);\n  }\n\n  /**\n   * Return a people image url\n   *\n   * @example\n   * modules.image.people()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  people(props?: ImageProps): string {\n    return this.buildUrl(\"people\", props);\n  }\n\n  /**\n   * Return a health image url\n   *\n   * @example\n   * modules.image.health()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  health(props?: ImageProps): string {\n    return this.buildUrl(\"health\", props);\n  }\n\n  /**\n   * Return a house image url\n   *\n   * @example\n   * modules.image.house()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  house(props?: ImageProps): string {\n    return this.buildUrl(\"house\", props);\n  }\n\n  /**\n   * Return a street image url\n   *\n   * @example\n   * modules.image.street()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  street(props?: ImageProps): string {\n    return this.buildUrl(\"street\", props);\n  }\n\n  /**\n   * Return a animal image url\n   *\n   * @example\n   * modules.image.animal()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  animal(props?: ImageProps): string {\n    return this.buildUrl(\"animal\", props);\n  }\n\n  /**\n   * Return a spiritual image url\n   *\n   * @example\n   * modules.image.spiritual()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  spiritual(props?: ImageProps): string {\n    return this.buildUrl(\"spiritual\", props);\n  }\n\n  /**\n   * Return a travel image url\n   *\n   * @example\n   * modules.image.travel()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  travel(props?: ImageProps): string {\n    return this.buildUrl(\"travel\", props);\n  }\n\n  /**\n   * Return a art image url\n   *\n   * @example\n   * modules.image.art()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  art(props?: ImageProps): string {\n    return this.buildUrl(\"art\", props);\n  }\n\n  /**\n   * Return a history image url\n   *\n   * @example\n   * modules.image.history()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  history(props?: ImageProps): string {\n    return this.buildUrl(\"history\", props);\n  }\n\n  /**\n   * Return a sport image url\n   *\n   * @example\n   * modules.image.sport()\n   *\n   * @param args.witdh image width\n   * @param args.height image height\n   *\n   * @returns string\n   */\n  sport(props?: ImageProps): string {\n    return this.buildUrl(\"sport\", props);\n  }\n\n  /**\n   * Return a animate avatar image url\n   *\n   * @example\n   * modules.image.animateAvatar()\n   *\n   * @returns string\n   */\n  animatedAvatar(): string {\n    const ran = this.datatypeModule.int({ min: 0, max: 1000 });\n\n    return `https://api.multiavatar.com/${ran}.svg`;\n  }\n}\n","export const MIME_TYPES = [\n  // Text\n  \"text/plain\",\n  \"text/html\",\n  \"text/css\",\n  \"text/javascript\",\n  \"application/json\",\n  \"application/xml\",\n  \"text/csv\",\n  \"text/tab-separated-values\",\n\n  // Image\n  \"image/jpeg\",\n  \"image/png\",\n  \"image/gif\",\n  \"image/bmp\",\n  \"image/svg+xml\",\n  \"image/webp\",\n  \"image/tiff\",\n  \"image/x-icon\",\n\n  // Audio\n  \"audio/mpeg\",\n  \"audio/wav\",\n  \"audio/ogg\",\n  \"audio/aac\",\n  \"audio/flac\",\n  \"audio/mp4\",\n\n  // Video\n  \"video/mp4\",\n  \"video/webm\",\n  \"video/quicktime\",\n  \"video/x-msvideo\",\n  \"video/x-flv\",\n  \"video/avi\",\n\n  // Application\n  \"application/pdf\",\n  \"application/msword\",\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n  \"application/vnd.ms-excel\",\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n  \"application/vnd.ms-powerpoint\",\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\n  \"application/zip\",\n  \"application/gzip\",\n  \"application/x-rar-compressed\",\n  \"application/x-tar\",\n  \"application/java-archive\",\n  \"application/x-shockwave-flash\",\n\n  // Font\n  \"font/woff\",\n  \"font/woff2\",\n  \"font/opentype\",\n  \"font/truetype\",\n  \"font/collection\",\n\n  // Model\n  \"model/iges\",\n  \"model/vrml\",\n  \"model/mesh\",\n  \"model/obj\",\n  \"model/stl\",\n\n  // Message\n  \"message/http\",\n  \"message/imdn+xml\",\n  \"message/partial\",\n  \"message/rfc822\",\n\n  // Multipart\n  \"multipart/form-data\",\n  \"multipart/byteranges\",\n  \"multipart/alternative\",\n  \"multipart/digest\",\n  \"multipart/parallel\",\n  \"multipart/related\",\n  \"multipart/report\",\n  \"multipart/signed\",\n  \"multipart/encrypted\",\n\n  // Other\n  \"application/octet-stream\",\n  \"application/x-www-form-urlencoded\",\n  \"application/vnd.api+json\",\n  \"application/ld+json\",\n  \"application/problem+json\",\n];\n","export const FILE_EXTENSIONS = {\n  text: [\".txt\", \".log\", \".csv\", \".json\"],\n\n  code: [\n    \".js\",\n    \".jsx\",\n    \".ts\",\n    \".tsx\",\n    \".py\",\n    \".java\",\n    \".cpp\",\n    \".c\",\n    \".php\",\n    \".go\",\n    \".ruby\",\n    \".swift\",\n    \".kt\",\n    \".scala\",\n    \".rust\",\n    \".vb\",\n    \".cs\",\n    \".sql\",\n    \".css\",\n    \".html\",\n    \".vue\",\n    \".sass\",\n    \".scss\",\n    \".less\",\n  ],\n\n  config: [\".ini\", \".conf\", \".yaml\", \".yml\", \".xml\", \".properties\", \".env\"],\n\n  docs: [\".md\", \".markdown\", \".rst\", \".docx\", \".pdf\", \".html\", \".htm\"],\n\n  multimedia: [\n    \".jpg\",\n    \".jpeg\",\n    \".png\",\n    \".gif\",\n    \".bmp\",\n    \".svg\",\n    \".mp3\",\n    \".wav\",\n    \".ogg\",\n    \".flac\",\n    \".aac\",\n    \".mp4\",\n    \".avi\",\n    \".mov\",\n    \".mkv\",\n  ],\n\n  minify: [\".zip\", \".rar\", \".tar\", \".gz\", \".bz2\", \".xz\", \".7z\"],\n\n  executable: [\".exe\", \".msi\", \".apk\", \".ipa\", \".deb\", \".rpm\"],\n\n  database: [\".db\", \".sqlite\", \".mdb\", \".accdb\", \".sqlitedb\", \".sql\"],\n\n  office: [\n    \".doc\",\n    \".xls\",\n    \".ppt\",\n    \".xlsx\",\n    \".xlsm\",\n    \".xltx\",\n    \".xltm\",\n    \".pptx\",\n    \".pptm\",\n    \".potx\",\n    \".ppsx\",\n    \".ppam\",\n  ],\n\n  videogame: [\".sav\", \".dat\", \".pak\", \".unitypackage\"],\n\n  os: [\".dll\", \".so\", \".dylib\", \".framework\"],\n};\n","export const nonStandardExpressions = [\n  \"@annually\",\n  \"@daily\",\n  \"@hourly\",\n  \"@monthly\",\n  \"@reboot\",\n  \"@weekly\",\n  \"@yearly\",\n];\n","import { ChacaUtils } from \"../../core/utils\";\nimport { MIME_TYPES } from \"./constants/mime-types\";\nimport { FILE_EXTENSIONS } from \"./constants/file-extensions\";\nimport { WordModule } from \"../word\";\nimport { DatatypeModule } from \"../datatype\";\nimport { nonStandardExpressions } from \"./constants/non-standard-cron-expressions\";\n\nexport interface CronProps {\n  includeYear?: boolean;\n  includeNonStandard?: boolean;\n}\n\nexport type FilenameProps = {\n  ext?: string;\n};\n\nconst CRON_DAY_OF_WEEK = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n\nexport class SystemModule {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n    private readonly wordModule: WordModule,\n  ) {}\n\n  readonly constants = {\n    fileExtensions: FILE_EXTENSIONS,\n    mimeTypes: MIME_TYPES,\n  };\n\n  /**\n   * Returns a file name\n   * @param args.ext File extension\n   * @example\n   * modules.system.filename() // 'academy.png'\n   * modules.system.filename({ ext: 'gif' }) // 'academy_button_school.gif'\n   * @returns string\n   */\n  filename({ ext: iext }: FilenameProps = {}): string {\n    const ext =\n      typeof iext === \"string\" && iext.trim().length > 0\n        ? `.${iext.trim().replace(/^\\.+/, \"\")}`\n        : this.fileExt();\n\n    const length = this.datatypeModule.int({ min: 1, max: 5 });\n\n    const arrayNames: string[] = Array.from({\n      length: length,\n    }).map(() => this.wordModule.noun({ language: \"en\" }));\n\n    return `${arrayNames.join(\"_\")}${ext}`.trim();\n  }\n\n  /**\n   * Returns a mime type\n   * @example modules.system.mimeType() // 'video/mpeg'\n   * @returns string\n   */\n  mimeType(): string {\n    return this.utils.oneOfArray(MIME_TYPES);\n  }\n\n  /**\n   * Return a file extension\n   * @example modules.system.fileExt() // '.mp4'\n   * @returns string\n   */\n  fileExt(): string {\n    return this.utils.oneOfArray(Object.values(FILE_EXTENSIONS).flat());\n  }\n\n  /**\n   * Returns a directory path\n   *\n   * @example modules.system.directoryPath() // 'user/files/videos'\n   *\n   * @returns string\n   */\n  directoryPath(): string {\n    const countFolder = this.datatypeModule.int({ min: 1, max: 5 });\n    const array = Array.from({ length: countFolder });\n\n    for (let i = 0; i < array.length; i++) {\n      array[i] = this.wordModule.noun();\n    }\n\n    return array.join(\"/\");\n  }\n\n  /**\n   * Returns a string with a system file path\n   * @example\n   * modules.system.filePath() // 'user/files/videos/academy.mp4'\n   * @returns string\n   */\n  filePath(): string {\n    return `${this.directoryPath()}/${this.filename()}`;\n  }\n\n  /**\n   * Returns a [semantic version](https://semver.org).\n   *\n   * @example\n   * modules.system.semver() // '1.1.2'\n   */\n  semver(): string {\n    return [\n      this.datatypeModule.int({ min: 0, max: 9 }),\n      this.datatypeModule.int({ min: 0, max: 9 }),\n      this.datatypeModule.int({ min: 0, max: 9 }),\n    ].join(\".\");\n  }\n\n  /**\n   * Returns a random cron expression.\n   *\n   * @param args.includeYear Whether to include a year in the generated expression. Default `false`.\n   * @param args.includeNonStandard Whether to include a `@yearly`, `@monthly`, `@daily`, etc text labels in the generated expression. Default`false`.\n   *\n   * @example\n   * modules.system.cron() // '45 23 * * 6'\n   * modules.system.cron({ includeYear: true }) // '45 23 * * 6 2067'\n   * modules.system.cron({ includeYear: false }) // '45 23 * * 6'\n   * modules.system.cron({ includeNonStandard: false }) // '45 23 * * 6'\n   * modules.system.cron({ includeNonStandard: true }) // '@yearly'\n   */\n  cron({\n    includeYear = false,\n    includeNonStandard = false,\n  }: CronProps = {}): string {\n    // create the arrays to hold the available values for each component of the expression\n    const minutes = [this.datatypeModule.int({ min: 0, max: 59 }), \"*\"];\n    const hours = [this.datatypeModule.int({ min: 0, max: 23 }), \"*\"];\n    const days = [this.datatypeModule.int({ min: 1, max: 31 }), \"*\", \"?\"];\n    const months = [this.datatypeModule.int({ min: 1, max: 12 }), \"*\"];\n    const daysOfWeek = [\n      this.datatypeModule.int({ min: 0, max: 6 }),\n      this.utils.oneOfArray(CRON_DAY_OF_WEEK),\n      \"*\",\n      \"?\",\n    ];\n    const years = [this.datatypeModule.int({ min: 1970, max: 2099 }), \"*\"];\n\n    const minute = this.utils.oneOfArray(minutes);\n    const hour = this.utils.oneOfArray(hours);\n    const day = this.utils.oneOfArray(days);\n    const month = this.utils.oneOfArray(months);\n    const dayOfWeek = this.utils.oneOfArray(daysOfWeek);\n    const year = this.utils.oneOfArray(years);\n\n    let standard = !includeNonStandard;\n\n    // create and return the cron expression string\n    let standardExpression = `${minute} ${hour} ${day} ${month} ${dayOfWeek}`;\n\n    if (includeYear) {\n      standard = true;\n      standardExpression += ` ${year}`;\n    }\n\n    return standard\n      ? standardExpression\n      : this.utils.oneOfArray(nonStandardExpressions);\n  }\n}\n","export const ACCOUNT_TYPES = [\n  \"Checking\",\n  \"Savings\",\n  \"Money Market\",\n  \"Investment\",\n  \"Home Loan\",\n  \"Credit Card\",\n  \"Auto Loan\",\n  \"Personal Loan\",\n];\n","export interface Iban {\n  alpha: string[];\n  formats: Array<{\n    bban: Array<{ type: string; count: number }>;\n    country: string;\n    format?: string;\n    total?: number;\n  }>;\n  iso3166: string[];\n  mod97: (digitStr: string) => number;\n  pattern10: string[];\n  pattern100: string[];\n  toDigitString: (str: string) => string;\n}\n\nexport const IBAN: Iban = {\n  alpha: [\n    \"A\",\n    \"B\",\n    \"C\",\n    \"D\",\n    \"E\",\n    \"F\",\n    \"G\",\n    \"H\",\n    \"I\",\n    \"J\",\n    \"K\",\n    \"L\",\n    \"M\",\n    \"N\",\n    \"O\",\n    \"P\",\n    \"Q\",\n    \"R\",\n    \"S\",\n    \"T\",\n    \"U\",\n    \"V\",\n    \"W\",\n    \"X\",\n    \"Y\",\n    \"Z\",\n  ],\n  formats: [\n    {\n      country: \"AL\",\n      total: 28,\n      bban: [\n        {\n          type: \"n\",\n          count: 8,\n        },\n        {\n          type: \"c\",\n          count: 16,\n        },\n      ],\n      format: \"ALkk bbbs sssx cccc cccc cccc cccc\",\n    },\n    {\n      country: \"AD\",\n      total: 24,\n      bban: [\n        {\n          type: \"n\",\n          count: 8,\n        },\n        {\n          type: \"c\",\n          count: 12,\n        },\n      ],\n      format: \"ADkk bbbb ssss cccc cccc cccc\",\n    },\n    {\n      country: \"AT\",\n      total: 20,\n      bban: [\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"n\",\n          count: 11,\n        },\n      ],\n      format: \"ATkk bbbb bccc cccc cccc\",\n    },\n    {\n      // Azerbaijan\n      // https://transferwise.com/fr/iban/azerbaijan\n      // Length 28\n      // BBAN 2c,16n\n      // GEkk bbbb cccc cccc cccc cccc cccc\n      // b = National bank code (alpha)\n      // c = Account number\n      // example IBAN AZ21 NABZ 0000 0000 1370 1000 1944\n      country: \"AZ\",\n      total: 28,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 20,\n        },\n      ],\n      format: \"AZkk bbbb cccc cccc cccc cccc cccc\",\n    },\n    {\n      country: \"BH\",\n      total: 22,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 14,\n        },\n      ],\n      format: \"BHkk bbbb cccc cccc cccc cc\",\n    },\n    {\n      country: \"BE\",\n      total: 16,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"n\",\n          count: 9,\n        },\n      ],\n      format: \"BEkk bbbc cccc ccxx\",\n    },\n    {\n      country: \"BA\",\n      total: 20,\n      bban: [\n        {\n          type: \"n\",\n          count: 6,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"BAkk bbbs sscc cccc ccxx\",\n    },\n    {\n      country: \"BR\",\n      total: 29,\n      bban: [\n        {\n          type: \"n\",\n          count: 13,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"a\",\n          count: 1,\n        },\n        {\n          type: \"c\",\n          count: 1,\n        },\n      ],\n      format: \"BRkk bbbb bbbb ssss sccc cccc ccct n\",\n    },\n    {\n      country: \"BG\",\n      total: 22,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 6,\n        },\n        {\n          type: \"c\",\n          count: 8,\n        },\n      ],\n      format: \"BGkk bbbb ssss ddcc cccc cc\",\n    },\n    {\n      country: \"CR\",\n      total: 22,\n      bban: [\n        {\n          type: \"n\",\n          count: 1,\n        },\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"n\",\n          count: 14,\n        },\n      ],\n      format: \"CRkk xbbb cccc cccc cccc cc\",\n    },\n    {\n      country: \"HR\",\n      total: 21,\n      bban: [\n        {\n          type: \"n\",\n          count: 7,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"HRkk bbbb bbbc cccc cccc c\",\n    },\n    {\n      country: \"CY\",\n      total: 28,\n      bban: [\n        {\n          type: \"n\",\n          count: 8,\n        },\n        {\n          type: \"c\",\n          count: 16,\n        },\n      ],\n      format: \"CYkk bbbs ssss cccc cccc cccc cccc\",\n    },\n    {\n      country: \"CZ\",\n      total: 24,\n      bban: [\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"CZkk bbbb ssss sscc cccc cccc\",\n    },\n    {\n      country: \"DK\",\n      total: 18,\n      bban: [\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"DKkk bbbb cccc cccc cc\",\n    },\n    {\n      country: \"DO\",\n      total: 28,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 20,\n        },\n      ],\n      format: \"DOkk bbbb cccc cccc cccc cccc cccc\",\n    },\n    {\n      country: \"TL\",\n      total: 23,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"TLkk bbbc cccc cccc cccc cxx\",\n    },\n    {\n      country: \"EE\",\n      total: 20,\n      bban: [\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 12,\n        },\n      ],\n      format: \"EEkk bbss cccc cccc cccx\",\n    },\n    {\n      country: \"FO\",\n      total: 18,\n      bban: [\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"FOkk bbbb cccc cccc cx\",\n    },\n    {\n      country: \"FI\",\n      total: 18,\n      bban: [\n        {\n          type: \"n\",\n          count: 6,\n        },\n        {\n          type: \"n\",\n          count: 8,\n        },\n      ],\n      format: \"FIkk bbbb bbcc cccc cx\",\n    },\n    {\n      country: \"FR\",\n      total: 27,\n      bban: [\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"c\",\n          count: 11,\n        },\n        {\n          type: \"n\",\n          count: 2,\n        },\n      ],\n      format: \"FRkk bbbb bggg ggcc cccc cccc cxx\",\n    },\n    {\n      country: \"GE\",\n      total: 22,\n      bban: [\n        {\n          type: \"a\",\n          count: 2,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"GEkk bbcc cccc cccc cccc cc\",\n    },\n    {\n      country: \"DE\",\n      total: 22,\n      bban: [\n        {\n          type: \"n\",\n          count: 8,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"DEkk bbbb bbbb cccc cccc cc\",\n    },\n    {\n      country: \"GI\",\n      total: 23,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 15,\n        },\n      ],\n      format: \"GIkk bbbb cccc cccc cccc ccc\",\n    },\n    {\n      country: \"GR\",\n      total: 27,\n      bban: [\n        {\n          type: \"n\",\n          count: 7,\n        },\n        {\n          type: \"c\",\n          count: 16,\n        },\n      ],\n      format: \"GRkk bbbs sssc cccc cccc cccc ccc\",\n    },\n    {\n      country: \"GL\",\n      total: 18,\n      bban: [\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"GLkk bbbb cccc cccc cc\",\n    },\n    {\n      country: \"GT\",\n      total: 28,\n      bban: [\n        {\n          type: \"c\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 16,\n        },\n      ],\n      format: \"GTkk bbbb mmtt cccc cccc cccc cccc\",\n    },\n    {\n      country: \"HU\",\n      total: 28,\n      bban: [\n        {\n          type: \"n\",\n          count: 8,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"HUkk bbbs sssk cccc cccc cccc cccx\",\n    },\n    {\n      country: \"IS\",\n      total: 26,\n      bban: [\n        {\n          type: \"n\",\n          count: 6,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"ISkk bbbb sscc cccc iiii iiii ii\",\n    },\n    {\n      country: \"IE\",\n      total: 22,\n      bban: [\n        {\n          type: \"c\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 6,\n        },\n        {\n          type: \"n\",\n          count: 8,\n        },\n      ],\n      format: \"IEkk aaaa bbbb bbcc cccc cc\",\n    },\n    {\n      country: \"IL\",\n      total: 23,\n      bban: [\n        {\n          type: \"n\",\n          count: 6,\n        },\n        {\n          type: \"n\",\n          count: 13,\n        },\n      ],\n      format: \"ILkk bbbn nncc cccc cccc ccc\",\n    },\n    {\n      country: \"IT\",\n      total: 27,\n      bban: [\n        {\n          type: \"a\",\n          count: 1,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"c\",\n          count: 12,\n        },\n      ],\n      format: \"ITkk xaaa aabb bbbc cccc cccc ccc\",\n    },\n    {\n      country: \"JO\",\n      total: 30,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 18,\n        },\n      ],\n      format: \"JOkk bbbb nnnn cccc cccc cccc cccc cc\",\n    },\n    {\n      country: \"KZ\",\n      total: 20,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"c\",\n          count: 13,\n        },\n      ],\n      format: \"KZkk bbbc cccc cccc cccc\",\n    },\n    {\n      country: \"XK\",\n      total: 20,\n      bban: [\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 12,\n        },\n      ],\n      format: \"XKkk bbbb cccc cccc cccc\",\n    },\n    {\n      country: \"KW\",\n      total: 30,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 22,\n        },\n      ],\n      format: \"KWkk bbbb cccc cccc cccc cccc cccc cc\",\n    },\n    {\n      country: \"LV\",\n      total: 21,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 13,\n        },\n      ],\n      format: \"LVkk bbbb cccc cccc cccc c\",\n    },\n    {\n      country: \"LB\",\n      total: 28,\n      bban: [\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 20,\n        },\n      ],\n      format: \"LBkk bbbb cccc cccc cccc cccc cccc\",\n    },\n    {\n      country: \"LI\",\n      total: 21,\n      bban: [\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"c\",\n          count: 12,\n        },\n      ],\n      format: \"LIkk bbbb bccc cccc cccc c\",\n    },\n    {\n      country: \"LT\",\n      total: 20,\n      bban: [\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"n\",\n          count: 11,\n        },\n      ],\n      format: \"LTkk bbbb bccc cccc cccc\",\n    },\n    {\n      country: \"LU\",\n      total: 20,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"c\",\n          count: 13,\n        },\n      ],\n      format: \"LUkk bbbc cccc cccc cccc\",\n    },\n    {\n      country: \"MK\",\n      total: 19,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"c\",\n          count: 10,\n        },\n        {\n          type: \"n\",\n          count: 2,\n        },\n      ],\n      format: \"MKkk bbbc cccc cccc cxx\",\n    },\n    {\n      country: \"MT\",\n      total: 31,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"c\",\n          count: 18,\n        },\n      ],\n      format: \"MTkk bbbb ssss sccc cccc cccc cccc ccc\",\n    },\n    {\n      country: \"MR\",\n      total: 27,\n      bban: [\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"n\",\n          count: 13,\n        },\n      ],\n      format: \"MRkk bbbb bsss sscc cccc cccc cxx\",\n    },\n    {\n      country: \"MU\",\n      total: 30,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 15,\n        },\n        {\n          type: \"a\",\n          count: 3,\n        },\n      ],\n      format: \"MUkk bbbb bbss cccc cccc cccc 000d dd\",\n    },\n    {\n      country: \"MC\",\n      total: 27,\n      bban: [\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"c\",\n          count: 11,\n        },\n        {\n          type: \"n\",\n          count: 2,\n        },\n      ],\n      format: \"MCkk bbbb bsss sscc cccc cccc cxx\",\n    },\n    {\n      country: \"MD\",\n      total: 24,\n      bban: [\n        {\n          type: \"c\",\n          count: 2,\n        },\n        {\n          type: \"c\",\n          count: 18,\n        },\n      ],\n      format: \"MDkk bbcc cccc cccc cccc cccc\",\n    },\n    {\n      country: \"ME\",\n      total: 22,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"n\",\n          count: 15,\n        },\n      ],\n      format: \"MEkk bbbc cccc cccc cccc xx\",\n    },\n    {\n      country: \"NL\",\n      total: 18,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"NLkk bbbb cccc cccc cc\",\n    },\n    {\n      country: \"NO\",\n      total: 15,\n      bban: [\n        {\n          type: \"n\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 7,\n        },\n      ],\n      format: \"NOkk bbbb cccc ccx\",\n    },\n    {\n      country: \"PK\",\n      total: 24,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"PKkk bbbb cccc cccc cccc cccc\",\n    },\n    {\n      country: \"PS\",\n      total: 29,\n      bban: [\n        {\n          type: \"c\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 9,\n        },\n        {\n          type: \"n\",\n          count: 12,\n        },\n      ],\n      format: \"PSkk bbbb xxxx xxxx xccc cccc cccc c\",\n    },\n    {\n      country: \"PL\",\n      total: 28,\n      bban: [\n        {\n          type: \"n\",\n          count: 8,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"PLkk bbbs sssx cccc cccc cccc cccc\",\n    },\n    {\n      country: \"PT\",\n      total: 25,\n      bban: [\n        {\n          type: \"n\",\n          count: 8,\n        },\n        {\n          type: \"n\",\n          count: 13,\n        },\n      ],\n      format: \"PTkk bbbb ssss cccc cccc cccx x\",\n    },\n    {\n      country: \"QA\",\n      total: 29,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 21,\n        },\n      ],\n      format: \"QAkk bbbb cccc cccc cccc cccc cccc c\",\n    },\n    {\n      country: \"RO\",\n      total: 24,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"c\",\n          count: 16,\n        },\n      ],\n      format: \"ROkk bbbb cccc cccc cccc cccc\",\n    },\n    {\n      country: \"SM\",\n      total: 27,\n      bban: [\n        {\n          type: \"a\",\n          count: 1,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"c\",\n          count: 12,\n        },\n      ],\n      format: \"SMkk xaaa aabb bbbc cccc cccc ccc\",\n    },\n    {\n      country: \"SA\",\n      total: 24,\n      bban: [\n        {\n          type: \"n\",\n          count: 2,\n        },\n        {\n          type: \"c\",\n          count: 18,\n        },\n      ],\n      format: \"SAkk bbcc cccc cccc cccc cccc\",\n    },\n    {\n      country: \"RS\",\n      total: 22,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"n\",\n          count: 15,\n        },\n      ],\n      format: \"RSkk bbbc cccc cccc cccc xx\",\n    },\n    {\n      country: \"SK\",\n      total: 24,\n      bban: [\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"SKkk bbbb ssss sscc cccc cccc\",\n    },\n    {\n      country: \"SI\",\n      total: 19,\n      bban: [\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"SIkk bbss sccc cccc cxx\",\n    },\n    {\n      country: \"ES\",\n      total: 24,\n      bban: [\n        {\n          type: \"n\",\n          count: 10,\n        },\n        {\n          type: \"n\",\n          count: 10,\n        },\n      ],\n      format: \"ESkk bbbb gggg xxcc cccc cccc\",\n    },\n    {\n      country: \"SE\",\n      total: 24,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"n\",\n          count: 17,\n        },\n      ],\n      format: \"SEkk bbbc cccc cccc cccc cccc\",\n    },\n    {\n      country: \"CH\",\n      total: 21,\n      bban: [\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"c\",\n          count: 12,\n        },\n      ],\n      format: \"CHkk bbbb bccc cccc cccc c\",\n    },\n    {\n      country: \"TN\",\n      total: 24,\n      bban: [\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"n\",\n          count: 15,\n        },\n      ],\n      format: \"TNkk bbss sccc cccc cccc cccc\",\n    },\n    {\n      country: \"TR\",\n      total: 26,\n      bban: [\n        {\n          type: \"n\",\n          count: 5,\n        },\n        {\n          type: \"n\",\n          count: 1,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"TRkk bbbb bxcc cccc cccc cccc cc\",\n    },\n    {\n      country: \"AE\",\n      total: 23,\n      bban: [\n        {\n          type: \"n\",\n          count: 3,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"AEkk bbbc cccc cccc cccc ccc\",\n    },\n    {\n      country: \"GB\",\n      total: 22,\n      bban: [\n        {\n          type: \"a\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 6,\n        },\n        {\n          type: \"n\",\n          count: 8,\n        },\n      ],\n      format: \"GBkk bbbb ssss sscc cccc cc\",\n    },\n    {\n      country: \"VG\",\n      total: 24,\n      bban: [\n        {\n          type: \"c\",\n          count: 4,\n        },\n        {\n          type: \"n\",\n          count: 16,\n        },\n      ],\n      format: \"VGkk bbbb cccc cccc cccc cccc\",\n    },\n  ],\n  iso3166: [\n    \"AD\",\n    \"AE\",\n    \"AF\",\n    \"AG\",\n    \"AI\",\n    \"AL\",\n    \"AM\",\n    \"AO\",\n    \"AQ\",\n    \"AR\",\n    \"AS\",\n    \"AT\",\n    \"AU\",\n    \"AW\",\n    \"AX\",\n    \"AZ\",\n    \"BA\",\n    \"BB\",\n    \"BD\",\n    \"BE\",\n    \"BF\",\n    \"BG\",\n    \"BH\",\n    \"BI\",\n    \"BJ\",\n    \"BL\",\n    \"BM\",\n    \"BN\",\n    \"BO\",\n    \"BQ\",\n    \"BR\",\n    \"BS\",\n    \"BT\",\n    \"BV\",\n    \"BW\",\n    \"BY\",\n    \"BZ\",\n    \"CA\",\n    \"CC\",\n    \"CD\",\n    \"CF\",\n    \"CG\",\n    \"CH\",\n    \"CI\",\n    \"CK\",\n    \"CL\",\n    \"CM\",\n    \"CN\",\n    \"CO\",\n    \"CR\",\n    \"CU\",\n    \"CV\",\n    \"CW\",\n    \"CX\",\n    \"CY\",\n    \"CZ\",\n    \"DE\",\n    \"DJ\",\n    \"DK\",\n    \"DM\",\n    \"DO\",\n    \"DZ\",\n    \"EC\",\n    \"EE\",\n    \"EG\",\n    \"EH\",\n    \"ER\",\n    \"ES\",\n    \"ET\",\n    \"FI\",\n    \"FJ\",\n    \"FK\",\n    \"FM\",\n    \"FO\",\n    \"FR\",\n    \"GA\",\n    \"GB\",\n    \"GD\",\n    \"GE\",\n    \"GF\",\n    \"GG\",\n    \"GH\",\n    \"GI\",\n    \"GL\",\n    \"GM\",\n    \"GN\",\n    \"GP\",\n    \"GQ\",\n    \"GR\",\n    \"GS\",\n    \"GT\",\n    \"GU\",\n    \"GW\",\n    \"GY\",\n    \"HK\",\n    \"HM\",\n    \"HN\",\n    \"HR\",\n    \"HT\",\n    \"HU\",\n    \"ID\",\n    \"IE\",\n    \"IL\",\n    \"IM\",\n    \"IN\",\n    \"IO\",\n    \"IQ\",\n    \"IR\",\n    \"IS\",\n    \"IT\",\n    \"JE\",\n    \"JM\",\n    \"JO\",\n    \"JP\",\n    \"KE\",\n    \"KG\",\n    \"KH\",\n    \"KI\",\n    \"KM\",\n    \"KN\",\n    \"KP\",\n    \"KR\",\n    \"KW\",\n    \"KY\",\n    \"KZ\",\n    \"LA\",\n    \"LB\",\n    \"LC\",\n    \"LI\",\n    \"LK\",\n    \"LR\",\n    \"LS\",\n    \"LT\",\n    \"LU\",\n    \"LV\",\n    \"LY\",\n    \"MA\",\n    \"MC\",\n    \"MD\",\n    \"ME\",\n    \"MF\",\n    \"MG\",\n    \"MH\",\n    \"MK\",\n    \"ML\",\n    \"MM\",\n    \"MN\",\n    \"MO\",\n    \"MP\",\n    \"MQ\",\n    \"MR\",\n    \"MS\",\n    \"MT\",\n    \"MU\",\n    \"MV\",\n    \"MW\",\n    \"MX\",\n    \"MY\",\n    \"MZ\",\n    \"NA\",\n    \"NC\",\n    \"NE\",\n    \"NF\",\n    \"NG\",\n    \"NI\",\n    \"NL\",\n    \"NO\",\n    \"NP\",\n    \"NR\",\n    \"NU\",\n    \"NZ\",\n    \"OM\",\n    \"PA\",\n    \"PE\",\n    \"PF\",\n    \"PG\",\n    \"PH\",\n    \"PK\",\n    \"PL\",\n    \"PM\",\n    \"PN\",\n    \"PR\",\n    \"PS\",\n    \"PT\",\n    \"PW\",\n    \"PY\",\n    \"QA\",\n    \"RE\",\n    \"RO\",\n    \"RS\",\n    \"RU\",\n    \"RW\",\n    \"SA\",\n    \"SB\",\n    \"SC\",\n    \"SD\",\n    \"SE\",\n    \"SG\",\n    \"SH\",\n    \"SI\",\n    \"SJ\",\n    \"SK\",\n    \"SL\",\n    \"SM\",\n    \"SN\",\n    \"SO\",\n    \"SR\",\n    \"SS\",\n    \"ST\",\n    \"SV\",\n    \"SX\",\n    \"SY\",\n    \"SZ\",\n    \"TC\",\n    \"TD\",\n    \"TF\",\n    \"TG\",\n    \"TH\",\n    \"TJ\",\n    \"TK\",\n    \"TL\",\n    \"TM\",\n    \"TN\",\n    \"TO\",\n    \"TR\",\n    \"TT\",\n    \"TV\",\n    \"TW\",\n    \"TZ\",\n    \"UA\",\n    \"UG\",\n    \"UM\",\n    \"US\",\n    \"UY\",\n    \"UZ\",\n    \"VA\",\n    \"VC\",\n    \"VE\",\n    \"VG\",\n    \"VI\",\n    \"VN\",\n    \"VU\",\n    \"WF\",\n    \"WS\",\n    \"XK\",\n    \"YE\",\n    \"YT\",\n    \"ZA\",\n    \"ZM\",\n    \"ZW\",\n  ],\n  mod97: (digitStr) => {\n    let m = 0;\n    for (let i = 0; i < digitStr.length; i++) {\n      m = (m * 10 + +digitStr[i]) % 97;\n    }\n    return m;\n  },\n  pattern10: [\"01\", \"02\", \"03\", \"04\", \"05\", \"06\", \"07\", \"08\", \"09\"],\n  pattern100: [\"001\", \"002\", \"003\", \"004\", \"005\", \"006\", \"007\", \"008\", \"009\"],\n  toDigitString: (str) =>\n    str.replace(/[A-Z]/gi, (match) =>\n      String(match.toUpperCase().charCodeAt(0) - 55),\n    ),\n};\n","export const MONEY_INFO = {\n  CUP: {\n    symbol: \"$\",\n    name: \"Cuban Peso\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"CUP\",\n    name_plural: \"Cuban pesos\",\n  },\n  USD: {\n    symbol: \"$\",\n    name: \"US Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"USD\",\n    name_plural: \"US dollars\",\n  },\n  CAD: {\n    symbol: \"CA$\",\n    name: \"Canadian Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"CAD\",\n    name_plural: \"Canadian dollars\",\n  },\n  EUR: {\n    symbol: \"€\",\n    name: \"Euro\",\n    symbol_native: \"€\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"EUR\",\n    name_plural: \"euros\",\n  },\n  AED: {\n    symbol: \"AED\",\n    name: \"United Arab Emirates Dirham\",\n    symbol_native: \"د.إ.‏\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"AED\",\n    name_plural: \"UAE dirhams\",\n  },\n  AFN: {\n    symbol: \"Af\",\n    name: \"Afghan Afghani\",\n    symbol_native: \"؋\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"AFN\",\n    name_plural: \"Afghan Afghanis\",\n  },\n  ALL: {\n    symbol: \"ALL\",\n    name: \"Albanian Lek\",\n    symbol_native: \"Lek\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"ALL\",\n    name_plural: \"Albanian lekë\",\n  },\n  AMD: {\n    symbol: \"AMD\",\n    name: \"Armenian Dram\",\n    symbol_native: \"դր.\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"AMD\",\n    name_plural: \"Armenian drams\",\n  },\n  ARS: {\n    symbol: \"AR$\",\n    name: \"Argentine Peso\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"ARS\",\n    name_plural: \"Argentine pesos\",\n  },\n  AUD: {\n    symbol: \"AU$\",\n    name: \"Australian Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"AUD\",\n    name_plural: \"Australian dollars\",\n  },\n  AZN: {\n    symbol: \"man.\",\n    name: \"Azerbaijani Manat\",\n    symbol_native: \"ман.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"AZN\",\n    name_plural: \"Azerbaijani manats\",\n  },\n  BAM: {\n    symbol: \"KM\",\n    name: \"Bosnia-Herzegovina Convertible Mark\",\n    symbol_native: \"KM\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BAM\",\n    name_plural: \"Bosnia-Herzegovina convertible marks\",\n  },\n  BDT: {\n    symbol: \"Tk\",\n    name: \"Bangladeshi Taka\",\n    symbol_native: \"৳\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BDT\",\n    name_plural: \"Bangladeshi takas\",\n  },\n  BGN: {\n    symbol: \"BGN\",\n    name: \"Bulgarian Lev\",\n    symbol_native: \"лв.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BGN\",\n    name_plural: \"Bulgarian leva\",\n  },\n  BHD: {\n    symbol: \"BD\",\n    name: \"Bahraini Dinar\",\n    symbol_native: \"د.ب.‏\",\n    decimal_digits: 3,\n    rounding: 0,\n    code: \"BHD\",\n    name_plural: \"Bahraini dinars\",\n  },\n  BIF: {\n    symbol: \"FBu\",\n    name: \"Burundian Franc\",\n    symbol_native: \"FBu\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"BIF\",\n    name_plural: \"Burundian francs\",\n  },\n  BND: {\n    symbol: \"BN$\",\n    name: \"Brunei Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BND\",\n    name_plural: \"Brunei dollars\",\n  },\n  BOB: {\n    symbol: \"Bs\",\n    name: \"Bolivian Boliviano\",\n    symbol_native: \"Bs\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BOB\",\n    name_plural: \"Bolivian bolivianos\",\n  },\n  BRL: {\n    symbol: \"R$\",\n    name: \"Brazilian Real\",\n    symbol_native: \"R$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BRL\",\n    name_plural: \"Brazilian reals\",\n  },\n  BWP: {\n    symbol: \"BWP\",\n    name: \"Botswanan Pula\",\n    symbol_native: \"P\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BWP\",\n    name_plural: \"Botswanan pulas\",\n  },\n  BYN: {\n    symbol: \"Br\",\n    name: \"Belarusian Ruble\",\n    symbol_native: \"руб.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BYN\",\n    name_plural: \"Belarusian rubles\",\n  },\n  BZD: {\n    symbol: \"BZ$\",\n    name: \"Belize Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"BZD\",\n    name_plural: \"Belize dollars\",\n  },\n  CDF: {\n    symbol: \"CDF\",\n    name: \"Congolese Franc\",\n    symbol_native: \"FrCD\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"CDF\",\n    name_plural: \"Congolese francs\",\n  },\n  CHF: {\n    symbol: \"CHF\",\n    name: \"Swiss Franc\",\n    symbol_native: \"CHF\",\n    decimal_digits: 2,\n    rounding: 0.05,\n    code: \"CHF\",\n    name_plural: \"Swiss francs\",\n  },\n  CLP: {\n    symbol: \"CL$\",\n    name: \"Chilean Peso\",\n    symbol_native: \"$\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"CLP\",\n    name_plural: \"Chilean pesos\",\n  },\n  CNY: {\n    symbol: \"CN¥\",\n    name: \"Chinese Yuan\",\n    symbol_native: \"CN¥\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"CNY\",\n    name_plural: \"Chinese yuan\",\n  },\n  COP: {\n    symbol: \"CO$\",\n    name: \"Colombian Peso\",\n    symbol_native: \"$\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"COP\",\n    name_plural: \"Colombian pesos\",\n  },\n  CRC: {\n    symbol: \"₡\",\n    name: \"Costa Rican Colón\",\n    symbol_native: \"₡\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"CRC\",\n    name_plural: \"Costa Rican colóns\",\n  },\n  CVE: {\n    symbol: \"CV$\",\n    name: \"Cape Verdean Escudo\",\n    symbol_native: \"CV$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"CVE\",\n    name_plural: \"Cape Verdean escudos\",\n  },\n  CZK: {\n    symbol: \"Kč\",\n    name: \"Czech Republic Koruna\",\n    symbol_native: \"Kč\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"CZK\",\n    name_plural: \"Czech Republic korunas\",\n  },\n  DJF: {\n    symbol: \"Fdj\",\n    name: \"Djiboutian Franc\",\n    symbol_native: \"Fdj\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"DJF\",\n    name_plural: \"Djiboutian francs\",\n  },\n  DKK: {\n    symbol: \"Dkr\",\n    name: \"Danish Krone\",\n    symbol_native: \"kr\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"DKK\",\n    name_plural: \"Danish kroner\",\n  },\n  DOP: {\n    symbol: \"RD$\",\n    name: \"Dominican Peso\",\n    symbol_native: \"RD$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"DOP\",\n    name_plural: \"Dominican pesos\",\n  },\n  DZD: {\n    symbol: \"DA\",\n    name: \"Algerian Dinar\",\n    symbol_native: \"د.ج.‏\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"DZD\",\n    name_plural: \"Algerian dinars\",\n  },\n  EEK: {\n    symbol: \"Ekr\",\n    name: \"Estonian Kroon\",\n    symbol_native: \"kr\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"EEK\",\n    name_plural: \"Estonian kroons\",\n  },\n  EGP: {\n    symbol: \"EGP\",\n    name: \"Egyptian Pound\",\n    symbol_native: \"ج.م.‏\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"EGP\",\n    name_plural: \"Egyptian pounds\",\n  },\n  ERN: {\n    symbol: \"Nfk\",\n    name: \"Eritrean Nakfa\",\n    symbol_native: \"Nfk\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"ERN\",\n    name_plural: \"Eritrean nakfas\",\n  },\n  ETB: {\n    symbol: \"Br\",\n    name: \"Ethiopian Birr\",\n    symbol_native: \"Br\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"ETB\",\n    name_plural: \"Ethiopian birrs\",\n  },\n  GBP: {\n    symbol: \"£\",\n    name: \"British Pound Sterling\",\n    symbol_native: \"£\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"GBP\",\n    name_plural: \"British pounds sterling\",\n  },\n  GEL: {\n    symbol: \"GEL\",\n    name: \"Georgian Lari\",\n    symbol_native: \"GEL\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"GEL\",\n    name_plural: \"Georgian laris\",\n  },\n  GHS: {\n    symbol: \"GH₵\",\n    name: \"Ghanaian Cedi\",\n    symbol_native: \"GH₵\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"GHS\",\n    name_plural: \"Ghanaian cedis\",\n  },\n  GNF: {\n    symbol: \"FG\",\n    name: \"Guinean Franc\",\n    symbol_native: \"FG\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"GNF\",\n    name_plural: \"Guinean francs\",\n  },\n  GTQ: {\n    symbol: \"GTQ\",\n    name: \"Guatemalan Quetzal\",\n    symbol_native: \"Q\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"GTQ\",\n    name_plural: \"Guatemalan quetzals\",\n  },\n  HKD: {\n    symbol: \"HK$\",\n    name: \"Hong Kong Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"HKD\",\n    name_plural: \"Hong Kong dollars\",\n  },\n  HNL: {\n    symbol: \"HNL\",\n    name: \"Honduran Lempira\",\n    symbol_native: \"L\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"HNL\",\n    name_plural: \"Honduran lempiras\",\n  },\n  HRK: {\n    symbol: \"kn\",\n    name: \"Croatian Kuna\",\n    symbol_native: \"kn\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"HRK\",\n    name_plural: \"Croatian kunas\",\n  },\n  HUF: {\n    symbol: \"Ft\",\n    name: \"Hungarian Forint\",\n    symbol_native: \"Ft\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"HUF\",\n    name_plural: \"Hungarian forints\",\n  },\n  IDR: {\n    symbol: \"Rp\",\n    name: \"Indonesian Rupiah\",\n    symbol_native: \"Rp\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"IDR\",\n    name_plural: \"Indonesian rupiahs\",\n  },\n  ILS: {\n    symbol: \"₪\",\n    name: \"Israeli New Sheqel\",\n    symbol_native: \"₪\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"ILS\",\n    name_plural: \"Israeli new sheqels\",\n  },\n  INR: {\n    symbol: \"Rs\",\n    name: \"Indian Rupee\",\n    symbol_native: \"টকা\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"INR\",\n    name_plural: \"Indian rupees\",\n  },\n  IQD: {\n    symbol: \"IQD\",\n    name: \"Iraqi Dinar\",\n    symbol_native: \"د.ع.‏\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"IQD\",\n    name_plural: \"Iraqi dinars\",\n  },\n  IRR: {\n    symbol: \"IRR\",\n    name: \"Iranian Rial\",\n    symbol_native: \"﷼\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"IRR\",\n    name_plural: \"Iranian rials\",\n  },\n  ISK: {\n    symbol: \"Ikr\",\n    name: \"Icelandic Króna\",\n    symbol_native: \"kr\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"ISK\",\n    name_plural: \"Icelandic krónur\",\n  },\n  JMD: {\n    symbol: \"J$\",\n    name: \"Jamaican Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"JMD\",\n    name_plural: \"Jamaican dollars\",\n  },\n  JOD: {\n    symbol: \"JD\",\n    name: \"Jordanian Dinar\",\n    symbol_native: \"د.أ.‏\",\n    decimal_digits: 3,\n    rounding: 0,\n    code: \"JOD\",\n    name_plural: \"Jordanian dinars\",\n  },\n  JPY: {\n    symbol: \"¥\",\n    name: \"Japanese Yen\",\n    symbol_native: \"￥\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"JPY\",\n    name_plural: \"Japanese yen\",\n  },\n  KES: {\n    symbol: \"Ksh\",\n    name: \"Kenyan Shilling\",\n    symbol_native: \"Ksh\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"KES\",\n    name_plural: \"Kenyan shillings\",\n  },\n  KHR: {\n    symbol: \"KHR\",\n    name: \"Cambodian Riel\",\n    symbol_native: \"៛\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"KHR\",\n    name_plural: \"Cambodian riels\",\n  },\n  KMF: {\n    symbol: \"CF\",\n    name: \"Comorian Franc\",\n    symbol_native: \"FC\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"KMF\",\n    name_plural: \"Comorian francs\",\n  },\n  KRW: {\n    symbol: \"₩\",\n    name: \"South Korean Won\",\n    symbol_native: \"₩\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"KRW\",\n    name_plural: \"South Korean won\",\n  },\n  KWD: {\n    symbol: \"KD\",\n    name: \"Kuwaiti Dinar\",\n    symbol_native: \"د.ك.‏\",\n    decimal_digits: 3,\n    rounding: 0,\n    code: \"KWD\",\n    name_plural: \"Kuwaiti dinars\",\n  },\n  KZT: {\n    symbol: \"KZT\",\n    name: \"Kazakhstani Tenge\",\n    symbol_native: \"тңг.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"KZT\",\n    name_plural: \"Kazakhstani tenges\",\n  },\n  LBP: {\n    symbol: \"L.L.\",\n    name: \"Lebanese Pound\",\n    symbol_native: \"ل.ل.‏\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"LBP\",\n    name_plural: \"Lebanese pounds\",\n  },\n  LKR: {\n    symbol: \"SLRs\",\n    name: \"Sri Lankan Rupee\",\n    symbol_native: \"SL Re\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"LKR\",\n    name_plural: \"Sri Lankan rupees\",\n  },\n  LTL: {\n    symbol: \"Lt\",\n    name: \"Lithuanian Litas\",\n    symbol_native: \"Lt\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"LTL\",\n    name_plural: \"Lithuanian litai\",\n  },\n  LVL: {\n    symbol: \"Ls\",\n    name: \"Latvian Lats\",\n    symbol_native: \"Ls\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"LVL\",\n    name_plural: \"Latvian lati\",\n  },\n  LYD: {\n    symbol: \"LD\",\n    name: \"Libyan Dinar\",\n    symbol_native: \"د.ل.‏\",\n    decimal_digits: 3,\n    rounding: 0,\n    code: \"LYD\",\n    name_plural: \"Libyan dinars\",\n  },\n  MAD: {\n    symbol: \"MAD\",\n    name: \"Moroccan Dirham\",\n    symbol_native: \"د.م.‏\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"MAD\",\n    name_plural: \"Moroccan dirhams\",\n  },\n  MDL: {\n    symbol: \"MDL\",\n    name: \"Moldovan Leu\",\n    symbol_native: \"MDL\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"MDL\",\n    name_plural: \"Moldovan lei\",\n  },\n  MGA: {\n    symbol: \"MGA\",\n    name: \"Malagasy Ariary\",\n    symbol_native: \"MGA\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"MGA\",\n    name_plural: \"Malagasy Ariaries\",\n  },\n  MKD: {\n    symbol: \"MKD\",\n    name: \"Macedonian Denar\",\n    symbol_native: \"MKD\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"MKD\",\n    name_plural: \"Macedonian denari\",\n  },\n  MMK: {\n    symbol: \"MMK\",\n    name: \"Myanma Kyat\",\n    symbol_native: \"K\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"MMK\",\n    name_plural: \"Myanma kyats\",\n  },\n  MOP: {\n    symbol: \"MOP$\",\n    name: \"Macanese Pataca\",\n    symbol_native: \"MOP$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"MOP\",\n    name_plural: \"Macanese patacas\",\n  },\n  MUR: {\n    symbol: \"MURs\",\n    name: \"Mauritian Rupee\",\n    symbol_native: \"MURs\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"MUR\",\n    name_plural: \"Mauritian rupees\",\n  },\n  MXN: {\n    symbol: \"MX$\",\n    name: \"Mexican Peso\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"MXN\",\n    name_plural: \"Mexican pesos\",\n  },\n  MYR: {\n    symbol: \"RM\",\n    name: \"Malaysian Ringgit\",\n    symbol_native: \"RM\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"MYR\",\n    name_plural: \"Malaysian ringgits\",\n  },\n  MZN: {\n    symbol: \"MTn\",\n    name: \"Mozambican Metical\",\n    symbol_native: \"MTn\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"MZN\",\n    name_plural: \"Mozambican meticals\",\n  },\n  NAD: {\n    symbol: \"N$\",\n    name: \"Namibian Dollar\",\n    symbol_native: \"N$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"NAD\",\n    name_plural: \"Namibian dollars\",\n  },\n  NGN: {\n    symbol: \"₦\",\n    name: \"Nigerian Naira\",\n    symbol_native: \"₦\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"NGN\",\n    name_plural: \"Nigerian nairas\",\n  },\n  NIO: {\n    symbol: \"C$\",\n    name: \"Nicaraguan Córdoba\",\n    symbol_native: \"C$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"NIO\",\n    name_plural: \"Nicaraguan córdobas\",\n  },\n  NOK: {\n    symbol: \"Nkr\",\n    name: \"Norwegian Krone\",\n    symbol_native: \"kr\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"NOK\",\n    name_plural: \"Norwegian kroner\",\n  },\n  NPR: {\n    symbol: \"NPRs\",\n    name: \"Nepalese Rupee\",\n    symbol_native: \"नेरू\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"NPR\",\n    name_plural: \"Nepalese rupees\",\n  },\n  NZD: {\n    symbol: \"NZ$\",\n    name: \"New Zealand Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"NZD\",\n    name_plural: \"New Zealand dollars\",\n  },\n  OMR: {\n    symbol: \"OMR\",\n    name: \"Omani Rial\",\n    symbol_native: \"ر.ع.‏\",\n    decimal_digits: 3,\n    rounding: 0,\n    code: \"OMR\",\n    name_plural: \"Omani rials\",\n  },\n  PAB: {\n    symbol: \"B/.\",\n    name: \"Panamanian Balboa\",\n    symbol_native: \"B/.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"PAB\",\n    name_plural: \"Panamanian balboas\",\n  },\n  PEN: {\n    symbol: \"S/.\",\n    name: \"Peruvian Nuevo Sol\",\n    symbol_native: \"S/.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"PEN\",\n    name_plural: \"Peruvian nuevos soles\",\n  },\n  PHP: {\n    symbol: \"₱\",\n    name: \"Philippine Peso\",\n    symbol_native: \"₱\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"PHP\",\n    name_plural: \"Philippine pesos\",\n  },\n  PKR: {\n    symbol: \"PKRs\",\n    name: \"Pakistani Rupee\",\n    symbol_native: \"₨\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"PKR\",\n    name_plural: \"Pakistani rupees\",\n  },\n  PLN: {\n    symbol: \"zł\",\n    name: \"Polish Zloty\",\n    symbol_native: \"zł\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"PLN\",\n    name_plural: \"Polish zlotys\",\n  },\n  PYG: {\n    symbol: \"₲\",\n    name: \"Paraguayan Guarani\",\n    symbol_native: \"₲\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"PYG\",\n    name_plural: \"Paraguayan guaranis\",\n  },\n  QAR: {\n    symbol: \"QR\",\n    name: \"Qatari Rial\",\n    symbol_native: \"ر.ق.‏\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"QAR\",\n    name_plural: \"Qatari rials\",\n  },\n  RON: {\n    symbol: \"RON\",\n    name: \"Romanian Leu\",\n    symbol_native: \"RON\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"RON\",\n    name_plural: \"Romanian lei\",\n  },\n  RSD: {\n    symbol: \"din.\",\n    name: \"Serbian Dinar\",\n    symbol_native: \"дин.\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"RSD\",\n    name_plural: \"Serbian dinars\",\n  },\n  RUB: {\n    symbol: \"RUB\",\n    name: \"Russian Ruble\",\n    symbol_native: \"₽.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"RUB\",\n    name_plural: \"Russian rubles\",\n  },\n  RWF: {\n    symbol: \"RWF\",\n    name: \"Rwandan Franc\",\n    symbol_native: \"FR\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"RWF\",\n    name_plural: \"Rwandan francs\",\n  },\n  SAR: {\n    symbol: \"SR\",\n    name: \"Saudi Riyal\",\n    symbol_native: \"ر.س.‏\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"SAR\",\n    name_plural: \"Saudi riyals\",\n  },\n  SDG: {\n    symbol: \"SDG\",\n    name: \"Sudanese Pound\",\n    symbol_native: \"SDG\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"SDG\",\n    name_plural: \"Sudanese pounds\",\n  },\n  SEK: {\n    symbol: \"Skr\",\n    name: \"Swedish Krona\",\n    symbol_native: \"kr\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"SEK\",\n    name_plural: \"Swedish kronor\",\n  },\n  SGD: {\n    symbol: \"S$\",\n    name: \"Singapore Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"SGD\",\n    name_plural: \"Singapore dollars\",\n  },\n  SOS: {\n    symbol: \"Ssh\",\n    name: \"Somali Shilling\",\n    symbol_native: \"Ssh\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"SOS\",\n    name_plural: \"Somali shillings\",\n  },\n  SYP: {\n    symbol: \"SY£\",\n    name: \"Syrian Pound\",\n    symbol_native: \"ل.س.‏\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"SYP\",\n    name_plural: \"Syrian pounds\",\n  },\n  THB: {\n    symbol: \"฿\",\n    name: \"Thai Baht\",\n    symbol_native: \"฿\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"THB\",\n    name_plural: \"Thai baht\",\n  },\n  TND: {\n    symbol: \"DT\",\n    name: \"Tunisian Dinar\",\n    symbol_native: \"د.ت.‏\",\n    decimal_digits: 3,\n    rounding: 0,\n    code: \"TND\",\n    name_plural: \"Tunisian dinars\",\n  },\n  TOP: {\n    symbol: \"T$\",\n    name: \"Tongan Paʻanga\",\n    symbol_native: \"T$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"TOP\",\n    name_plural: \"Tongan paʻanga\",\n  },\n  TRY: {\n    symbol: \"TL\",\n    name: \"Turkish Lira\",\n    symbol_native: \"TL\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"TRY\",\n    name_plural: \"Turkish Lira\",\n  },\n  TTD: {\n    symbol: \"TT$\",\n    name: \"Trinidad and Tobago Dollar\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"TTD\",\n    name_plural: \"Trinidad and Tobago dollars\",\n  },\n  TWD: {\n    symbol: \"NT$\",\n    name: \"New Taiwan Dollar\",\n    symbol_native: \"NT$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"TWD\",\n    name_plural: \"New Taiwan dollars\",\n  },\n  TZS: {\n    symbol: \"TSh\",\n    name: \"Tanzanian Shilling\",\n    symbol_native: \"TSh\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"TZS\",\n    name_plural: \"Tanzanian shillings\",\n  },\n  UAH: {\n    symbol: \"₴\",\n    name: \"Ukrainian Hryvnia\",\n    symbol_native: \"₴\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"UAH\",\n    name_plural: \"Ukrainian hryvnias\",\n  },\n  UGX: {\n    symbol: \"USh\",\n    name: \"Ugandan Shilling\",\n    symbol_native: \"USh\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"UGX\",\n    name_plural: \"Ugandan shillings\",\n  },\n  UYU: {\n    symbol: \"$U\",\n    name: \"Uruguayan Peso\",\n    symbol_native: \"$\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"UYU\",\n    name_plural: \"Uruguayan pesos\",\n  },\n  UZS: {\n    symbol: \"UZS\",\n    name: \"Uzbekistan Som\",\n    symbol_native: \"UZS\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"UZS\",\n    name_plural: \"Uzbekistan som\",\n  },\n  VEF: {\n    symbol: \"Bs.F.\",\n    name: \"Venezuelan Bolívar\",\n    symbol_native: \"Bs.F.\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"VEF\",\n    name_plural: \"Venezuelan bolívars\",\n  },\n  VND: {\n    symbol: \"₫\",\n    name: \"Vietnamese Dong\",\n    symbol_native: \"₫\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"VND\",\n    name_plural: \"Vietnamese dong\",\n  },\n  XAF: {\n    symbol: \"FCFA\",\n    name: \"CFA Franc BEAC\",\n    symbol_native: \"FCFA\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"XAF\",\n    name_plural: \"CFA francs BEAC\",\n  },\n  XOF: {\n    symbol: \"CFA\",\n    name: \"CFA Franc BCEAO\",\n    symbol_native: \"CFA\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"XOF\",\n    name_plural: \"CFA francs BCEAO\",\n  },\n  YER: {\n    symbol: \"YR\",\n    name: \"Yemeni Rial\",\n    symbol_native: \"ر.ي.‏\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"YER\",\n    name_plural: \"Yemeni rials\",\n  },\n  ZAR: {\n    symbol: \"R\",\n    name: \"South African Rand\",\n    symbol_native: \"R\",\n    decimal_digits: 2,\n    rounding: 0,\n    code: \"ZAR\",\n    name_plural: \"South African rand\",\n  },\n  ZMK: {\n    symbol: \"ZK\",\n    name: \"Zambian Kwacha\",\n    symbol_native: \"ZK\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"ZMK\",\n    name_plural: \"Zambian kwachas\",\n  },\n  ZWL: {\n    symbol: \"ZWL$\",\n    name: \"Zimbabwean Dollar\",\n    symbol_native: \"ZWL$\",\n    decimal_digits: 0,\n    rounding: 0,\n    code: \"ZWL\",\n    name_plural: \"Zimbabwean Dollar\",\n  },\n};\n","export const SUBSCRIPTION_PLAN = [\n  \"Basic\",\n  \"Premium\",\n  \"Free\",\n  \"Gold\",\n  \"Unlimited\",\n  \"Starter\",\n  \"Business\",\n  \"Professional\",\n  \"Advanced\",\n  \"Silver\",\n  \"Bronze\",\n  \"Standard\",\n  \"Pro\",\n  \"Enterprise\",\n  \"Platinum\",\n];\n","export const TRANSACTION_TYPE = [\"deposit\", \"withdrawal\", \"payment\", \"invoice\"];\n","import {\n  ACCOUNT_TYPES,\n  IBAN,\n  MONEY_INFO,\n  SUBSCRIPTION_PLAN,\n  TRANSACTION_TYPE,\n} from \"./constants\";\nimport { DatatypeModule } from \"../datatype\";\nimport { ChacaUtils } from \"../../core/utils\";\n\ntype AmountProps = {\n  min?: number;\n  max?: number;\n  symbol?: string;\n  precision?: number;\n};\n\ntype PinProps = {\n  length?: number;\n};\n\nexport class FinanceModule {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n  ) {}\n\n  readonly constants = {\n    accountTypes: ACCOUNT_TYPES,\n    ibans: IBAN,\n    moneyInfo: MONEY_INFO,\n    transactionTypes: TRANSACTION_TYPE,\n    subscriptionPlans: SUBSCRIPTION_PLAN,\n  };\n\n  /**\n   * Returns a transaction type\n   *\n   * @example\n   * modules.finance.transaction() // 'payment'\n   *\n   * @returns string\n   */\n  transaction(): string {\n    return this.utils.oneOfArray(this.constants.transactionTypes);\n  }\n\n  /**\n   * Returns a suscription plan type\n   *\n   * @example\n   * modules.finance.subscriptionPlan() // 'Free'\n   *\n   * @returns string\n   */\n  subscriptionPlan(): string {\n    return this.utils.oneOfArray(this.constants.subscriptionPlans);\n  }\n\n  /**\n   * Returns a PIN number.\n   *\n   * @param args.length The length of the PIN to generate. Defaults to `4`.\n   *\n   * @example\n   * modules.finance.pin() // '5067'\n   * modules.finance.pin({ length: 6 }) // '213789'\n   *\n   * @returns string\n   */\n  pin({ length }: PinProps = {}): string {\n    const len = length && length > 0 ? length : 4;\n\n    return Array.from({ length: len })\n      .map(() => String(this.datatypeModule.int({ min: 0, max: 9 })))\n      .join(\"\");\n  }\n\n  /**\n   * Returns a Bitcoin address.\n   *\n   * @example\n   * modules.finance.bitcoinAddress() // '3ySdvCkTLVy7gKD4j6JfSaf5d'\n   *\n   * @returns string\n   */\n  bitcoinAddress(): string {\n    let address: string = this.utils.oneOfArray([\"1\", \"3\"]);\n\n    address += this.datatypeModule.alphaNumeric({\n      case: \"mixed\",\n      banned: \"0OIl\",\n      length: this.datatypeModule.int({ min: 25, max: 39 }),\n    });\n\n    return address;\n  }\n\n  /**\n   * Returns a credit card number.\n   *\n   * @example\n   * modules.finance.creditCard() // '6375-3265-4676-6646'\n   *\n   * @returns string\n   */\n  creditCard(): string {\n    let retString = String(this.datatypeModule.int({ min: 0, max: 9 }));\n\n    for (let i = 1; i < 16; i++) {\n      if (i % 4 === 0) retString = retString + \"-\";\n\n      retString =\n        retString + String(this.datatypeModule.int({ min: 0, max: 9 }));\n    }\n\n    return retString;\n  }\n\n  /**\n   * Returns a Ethereum address.\n   *\n   * @example\n   * modules.finance.ethereumAddress() // '0xf03dfeecbafc5147241cc4c4ca20b3c9dfd04c4a'\n   *\n   * @returns string\n   */\n  ethereumAddress(): string {\n    return `0x${this.datatypeModule.hexadecimal({ length: 40, case: \"lower\" })}`;\n  }\n\n  /**\n   * @example\n   * modules.finance.accountType() // \"Credit Card\"\n   *\n   * @returns string\n   */\n  accountType(): string {\n    return this.utils.oneOfArray(ACCOUNT_TYPES);\n  }\n\n  /**\n   * Returns a SWIFT/BIC code based on the [ISO-9362](https://en.wikipedia.org/wiki/ISO_9362) format.\n   *\n   * @example\n   * modules.finance.bic() // 'WYAUPGX1'\n   *\n   * @returns string\n   */\n  bic(): string {\n    const bankIdentifier = this.datatypeModule.characters({\n      length: 4,\n      case: \"upper\",\n    });\n\n    const countryCode = this.utils.oneOfArray(IBAN.iso3166);\n\n    const locationCode = this.datatypeModule.alphaNumeric({\n      case: \"upper\",\n      length: 2,\n    });\n\n    const branchCode = this.datatypeModule.boolean()\n      ? this.datatypeModule.boolean()\n        ? this.datatypeModule.alphaNumeric({ case: \"upper\", length: 3 })\n        : \"XXX\"\n      : \"\";\n\n    return `${bankIdentifier}${countryCode}${locationCode}${branchCode}`;\n  }\n\n  /**\n   * @example\n   * modules.finance.routingNumber() // '522814402'\n   * @returns string\n   */\n  routingNumber(): string {\n    const routingNumber = this.utils.replaceSymbols(\"########\");\n\n    // Modules 10 straight summation.\n    let sum = 0;\n\n    for (let i = 0; i < routingNumber.length; i += 3) {\n      sum += Number(routingNumber[i]) * 3;\n      sum += Number(routingNumber[i + 1]) * 7;\n      sum += Number(routingNumber[i + 2]) || 0;\n    }\n\n    return `${routingNumber}${Math.ceil(sum / 10) * 10 - sum}`;\n  }\n\n  /**\n   * Returns a credit card CVV.\n   *\n   * @example\n   * modules.finance.creditCardCVV() // '506'\n   *\n   * @returns string\n   */\n  creditCardCVV(): string {\n    let cvv = \"\";\n\n    for (let i = 0; i < 3; i++) {\n      cvv += this.datatypeModule.int({ max: 9, min: 0 }).toString();\n    }\n\n    return cvv;\n  }\n\n  /**\n   * Returns a string with a money symbol\n   * @example modules.finance.moneySymbol() // '$'\n   * @returns string\n   */\n  moneySymbol(): string {\n    return this.utils.oneOfArray(\n      Object.values(MONEY_INFO).map((el) => el.symbol),\n    );\n  }\n\n  /**\n   * Generates a random amount between the given bounds (inclusive).\n   *\n   * @param args.min The lower bound for the amount.\n   * @param args.max The upper bound for the amount.\n   * @param args.precision The number of decimal places for the amount.\n   * @param args.symbol The symbol used to prefix the amount. Defaults to `'$'`.\n   *\n   * @example\n   * modules.finance.amount()// '$6170.87'\n   * modules.finance.amount({ min: 0, max: 1000 }) // '$5.53'\n   * modules.finance.amount({ min: 0, max: 1000, symbol: '€', precision: 0 }) // '€5'\n   *\n   * @returns string\n   */\n  amount({ max, min, precision, symbol: isymbol }: AmountProps = {}): string {\n    const symbol = isymbol ? isymbol : \"$\";\n\n    return `${symbol}${this.datatypeModule.number({\n      max: max,\n      min: min,\n      precision: precision,\n    })}`;\n  }\n\n  /**\n   * Returns a current money name\n   * @example modules.finance.currencyMoneyName() // 'Us Dollar'\n   * @returns string\n   */\n  currencyMoneyName(): string {\n    return this.utils.oneOfArray(\n      Object.values(MONEY_INFO).map((el) => el.name),\n    );\n  }\n\n  /**\n   * Returns a common money code\n   * @example modules.finance.moneyCode() // 'EUR'\n   * @returns string\n   */\n  moneyCode(): string {\n    return this.utils.oneOfArray(\n      Object.values(MONEY_INFO).map((el) => el.code),\n    );\n  }\n\n  /**\n   * Generates a random Litecoin address.\n   *\n   * @example\n   * modules.finance.litecoinAddress() // 'MoQaSTGWBRXkWfyxKbNKuPrAWGELzcW'\n   */\n  litecoinAddress(): string {\n    const addressLength = this.datatypeModule.int({ min: 26, max: 33 });\n\n    let result = this.utils.oneOfArray([\"L\", \"M\", \"3\"]);\n\n    for (let i = 0; i < addressLength - 1; i++) {\n      result += this.utils.oneOfArray(\n        \"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\".split(\"\"),\n      );\n    }\n\n    return result;\n  }\n}\n","export const PHONE_PREFIX = [\n  { country: \"Afghanistan\", code: \"93\", iso: \"AF\" },\n  { country: \"Albania\", code: \"355\", iso: \"AL\" },\n  { country: \"Algeria\", code: \"213\", iso: \"DZ\" },\n  { country: \"American Samoa\", code: \"1-684\", iso: \"AS\" },\n  { country: \"Andorra\", code: \"376\", iso: \"AD\" },\n  { country: \"Angola\", code: \"244\", iso: \"AO\" },\n  { country: \"Anguilla\", code: \"1-264\", iso: \"AI\" },\n  { country: \"Antarctica\", code: \"672\", iso: \"AQ\" },\n  { country: \"Antigua and Barbuda\", code: \"1-268\", iso: \"AG\" },\n  { country: \"Argentina\", code: \"54\", iso: \"AR\" },\n  { country: \"Armenia\", code: \"374\", iso: \"AM\" },\n  { country: \"Aruba\", code: \"297\", iso: \"AW\" },\n  { country: \"Australia\", code: \"61\", iso: \"AU\" },\n  { country: \"Austria\", code: \"43\", iso: \"AT\" },\n  { country: \"Azerbaijan\", code: \"994\", iso: \"AZ\" },\n  { country: \"Bahamas\", code: \"1-242\", iso: \"BS\" },\n  { country: \"Bahrain\", code: \"973\", iso: \"BH\" },\n  { country: \"Bangladesh\", code: \"880\", iso: \"BD\" },\n  { country: \"Barbados\", code: \"1-246\", iso: \"BB\" },\n  { country: \"Belarus\", code: \"375\", iso: \"BY\" },\n  { country: \"Belgium\", code: \"32\", iso: \"BE\" },\n  { country: \"Belize\", code: \"501\", iso: \"BZ\" },\n  { country: \"Benin\", code: \"229\", iso: \"BJ\" },\n  { country: \"Bermuda\", code: \"1-441\", iso: \"BM\" },\n  { country: \"Bhutan\", code: \"975\", iso: \"BT\" },\n  { country: \"Bolivia\", code: \"591\", iso: \"BO\" },\n  { country: \"Bosnia and Herzegovina\", code: \"387\", iso: \"BA\" },\n  { country: \"Botswana\", code: \"267\", iso: \"BW\" },\n  { country: \"Brazil\", code: \"55\", iso: \"BR\" },\n  { country: \"British Indian Ocean Territory\", code: \"246\", iso: \"IO\" },\n  { country: \"British Virgin Islands\", code: \"1-284\", iso: \"VG\" },\n  { country: \"Brunei\", code: \"673\", iso: \"BN\" },\n  { country: \"Bulgaria\", code: \"359\", iso: \"BG\" },\n  { country: \"Burkina Faso\", code: \"226\", iso: \"BF\" },\n  { country: \"Burundi\", code: \"257\", iso: \"BI\" },\n  { country: \"Cambodia\", code: \"855\", iso: \"KH\" },\n  { country: \"Cameroon\", code: \"237\", iso: \"CM\" },\n  { country: \"Canada\", code: \"1\", iso: \"CA\" },\n  { country: \"Cape Verde\", code: \"238\", iso: \"CV\" },\n  { country: \"Cayman Islands\", code: \"1-345\", iso: \"KY\" },\n  { country: \"Central African Republic\", code: \"236\", iso: \"CF\" },\n  { country: \"Chad\", code: \"235\", iso: \"TD\" },\n  { country: \"Chile\", code: \"56\", iso: \"CL\" },\n  { country: \"China\", code: \"86\", iso: \"CN\" },\n  { country: \"Christmas Island\", code: \"61\", iso: \"CX\" },\n  { country: \"Cocos Islands\", code: \"61\", iso: \"CC\" },\n  { country: \"Colombia\", code: \"57\", iso: \"CO\" },\n  { country: \"Comoros\", code: \"269\", iso: \"KM\" },\n  { country: \"Cook Islands\", code: \"682\", iso: \"CK\" },\n  { country: \"Costa Rica\", code: \"506\", iso: \"CR\" },\n  { country: \"Croatia\", code: \"385\", iso: \"HR\" },\n  { country: \"Cuba\", code: \"53\", iso: \"CU\" },\n  { country: \"Curacao\", code: \"599\", iso: \"CW\" },\n  { country: \"Cyprus\", code: \"357\", iso: \"CY\" },\n  { country: \"Czech Republic\", code: \"420\", iso: \"CZ\" },\n  { country: \"Democratic Republic of the Congo\", code: \"243\", iso: \"CD\" },\n  { country: \"Denmark\", code: \"45\", iso: \"DK\" },\n  { country: \"Djibouti\", code: \"253\", iso: \"DJ\" },\n  { country: \"Dominica\", code: \"1-767\", iso: \"DM\" },\n  {\n    country: \"Dominican Republic\",\n    code: \"1-809, 1-829, 1-849\",\n    iso: \"DO\",\n  },\n  { country: \"East Timor\", code: \"670\", iso: \"TL\" },\n  { country: \"Ecuador\", code: \"593\", iso: \"EC\" },\n  { country: \"Egypt\", code: \"20\", iso: \"EG\" },\n  { country: \"El Salvador\", code: \"503\", iso: \"SV\" },\n  { country: \"Equatorial Guinea\", code: \"240\", iso: \"GQ\" },\n  { country: \"Eritrea\", code: \"291\", iso: \"ER\" },\n  { country: \"Estonia\", code: \"372\", iso: \"EE\" },\n  { country: \"Ethiopia\", code: \"251\", iso: \"ET\" },\n  { country: \"Falkland Islands\", code: \"500\", iso: \"FK\" },\n  { country: \"Faroe Islands\", code: \"298\", iso: \"FO\" },\n  { country: \"Fiji\", code: \"679\", iso: \"FJ\" },\n  { country: \"Finland\", code: \"358\", iso: \"FI\" },\n  { country: \"France\", code: \"33\", iso: \"FR\" },\n  { country: \"French Polynesia\", code: \"689\", iso: \"PF\" },\n  { country: \"Gabon\", code: \"241\", iso: \"GA\" },\n  { country: \"Gambia\", code: \"220\", iso: \"GM\" },\n  { country: \"Georgia\", code: \"995\", iso: \"GE\" },\n  { country: \"Germany\", code: \"49\", iso: \"DE\" },\n  { country: \"Ghana\", code: \"233\", iso: \"GH\" },\n  { country: \"Gibraltar\", code: \"350\", iso: \"GI\" },\n  { country: \"Greece\", code: \"30\", iso: \"GR\" },\n  { country: \"Greenland\", code: \"299\", iso: \"GL\" },\n  { country: \"Grenada\", code: \"1-473\", iso: \"GD\" },\n  { country: \"Guam\", code: \"1-671\", iso: \"GU\" },\n  { country: \"Guatemala\", code: \"502\", iso: \"GT\" },\n  { country: \"Guernsey\", code: \"44-1481\", iso: \"GG\" },\n  { country: \"Guinea\", code: \"224\", iso: \"GN\" },\n  { country: \"Guinea-Bissau\", code: \"245\", iso: \"GW\" },\n  { country: \"Guyana\", code: \"592\", iso: \"GY\" },\n  { country: \"Haiti\", code: \"509\", iso: \"HT\" },\n  { country: \"Honduras\", code: \"504\", iso: \"HN\" },\n  { country: \"Hong Kong\", code: \"852\", iso: \"HK\" },\n  { country: \"Hungary\", code: \"36\", iso: \"HU\" },\n  { country: \"Iceland\", code: \"354\", iso: \"IS\" },\n  { country: \"India\", code: \"91\", iso: \"IN\" },\n  { country: \"Indonesia\", code: \"62\", iso: \"ID\" },\n  { country: \"Iran\", code: \"98\", iso: \"IR\" },\n  { country: \"Iraq\", code: \"964\", iso: \"IQ\" },\n  { country: \"Ireland\", code: \"353\", iso: \"IE\" },\n  { country: \"Isle of Man\", code: \"44-1624\", iso: \"IM\" },\n  { country: \"Israel\", code: \"972\", iso: \"IL\" },\n  { country: \"Italy\", code: \"39\", iso: \"IT\" },\n  { country: \"Ivory Coast\", code: \"225\", iso: \"CI\" },\n  { country: \"Jamaica\", code: \"1-876\", iso: \"JM\" },\n  { country: \"Japan\", code: \"81\", iso: \"JP\" },\n  { country: \"Jersey\", code: \"44-1534\", iso: \"JE\" },\n  { country: \"Jordan\", code: \"962\", iso: \"JO\" },\n  { country: \"Kazakhstan\", code: \"7\", iso: \"KZ\" },\n  { country: \"Kenya\", code: \"254\", iso: \"KE\" },\n  { country: \"Kiribati\", code: \"686\", iso: \"KI\" },\n  { country: \"Kosovo\", code: \"383\", iso: \"XK\" },\n  { country: \"Kuwait\", code: \"965\", iso: \"KW\" },\n  { country: \"Kyrgyzstan\", code: \"996\", iso: \"KG\" },\n  { country: \"Laos\", code: \"856\", iso: \"LA\" },\n  { country: \"Latvia\", code: \"371\", iso: \"LV\" },\n  { country: \"Lebanon\", code: \"961\", iso: \"LB\" },\n  { country: \"Lesotho\", code: \"266\", iso: \"LS\" },\n  { country: \"Liberia\", code: \"231\", iso: \"LR\" },\n  { country: \"Libya\", code: \"218\", iso: \"LY\" },\n  { country: \"Liechtenstein\", code: \"423\", iso: \"LI\" },\n  { country: \"Lithuania\", code: \"370\", iso: \"LT\" },\n  { country: \"Luxembourg\", code: \"352\", iso: \"LU\" },\n  { country: \"Macao\", code: \"853\", iso: \"MO\" },\n  { country: \"Macedonia\", code: \"389\", iso: \"MK\" },\n  { country: \"Madagascar\", code: \"261\", iso: \"MG\" },\n  { country: \"Malawi\", code: \"265\", iso: \"MW\" },\n  { country: \"Malaysia\", code: \"60\", iso: \"MY\" },\n  { country: \"Maldives\", code: \"960\", iso: \"MV\" },\n  { country: \"Mali\", code: \"223\", iso: \"ML\" },\n  { country: \"Malta\", code: \"356\", iso: \"MT\" },\n  { country: \"Marshall Islands\", code: \"692\", iso: \"MH\" },\n  { country: \"Mauritania\", code: \"222\", iso: \"MR\" },\n  { country: \"Mauritius\", code: \"230\", iso: \"MU\" },\n  { country: \"Mayotte\", code: \"262\", iso: \"YT\" },\n  { country: \"Mexico\", code: \"52\", iso: \"MX\" },\n  { country: \"Micronesia\", code: \"691\", iso: \"FM\" },\n  { country: \"Moldova\", code: \"373\", iso: \"MD\" },\n  { country: \"Monaco\", code: \"377\", iso: \"MC\" },\n  { country: \"Mongolia\", code: \"976\", iso: \"MN\" },\n  { country: \"Montenegro\", code: \"382\", iso: \"ME\" },\n  { country: \"Montserrat\", code: \"1-664\", iso: \"MS\" },\n  { country: \"Morocco\", code: \"212\", iso: \"MA\" },\n  { country: \"Mozambique\", code: \"258\", iso: \"MZ\" },\n  { country: \"Myanmar\", code: \"95\", iso: \"MM\" },\n  { country: \"Namibia\", code: \"264\", iso: \"NA\" },\n  { country: \"Nauru\", code: \"674\", iso: \"NR\" },\n  { country: \"Nepal\", code: \"977\", iso: \"NP\" },\n  { country: \"Netherlands\", code: \"31\", iso: \"NL\" },\n  { country: \"Netherlands Antilles\", code: \"599\", iso: \"AN\" },\n  { country: \"New Caledonia\", code: \"687\", iso: \"NC\" },\n  { country: \"New Zealand\", code: \"64\", iso: \"NZ\" },\n  { country: \"Nicaragua\", code: \"505\", iso: \"NI\" },\n  { country: \"Niger\", code: \"227\", iso: \"NE\" },\n  { country: \"Nigeria\", code: \"234\", iso: \"NG\" },\n  { country: \"Niue\", code: \"683\", iso: \"NU\" },\n  { country: \"North Korea\", code: \"850\", iso: \"KP\" },\n  { country: \"Northern Mariana Islands\", code: \"1-670\", iso: \"MP\" },\n  { country: \"Norway\", code: \"47\", iso: \"NO\" },\n  { country: \"Oman\", code: \"968\", iso: \"OM\" },\n  { country: \"Pakistan\", code: \"92\", iso: \"PK\" },\n  { country: \"Palau\", code: \"680\", iso: \"PW\" },\n  { country: \"Palestine\", code: \"970\", iso: \"PS\" },\n  { country: \"Panama\", code: \"507\", iso: \"PA\" },\n  { country: \"Papua New Guinea\", code: \"675\", iso: \"PG\" },\n  { country: \"Paraguay\", code: \"595\", iso: \"PY\" },\n  { country: \"Peru\", code: \"51\", iso: \"PE\" },\n  { country: \"Philippines\", code: \"63\", iso: \"PH\" },\n  { country: \"Pitcairn\", code: \"64\", iso: \"PN\" },\n  { country: \"Poland\", code: \"48\", iso: \"PL\" },\n  { country: \"Portugal\", code: \"351\", iso: \"PT\" },\n  { country: \"Puerto Rico\", code: \"1-787, 1-939\", iso: \"PR\" },\n  { country: \"Qatar\", code: \"974\", iso: \"QA\" },\n  { country: \"Republic of the Congo\", code: \"242\", iso: \"CG\" },\n  { country: \"Reunion\", code: \"262\", iso: \"RE\" },\n  { country: \"Romania\", code: \"40\", iso: \"RO\" },\n  { country: \"Russia\", code: \"7\", iso: \"RU\" },\n  { country: \"Rwanda\", code: \"250\", iso: \"RW\" },\n  { country: \"Saint Barthelemy\", code: \"590\", iso: \"BL\" },\n  { country: \"Saint Helena\", code: \"290\", iso: \"SH\" },\n  { country: \"Saint Kitts and Nevis\", code: \"1-869\", iso: \"KN\" },\n  { country: \"Saint Lucia\", code: \"1-758\", iso: \"LC\" },\n  { country: \"Saint Martin\", code: \"590\", iso: \"MF\" },\n  { country: \"Saint Pierre and Miquelon\", code: \"508\", iso: \"PM\" },\n  {\n    country: \"Saint Vincent and the Grenadines\",\n    code: \"1-784\",\n    iso: \"VC\",\n  },\n  { country: \"Samoa\", code: \"685\", iso: \"WS\" },\n  { country: \"San Marino\", code: \"378\", iso: \"SM\" },\n  { country: \"Sao Tome and Principe\", code: \"239\", iso: \"ST\" },\n  { country: \"Saudi Arabia\", code: \"966\", iso: \"SA\" },\n  { country: \"Senegal\", code: \"221\", iso: \"SN\" },\n  { country: \"Serbia\", code: \"381\", iso: \"RS\" },\n  { country: \"Seychelles\", code: \"248\", iso: \"SC\" },\n  { country: \"Sierra Leone\", code: \"232\", iso: \"SL\" },\n  { country: \"Singapore\", code: \"65\", iso: \"SG\" },\n  { country: \"Sint Maarten\", code: \"1-721\", iso: \"SX\" },\n  { country: \"Slovakia\", code: \"421\", iso: \"SK\" },\n  { country: \"Slovenia\", code: \"386\", iso: \"SI\" },\n  { country: \"Solomon Islands\", code: \"677\", iso: \"SB\" },\n  { country: \"Somalia\", code: \"252\", iso: \"SO\" },\n  { country: \"South Africa\", code: \"27\", iso: \"ZA\" },\n  { country: \"South Korea\", code: \"82\", iso: \"KR\" },\n  { country: \"South Sudan\", code: \"211\", iso: \"SS\" },\n  { country: \"Spain\", code: \"34\", iso: \"ES\" },\n  { country: \"Sri Lanka\", code: \"94\", iso: \"LK\" },\n  { country: \"Sudan\", code: \"249\", iso: \"SD\" },\n  { country: \"Suriname\", code: \"597\", iso: \"SR\" },\n  { country: \"Svalbard and Jan Mayen\", code: \"47\", iso: \"SJ\" },\n  { country: \"Swaziland\", code: \"268\", iso: \"SZ\" },\n  { country: \"Sweden\", code: \"46\", iso: \"SE\" },\n  { country: \"Switzerland\", code: \"41\", iso: \"CH\" },\n  { country: \"Syria\", code: \"963\", iso: \"SY\" },\n  { country: \"Taiwan\", code: \"886\", iso: \"TW\" },\n  { country: \"Tajikistan\", code: \"992\", iso: \"TJ\" },\n  { country: \"Tanzania\", code: \"255\", iso: \"TZ\" },\n  { country: \"Thailand\", code: \"66\", iso: \"TH\" },\n  { country: \"Togo\", code: \"228\", iso: \"TG\" },\n  { country: \"Tokelau\", code: \"690\", iso: \"TK\" },\n  { country: \"Tonga\", code: \"676\", iso: \"TO\" },\n  { country: \"Trinidad and Tobago\", code: \"1-868\", iso: \"TT\" },\n  { country: \"Tunisia\", code: \"216\", iso: \"TN\" },\n  { country: \"Turkey\", code: \"90\", iso: \"TR\" },\n  { country: \"Turkmenistan\", code: \"993\", iso: \"TM\" },\n  { country: \"Turks and Caicos Islands\", code: \"1-649\", iso: \"TC\" },\n  { country: \"Tuvalu\", code: \"688\", iso: \"TV\" },\n  { country: \"U.S. Virgin Islands\", code: \"1-340\", iso: \"VI\" },\n  { country: \"Uganda\", code: \"256\", iso: \"UG\" },\n  { country: \"Ukraine\", code: \"380\", iso: \"UA\" },\n  { country: \"United Arab Emirates\", code: \"971\", iso: \"AE\" },\n  { country: \"United Kingdom\", code: \"44\", iso: \"GB\" },\n  { country: \"United States\", code: \"1\", iso: \"US\" },\n  { country: \"Uruguay\", code: \"598\", iso: \"UY\" },\n  { country: \"Uzbekistan\", code: \"998\", iso: \"UZ\" },\n  { country: \"Vanuatu\", code: \"678\", iso: \"VU\" },\n  { country: \"Vatican\", code: \"379\", iso: \"VA\" },\n  { country: \"Venezuela\", code: \"58\", iso: \"VE\" },\n  { country: \"Vietnam\", code: \"84\", iso: \"VN\" },\n  { country: \"Wallis and Futuna\", code: \"681\", iso: \"WF\" },\n  { country: \"Western Sahara\", code: \"212\", iso: \"EH\" },\n  { country: \"Yemen\", code: \"967\", iso: \"YE\" },\n  { country: \"Zambia\", code: \"260\", iso: \"ZM\" },\n  { country: \"Zimbabwe\", code: \"263\", iso: \"ZW\" },\n];\n","import { ChacaUtils } from \"../../core/utils\";\nimport { DatatypeModule } from \"../datatype\";\nimport { PHONE_PREFIX } from \"./constants/prefix\";\n\nexport type CallDurationProps = {\n  min?: number;\n  max?: number;\n};\n\nexport type NumberProps = {\n  format?: string;\n};\n\nexport class PhoneModule {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n  ) {}\n\n  readonly constants = {\n    phonePrefixs: PHONE_PREFIX.map((p) => p.code),\n  };\n\n  /**\n   * Returns a phone number\n   *\n   * @param args.format Format of the phone number\n   *\n   * @example\n   * modules.phone.number({ format: '+53 #### ## ##' }) // '+53 5417 98 99'\n   * modules.phone.number() // '+1 234 498 37'\n   *\n   * @returns string\n   */\n  number({ format: iformat }: NumberProps = {}): string {\n    const format: string = iformat ? iformat : `${this.prefix()} ### ### ##`;\n\n    const number: string = this.utils.replaceSymbols(format);\n    return number;\n  }\n\n  /**\n   * Returns a string with a country number prefix\n   * @example modules.phone.prefix() // '+53'\n   * @returns string\n   */\n  prefix(): string {\n    return this.utils.oneOfArray(this.constants.phonePrefixs);\n  }\n\n  /**\n   * Return a call duartion with minutes and seconds\n   * @param args.min Minimun minutes of the call. Default `0`\n   * @param args.max Maximun minutes of the call. Default `59`\n   *\n   * @example\n   * modules.phone.callDuration({ min: 10, max: 30 }) // '27:30'\n   * modules.phone.callDuration() // '20:52'\n   *\n   * @returns string\n   */\n  callDuration({ max: imax, min: imin }: CallDurationProps = {}): string {\n    const min: number =\n      typeof imin === \"number\" && imin >= 0 && imin < 60 ? imin : 0;\n    const max: number =\n      typeof imax === \"number\" && imax < 60 && imax >= 0 && imax >= min\n        ? imax\n        : 59;\n\n    const minutes = this.datatypeModule.int({\n      min,\n      max,\n    });\n\n    const seconds = this.datatypeModule.int({ min: 0, max: 59 });\n\n    const stringMinutes = minutes < 10 ? `0${minutes}` : `${minutes}`;\n    const stringSeconds = seconds < 10 ? `0${seconds}` : `${seconds}`;\n\n    return `${stringMinutes}:${stringSeconds}`;\n  }\n}\n","export const COUNTRY_LIST = [\n  {\n    country: \"Afghanistan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Albania\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Algeria\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"American Samoa\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Andorra\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Angola\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Anguilla\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Antarctica\",\n    continent: \"Antarctica\",\n  },\n  {\n    country: \"Antigua and Barbuda\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Argentina\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Armenia\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Aruba\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Australia\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Austria\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Azerbaijan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Bahamas\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Bahrain\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Bangladesh\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Barbados\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Belarus\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Belgium\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Belize\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Benin\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Bermuda\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Bhutan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Bolivia\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Bosnia and Herzegovina\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Botswana\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Bouvet Island\",\n    continent: \"Antarctica\",\n  },\n  {\n    country: \"Brazil\",\n    continent: \"South America\",\n  },\n  {\n    country: \"British Indian Ocean Territory\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Brunei\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Bulgaria\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Burkina Faso\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Burundi\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Cambodia\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Cameroon\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Canada\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Cape Verde\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Cayman Islands\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Central African Republic\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Chad\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Chile\",\n    continent: \"South America\",\n  },\n  {\n    country: \"China\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Christmas Island\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Cocos (Keeling) Islands\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Colombia\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Comoros\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Congo\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Cook Islands\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Costa Rica\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Croatia\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Cuba\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Cyprus\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Czech Republic\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Denmark\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Djibouti\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Dominica\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Dominican Republic\",\n    continent: \"North America\",\n  },\n  {\n    country: \"East Timor\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Ecuador\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Egypt\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"El Salvador\",\n    continent: \"North America\",\n  },\n  {\n    country: \"England\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Equatorial Guinea\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Eritrea\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Estonia\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Ethiopia\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Falkland Islands\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Faroe Islands\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Fiji Islands\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Finland\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"France\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"French Guiana\",\n    continent: \"South America\",\n  },\n  {\n    country: \"French Polynesia\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"French Southern territories\",\n    continent: \"Antarctica\",\n  },\n  {\n    country: \"Gabon\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Gambia\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Georgia\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Germany\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Ghana\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Gibraltar\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Greece\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Greenland\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Grenada\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Guadeloupe\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Guam\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Guatemala\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Guinea\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Guinea-Bissau\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Guyana\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Haiti\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Heard Island and McDonald Islands\",\n    continent: \"Antarctica\",\n  },\n  {\n    country: \"Holy See (Vatican City State)\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Honduras\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Hong Kong\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Hungary\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Iceland\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"India\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Indonesia\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Iran\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Iraq\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Ireland\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Israel\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Italy\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Ivory Coast\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Jamaica\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Japan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Jordan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Kazakhstan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Kenya\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Kiribati\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Kuwait\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Kyrgyzstan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Laos\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Latvia\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Lebanon\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Lesotho\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Liberia\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Libyan Arab Jamahiriya\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Liechtenstein\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Lithuania\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Luxembourg\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Macao\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"North Macedonia\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Madagascar\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Malawi\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Malaysia\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Maldives\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Mali\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Malta\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Marshall Islands\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Martinique\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Mauritania\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Mauritius\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Mayotte\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Mexico\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Micronesia, Federated States of\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Moldova\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Monaco\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Mongolia\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Montenegro\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Montserrat\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Morocco\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Mozambique\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Myanmar\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Namibia\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Nauru\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Nepal\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Netherlands\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Netherlands Antilles\",\n    continent: \"North America\",\n  },\n  {\n    country: \"New Caledonia\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"New Zealand\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Nicaragua\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Niger\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Nigeria\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Niue\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Norfolk Island\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"North Korea\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Northern Ireland\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Northern Mariana Islands\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Norway\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Oman\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Pakistan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Palau\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Palestine\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Panama\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Papua New Guinea\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Paraguay\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Peru\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Philippines\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Pitcairn\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Poland\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Portugal\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Puerto Rico\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Qatar\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Reunion\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Romania\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Russian Federation\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Rwanda\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Saint Helena\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Saint Kitts and Nevis\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Saint Lucia\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Saint Pierre and Miquelon\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Saint Vincent and the Grenadines\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Samoa\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"San Marino\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Sao Tome and Principe\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Saudi Arabia\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Scotland\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Senegal\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Serbia\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Seychelles\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Sierra Leone\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Singapore\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Slovakia\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Slovenia\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Solomon Islands\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Somalia\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"South Africa\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"South Georgia and the South Sandwich Islands\",\n    continent: \"Antarctica\",\n  },\n  {\n    country: \"South Korea\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"South Sudan\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Spain\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Sri Lanka\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Sudan\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Suriname\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Svalbard and Jan Mayen\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Swaziland\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Sweden\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Switzerland\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Syria\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Tajikistan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Tanzania\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Thailand\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"The Democratic Republic of Congo\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Togo\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Tokelau\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Tonga\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Trinidad and Tobago\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Tunisia\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Turkey\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Turkmenistan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Turks and Caicos Islands\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Tuvalu\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Uganda\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Ukraine\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"United Arab Emirates\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"United Kingdom\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"United States\",\n    continent: \"North America\",\n  },\n  {\n    country: \"United States Minor Outlying Islands\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Uruguay\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Uzbekistan\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Vanuatu\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Venezuela\",\n    continent: \"South America\",\n  },\n  {\n    country: \"Vietnam\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Virgin Islands, British\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Virgin Islands, U.S.\",\n    continent: \"North America\",\n  },\n  {\n    country: \"Wales\",\n    continent: \"Europe\",\n  },\n  {\n    country: \"Wallis and Futuna\",\n    continent: \"Oceania\",\n  },\n  {\n    country: \"Western Sahara\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Yemen\",\n    continent: \"Asia\",\n  },\n  {\n    country: \"Zambia\",\n    continent: \"Africa\",\n  },\n  {\n    country: \"Zimbabwe\",\n    continent: \"Africa\",\n  },\n];\n\nexport const COUNTRY_CODE = [\n  \"BGD\",\n  \"BEL\",\n  \"BFA\",\n  \"BGR\",\n  \"BIH\",\n  \"BRB\",\n  \"WLF\",\n  \"BLM\",\n  \"BMU\",\n  \"BRN\",\n  \"BOL\",\n  \"BHR\",\n  \"BDI\",\n  \"BEN\",\n  \"BTN\",\n  \"JAM\",\n  \"BVT\",\n  \"BWA\",\n  \"WSM\",\n  \"BES\",\n  \"BRA\",\n  \"BHS\",\n  \"JEY\",\n  \"BLR\",\n  \"BLZ\",\n  \"RUS\",\n  \"RWA\",\n  \"SRB\",\n  \"TLS\",\n  \"REU\",\n  \"TKM\",\n  \"TJK\",\n  \"ROU\",\n  \"TKL\",\n  \"GNB\",\n  \"GUM\",\n  \"GTM\",\n  \"SGS\",\n  \"GRC\",\n  \"GNQ\",\n  \"GLP\",\n  \"JPN\",\n  \"GUY\",\n  \"GGY\",\n  \"GUF\",\n  \"GEO\",\n  \"GRD\",\n  \"GBR\",\n  \"GAB\",\n  \"SLV\",\n  \"GIN\",\n  \"GMB\",\n  \"GRL\",\n  \"GIB\",\n  \"GHA\",\n  \"OMN\",\n  \"TUN\",\n  \"JOR\",\n  \"HRV\",\n  \"HTI\",\n  \"HUN\",\n  \"HKG\",\n  \"HND\",\n  \"HMD\",\n  \"VEN\",\n  \"PRI\",\n  \"PSE\",\n  \"PLW\",\n  \"PRT\",\n  \"SJM\",\n  \"PRY\",\n  \"IRQ\",\n  \"PAN\",\n  \"PYF\",\n  \"PNG\",\n  \"PER\",\n  \"PAK\",\n  \"PHL\",\n  \"PCN\",\n  \"POL\",\n  \"SPM\",\n  \"ZMB\",\n  \"ESH\",\n  \"EST\",\n  \"EGY\",\n  \"ZAF\",\n  \"ECU\",\n  \"ITA\",\n  \"VNM\",\n  \"SLB\",\n  \"ETH\",\n  \"SOM\",\n  \"ZWE\",\n  \"SAU\",\n  \"ESP\",\n  \"ERI\",\n  \"MNE\",\n  \"MDA\",\n  \"MDG\",\n  \"MAF\",\n  \"MAR\",\n  \"MCO\",\n  \"UZB\",\n  \"MMR\",\n  \"MLI\",\n  \"MAC\",\n  \"MNG\",\n  \"MHL\",\n  \"MKD\",\n  \"MUS\",\n  \"MLT\",\n  \"MWI\",\n  \"MDV\",\n  \"MTQ\",\n  \"MNP\",\n  \"MSR\",\n  \"MRT\",\n  \"IMN\",\n  \"UGA\",\n  \"TZA\",\n  \"MYS\",\n  \"MEX\",\n  \"ISR\",\n  \"FRA\",\n  \"IOT\",\n  \"SHN\",\n  \"FIN\",\n  \"FJI\",\n  \"FLK\",\n  \"FSM\",\n  \"FRO\",\n  \"NIC\",\n  \"NLD\",\n  \"NOR\",\n  \"NAM\",\n  \"VUT\",\n  \"NCL\",\n  \"NER\",\n  \"NFK\",\n  \"NGA\",\n  \"NZL\",\n  \"NPL\",\n  \"NRU\",\n  \"NIU\",\n  \"COK\",\n  \"XKX\",\n  \"CIV\",\n  \"CHE\",\n  \"COL\",\n  \"CHN\",\n  \"CMR\",\n  \"CHL\",\n  \"CCK\",\n  \"CAN\",\n  \"COG\",\n  \"CAF\",\n  \"COD\",\n  \"CZE\",\n  \"CYP\",\n  \"CXR\",\n  \"CRI\",\n  \"CUW\",\n  \"CPV\",\n  \"CUB\",\n  \"SWZ\",\n  \"SYR\",\n  \"SXM\",\n  \"KGZ\",\n  \"KEN\",\n  \"SSD\",\n  \"SUR\",\n  \"KIR\",\n  \"KHM\",\n  \"KNA\",\n  \"COM\",\n  \"STP\",\n  \"SVK\",\n  \"KOR\",\n  \"SVN\",\n  \"PRK\",\n  \"KWT\",\n  \"SEN\",\n  \"SMR\",\n  \"SLE\",\n  \"SYC\",\n  \"KAZ\",\n  \"CYM\",\n  \"SGP\",\n  \"SWE\",\n  \"SDN\",\n  \"DOM\",\n  \"DMA\",\n  \"DJI\",\n  \"DNK\",\n  \"VGB\",\n  \"DEU\",\n  \"YEM\",\n  \"DZA\",\n  \"USA\",\n  \"URY\",\n  \"MYT\",\n  \"UMI\",\n  \"LBN\",\n  \"LCA\",\n  \"LAO\",\n  \"TUV\",\n  \"TWN\",\n  \"TTO\",\n  \"TUR\",\n  \"LKA\",\n  \"LIE\",\n  \"LVA\",\n  \"TON\",\n  \"LTU\",\n  \"LUX\",\n  \"LBR\",\n  \"LSO\",\n  \"THA\",\n  \"ATF\",\n  \"TGO\",\n  \"TCD\",\n  \"TCA\",\n  \"LBY\",\n  \"VAT\",\n  \"VCT\",\n  \"ARE\",\n  \"AND\",\n  \"ATG\",\n  \"AFG\",\n  \"AIA\",\n  \"VIR\",\n  \"ISL\",\n  \"IRN\",\n  \"ARM\",\n  \"ALB\",\n  \"AGO\",\n  \"ATA\",\n  \"ASM\",\n  \"ARG\",\n  \"AUS\",\n  \"AUT\",\n  \"ABW\",\n  \"IND\",\n  \"ALA\",\n  \"AZE\",\n  \"IRL\",\n  \"IDN\",\n  \"UKR\",\n  \"QAT\",\n  \"MOZ\",\n];\n","export const TIME_ZONE = [\n  \"Pacific/Midway\",\n  \"Pacific/Pago_Pago\",\n  \"Pacific/Honolulu\",\n  \"America/Juneau\",\n  \"America/Los_Angeles\",\n  \"America/Tijuana\",\n  \"America/Denver\",\n  \"America/Phoenix\",\n  \"America/Chihuahua\",\n  \"America/Mazatlan\",\n  \"America/Chicago\",\n  \"America/Regina\",\n  \"America/Mexico_City\",\n  \"America/Mexico_City\",\n  \"America/Monterrey\",\n  \"America/Guatemala\",\n  \"America/New_York\",\n  \"America/Indiana/Indianapolis\",\n  \"America/Bogota\",\n  \"America/Lima\",\n  \"America/Lima\",\n  \"America/Halifax\",\n  \"America/Caracas\",\n  \"America/La_Paz\",\n  \"America/Santiago\",\n  \"America/St_Johns\",\n  \"America/Sao_Paulo\",\n  \"America/Argentina/Buenos_Aires\",\n  \"America/Guyana\",\n  \"America/Godthab\",\n  \"Atlantic/South_Georgia\",\n  \"Atlantic/Azores\",\n  \"Atlantic/Cape_Verde\",\n  \"Europe/Dublin\",\n  \"Europe/London\",\n  \"Europe/Lisbon\",\n  \"Europe/London\",\n  \"Africa/Casablanca\",\n  \"Africa/Monrovia\",\n  \"Etc/UTC\",\n  \"Europe/Belgrade\",\n  \"Europe/Bratislava\",\n  \"Europe/Budapest\",\n  \"Europe/Ljubljana\",\n  \"Europe/Prague\",\n  \"Europe/Sarajevo\",\n  \"Europe/Skopje\",\n  \"Europe/Warsaw\",\n  \"Europe/Zagreb\",\n  \"Europe/Brussels\",\n  \"Europe/Copenhagen\",\n  \"Europe/Madrid\",\n  \"Europe/Paris\",\n  \"Europe/Amsterdam\",\n  \"Europe/Berlin\",\n  \"Europe/Berlin\",\n  \"Europe/Rome\",\n  \"Europe/Stockholm\",\n  \"Europe/Vienna\",\n  \"Africa/Algiers\",\n  \"Europe/Bucharest\",\n  \"Africa/Cairo\",\n  \"Europe/Helsinki\",\n  \"Europe/Kiev\",\n  \"Europe/Riga\",\n  \"Europe/Sofia\",\n  \"Europe/Tallinn\",\n  \"Europe/Vilnius\",\n  \"Europe/Athens\",\n  \"Europe/Istanbul\",\n  \"Europe/Minsk\",\n  \"Asia/Jerusalem\",\n  \"Africa/Harare\",\n  \"Africa/Johannesburg\",\n  \"Europe/Moscow\",\n  \"Europe/Moscow\",\n  \"Europe/Moscow\",\n  \"Asia/Kuwait\",\n  \"Asia/Riyadh\",\n  \"Africa/Nairobi\",\n  \"Asia/Baghdad\",\n  \"Asia/Tehran\",\n  \"Asia/Muscat\",\n  \"Asia/Muscat\",\n  \"Asia/Baku\",\n  \"Asia/Tbilisi\",\n  \"Asia/Yerevan\",\n  \"Asia/Kabul\",\n  \"Asia/Yekaterinburg\",\n  \"Asia/Karachi\",\n  \"Asia/Karachi\",\n  \"Asia/Tashkent\",\n  \"Asia/Kolkata\",\n  \"Asia/Kolkata\",\n  \"Asia/Kolkata\",\n  \"Asia/Kolkata\",\n  \"Asia/Kathmandu\",\n  \"Asia/Dhaka\",\n  \"Asia/Dhaka\",\n  \"Asia/Colombo\",\n  \"Asia/Almaty\",\n  \"Asia/Novosibirsk\",\n  \"Asia/Rangoon\",\n  \"Asia/Bangkok\",\n  \"Asia/Bangkok\",\n  \"Asia/Jakarta\",\n  \"Asia/Krasnoyarsk\",\n  \"Asia/Shanghai\",\n  \"Asia/Chongqing\",\n  \"Asia/Hong_Kong\",\n  \"Asia/Urumqi\",\n  \"Asia/Kuala_Lumpur\",\n  \"Asia/Singapore\",\n  \"Asia/Taipei\",\n  \"Australia/Perth\",\n  \"Asia/Irkutsk\",\n  \"Asia/Ulaanbaatar\",\n  \"Asia/Seoul\",\n  \"Asia/Tokyo\",\n  \"Asia/Tokyo\",\n  \"Asia/Tokyo\",\n  \"Asia/Yakutsk\",\n  \"Australia/Darwin\",\n  \"Australia/Adelaide\",\n  \"Australia/Melbourne\",\n  \"Australia/Melbourne\",\n  \"Australia/Sydney\",\n  \"Australia/Brisbane\",\n  \"Australia/Hobart\",\n  \"Asia/Vladivostok\",\n  \"Pacific/Guam\",\n  \"Pacific/Port_Moresby\",\n  \"Asia/Magadan\",\n  \"Asia/Magadan\",\n  \"Pacific/Noumea\",\n  \"Pacific/Fiji\",\n  \"Asia/Kamchatka\",\n  \"Pacific/Majuro\",\n  \"Pacific/Auckland\",\n  \"Pacific/Auckland\",\n  \"Pacific/Tongatapu\",\n  \"Pacific/Fakaofo\",\n  \"Pacific/Apia\",\n];\n","export const CARDINAL_DIRECTIONS = [\n  \"North\",\n  \"East\",\n  \"South\",\n  \"West\",\n  \"Northeast\",\n  \"Northwest\",\n  \"Southeast\",\n  \"Southwest\",\n];\n","export const ORDINAL = [\"Northeast\", \"Northwest\", \"Southeast\", \"Southwest\"];\n","import { COUNTRY_CODE, COUNTRY_LIST } from \"./constants/countries\";\nimport { TIME_ZONE } from \"./constants/time-zone\";\nimport { CARDINAL_DIRECTIONS } from \"./constants/cardinal-directions\";\nimport { ORDINAL } from \"./constants/ordinal\";\nimport { ChacaUtils } from \"../../core/utils\";\nimport { DatatypeModule } from \"../datatype\";\n\nexport type ZipCodeProps = {\n  format?: string;\n};\n\nexport type CountryProps = {\n  continent?:\n    | \"Asia\"\n    | \"Africa\"\n    | \"Oceania\"\n    | \"Europe\"\n    | \"South America\"\n    | \"North America\"\n    | \"Antarctica\";\n};\n\nexport type LatitudeProps = {\n  max?: number;\n  min?: number;\n  precision?: number;\n};\n\nexport type LongitudProps = {\n  max?: number;\n  min?: number;\n  precision?: number;\n};\n\nexport class AddressModule {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n  ) {}\n\n  readonly constants = {\n    timeZones: TIME_ZONE,\n    countries: COUNTRY_LIST,\n    countriesCode: COUNTRY_CODE,\n    cardinalDirections: CARDINAL_DIRECTIONS,\n    ordinalDirection: ORDINAL,\n  };\n\n  /**\n   * Returns a zip code\n   * @param args.format format of the zip code. Default '#####'\n   * @example\n   * modules.address.zipCode() // '62581'\n   * modules.address.zipCode({ format: '###' }) // '453'\n   * @returns string\n   */\n  zipCode({ format: iformat }: ZipCodeProps = {}): string {\n    const format = typeof iformat === \"string\" ? iformat : \"#####\";\n    return this.utils.replaceSymbols(format);\n  }\n\n  /**\n   * Returns a time zone\n   * @example modules.address.timeZone() // \"Asia/Magadan\"\n   * @returns string\n   */\n  timeZone(): string {\n    return this.utils.oneOfArray(TIME_ZONE);\n  }\n\n  /**\n   * Returns a cardinal direction\n   * @example modules.address.cardinalDirection()// 'North'\n   * @returns string\n   */\n  cardinalDirection(): string {\n    return this.utils.oneOfArray(this.constants.cardinalDirections);\n  }\n\n  /**\n   * Returns a country\n   * @param args.continent Continent of the country that you want\n   * @example modules.address.country() // 'Spain'\n   * @returns string\n   */\n  country({ continent }: CountryProps = {}): string {\n    if (continent && typeof continent === \"string\") {\n      const filterList = COUNTRY_LIST.filter(\n        (el) => el.continent === continent,\n      );\n\n      if (filterList.length > 0) {\n        return this.utils.oneOfArray(filterList.map((el) => el.country));\n      }\n    }\n\n    return this.utils.oneOfArray(COUNTRY_LIST.map((el) => el.country));\n  }\n\n  /**\n   * Returns a country name code\n   * @example modules.address.countryCode() // 'CU'\n   * @returns string\n   */\n  countryCode(): string {\n    return this.utils.oneOfArray(COUNTRY_CODE);\n  }\n\n  /**\n   * Returns a random ordinal direction (northwest, southeast, etc).\n   *\n   * @example\n   * modules.address.ordinalDirection() // 'Northeast'\n   */\n  ordinalDirection(): string {\n    return this.utils.oneOfArray(ORDINAL);\n  }\n\n  /**\n   * Generates a random latitude.\n   *\n   * @param options.max The upper bound for the latitude to generate. Defaults to `90`.\n   * @param options.min The lower bound for the latitude to generate. Defaults to `-90`.\n   * @param options.precision The number of decimal points of precision for the latitude. Defaults to `4`.\n   *\n   * @example\n   * modules.address.latitude() // -30.9501\n   * modules.address.latitude({ max: 10 }) // 5.7225\n   * modules.address.latitude({ max: 10, min: -10 }) // -9.6273\n   * modules.address.latitude({ max: 10, min: -10, precision: 5 }) // 2.68452\n   */\n  latitude(options: LatitudeProps = {}): number {\n    const { max = 90, min = -90, precision = 4 } = options;\n\n    return this.datatypeModule.float({\n      min: min,\n      max: max,\n      precision: precision,\n    });\n  }\n\n  /**\n   * Generates a random longitude.\n   *\n   * @param options.max The upper bound for the longitude to generate. Defaults to `180`.\n   * @param options.min The lower bound for the longitude to generate. Defaults to `-180`.\n   * @param options.precision The number of decimal points of precision for the longitude. Defaults to `4`.\n   *\n   * @example\n   * modules.address.longitude() // -30.9501\n   * modules.address.longitude({ max: 10 }) // 5.7225\n   * modules.address.longitude({ max: 10, min: -10 }) // -9.6273\n   * modules.address.longitude({ max: 10, min: -10, precision: 5 }) // 2.68452\n   */\n  longitude(options: LongitudProps = {}): number {\n    const { max = 180, min = -180, precision = 4 } = options;\n\n    return this.datatypeModule.float({\n      max: max,\n      min: min,\n      precision: precision,\n    });\n  }\n}\n","export const BICYCLE = [\n  \"Adventure Road Bicycle\",\n  \"BMX Bicycle\",\n  \"City Bicycle\",\n  \"Cruiser Bicycle\",\n  \"Cyclocross Bicycle\",\n  \"Dual-Sport Bicycle\",\n  \"Fitness Bicycle\",\n  \"Flat-Foot Comfort Bicycle\",\n  \"Folding Bicycle\",\n  \"Hybrid Bicycle\",\n  \"Mountain Bicycle\",\n  \"Recumbent Bicycle\",\n  \"Road Bicycle\",\n  \"Tandem Bicycle\",\n  \"Touring Bicycle\",\n  \"Track/Fixed-Gear Bicycle\",\n  \"Triathlon/Time Trial Bicycle\",\n  \"Tricycle\",\n];\n","export const FUEL = [\"Diesel\", \"Electric\", \"Gasoline\", \"Hybrid\"];\n","export const MANUFACTURER = [\n  \"Abarth\",\n  \"Acura\",\n  \"Alpine\",\n  \"Alfa Romeo\",\n  \"Aston Martin\",\n  \"Audi\",\n  \"Bentley\",\n  \"BMW\",\n  \"Bugatti\",\n  \"Buick\",\n  \"Cadillac\",\n  \"Caterham\",\n  \"Chrysler\",\n  \"Citroën\",\n  \"Chevrolet\",\n  \"Dacia\",\n  \"Dodge\",\n  \"Ferrari\",\n  \"Fiat\",\n  \"Ford\",\n  \"Genesis\",\n  \"GMC\",\n  \"Hennessey\",\n  \"Honda\",\n  \"Hyundai\",\n  \"Infiniti\",\n  \"Isuzu\",\n  \"Jaguar\",\n  \"Jeep\",\n  \"Kia\",\n  \"Koenigsegg\",\n  \"Lamborghini\",\n  \"Lancia\",\n  \"Land Rover\",\n  \"Lexus\",\n  \"Lincoln\",\n  \"Lotus\",\n  \"Maserati\",\n  \"Maybach\",\n  \"Mazda\",\n  \"McLaren\",\n  \"Mercedes Benz\",\n  \"Mini\",\n  \"Mitsubishi\",\n  \"Morgan\",\n  \"Nissan\",\n  \"Opel\",\n  \"Pagani\",\n  \"Peugeot\",\n  \"Plymouth\",\n  \"Polestar\",\n  \"Pontiac\",\n  \"Porsche\",\n  \"Renault\",\n  \"Rimac\",\n  \"Rolls Royce\",\n  \"SEAT\",\n  \"Smart\",\n  \"Subaru\",\n  \"Suzuki\",\n  \"Tesla\",\n  \"Toyota\",\n  \"Volkswagen\",\n  \"Volvo\",\n];\n","export const MODEL = [\n  \"296 GTB\",\n  \"4Runner\",\n  \"500\",\n  \"718\",\n  \"911\",\n  \"A-Class\",\n  \"A2\",\n  \"A3\",\n  \"A4\",\n  \"A6\",\n  \"A7\",\n  \"A8\",\n  \"Accord\",\n  \"Alpine\",\n  \"Arteon\",\n  \"Atlas\",\n  \"Avalon\",\n  \"Aventador\",\n  \"Aviator\",\n  \"Blazer\",\n  \"Bronco\",\n  \"C-Class\",\n  \"C-HR\",\n  \"Camaro\",\n  \"Camry\",\n  \"Cayenne\",\n  \"Chiron\",\n  \"Civic\",\n  \"Clarity\",\n  \"Clubman\",\n  \"Colorado\",\n  \"Corolla\",\n  \"Corsair\",\n  \"Corvette\",\n  \"Countryman\",\n  \"CR-V\",\n  \"CT-4\",\n  \"CT-5\",\n  \"CX-9\",\n  \"Duster\",\n  \"e-tron\",\n  \"E-Class\",\n  \"Edge\",\n  \"Elantra\",\n  \"Escalade\",\n  \"EQS\",\n  \"EV-6\",\n  \"Expedition\",\n  \"Explorer\",\n  \"F-150\",\n  \"Fiesta\",\n  \"Forester\",\n  \"Ghibli\",\n  \"Giulia\",\n  \"GR86\",\n  \"Grand Cherokee\",\n  \"Grecale\",\n  \"Golf\",\n  \"Highlander\",\n  \"HR-V\",\n  \"Huracan\",\n  \"ID.4\",\n  \"Impreza\",\n  \"Insight\",\n  \"Ioniq\",\n  \"Jetta\",\n  \"John Cooper Works\",\n  \"Kona\",\n  \"Land Cruiser\",\n  \"Legacy\",\n  \"Levante\",\n  \"Logan\",\n  \"Lyriq\",\n  \"M3\",\n  \"M4\",\n  \"M5\",\n  \"Macan\",\n  \"Malibu\",\n  \"Maverick\",\n  \"Mirai\",\n  \"Model 3\",\n  \"Model S\",\n  \"Model X\",\n  \"Model Y\",\n  \"Mustang\",\n  \"Nautilus\",\n  \"Navigator\",\n  \"Niro\",\n  \"Outback\",\n  \"Odyssey\",\n  \"Palisade\",\n  \"Panamera\",\n  \"Passat\",\n  \"Passport\",\n  \"Portofino\",\n  \"Prius\",\n  \"Q3\",\n  \"Q4\",\n  \"Q5\",\n  \"Q6\",\n  \"Q7\",\n  \"Q8\",\n  \"Quattroporte\",\n  \"Ranger\",\n  \"R8\",\n  \"RAV4\",\n  \"Rio\",\n  \"Roma\",\n  \"S-Class\",\n  \"Sandero\",\n  \"Santa fe\",\n  \"Sequoia\",\n  \"Sentra\",\n  \"Sienna\",\n  \"Silverado\",\n  \"Sonata\",\n  \"Sorento\",\n  \"Spark\",\n  \"Sportage\",\n  \"Spring\",\n  \"Stelvio\",\n  \"Stinger\",\n  \"Suburban\",\n  \"Super Duty\",\n  \"Supra\",\n  \"Tacoma\",\n  \"Tahoe\",\n  \"Tacoma\",\n  \"Taos\",\n  \"Taurus\",\n  \"Taycan\",\n  \"Tiguan\",\n  \"Tonale\",\n  \"Touareg\",\n  \"Trailblazer\",\n  \"TT\",\n  \"Tucson\",\n  \"Tundra\",\n  \"Urus\",\n  \"Veloster\",\n  \"Venza\",\n  \"Veyron\",\n  \"Wrangler\",\n  \"X1\",\n  \"X2\",\n  \"X3\",\n  \"X4\",\n  \"X5\",\n  \"X6\",\n  \"X7\",\n  \"XT4\",\n  \"XT5\",\n  \"Yaris\",\n  \"Z4\",\n];\n","export const TYPE = [\n  \"Cargo Van\",\n  \"Convertible\",\n  \"Coupe\",\n  \"Crew Cab Pickup\",\n  \"Extended Cab Pickup\",\n  \"Hatchback\",\n  \"Minivan\",\n  \"Passenger Van\",\n  \"SUV\",\n  \"Sedan\",\n  \"Wagon\",\n];\n","import { ChacaUtils } from \"../../core/utils\";\nimport { BICYCLE, FUEL, MANUFACTURER, MODEL, TYPE } from \"./constants\";\n\nexport class VehicleModule {\n  constructor(private readonly utils: ChacaUtils) {}\n\n  readonly constants = {\n    bicycles: BICYCLE,\n    fuels: FUEL,\n    manufacturers: MANUFACTURER,\n    models: MODEL,\n    vehicleTypes: TYPE,\n  };\n\n  /**\n   * Returns a bicycle type\n   * @example modules.vehicle.bicycle() // 'BMX Bicycle'\n   * @returns string\n   */\n  bicycle(): string {\n    return this.utils.oneOfArray(BICYCLE);\n  }\n\n  /**\n   * Returns a manufacturer name\n   * @example modules.vehicle.manufacturer() // 'BMW'\n   * @returns string\n   */\n  manufacturer(): string {\n    return this.utils.oneOfArray(MANUFACTURER);\n  }\n\n  /**\n   * Returns a vehicle model name\n   * @example modules.vehicle.model() // 'Model S'\n   * @returns string\n   */\n  model(): string {\n    return this.utils.oneOfArray(MODEL);\n  }\n\n  /**\n   * Returns a vehicle type\n   * @example modules.vehicle.type() // 'Coupe'\n   * @returns string\n   */\n  type(): string {\n    return this.utils.oneOfArray(TYPE);\n  }\n\n  /**\n   * Returns a vehicle name\n   * @example modules.vehicle.vehicle() // 'BMW Explorer'\n   * @returns string\n   */\n  vehicle(): string {\n    return `${this.manufacturer()} ${this.model()}`;\n  }\n\n  /**\n   * Returns a fuel type\n   * @example modules.vehicle.fuel() // 'Diesel'\n   * @returns string\n   */\n  fuel(): string {\n    return this.utils.oneOfArray(FUEL);\n  }\n}\n","export const MONTHS = [\n  \"January\",\n  \"February\",\n  \"March\",\n  \"April\",\n  \"May\",\n  \"June\",\n  \"July\",\n  \"August\",\n  \"September\",\n  \"October\",\n  \"November\",\n  \"December\",\n];\n","export const WEEKDAYS = [\n  \"Sunday\",\n  \"Monday\",\n  \"Tuesday\",\n  \"Wednesday\",\n  \"Thursday\",\n  \"Friday\",\n  \"Saturday\",\n];\n","import { ChacaUtils } from \"../../core/utils\";\nimport { ChacaError } from \"../../errors\";\nimport { DatatypeModule } from \"../datatype\";\nimport { MONTHS } from \"./constants/month\";\nimport { WEEKDAYS } from \"./constants/weekday\";\n\nexport type ArgDate = Date | string;\n\nexport type DateSoonProps = {\n  days?: number;\n  refDate?: ArgDate;\n};\n\nexport type DatePastProps = {\n  years?: number;\n  refDate?: ArgDate;\n};\n\nexport type AnytimeProps = {\n  refDate?: ArgDate;\n};\n\nexport type DateFutureProps = { years?: number; refDate?: ArgDate };\n\nexport type BirthDateProps = {\n  refDate?: ArgDate;\n  min?: number;\n  max?: number;\n  mode?: \"age\" | \"year\";\n};\n\nexport type TimeUnits =\n  \"years\" | \"seconds\" | \"minutes\" | \"days\" | \"hours\" | \"months\";\n\nexport type TimeAgoProps = {\n  unit?: TimeUnits;\n};\n\nexport type DateBetweenProps = {\n  from?: ArgDate;\n  to?: ArgDate;\n};\n\nexport class DateModule {\n  constructor(\n    private readonly datatypeModule: DatatypeModule,\n    private readonly utils: ChacaUtils,\n  ) {}\n\n  readonly constants = {\n    weekDays: WEEKDAYS,\n    months: MONTHS,\n  };\n\n  /**\n   * Returns a date in the near future.\n   *\n   * @param args.days The range of days the date may be in the future.\n   * @param args.refDate The date to use as reference point for the newly generated date. Defaults to now.\n   *\n   * @example\n   * modules.date.soon() // '2022-02-05T09:55:39.216Z'\n   * modules.date.soon({ days: 10 }) // '2022-02-11T05:14:39.138Z'\n   */\n  soon({ days: idays, refDate: irefDate }: DateSoonProps = {}): Date {\n    const days =\n      typeof idays === \"number\" && idays >= 0\n        ? idays\n        : this.datatypeModule.int({ min: 1, max: 200 });\n\n    const refDate = this.argToDate(irefDate);\n\n    const range = {\n      min: 1000,\n      max: (days || 1) * 24 * 3600 * 1000,\n    };\n\n    let future = refDate.getTime();\n    future += this.datatypeModule.int(range);\n    refDate.setTime(future);\n\n    return refDate;\n  }\n\n  /**\n   * Returns a Date in the past.\n   *\n   * @param args.years The range of years the date may be in the past.\n   * @param args.refDate The date to use as reference point for the newly generated date. Defaults to now.\n   *\n   * @example\n   * modules.date.past() // '2021-12-03T05:40:44.408Z'\n   * modules.date.past()({ years: 10, refDate: '2020-01-01T00:00:00.000Z' }) // '2017-08-18T02:59:12.350Z'\n   *\n   * @returns Date\n   * */\n  past({ refDate: irefDate, years: iyears }: DatePastProps = {}) {\n    const years =\n      typeof iyears === \"number\" && iyears >= 0\n        ? iyears\n        : this.datatypeModule.int({ min: 1, max: 10 });\n\n    const refDate = this.argToDate(irefDate);\n\n    const range = {\n      min: 1000,\n      max: (years || 1) * 365 * 24 * 3600 * 1000,\n    };\n\n    let past = refDate.getTime();\n    past -= this.datatypeModule.int(range); // some time from now to N years ago, in milliseconds\n    refDate.setTime(past);\n\n    return refDate;\n  }\n\n  /**\n   * Returns a date in the future.\n   *\n   * @param args.years The range of years the date may be in the future.\n   * @param args.refDate The date to use as reference point for the newly generated date. Defaults to now.\n   *\n   * @example\n   * modules.date.future() // '2022-11-19T05:52:49.100Z'\n   * modules.date.future({ years: 10, refDate: '2020-01-01T00:00:00.000Z' }) // '2020-12-13T22:45:10.252Z'\n   *\n   * @returns Date\n   */\n  future({ refDate: irefDate, years: iyears }: DateFutureProps = {}) {\n    const years =\n      typeof iyears === \"number\" && iyears >= 0 ? iyears : undefined;\n\n    const refDate = this.argToDate(irefDate);\n\n    const range = {\n      min: 1000,\n      max: (years || 1) * 365 * 24 * 3600 * 1000,\n    };\n\n    let future = refDate.getTime();\n    future += this.datatypeModule.int(range);\n\n    const newDate = new Date();\n    newDate.setTime(future);\n\n    return newDate;\n  }\n\n  /**\n   * Returns a month name\n   * @example modules.date.month() // 'February'\n   * @returns string\n   */\n  month(): string {\n    return this.utils.oneOfArray(MONTHS);\n  }\n\n  /**\n   * Returns a weekday name\n   * @example modules.date.weekDay() // 'Monday'\n   * @returns string\n   */\n  weekDay(): string {\n    return this.utils.oneOfArray(WEEKDAYS);\n  }\n\n  /**\n   * Returns a random birthdate.\n   *\n   * @param args.min The minimum age or year to generate a birthdate.\n   * @param args.max The maximum age or year to generate a birthdate.\n   * @param args.refDate The date to use as reference point for the newly generated date. Defaults to `now`.\n   * @param args.mode The mode to generate the birthdate. Supported modes are `'age'` and `'year'` .\n   *\n   * There are two modes available `'age'` and `'year'`:\n   * - `'age'`: The min and max options define the age of the person (e.g. `18` - `42`).\n   * - `'year'`: The min and max options define the range the birthdate may be in (e.g. `1900` - `2000`).\n   *\n   * Defaults to `age`.\n   *\n   * @example\n   * modules.date.birthdate() // 1977-07-10T01:37:30.719Z\n   * modules.date.birthdate({ min: 18, max: 65, mode: 'age' }) // 2003-11-02T20:03:20.116Z\n   * modules.date.birthdate({ min: 1900, max: 2000, mode: 'year' }) // 1940-08-20T08:53:07.538Z\n   *\n   * @returns Date\n   */\n  birthdate({\n    refDate: irefDate,\n    max: imax,\n    min: imin,\n    mode: imode = \"age\",\n  }: BirthDateProps = {}): Date {\n    const refDate = this.argToDate(irefDate);\n\n    const mode = imode === \"age\" || imode === \"year\" ? imode : \"age\";\n\n    const refYear = refDate.getUTCFullYear();\n\n    let min: number;\n    let max: number;\n\n    if (mode === \"age\") {\n      min = typeof imin === \"number\" && imin >= 0 ? imin : 18;\n      max = typeof imax === \"number\" && imax >= 0 ? imax : 80;\n    } else {\n      min = typeof imin === \"number\" && imin > 0 ? imin : refYear - 80;\n      max = typeof imax === \"number\" && imax > 0 ? imax : refYear - 18;\n    }\n\n    if (min > max) {\n      throw new ChacaError(\n        `The min ${mode} (${min}) must be lower than or equal to the max ${mode} (${max}).`,\n      );\n    }\n\n    if (mode === \"age\") {\n      const minimun = new Date(refDate).setUTCFullYear(refYear - max - 1);\n      const maximun = new Date(refDate).setUTCFullYear(refYear - min);\n\n      return new Date(this.datatypeModule.int({ min: minimun, max: maximun }));\n    } else {\n      const minimun = new Date(Date.UTC(0, 0, 2)).setUTCFullYear(min);\n      const maximun = new Date(Date.UTC(0, 11, 30)).setUTCFullYear(max);\n\n      return new Date(this.datatypeModule.int({ min: minimun, max: maximun }));\n    }\n  }\n\n  private randomDate(): Date {\n    const year = this.datatypeModule.int({ min: 1900, max: 2300 });\n    const month = this.datatypeModule.int({ min: 0, max: 11 });\n    const day = this.datatypeModule.int({ min: 1, max: 30 });\n\n    return new Date(year, month, day);\n  }\n\n  /**\n   * Returns a date between the given boundaries.\n   *\n   * @param args.from The early date boundary.\n   * @param args.to The late date boundary.\n   *\n   * @example\n   * modules.date.between({ from: '2020-01-01T00:00:00.000Z', to: '2030-01-01T00:00:00.000Z' }) // '2026-05-16T02:22:53.002Z'\n   *\n   * @returns Date\n   */\n  between({ from: ifrom, to: ito }: DateBetweenProps = {}) {\n    let from: Date;\n    let to: Date;\n\n    if (ifrom instanceof Date && ito instanceof Date) {\n      if (ifrom.getTime() > ito.getTime()) {\n        throw new ChacaError(`The to Date must be greater than from Date.`);\n      } else {\n        from = ifrom;\n        to = ito;\n      }\n    } else {\n      if (ifrom instanceof Date && !(ito instanceof Date)) {\n        from = this.argToDate(ifrom);\n        to = this.future({ refDate: from });\n      } else if (!(ifrom instanceof Date) && ito instanceof Date) {\n        to = ito;\n        from = this.past({ refDate: to });\n      } else {\n        from = this.randomDate();\n        to = this.future({ refDate: from });\n      }\n    }\n\n    const fromMs = from.getTime();\n    const toMs = to.getTime();\n    const dateOffset = this.datatypeModule.int({\n      min: 0,\n      max: toMs - fromMs,\n    });\n\n    return new Date(fromMs + dateOffset);\n  }\n\n  /**\n   * Returns a string with a time ago information\n   * @param args.unit Date time unit. Can be (`\"years\"` | `\"seconds\"` | `\"minutes\"` | `\"days\"` | `\"hours\"` | `\"months\"`)\n   * @example modules.date.timeAgo({ unit: 'days' }) // '20 days ago'\n   * @returns string\n   */\n  timeAgo({ unit: iunit }: TimeAgoProps = {}) {\n    const units = [\"years\", \"seconds\", \"minutes\", \"days\", \"hours\", \"months\"];\n\n    const unit =\n      typeof iunit === \"string\" ? iunit : this.utils.oneOfArray(units);\n\n    switch (unit) {\n      case \"days\":\n        return `${this.datatypeModule.int({\n          min: 1,\n          max: 30,\n        })} ${unit} ago`;\n      case \"hours\":\n        return `${this.datatypeModule.int({\n          min: 1,\n          max: 23,\n        })} ${unit} ago`;\n      case \"minutes\":\n        return `${this.datatypeModule.int({\n          min: 1,\n          max: 59,\n        })} ${unit} ago`;\n      case \"seconds\":\n        return `${this.datatypeModule.int({\n          min: 1,\n          max: 59,\n        })} ${unit} ago`;\n      case \"years\":\n        return `${this.datatypeModule.int({\n          min: 1,\n          max: 40,\n        })} ${unit} ago`;\n      case \"months\":\n        return `${this.datatypeModule.int({\n          min: 1,\n          max: 11,\n        })} ${unit} ago`;\n      default:\n        return `${this.datatypeModule.int({\n          min: 1,\n          max: 60,\n        })} ${unit} ago`;\n    }\n  }\n\n  /**\n   * Generates a random date that can be either in the past or in the future.\n   *\n   * @param args.refDate The date to use as reference point for the newly generated date. Defaults to `new Date()`.\n   *\n   * @example\n   * modules.date.anytime() // '2022-07-31T01:33:29.567Z'\n   */\n  anytime({ refDate }: AnytimeProps = {}): Date {\n    const time = this.argToDate(refDate).getTime();\n\n    return this.between({\n      from: new Date(time - 1000 * 60 * 60 * 24 * 365),\n      to: new Date(time + 1000 * 60 * 60 * 24 * 365),\n    });\n  }\n\n  private argToDate(date: ArgDate | undefined): Date {\n    if (date instanceof Date) {\n      return new Date(date.getTime());\n    } else if (typeof date === \"string\") {\n      return new Date(date);\n    } else {\n      return new Date();\n    }\n  }\n}\n","import { ILanguageNames } from \".\";\n\nexport const SPANISH_NAMES: ILanguageNames = {\n  female: [\n    \"Olivia\",\n    \"Amaya\",\n    \"Ava\",\n    \"Isabella\",\n    \"Luna\",\n    \"Camila\",\n    \"Emilia\",\n    \"Aurora\",\n    \"Estela\",\n    \"Sofia\",\n    \"Martina\",\n    \"Lucia\",\n    \"Luciana\",\n    \"Elena\",\n    \"Julieta\",\n    \"Valeria\",\n    \"Amelia\",\n    \"Regina\",\n    \"Renata\",\n    \"Sara\",\n    \"Antonella\",\n    \"Lia\",\n    \"Aitana\",\n    \"Ximena\",\n    \"Samantha\",\n    \"Alma\",\n    \"Daniela\",\n    \"Paula\",\n    \"Zoe\",\n    \"Mariana\",\n    \"Natalia\",\n    \"Romina\",\n    \"Julia\",\n    \"Josefina\",\n    \"Roma\",\n    \"Chloe\",\n    \"Lara\",\n    \"Clara\",\n    \"Delfina\",\n    \"Miranda\",\n    \"Fernanda\",\n    \"Celeste\",\n    \"Guadalupe\",\n    \"Paulina\",\n    \"Alba\",\n    \"Elisa\",\n    \"Gabriela\",\n  ],\n  male: [\n    \"Santiago\",\n    \"Xavier\",\n    \"Jose\",\n    \"Diego\",\n    \"Luis\",\n    \"Carlos\",\n    \"Juan\",\n    \"Emiliano\",\n    \"Arlo\",\n    \"Miguel\",\n    \"Alejandro\",\n    \"Andres\",\n    \"Javier\",\n    \"Jorde\",\n    \"Francisco\",\n    \"Manuel\",\n    \"Fernando\",\n    \"Elian\",\n    \"Leonel\",\n    \"Sergio\",\n    \"Pedro\",\n    \"Esteban\",\n    \"Ruben\",\n    \"Santana\",\n    \"Enrique\",\n    \"Alonzo\",\n    \"Rio\",\n    \"Tadeo\",\n    \"Camilo\",\n    \"Rey\",\n    \"Mauricio\",\n    \"Orlando\",\n    \"Belen\",\n    \"Alonso\",\n    \"Alvaro\",\n    \"Santos\",\n    \"Alfonso\",\n    \"Ernesto\",\n    \"Zavier\",\n    \"Joaquin\",\n    \"Raul\",\n    \"Emilio\",\n    \"Ignacio\",\n    \"Hugo\",\n  ],\n  lastNames: [\n    \"García\",\n    \"Fernandez\",\n    \"González\",\n    \"Rodríguez\",\n    \"López\",\n    \"Martínez\",\n    \"Sánchez\",\n    \"Pérez\",\n    \"Martin\",\n    \"Gómez\",\n    \"Ruiz\",\n    \"Hernández\",\n    \"Jiménez\",\n    \"Díaz\",\n    \"Álvarez\",\n    \"Moreno\",\n    \"Muñoz\",\n    \"Alonso\",\n    \"Gutiérrez\",\n    \"Romero\",\n    \"Navarro\",\n    \"Torres\",\n    \"Dóminguez\",\n    \"Gil\",\n    \"Vásquez\",\n    \"Serrano\",\n    \"Ramos\",\n    \"Blanco\",\n    \"Sanz\",\n    \"Castro\",\n    \"Suarez\",\n    \"Ortega\",\n    \"Rubio\",\n    \"Molina\",\n    \"Delgado\",\n    \"Ramirez\",\n    \"Morales\",\n    \"Ortiz\",\n    \"Marin\",\n    \"Iglesisas\",\n  ],\n};\n","import { ILanguageNames } from \".\";\n\nexport const ENGLISH_NAMES: ILanguageNames = {\n  female: [\n    \"Olivia\",\n    \"Emma\",\n    \"Charlotte\",\n    \"Amelia\",\n    \"Ava\",\n    \"Sophia\",\n    \"Isabella\",\n    \"Mia\",\n    \"Evelyn\",\n    \"Harper\",\n    \"Luna\",\n    \"Camila\",\n    \"Gianna\",\n    \"Elizabeth\",\n    \"Eleanor\",\n    \"Ella\",\n    \"Abigail\",\n    \"Sofia\",\n    \"Avery\",\n    \"Scarlett\",\n    \"Emily\",\n    \"Aria\",\n    \"Penelope\",\n    \"Chloe\",\n    \"Layla\",\n    \"Lila\",\n    \"Nora\",\n    \"Hazel\",\n    \"Madison\",\n    \"Ellie\",\n    \"Lily\",\n    \"Nova\",\n    \"Isla\",\n    \"Grace\",\n    \"Violet\",\n    \"Aurora\",\n    \"Riley\",\n    \"Zoey\",\n    \"Willow\",\n    \"Emilia\",\n    \"Stella\",\n    \"Zoe\",\n    \"Victoria\",\n    \"Hannah\",\n    \"Addison\",\n    \"Leah\",\n    \"Lucy\",\n    \"Eliana\",\n    \"Ivy\",\n    \"Everly\",\n    \"Lillian\",\n    \"Paisley\",\n    \"Elena\",\n    \"Naomi\",\n    \"Maya\",\n    \"Natalie\",\n    \"Kinsley\",\n    \"Deliah\",\n    \"Claire\",\n    \"Audrey\",\n    \"Aaliyah\",\n    \"Ruby\",\n    \"Brooklyn\",\n    \"Alice\",\n    \"Aubrey\",\n    \"Autumm\",\n    \"Leilani\",\n    \"Savannah\",\n    \"Valentina\",\n    \"Kennedy\",\n  ],\n  lastNames: [\n    \"Adams\",\n    \"Allen\",\n    \"Anderson\",\n    \"Amstrong\",\n    \"Atkinson\",\n    \"Bailey\",\n    \"Barker\",\n    \"Barnes\",\n    \"Bell\",\n    \"Bennett\",\n    \"Booth\",\n    \"Bradley\",\n    \"Brooks\",\n    \"Brown\",\n    \"Burton\",\n    \"Butler\",\n    \"Campbel\",\n    \"Carter\",\n    \"Chapman\",\n    \"Clarke\",\n    \"Cole\",\n    \"Collins\",\n    \"Cook\",\n    \"Cooper\",\n    \"Corbyn\",\n    \"Cox\",\n    \"Davidson\",\n    \"Davies\",\n    \"Dawson\",\n    \"Dixon\",\n    \"Edwards\",\n    \"Elliott\",\n    \"Evans\",\n    \"Fisher\",\n    \"Fletcher\",\n    \"Ford\",\n    \"Foster\",\n    \"Fox\",\n    \"Gibson\",\n    \"Graham\",\n    \"Grant\",\n    \"Gray\",\n    \"Green\",\n    \"Griffiths\",\n    \"Hall\",\n    \"Hamilton\",\n    \"Harris\",\n    \"Harrison\",\n    \"Harvey\",\n    \"Henderson\",\n    \"Hill\",\n    \"Holmes\",\n    \"Howard\",\n    \"Hughes\",\n    \"Hunt\",\n    \"Hunter\",\n    \"Jackson\",\n    \"James\",\n    \"Jenkins\",\n    \"Johnson\",\n    \"Jhonston\",\n    \"Jones\",\n    \"Kelly\",\n    \"Kennedy\",\n    \"King\",\n    \"Knight\",\n    \"Lawrence\",\n    \"Lee\",\n  ],\n  male: [\n    \"Noah\",\n    \"Liam\",\n    \"Oliver\",\n    \"Elijah\",\n    \"James\",\n    \"William\",\n    \"Benjamin\",\n    \"Lucas\",\n    \"Henry\",\n    \"Theodore\",\n    \"Jack\",\n    \"Levi\",\n    \"Alexander\",\n    \"Jackson\",\n    \"Mateo\",\n    \"Daniel\",\n    \"Michael\",\n    \"Mason\",\n    \"Sebastian\",\n    \"Ethan\",\n    \"Logan\",\n    \"Owen\",\n    \"Samuel\",\n    \"Jacob\",\n    \"Asher\",\n    \"Aiden\",\n    \"Jhon\",\n    \"Joseph\",\n    \"Wyatt\",\n    \"David\",\n    \"Leo\",\n    \"Luke\",\n    \"Julian\",\n    \"Hudson\",\n    \"Grayson\",\n    \"Matthew\",\n    \"Ezra\",\n    \"Gabriel\",\n    \"Carter\",\n    \"Issac\",\n    \"Jayden\",\n    \"Luca\",\n    \"Anthony\",\n    \"Dylan\",\n    \"Lincoln\",\n    \"Thomas\",\n    \"Maverick\",\n    \"Elias\",\n    \"Josiah\",\n    \"Charles\",\n    \"Caleb\",\n    \"Christopher\",\n    \"Ezekiel\",\n    \"Miles\",\n    \"Jaxon\",\n    \"Isaiah\",\n    \"Andrew\",\n    \"Nathan\",\n    \"Nolan\",\n    \"Adrian\",\n    \"Cameron\",\n    \"Santiago\",\n    \"Eli\",\n    \"Aaron\",\n    \"Ryan\",\n    \"Cooper\",\n    \"Waylon\",\n    \"Easton\",\n  ],\n};\n","export const GENDERS = [\n  \"Agender\",\n  \"Androgyne\",\n  \"Androgynous\",\n  \"Bigender\",\n  \"Cis female\",\n  \"Cis male\",\n  \"Cis man\",\n  \"Cis woman\",\n  \"Cis\",\n  \"Cisgender female\",\n  \"Cisgender male\",\n  \"Cisgender man\",\n  \"Cisgender woman\",\n  \"Cisgender\",\n  \"Demi-boy\",\n  \"Demi-girl\",\n  \"Demi-man\",\n  \"Demi-woman\",\n  \"Demiflux\",\n  \"Demigender\",\n  \"F2M\",\n  \"FTM\",\n  \"Female to male trans man\",\n  \"Female to male transgender man\",\n  \"Female to male transsexual man\",\n  \"Female to male\",\n  \"Gender fluid\",\n  \"Gender neutral\",\n  \"Gender nonconforming\",\n  \"Gender questioning\",\n  \"Gender variant\",\n  \"Genderflux\",\n  \"Genderqueer\",\n  \"Hermaphrodite\",\n  \"Intersex man\",\n  \"Intersex person\",\n  \"Intersex woman\",\n  \"Intersex\",\n  \"M2F\",\n  \"MTF\",\n  \"Male to female trans woman\",\n  \"Male to female transgender woman\",\n  \"Male to female transsexual woman\",\n  \"Male to female\",\n  \"Man\",\n  \"Multigender\",\n  \"Neither\",\n  \"Neutrois\",\n  \"Non-binary\",\n  \"Omnigender\",\n  \"Other\",\n  \"Pangender\",\n  \"Polygender\",\n  \"T* man\",\n  \"T* woman\",\n  \"Trans female\",\n  \"Trans male\",\n  \"Trans man\",\n  \"Trans person\",\n  \"Trans woman\",\n  \"Trans\",\n  \"Transexual female\",\n  \"Transexual male\",\n  \"Transexual man\",\n  \"Transexual person\",\n  \"Transexual woman\",\n  \"Transexual\",\n  \"Transgender female\",\n  \"Transgender person\",\n  \"Transmasculine\",\n  \"Trigender\",\n  \"Two* person\",\n  \"Two-spirit person\",\n  \"Two-spirit\",\n  \"Woman\",\n  \"Xenogender\",\n];\n","export const JOBS_AREAS = [\n  \"Supervisor\",\n  \"Associate\",\n  \"Executive\",\n  \"Liaison\",\n  \"Officer\",\n  \"Manager\",\n  \"Engineer\",\n  \"Specialist\",\n  \"Director\",\n  \"Coordinator\",\n  \"Administrator\",\n  \"Architect\",\n  \"Analyst\",\n  \"Designer\",\n  \"Planner\",\n  \"Orchestrator\",\n  \"Technician\",\n  \"Developer\",\n  \"Producer\",\n  \"Consultant\",\n  \"Assistant\",\n  \"Facilitator\",\n  \"Agent\",\n  \"Representative\",\n  \"Strategist\",\n];\n\nexport const JOB_LEVELS = [\n  \"Lead\",\n  \"Senior\",\n  \"Direct\",\n  \"Corporate\",\n  \"Dynamic\",\n  \"Future\",\n  \"Product\",\n  \"National\",\n  \"Regional\",\n  \"District\",\n  \"Central\",\n  \"Global\",\n  \"Customer\",\n  \"Investor\",\n  \"Dynamic\",\n  \"International\",\n  \"Legacy\",\n  \"Forward\",\n  \"Internal\",\n  \"Human\",\n  \"Chief\",\n  \"Principal\",\n];\n","export const LANGUAGES = [\n  \"Afrikaans\",\n  \"Amharic\",\n  \"Arabic\",\n  \"Azerbaijani\",\n  \"Byelorussian\",\n  \"Bulgarian\",\n  \"Bengali,Bangla\",\n  \"Bosnian\",\n  \"Catalan\",\n  \"Cebuano\",\n  \"Corsican\",\n  \"Czech\",\n  \"Welsh\",\n  \"Danish\",\n  \"German\",\n  \"Greek\",\n  \"English\",\n  \"Esperanto\",\n  \"Spanish\",\n  \"Estonian\",\n  \"Basque\",\n  \"Persian\",\n  \"Finnish\",\n  \"French\",\n  \"Frisian\",\n  \"Irish\",\n  \"Gaelic (Scots Gaelic)\",\n  \"Galician\",\n  \"Gujarati\",\n  \"Hausa\",\n  \"Hindi\",\n  \"Hmong\",\n  \"Croatian\",\n  \"Haitian Creole\",\n  \"Hungarian\",\n  \"Armenian\",\n  \"Indonesian\",\n  \"Igbo\",\n  \"Icelandic\",\n  \"Italian\",\n  \"Hebrew\",\n  \"Japanese\",\n  \"Javanese\",\n  \"Georgian\",\n  \"Kazakh\",\n  \"Cambodian\",\n  \"Kannada\",\n  \"Korean\",\n  \"Kurdish\",\n  \"Kirghiz\",\n  \"Latin\",\n  \"Luxembourgish\",\n  \"Laothian\",\n  \"Lithuanian\",\n  \"Latvian,Lettish\",\n  \"Malagasy\",\n  \"Maori\",\n  \"Macedonian\",\n  \"Malayalam\",\n  \"Mongolian\",\n  \"Marathi\",\n  \"Malay\",\n  \"Maltese\",\n  \"Burmese\",\n  \"Nepali\",\n  \"Dutch\",\n  \"Norwegian\",\n  \"Nyanja\",\n  \"Punjabi\",\n  \"Polish\",\n  \"Pashto,Pushto\",\n  \"Portuguese\",\n  \"Romanian\",\n  \"Russian\",\n  \"Sindhi\",\n  \"Singhalese\",\n  \"Slovak\",\n  \"Slovenian\",\n  \"Samoan\",\n  \"Shona\",\n  \"Somali\",\n  \"Albanian\",\n  \"Serbian\",\n  \"Sesotho\",\n  \"Sundanese\",\n  \"Swedish\",\n  \"Swahili\",\n  \"Tamil\",\n  \"Tegulu\",\n  \"Tajik\",\n  \"Thai\",\n  \"Turkish\",\n  \"Ukrainian\",\n  \"Urdu\",\n  \"Uzbek\",\n  \"Vietnamese\",\n  \"Xhosa\",\n  \"Yiddish\",\n  \"Yoruba\",\n  \"Chinese\",\n  \"Zulu\",\n];\n","export const PREFIXES = {\n  male: [\"Mr.\", \"Mrs.\", \"Dr.\"],\n  female: [\"Ms.\", \"Miss\"],\n};\n","import { SPANISH_NAMES } from \"./spanish\";\nimport { ENGLISH_NAMES } from \"./english\";\nimport { GENDERS as G } from \"./genders\";\nimport { JOBS_AREAS, JOB_LEVELS } from \"./jobs\";\nimport { LANGUAGES } from \"./language\";\nimport { PREFIXES } from \"./prefix\";\n\nexport interface ILanguageNames {\n  male: string[];\n  female: string[];\n  lastNames: string[];\n}\n\nexport const NAMES = { es: SPANISH_NAMES, en: ENGLISH_NAMES };\nexport const GENDERS = G;\nexport const JOBS = {\n  JOBS_AREAS,\n  JOB_LEVELS,\n};\nexport { LANGUAGES, PREFIXES };\n","export const ZODIAC_SIGN = [\n  \"Aquarius\",\n  \"Pisces\",\n  \"Aries\",\n  \"Taurus\",\n  \"Gemini\",\n  \"Cancer\",\n  \"Leo\",\n  \"Virgo\",\n  \"Libra\",\n  \"Scorpio\",\n  \"Sagittarius\",\n  \"Capricorn\",\n];\n","import {\n  ILanguageNames,\n  NAMES,\n  GENDERS,\n  JOBS,\n  LANGUAGES,\n  PREFIXES,\n} from \"./constants\";\nimport { ChacaUtils } from \"../../core/utils\";\nimport { DatatypeModule } from \"../datatype\";\nimport { ZODIAC_SIGN } from \"./constants/zodiac\";\n\nexport type AllLanguages = \"es\" | \"en\";\n\nexport type LangugeProps = {\n  language?: AllLanguages;\n};\n\nexport type Sex = \"male\" | \"female\";\n\nexport type NameProps = {\n  language?: AllLanguages;\n  sex?: Sex;\n};\n\nexport type SexProps = {\n  sex?: Sex;\n};\n\nexport class PersonModule {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n  ) {}\n\n  readonly constants = {\n    jobLevels: JOBS.JOB_LEVELS,\n    jobAreas: JOBS.JOBS_AREAS,\n    genders: GENDERS,\n    names: NAMES,\n    languages: LANGUAGES,\n    prefixes: PREFIXES,\n    zodiacSigns: ZODIAC_SIGN,\n    sexs: [\"Male\", \"Female\"],\n  };\n\n  /**\n   * @example\n   * modules.person.language() // 'Georgian'\n   *\n   * @returns string\n   */\n  language(): string {\n    return this.utils.oneOfArray(this.constants.languages);\n  }\n\n  /**\n   * Returns a Job Level\n   * @example modules.person.jobLevel() // 'Investor'\n   * @returns string\n   */\n  jobLevel(): string {\n    return this.utils.oneOfArray(JOBS.JOB_LEVELS);\n  }\n\n  /**\n   * Returns a Job Area\n   * @example modules.person.jobArea() // 'Supervisor'\n   * @returns string\n   */\n  jobArea(): string {\n    return this.utils.oneOfArray(JOBS.JOBS_AREAS);\n  }\n\n  /**\n   * Returns a person gender\n   * @example modules.person.gender() // 'Bigender'\n   * @returns string\n   */\n  gender(): string {\n    return this.utils.oneOfArray(this.constants.genders);\n  }\n\n  /**\n   * Returns a person sex\n   * @example modules.person.sex() // 'Male'\n   * @returns `Male` | `Female`\n   */\n  sex(): string {\n    return this.utils.oneOfArray(this.constants.sexs);\n  }\n\n  /**\n   * Returns a first name from a selected lenguage\n   * @param args.language (`'en'` | `'es'`). Default `'en'`\n   * @param args.sex Person name sex (`'male'` | `'female'`)\n   * @example modules.person.firstName() // 'Juan'\n   * @returns string\n   */\n  firstName({ language, sex }: NameProps = {}): string {\n    return this.utils.oneOfArray(\n      this.filterBySex(this.filterNameByLanguage(language), sex),\n    );\n  }\n\n  /**\n   * Returns a last name from a selected lenguage\n   * @param args.language (`en` | `es`). Default `en`\n   * @example modules.person.lastName() // 'Scott'\n   * @returns string\n   */\n  lastName({ language }: LangugeProps = {}): string {\n    return this.utils.oneOfArray(this.filterNameByLanguage(language).lastNames);\n  }\n\n  /**\n   * Returns a full name from a selected lenguage\n   * @param args.language (`en` | `es`). Default `en`\n   * @param args.sex (`male` | `female`)\n   * @example\n   * modules.person.fullName() // Schema\n   * modules.person.fullName() // 'Juan Rodriguez Perez'\n   * @returns string\n   */\n  fullName({ language, sex: isex }: NameProps = {}) {\n    const lan = this.filterNameByLanguage(language);\n\n    const sex = isex\n      ? isex\n      : (this.utils.oneOfArray([\"male\", \"female\"]) as Sex);\n\n    const firstName = this.utils.oneOfArray(this.filterBySex(lan, sex));\n    const middleName = this.datatypeModule.boolean()\n      ? this.utils.oneOfArray(this.filterBySex(lan, sex))\n      : undefined;\n    const lastNameFirst = this.utils.oneOfArray(lan.lastNames);\n    const lastNameSecond = this.utils.oneOfArray(lan.lastNames);\n\n    const fullName = [\n      firstName,\n      middleName,\n      lastNameFirst,\n      lastNameSecond,\n    ].filter((n) => n !== undefined);\n\n    return fullName.join(\" \");\n  }\n\n  /**\n   * Returns a random zodiac sign.\n   *\n   * @example\n   * modules.person.zodiacSign() // 'Pisces'\n   */\n  zodiacSign(): string {\n    return this.utils.oneOfArray(ZODIAC_SIGN);\n  }\n\n  /**\n   * Returns a random name prefix\n   * @param args.sex Sex of the person. (`male` | `female`)\n   * @example modules.person.prefix() // 'Ms.'\n   * @returns string\n   */\n  prefix({ sex: isex }: SexProps = {}) {\n    const sex = isex ? isex : undefined;\n    const all = [\n      ...this.constants.prefixes.male,\n      ...this.constants.prefixes.female,\n    ];\n\n    if (sex) {\n      if (sex === \"male\") {\n        return this.utils.oneOfArray(this.constants.prefixes.male);\n      } else if (sex === \"female\") {\n        return this.utils.oneOfArray(this.constants.prefixes.female);\n      } else {\n        return this.utils.oneOfArray(all);\n      }\n    } else {\n      return this.utils.oneOfArray(all);\n    }\n  }\n\n  private filterNameByLanguage(\n    language: AllLanguages | undefined,\n  ): ILanguageNames {\n    if (language && typeof language === \"string\") {\n      const nameSelected = NAMES[language];\n      if (nameSelected) return nameSelected;\n      else return NAMES[\"en\"];\n    } else return NAMES[\"en\"];\n  }\n\n  private filterBySex(nameSel: ILanguageNames, sex: Sex | undefined): string[] {\n    if (sex && typeof sex === \"string\") {\n      const selSex = nameSel[sex];\n      if (selSex) return selSex;\n      else return [...nameSel.male, ...nameSel.female];\n    } else return [...nameSel.male, ...nameSel.female];\n  }\n}\n","export const BEAR = [\n  \"Giant panda\",\n  \"Spectacled bear\",\n  \"Sun bear\",\n  \"Sloth bear\",\n  \"American black bear\",\n  \"Asian black bear\",\n  \"Brown bear\",\n  \"Polar bear\",\n];\n","export const CAT = [\n  \"Abyssinian\",\n  \"American Bobtail\",\n  \"American Curl\",\n  \"American Shorthair\",\n  \"American Wirehair\",\n  \"Balinese\",\n  \"Bengal\",\n  \"Birman\",\n  \"Bombay\",\n  \"British Shorthair\",\n  \"Burmese\",\n  \"Chartreux\",\n  \"Chausie\",\n  \"Cornish Rex\",\n  \"Devon Rex\",\n  \"Donskoy\",\n  \"Egyptian Mau\",\n  \"Exotic Shorthair\",\n  \"Havana\",\n  \"Highlander\",\n  \"Himalayan\",\n  \"Japanese Bobtail\",\n  \"Korat\",\n  \"Kurilian Bobtail\",\n  \"LaPerm\",\n  \"Maine Coon\",\n  \"Manx\",\n  \"Minskin\",\n  \"Munchkin\",\n  \"Nebelung\",\n  \"Norwegian Forest Cat\",\n  \"Ocicat\",\n  \"Ojos Azules\",\n  \"Oriental\",\n  \"Persian\",\n  \"Peterbald\",\n  \"Pixiebob\",\n  \"Ragdoll\",\n  \"Russian Blue\",\n  \"Savannah\",\n  \"Scottish Fold\",\n  \"Selkirk Rex\",\n  \"Serengeti\",\n  \"Siberian\",\n  \"Siamese\",\n  \"Singapura\",\n  \"Snowshoe\",\n  \"Sokoke\",\n  \"Somali\",\n  \"Sphynx\",\n  \"Thai\",\n  \"Tonkinese\",\n  \"Toyger\",\n  \"Turkish Angora\",\n  \"Turkish Van\",\n];\n","export const CETACEAN = [\n  \"Blue Whale\",\n  \"Fin Whale\",\n  \"Sei Whale\",\n  \"Sperm Whale\",\n  \"Bryde’s whale\",\n  \"Omura’s whale\",\n  \"Humpback whale\",\n  \"Long-Beaked Common Dolphin\",\n  \"Short-Beaked Common Dolphin\",\n  \"Bottlenose Dolphin\",\n  \"Indo-Pacific Bottlenose Dolphin\",\n  \"Northern Rightwhale Dolphin\",\n  \"Southern Rightwhale Dolphin\",\n  \"Tucuxi\",\n  \"Costero\",\n  \"Indo-Pacific Hump-backed Dolphin\",\n  \"Chinese White Dolphin\",\n  \"Atlantic Humpbacked Dolphin\",\n  \"Atlantic Spotted Dolphin\",\n  \"Clymene Dolphin\",\n  \"Pantropical Spotted Dolphin\",\n  \"Spinner Dolphin\",\n  \"Striped Dolphin\",\n  \"Rough-Toothed Dolphin\",\n  \"Chilean Dolphin\",\n  \"Commerson’s Dolphin\",\n  \"Heaviside’s Dolphin\",\n  \"Hector’s Dolphin\",\n  \"Risso’s Dolphin\",\n  \"Fraser’s Dolphin\",\n  \"Atlantic White-Sided Dolphin\",\n  \"Dusky Dolphin\",\n  \"Hourglass Dolphin\",\n  \"Pacific White-Sided Dolphin\",\n  \"Peale’s Dolphin\",\n  \"White-Beaked Dolphin\",\n  \"Australian Snubfin Dolphin\",\n  \"Irrawaddy Dolphin\",\n  \"Melon-headed Whale\",\n  \"Killer Whale (Orca)\",\n  \"Pygmy Killer Whale\",\n  \"False Killer Whale\",\n  \"Long-finned Pilot Whale\",\n  \"Short-finned Pilot Whale\",\n  \"Guiana Dolphin\",\n  \"Burrunan Dolphin\",\n  \"Australian humpback Dolphin\",\n  \"Amazon River Dolphin\",\n  \"Chinese River Dolphin\",\n  \"Ganges River Dolphin\",\n  \"La Plata Dolphin\",\n  \"Southern Bottlenose Whale\",\n  \"Longman's Beaked Whale\",\n  \"Arnoux's Beaked Whale\",\n];\n","export const COW = [\n  \"Aberdeen Angus\",\n  \"Abergele\",\n  \"Abigar\",\n  \"Abondance\",\n  \"Abyssinian Shorthorned Zebu\",\n  \"Aceh\",\n  \"Achham\",\n  \"Adamawa\",\n  \"Adaptaur\",\n  \"Afar\",\n  \"Africangus\",\n  \"Afrikaner\",\n  \"Agerolese\",\n  \"Alambadi\",\n  \"Alatau\",\n  \"Albanian\",\n  \"Albera\",\n  \"Alderney\",\n  \"Alentejana\",\n  \"Aleutian wild cattle\",\n  \"Aliad Dinka\",\n  \"Alistana-Sanabresa\",\n  \"Allmogekor\",\n  \"Alur\",\n  \"American\",\n  \"American Angus\",\n  \"American Beef Friesian\",\n  \"American Brown Swiss\",\n  \"American Milking Devon\",\n  \"American White Park\",\n  \"Amerifax\",\n  \"Amrit Mahal\",\n  \"Amsterdam Island cattle\",\n  \"Anatolian Black\",\n  \"Andalusian Black\",\n  \"Andalusian Blond\",\n  \"Andalusian Grey\",\n  \"Angeln\",\n  \"Angoni\",\n  \"Ankina\",\n  \"Ankole\",\n  \"Ankole-Watusi\",\n  \"Aracena\",\n  \"Arado\",\n  \"Argentine Criollo\",\n  \"Argentine Friesian\",\n  \"Armorican\",\n  \"Arouquesa\",\n  \"Arsi\",\n  \"Asturian Mountain\",\n  \"Asturian Valley\",\n  \"Aubrac\",\n  \"Aulie-Ata\",\n  \"Aure et Saint-Girons\",\n  \"Australian Braford\",\n  \"Australian Brangus\",\n  \"Australian Charbray\",\n  \"Australian Friesian Sahiwal\",\n  \"Australian Lowline\",\n  \"Australian Milking Zebu\",\n  \"Australian Shorthorn\",\n  \"Austrian Simmental\",\n  \"Austrian Yellow\",\n  \"Avétonou\",\n  \"Avileña-Negra Ibérica\",\n  \"Aweil Dinka\",\n  \"Ayrshire\",\n  \"Azaouak\",\n  \"Azebuado\",\n  \"Azerbaijan Zebu\",\n  \"Azores\",\n  \"Bedit\",\n  \"Breed\",\n  \"Bachaur cattle\",\n  \"Baherie cattle\",\n  \"Bakosi cattle\",\n  \"Balancer\",\n  \"Baoule\",\n  \"Bargur cattle\",\n  \"Barrosã\",\n  \"Barzona\",\n  \"Bazadaise\",\n  \"Beef Freisian\",\n  \"Beefalo\",\n  \"Beefmaker\",\n  \"Beefmaster\",\n  \"Begayt\",\n  \"Belgian Blue\",\n  \"Belgian Red\",\n  \"Belgian Red Pied\",\n  \"Belgian White-and-Red\",\n  \"Belmont Red\",\n  \"Belted Galloway\",\n  \"Bernese\",\n  \"Berrenda cattle\",\n  \"Betizu\",\n  \"Bianca Modenese\",\n  \"Blaarkop\",\n  \"Black Angus\",\n  \"Black Baldy\",\n  \"Black Hereford\",\n  \"Blanca Cacereña\",\n  \"Blanco Orejinegro BON\",\n  \"Blonde d'Aquitaine\",\n  \"Blue Albion\",\n  \"Blue Grey\",\n  \"Bohuskulla\",\n  \"Bonsmara\",\n  \"Boran\",\n  \"Boškarin\",\n  \"Braford\",\n  \"Brahman\",\n  \"Brahmousin\",\n  \"Brangus\",\n  \"Braunvieh\",\n  \"Brava\",\n  \"British White\",\n  \"British Friesian\",\n  \"Brown Carpathian\",\n  \"Brown Caucasian\",\n  \"Brown Swiss\",\n  \"Bue Lingo\",\n  \"Burlina\",\n  \"Buša cattle\",\n  \"Butana cattle\",\n  \"Bushuyev\",\n  \"Cedit\",\n  \"Breed\",\n  \"Cachena\",\n  \"Caldelana\",\n  \"Camargue\",\n  \"Campbell Island cattle\",\n  \"Canadian Speckle Park\",\n  \"Canadienne\",\n  \"Canaria\",\n  \"Canchim\",\n  \"Caracu\",\n  \"Cárdena Andaluza\",\n  \"Carinthian Blondvieh\",\n  \"Carora\",\n  \"Charbray\",\n  \"Charolais\",\n  \"Chateaubriand\",\n  \"Chiangus\",\n  \"Chianina\",\n  \"Chillingham cattle\",\n  \"Chinese Black Pied\",\n  \"Cholistani\",\n  \"Coloursided White Back\",\n  \"Commercial\",\n  \"Corriente\",\n  \"Corsican cattle\",\n  \"Costeño con Cuernos\",\n  \"Crioulo Lageano\",\n  \"Dedit\",\n  \"Breed\",\n  \"Dajal\",\n  \"Dangi cattle\",\n  \"Danish Black-Pied\",\n  \"Danish Jersey\",\n  \"Danish Red\",\n  \"Deep Red cattle\",\n  \"Deoni\",\n  \"Devon\",\n  \"Dexter cattle\",\n  \"Dhanni\",\n  \"Doayo cattle\",\n  \"Doela\",\n  \"Drakensberger\",\n  \"Dølafe\",\n  \"Droughtmaster\",\n  \"Dulong'\",\n  \"Dutch Belted\",\n  \"Dutch Friesian\",\n  \"Dwarf Lulu\",\n  \"Eedit\",\n  \"Breed\",\n  \"East Anatolian Red\",\n  \"Eastern Finncattle\",\n  \"Eastern Red Polled\",\n  \"Enderby Island cattle\",\n  \"English Longhorn\",\n  \"Ennstaler Bergscheck\",\n  \"Estonian Holstein\",\n  \"Estonian Native\",\n  \"Estonian Red cattle\",\n  \"Évolène cattle\",\n  \"Fedit\",\n  \"Breed\",\n  \"Fēng Cattle\",\n  \"Finnish Ayrshire\",\n  \"Finncattle\",\n  \"Finnish Holstein-Friesian\",\n  \"Fjäll\",\n  \"Fleckvieh\",\n  \"Florida Cracker cattle\",\n  \"Fogera\",\n  \"French Simmental\",\n  \"Fribourgeoise\",\n  \"Friesian Red and White\",\n  \"Fulani Sudanese\",\n  \"Gedit\",\n  \"Breed\",\n  \"Galician Blond\",\n  \"Galloway cattle\",\n  \"Gangatiri\",\n  \"Gaolao\",\n  \"Garvonesa\",\n  \"Gascon cattle\",\n  \"Gelbvieh\",\n  \"Georgian Mountain cattle\",\n  \"German Angus\",\n  \"German Black Pied cattle\",\n  \"German Black Pied Dairy\",\n  \"German Red Pied\",\n  \"Gir\",\n  \"Glan cattle\",\n  \"Gloucester\",\n  \"Gobra\",\n  \"Greek Shorthorn\",\n  \"Greek Steppe\",\n  \"Greyman cattle\",\n  \"Gudali\",\n  \"Guernsey cattle\",\n  \"Guzerá\",\n  \"Hedit\",\n  \"Breed\",\n  \"Hallikar4\",\n  \"Hanwoo\",\n  \"Hariana cattle\",\n  \"Hartón del Valle\",\n  \"Harzer Rotvieh\",\n  \"Hays Converter\",\n  \"Heck cattle\",\n  \"Hereford\",\n  \"Herens\",\n  \"Hybridmaster\",\n  \"Highland cattle\",\n  \"Hinterwald\",\n  \"Holando-Argentino\",\n  \"Holstein Friesian cattle\",\n  \"Horro\",\n  \"Huáng Cattle\",\n  \"Hungarian Grey\",\n  \"Iedit\",\n  \"Breed\",\n  \"Iberian cattle\",\n  \"Icelandic\",\n  \"Illawarra cattle\",\n  \"Improved Red and White\",\n  \"Indo-Brazilian\",\n  \"Irish Moiled\",\n  \"Israeli Holstein\",\n  \"Israeli Red\",\n  \"Istoben cattle\",\n  \"Istrian cattle\",\n  \"Jedit\",\n  \"Breed\",\n  \"Jamaica Black\",\n  \"Jamaica Hope\",\n  \"Jamaica Red\",\n  \"Japanese Brown\",\n  \"Jarmelista\",\n  \"Javari cattle\",\n  \"Jersey cattle\",\n  \"Jutland cattle\",\n  \"Kedit\",\n  \"Breed\",\n  \"Kabin Buri cattle\",\n  \"Kalmyk cattle\",\n  \"Kangayam\",\n  \"Kankrej\",\n  \"Kamphaeng Saen cattle\",\n  \"Karan Swiss\",\n  \"Kasaragod Dwarf cattle\",\n  \"Kathiawadi\",\n  \"Kazakh Whiteheaded\",\n  \"Kenana cattle\",\n  \"Kenkatha cattle\",\n  \"Kerry cattle\",\n  \"Kherigarh\",\n  \"Khillari cattle\",\n  \"Kholomogory\",\n  \"Korat Wagyu\",\n  \"Kostroma cattle\",\n  \"Krishna Valley cattle\",\n  \"Kuri\",\n  \"Kurgan cattle\",\n  \"Ledit\",\n  \"Breed\",\n  \"La Reina cattle\",\n  \"Lakenvelder cattle\",\n  \"Lampurger\",\n  \"Latvian Blue\",\n  \"Latvian Brown\",\n  \"Latvian Danish Red\",\n  \"Lebedyn\",\n  \"Levantina\",\n  \"Limia cattle\",\n  \"Limousin\",\n  \"Limpurger\",\n  \"Lincoln Red\",\n  \"Lineback\",\n  \"Lithuanian Black-and-White\",\n  \"Lithuanian Light Grey\",\n  \"Lithuanian Red\",\n  \"Lithuanian White-Backed\",\n  \"Lohani cattle\",\n  \"Lourdais\",\n  \"Lucerna cattle\",\n  \"Luing\",\n  \"Medit\",\n  \"Breed\",\n  \"Madagascar Zebu\",\n  \"Madura\",\n  \"Maine-Anjou\",\n  \"Malnad Gidda\",\n  \"Malvi\",\n  \"Mandalong Special\",\n  \"Mantequera Leonesa\",\n  \"Maramureş Brown\",\n  \"Marchigiana\",\n  \"Maremmana\",\n  \"Marinhoa\",\n  \"Maronesa\",\n  \"Masai\",\n  \"Mashona\",\n  \"Menorquina\",\n  \"Mertolenga\",\n  \"Meuse-Rhine-Issel\",\n  \"Mewati\",\n  \"Milking Shorthorn\",\n  \"Minhota\",\n  \"Mirandesa\",\n  \"Mirkadim\",\n  \"Mocăniţă\",\n  \"Mollie\",\n  \"Monchina\",\n  \"Mongolian\",\n  \"Montbéliarde\",\n  \"Morucha\",\n  \"Muturu\",\n  \"Murboden\",\n  \"Murnau-Werdenfels\",\n  \"Murray Grey\",\n  \"Nedit\",\n  \"Breed\",\n  \"Nagori\",\n  \"N'Dama\",\n  \"Negra Andaluza\",\n  \"Nelore\",\n  \"Nguni\",\n  \"Nimari\",\n  \"Normande\",\n  \"North Bengal Grey\",\n  \"Northern Finncattle\",\n  \"Northern Shorthorn\",\n  \"Norwegian Red\",\n  \"Oedit]\",\n  \"Breed\",\n  \"Ongole\",\n  \"Original Simmental\",\n  \"Pedit\",\n  \"Breed\",\n  \"Pajuna\",\n  \"Palmera\",\n  \"Pantaneiro\",\n  \"Parda Alpina\",\n  \"Parthenaise\",\n  \"Pasiega\",\n  \"Pembroke\",\n  \"Philippine Native\",\n  \"Pie Rouge des Plaines\",\n  \"Piedmontese cattle\",\n  \"Pineywoods\",\n  \"Pinzgauer\",\n  \"Pirenaica\",\n  \"Podolac\",\n  \"Podolica\",\n  \"Polish Black-and-White\",\n  \"Polish Red\",\n  \"Polled Hereford\",\n  \"Poll Shorthorn\",\n  \"Polled Shorthorn\",\n  \"Ponwar\",\n  \"Preta\",\n  \"Punganur\",\n  \"Pulikulam\",\n  \"Pustertaler Sprinzen\",\n  \"Qedit\",\n  \"Breed\",\n  \"Qinchaun\",\n  \"Queensland Miniature Boran\",\n  \"Redit\",\n  \"Breed\",\n  \"Ramo Grande\",\n  \"Randall\",\n  \"Raramuri Criollo\",\n  \"Rathi\",\n  \"Rätisches Grauvieh\",\n  \"Raya\",\n  \"Red Angus\",\n  \"Red Brangus\",\n  \"Red Chittagong\",\n  \"Red Fulani\",\n  \"Red Gorbatov\",\n  \"Red Holstein\",\n  \"Red Kandhari\",\n  \"Red Mingrelian\",\n  \"Red Poll\",\n  \"Red Polled Østland\",\n  \"Red Sindhi\",\n  \"Retinta\",\n  \"Riggit Galloway\",\n  \"Ringamåla\",\n  \"Rohjan\",\n  \"Romagnola\",\n  \"Romanian Bălţata\",\n  \"Romanian Steppe Gray\",\n  \"Romosinuano\",\n  \"Russian Black Pied\",\n  \"RX3\",\n  \"Sedit\",\n  \"Breed\",\n  \"Sahiwal\",\n  \"Salers\",\n  \"Salorn\",\n  \"Sanga\",\n  \"Sanhe\",\n  \"Santa Cruz\",\n  \"Santa Gertrudis\",\n  \"Sayaguesa\",\n  \"Schwyz\",\n  \"Selembu\",\n  \"Senepol\",\n  \"Serbian Pied\",\n  \"Serbian Steppe\",\n  \"Sheko\",\n  \"Shetland\",\n  \"Shorthorn\",\n  \"Siboney de Cuba\",\n  \"Simbrah\",\n  \"Simford\",\n  \"Simmental\",\n  \"Siri\",\n  \"South Devon\",\n  \"Spanish Fighting Bull\",\n  \"Speckle Park\",\n  \"Square Meater\",\n  \"Sussex\",\n  \"Swedish Friesian\",\n  \"Swedish Polled\",\n  \"Swedish Red Pied\",\n  \"Swedish Red Polled\",\n  \"Swedish Red-and-White\",\n  \"Tedit\",\n  \"Breed\",\n  \"Tabapuã\",\n  \"Tarentaise\",\n  \"Tasmanian Grey\",\n  \"Tauros\",\n  \"Telemark\",\n  \"Texas Longhorn\",\n  \"Texon\",\n  \"Thai Black\",\n  \"Thai Fighting Bull\",\n  \"Thai Friesian\",\n  \"Thai Milking Zebu\",\n  \"Tharparkar\",\n  \"Tswana\",\n  \"Tudanca\",\n  \"Tuli\",\n  \"Tulim\",\n  \"Turkish Grey Steppe\",\n  \"Tux-Zillertal\",\n  \"Tyrol Grey\",\n  \"Uedit\",\n  \"Breed\",\n  \"Umblachery\",\n  \"Ukrainian Grey\",\n  \"Vedit\",\n  \"Breed\",\n  \"Valdostana Castana\",\n  \"Valdostana Pezzata Nera\",\n  \"Valdostana Pezzata Rossa\",\n  \"Väneko\",\n  \"Vaynol\",\n  \"Vechur8\",\n  \"Vestland Fjord\",\n  \"Vestland Red Polled\",\n  \"Vianesa\",\n  \"Volinian Beef\",\n  \"Vorderwald\",\n  \"Vosgienne\",\n  \"Wedit\",\n  \"Breed\",\n  \"Wagyu\",\n  \"Waguli\",\n  \"Wangus\",\n  \"Welsh Black\",\n  \"Western Finncattle\",\n  \"White Cáceres\",\n  \"White Fulani\",\n  \"White Lamphun\",\n  \"White Park\",\n  \"Whitebred Shorthorn\",\n  \"Xedit\",\n  \"Breed\",\n  \"Xingjiang Brown\",\n  \"Yedit\",\n  \"Breed\",\n  \"Yakutian\",\n  \"Yanbian\",\n  \"Yanhuang\",\n  \"Yurino\",\n  \"Zedit\",\n  \"Breed\",\n  \"Żubroń\",\n  \"Zebu\",\n];\n","export const CROCODILIA = [\n  \"Alligator mississippiensis\",\n  \"Chinese Alligator\",\n  \"Black Caiman\",\n  \"Broad-snouted Caiman\",\n  \"Spectacled Caiman\",\n  \"Yacare Caiman\",\n  \"Cuvier’s Dwarf Caiman\",\n  \"Schneider’s Smooth-fronted Caiman\",\n  \"African Slender-snouted Crocodile\",\n  \"American Crocodile\",\n  \"Australian Freshwater Crocodile\",\n  \"Cuban Crocodile\",\n  \"Dwarf Crocodile\",\n  \"Morelet’s Crocodile\",\n  \"Mugger Crocodile\",\n  \"New Guinea Freshwater Crocodile\",\n  \"Nile Crocodile\",\n  \"West African Crocodile\",\n  \"Orinoco Crocodile\",\n  \"Philippine Crocodile\",\n  \"Saltwater Crocodile\",\n  \"Siamese Crocodile\",\n  \"Gharial\",\n  \"Tomistoma\",\n];\n","export const DOG = [\n  \"Affenpinscher\",\n  \"Afghan Hound\",\n  \"Aidi\",\n  \"Airedale Terrier\",\n  \"Akbash\",\n  \"Akita\",\n  \"Alano Español\",\n  \"Alapaha Blue Blood Bulldog\",\n  \"Alaskan Husky\",\n  \"Alaskan Klee Kai\",\n  \"Alaskan Malamute\",\n  \"Alopekis\",\n  \"Alpine Dachsbracke\",\n  \"American Bulldog\",\n  \"American Bully\",\n  \"American Cocker Spaniel\",\n  \"American English Coonhound\",\n  \"American Foxhound\",\n  \"American Hairless Terrier\",\n  \"American Pit Bull Terrier\",\n  \"American Staffordshire Terrier\",\n  \"American Water Spaniel\",\n  \"Andalusian Hound\",\n  \"Anglo-Français de Petite Vénerie\",\n  \"Appenzeller Sennenhund\",\n  \"Ariegeois\",\n  \"Armant\",\n  \"Armenian Gampr dog\",\n  \"Artois Hound\",\n  \"Australian Cattle Dog\",\n  \"Australian Kelpie\",\n  \"Australian Shepherd\",\n  \"Australian Stumpy Tail Cattle Dog\",\n  \"Australian Terrier\",\n  \"Austrian Black and Tan Hound\",\n  \"Austrian Pinscher\",\n  \"Azawakh\",\n  \"Bakharwal dog\",\n  \"Banjara Hound\",\n  \"Barbado da Terceira\",\n  \"Barbet\",\n  \"Basenji\",\n  \"Basque Shepherd Dog\",\n  \"Basset Artésien Normand\",\n  \"Basset Bleu de Gascogne\",\n  \"Basset Fauve de Bretagne\",\n  \"Basset Hound\",\n  \"Bavarian Mountain Hound\",\n  \"Beagle\",\n  \"Beagle-Harrier\",\n  \"Belgian Shepherd\",\n  \"Bearded Collie\",\n  \"Beauceron\",\n  \"Bedlington Terrier\",\n  \"Bergamasco Shepherd\",\n  \"Berger Picard\",\n  \"Bernese Mountain Dog\",\n  \"Bhotia\",\n  \"Bichon Frisé\",\n  \"Billy\",\n  \"Black and Tan Coonhound\",\n  \"Black Norwegian Elkhound\",\n  \"Black Russian Terrier\",\n  \"Black Mouth Cur\",\n  \"Bloodhound\",\n  \"Blue Lacy\",\n  \"Blue Picardy Spaniel\",\n  \"Bluetick Coonhound\",\n  \"Boerboel\",\n  \"Bohemian Shepherd\",\n  \"Bolognese\",\n  \"Border Collie\",\n  \"Border Terrier\",\n  \"Borzoi\",\n  \"Bosnian Coarse-haired Hound\",\n  \"Boston Terrier\",\n  \"Bouvier des Ardennes\",\n  \"Bouvier des Flandres\",\n  \"Boxer\",\n  \"Boykin Spaniel\",\n  \"Bracco Italiano\",\n  \"Braque d'Auvergne\",\n  \"Braque de l'Ariège\",\n  \"Braque du Bourbonnais\",\n  \"Braque Francais\",\n  \"Braque Saint-Germain\",\n  \"Briard\",\n  \"Briquet Griffon Vendéen\",\n  \"Brittany\",\n  \"Broholmer\",\n  \"Bruno Jura Hound\",\n  \"Brussels Griffon\",\n  \"Bucovina Shepherd Dog\",\n  \"Bull Arab\",\n  \"Bull Terrier\",\n  \"Bulldog\",\n  \"Bullmastiff\",\n  \"Bully Kutta\",\n  \"Burgos Pointer\",\n  \"Cairn Terrier\",\n  \"Campeiro Bulldog\",\n  \"Canaan Dog\",\n  \"Canadian Eskimo Dog\",\n  \"Cane Corso\",\n  \"Cane di Oropa\",\n  \"Cane Paratore\",\n  \"Cantabrian Water Dog\",\n  \"Can de Chira\",\n  \"Cão da Serra de Aires\",\n  \"Cão de Castro Laboreiro\",\n  \"Cão de Gado Transmontano\",\n  \"Cão Fila de São Miguel\",\n  \"Cardigan Welsh Corgi\",\n  \"Carea Castellano Manchego\",\n  \"Carolina Dog\",\n  \"Carpathian Shepherd Dog\",\n  \"Catahoula Leopard Dog\",\n  \"Catalan Sheepdog\",\n  \"Caucasian Shepherd Dog\",\n  \"Cavalier King Charles Spaniel\",\n  \"Central Asian Shepherd Dog\",\n  \"Cesky Fousek\",\n  \"Cesky Terrier\",\n  \"Chesapeake Bay Retriever\",\n  \"Chien Français Blanc et Noir\",\n  \"Chien Français Blanc et Orange\",\n  \"Chien Français Tricolore\",\n  \"Chihuahua\",\n  \"Chilean Terrier\",\n  \"Chinese Chongqing Dog\",\n  \"Chinese Crested Dog\",\n  \"Chinook\",\n  \"Chippiparai\",\n  \"Chongqing dog\",\n  \"Chortai\",\n  \"Chow Chow\",\n  \"Cimarrón Uruguayo\",\n  \"Cirneco dell'Etna\",\n  \"Clumber Spaniel\",\n  \"Colombian fino hound\",\n  \"Coton de Tulear\",\n  \"Cretan Hound\",\n  \"Croatian Sheepdog\",\n  \"Curly-Coated Retriever\",\n  \"Cursinu\",\n  \"Czechoslovakian Wolfdog\",\n  \"Dachshund\",\n  \"Dalmatian\",\n  \"Dandie Dinmont Terrier\",\n  \"Danish-Swedish Farmdog\",\n  \"Denmark Feist\",\n  \"Dingo\",\n  \"Doberman Pinscher\",\n  \"Dogo Argentino\",\n  \"Dogo Guatemalteco\",\n  \"Dogo Sardesco\",\n  \"Dogue Brasileiro\",\n  \"Dogue de Bordeaux\",\n  \"Drentse Patrijshond\",\n  \"Drever\",\n  \"Dunker\",\n  \"Dutch Shepherd\",\n  \"Dutch Smoushond\",\n  \"East Siberian Laika\",\n  \"East European Shepherd\",\n  \"English Cocker Spaniel\",\n  \"English Foxhound\",\n  \"English Mastiff\",\n  \"English Setter\",\n  \"English Shepherd\",\n  \"English Springer Spaniel\",\n  \"English Toy Terrier\",\n  \"Entlebucher Mountain Dog\",\n  \"Estonian Hound\",\n  \"Estrela Mountain Dog\",\n  \"Eurasier\",\n  \"Field Spaniel\",\n  \"Fila Brasileiro\",\n  \"Finnish Hound\",\n  \"Finnish Lapphund\",\n  \"Finnish Spitz\",\n  \"Flat-Coated Retriever\",\n  \"French Bulldog\",\n  \"French Spaniel\",\n  \"Galgo Español\",\n  \"Galician Shepherd Dog\",\n  \"Garafian Shepherd\",\n  \"Gascon Saintongeois\",\n  \"Georgian Shepherd\",\n  \"German Hound\",\n  \"German Longhaired Pointer\",\n  \"German Pinscher\",\n  \"German Roughhaired Pointer\",\n  \"German Shepherd Dog\",\n  \"German Shorthaired Pointer\",\n  \"German Spaniel\",\n  \"German Spitz\",\n  \"German Wirehaired Pointer\",\n  \"Giant Schnauzer\",\n  \"Glen of Imaal Terrier\",\n  \"Golden Retriever\",\n  \"Gończy Polski\",\n  \"Gordon Setter\",\n  \"Grand Anglo-Français Blanc et Noir\",\n  \"Grand Anglo-Français Blanc et Orange\",\n  \"Grand Anglo-Français Tricolore\",\n  \"Grand Basset Griffon Vendéen\",\n  \"Grand Bleu de Gascogne\",\n  \"Grand Griffon Vendéen\",\n  \"Great Dane\",\n  \"Greater Swiss Mountain Dog\",\n  \"Greek Harehound\",\n  \"Greek Shepherd\",\n  \"Greenland Dog\",\n  \"Greyhound\",\n  \"Griffon Bleu de Gascogne\",\n  \"Griffon Fauve de Bretagne\",\n  \"Griffon Nivernais\",\n  \"Gull Dong\",\n  \"Gull Terrier\",\n  \"Hällefors Elkhound\",\n  \"Hamiltonstövare\",\n  \"Hanover Hound\",\n  \"Harrier\",\n  \"Havanese\",\n  \"Hierran Wolfdog\",\n  \"Hokkaido\",\n  \"Hovawart\",\n  \"Huntaway\",\n  \"Hygen Hound\",\n  \"Ibizan Hound\",\n  \"Icelandic Sheepdog\",\n  \"Indian pariah dog\",\n  \"Indian Spitz\",\n  \"Irish Red and White Setter\",\n  \"Irish Setter\",\n  \"Irish Terrier\",\n  \"Irish Water Spaniel\",\n  \"Irish Wolfhound\",\n  \"Istrian Coarse-haired Hound\",\n  \"Istrian Shorthaired Hound\",\n  \"Italian Greyhound\",\n  \"Jack Russell Terrier\",\n  \"Jagdterrier\",\n  \"Japanese Chin\",\n  \"Japanese Spitz\",\n  \"Japanese Terrier\",\n  \"Jindo\",\n  \"Jonangi\",\n  \"Kai Ken\",\n  \"Kaikadi\",\n  \"Kangal Shepherd Dog\",\n  \"Kanni\",\n  \"Karakachan dog\",\n  \"Karelian Bear Dog\",\n  \"Kars\",\n  \"Karst Shepherd\",\n  \"Keeshond\",\n  \"Kerry Beagle\",\n  \"Kerry Blue Terrier\",\n  \"King Charles Spaniel\",\n  \"King Shepherd\",\n  \"Kintamani\",\n  \"Kishu\",\n  \"Kokoni\",\n  \"Kombai\",\n  \"Komondor\",\n  \"Kooikerhondje\",\n  \"Koolie\",\n  \"Koyun dog\",\n  \"Kromfohrländer\",\n  \"Kuchi\",\n  \"Kuvasz\",\n  \"Labrador Retriever\",\n  \"Lagotto Romagnolo\",\n  \"Lakeland Terrier\",\n  \"Lancashire Heeler\",\n  \"Landseer\",\n  \"Lapponian Herder\",\n  \"Large Münsterländer\",\n  \"Leonberger\",\n  \"Levriero Sardo\",\n  \"Lhasa Apso\",\n  \"Lithuanian Hound\",\n  \"Löwchen\",\n  \"Lupo Italiano\",\n  \"Mackenzie River Husky\",\n  \"Magyar agár\",\n  \"Mahratta Greyhound\",\n  \"Maltese\",\n  \"Manchester Terrier\",\n  \"Maremmano-Abruzzese Sheepdog\",\n  \"McNab dog\",\n  \"Miniature American Shepherd\",\n  \"Miniature Bull Terrier\",\n  \"Miniature Fox Terrier\",\n  \"Miniature Pinscher\",\n  \"Miniature Schnauzer\",\n  \"Molossus of Epirus\",\n  \"Montenegrin Mountain Hound\",\n  \"Mountain Cur\",\n  \"Mountain Feist\",\n  \"Mucuchies\",\n  \"Mudhol Hound\",\n  \"Mudi\",\n  \"Neapolitan Mastiff\",\n  \"New Guinea Singing Dog\",\n  \"New Zealand Heading Dog\",\n  \"Newfoundland\",\n  \"Norfolk Terrier\",\n  \"Norrbottenspets\",\n  \"Northern Inuit Dog\",\n  \"Norwegian Buhund\",\n  \"Norwegian Elkhound\",\n  \"Norwegian Lundehund\",\n  \"Norwich Terrier\",\n  \"Nova Scotia Duck Tolling Retriever\",\n  \"Old Croatian Sighthound\",\n  \"Old Danish Pointer\",\n  \"Old English Sheepdog\",\n  \"Old English Terrier\",\n  \"Olde English Bulldogge\",\n  \"Otterhound\",\n  \"Pachon Navarro\",\n  \"Pampas Deerhound\",\n  \"Paisley Terrier\",\n  \"Papillon\",\n  \"Parson Russell Terrier\",\n  \"Pastore della Lessinia e del Lagorai\",\n  \"Patagonian Sheepdog\",\n  \"Patterdale Terrier\",\n  \"Pekingese\",\n  \"Pembroke Welsh Corgi\",\n  \"Perro Majorero\",\n  \"Perro de Pastor Mallorquin\",\n  \"Perro de Presa Canario\",\n  \"Perro de Presa Mallorquin\",\n  \"Peruvian Inca Orchid\",\n  \"Petit Basset Griffon Vendéen\",\n  \"Petit Bleu de Gascogne\",\n  \"Phalène\",\n  \"Pharaoh Hound\",\n  \"Phu Quoc Ridgeback\",\n  \"Picardy Spaniel\",\n  \"Plummer Terrier\",\n  \"Plott Hound\",\n  \"Podenco Canario\",\n  \"Podenco Valenciano\",\n  \"Pointer\",\n  \"Poitevin\",\n  \"Polish Greyhound\",\n  \"Polish Hound\",\n  \"Polish Lowland Sheepdog\",\n  \"Polish Tatra Sheepdog\",\n  \"Pomeranian\",\n  \"Pont-Audemer Spaniel\",\n  \"Poodle\",\n  \"Porcelaine\",\n  \"Portuguese Podengo\",\n  \"Portuguese Pointer\",\n  \"Portuguese Water Dog\",\n  \"Posavac Hound\",\n  \"Pražský Krysařík\",\n  \"Pshdar Dog\",\n  \"Pudelpointer\",\n  \"Pug\",\n  \"Puli\",\n  \"Pumi\",\n  \"Pungsan Dog\",\n  \"Pyrenean Mastiff\",\n  \"Pyrenean Mountain Dog\",\n  \"Pyrenean Sheepdog\",\n  \"Rafeiro do Alentejo\",\n  \"Rajapalayam\",\n  \"Rampur Greyhound\",\n  \"Rat Terrier\",\n  \"Ratonero Bodeguero Andaluz\",\n  \"Ratonero Mallorquin\",\n  \"Ratonero Murciano de Huerta\",\n  \"Ratonero Valenciano\",\n  \"Redbone Coonhound\",\n  \"Rhodesian Ridgeback\",\n  \"Romanian Mioritic Shepherd Dog\",\n  \"Romanian Raven Shepherd Dog\",\n  \"Rottweiler\",\n  \"Rough Collie\",\n  \"Russian Spaniel\",\n  \"Russian Toy\",\n  \"Russo-European Laika\",\n  \"Saarloos Wolfdog\",\n  \"Sabueso Español\",\n  \"Saint Bernard\",\n  \"Saint Hubert Jura Hound\",\n  \"Saint-Usuge Spaniel\",\n  \"Saluki\",\n  \"Samoyed\",\n  \"Sapsali\",\n  \"Sarabi dog\",\n  \"Šarplaninac\",\n  \"Schapendoes\",\n  \"Schillerstövare\",\n  \"Schipperke\",\n  \"Schweizer Laufhund\",\n  \"Schweizerischer Niederlaufhund\",\n  \"Scottish Deerhound\",\n  \"Scottish Terrier\",\n  \"Sealyham Terrier\",\n  \"Segugio dell'Appennino\",\n  \"Segugio Italiano\",\n  \"Segugio Maremmano\",\n  \"Seppala Siberian Sleddog\",\n  \"Serbian Hound\",\n  \"Serbian Tricolour Hound\",\n  \"Serrano Bulldog\",\n  \"Shar Pei\",\n  \"Shetland Sheepdog\",\n  \"Shiba Inu\",\n  \"Shih Tzu\",\n  \"Shikoku\",\n  \"Shiloh Shepherd\",\n  \"Siberian Husky\",\n  \"Silken Windhound\",\n  \"Silky Terrier\",\n  \"Sinhala Hound\",\n  \"Skye Terrier\",\n  \"Sloughi\",\n  \"Slovakian Wirehaired Pointer\",\n  \"Slovenský Cuvac\",\n  \"Slovenský Kopov\",\n  \"Smalandstövare\",\n  \"Small Greek domestic dog\",\n  \"Small Münsterländer\",\n  \"Smooth Collie\",\n  \"Smooth Fox Terrier\",\n  \"Soft-Coated Wheaten Terrier\",\n  \"South Russian Ovcharka\",\n  \"Spanish Mastiff\",\n  \"Spanish Water Dog\",\n  \"Spinone Italiano\",\n  \"Sporting Lucas Terrier\",\n  \"Sardinian Shepherd Dog\",\n  \"Stabyhoun\",\n  \"Staffordshire Bull Terrier\",\n  \"Standard Schnauzer\",\n  \"Stephens Stock\",\n  \"Styrian Coarse-haired Hound\",\n  \"Sussex Spaniel\",\n  \"Swedish Elkhound\",\n  \"Swedish Lapphund\",\n  \"Swedish Vallhund\",\n  \"Swedish White Elkhound\",\n  \"Taigan\",\n  \"Taiwan Dog\",\n  \"Tamaskan Dog\",\n  \"Teddy Roosevelt Terrier\",\n  \"Telomian\",\n  \"Tenterfield Terrier\",\n  \"Terrier Brasileiro\",\n  \"Thai Bangkaew Dog\",\n  \"Thai Ridgeback\",\n  \"Tibetan Mastiff\",\n  \"Tibetan Spaniel\",\n  \"Tibetan Terrier\",\n  \"Tornjak\",\n  \"Tosa\",\n  \"Toy Fox Terrier\",\n  \"Toy Manchester Terrier\",\n  \"Transylvanian Hound\",\n  \"Treeing Cur\",\n  \"Treeing Feist\",\n  \"Treeing Tennessee Brindle\",\n  \"Treeing Walker Coonhound\",\n  \"Trigg Hound\",\n  \"Tyrolean Hound\",\n  \"Vikhan\",\n  \"Villano de Las Encartaciones\",\n  \"Villanuco de Las Encartaciones\",\n  \"Vizsla\",\n  \"Volpino Italiano\",\n  \"Weimaraner\",\n  \"Welsh Sheepdog\",\n  \"Welsh Springer Spaniel\",\n  \"Welsh Terrier\",\n  \"West Highland White Terrier\",\n  \"West Siberian Laika\",\n  \"Westphalian Dachsbracke\",\n  \"Wetterhoun\",\n  \"Whippet\",\n  \"White Shepherd\",\n  \"White Swiss Shepherd Dog\",\n  \"Wire Fox Terrier\",\n  \"Wirehaired Pointing Griffon\",\n  \"Wirehaired Vizsla\",\n  \"Xiasi Dog\",\n  \"Xoloitzcuintli\",\n  \"Yakutian Laika\",\n  \"Yorkshire Terrier\",\n];\n","export const HORSE = [\n  \"American Albino\",\n  \"Abaco Barb\",\n  \"Abtenauer\",\n  \"Abyssinian\",\n  \"Aegidienberger\",\n  \"Akhal-Teke\",\n  \"Albanian Horse\",\n  \"Altai Horse\",\n  \"Altèr Real\",\n  \"American Cream Draft\",\n  \"American Indian Horse\",\n  \"American Paint Horse\",\n  \"American Quarter Horse\",\n  \"American Saddlebred\",\n  \"American Warmblood\",\n  \"Andalusian Horse\",\n  \"Andravida Horse\",\n  \"Anglo-Arabian\",\n  \"Anglo-Arabo-Sardo\",\n  \"Anglo-Kabarda\",\n  \"Appaloosa\",\n  \"AraAppaloosa\",\n  \"Arabian Horse\",\n  \"Ardennes Horse\",\n  \"Arenberg-Nordkirchen\",\n  \"Argentine Criollo\",\n  \"Asian wild Horse\",\n  \"Assateague Horse\",\n  \"Asturcón\",\n  \"Augeron\",\n  \"Australian Brumby\",\n  \"Australian Draught Horse\",\n  \"Australian Stock Horse\",\n  \"Austrian Warmblood\",\n  \"Auvergne Horse\",\n  \"Auxois\",\n  \"Azerbaijan Horse\",\n  \"Azteca Horse\",\n  \"Baise Horse\",\n  \"Bale\",\n  \"Balearic Horse\",\n  \"Balikun Horse\",\n  \"Baluchi Horse\",\n  \"Banker Horse\",\n  \"Barb Horse\",\n  \"Bardigiano\",\n  \"Bashkir Curly\",\n  \"Basque Mountain Horse\",\n  \"Bavarian Warmblood\",\n  \"Belgian Half-blood\",\n  \"Belgian Horse\",\n  \"Belgian Warmblood \",\n  \"Bhutia Horse\",\n  \"Black Forest Horse\",\n  \"Blazer Horse\",\n  \"Boerperd\",\n  \"Borana\",\n  \"Boulonnais Horse\",\n  \"Brabant\",\n  \"Brandenburger\",\n  \"Brazilian Sport Horse\",\n  \"Breton Horse\",\n  \"Brumby\",\n  \"Budyonny Horse\",\n  \"Burguete Horse\",\n  \"Burmese Horse\",\n  \"Byelorussian Harness Horse\",\n  \"Calabrese Horse\",\n  \"Camargue Horse\",\n  \"Camarillo White Horse\",\n  \"Campeiro\",\n  \"Campolina\",\n  \"Canadian Horse\",\n  \"Canadian Pacer\",\n  \"Carolina Marsh Tacky\",\n  \"Carthusian Horse\",\n  \"Caspian Horse\",\n  \"Castilian Horse\",\n  \"Castillonnais\",\n  \"Catria Horse\",\n  \"Cavallo Romano della Maremma Laziale\",\n  \"Cerbat Mustang\",\n  \"Chickasaw Horse\",\n  \"Chilean Corralero\",\n  \"Choctaw Horse\",\n  \"Cleveland Bay\",\n  \"Clydesdale Horse\",\n  \"Cob\",\n  \"Coldblood Trotter\",\n  \"Colonial Spanish Horse\",\n  \"Colorado Ranger\",\n  \"Comtois Horse\",\n  \"Corsican Horse\",\n  \"Costa Rican Saddle Horse\",\n  \"Cretan Horse\",\n  \"Criollo Horse\",\n  \"Croatian Coldblood\",\n  \"Cuban Criollo\",\n  \"Cumberland Island Horse\",\n  \"Curly Horse\",\n  \"Czech Warmblood\",\n  \"Daliboz\",\n  \"Danish Warmblood\",\n  \"Danube Delta Horse\",\n  \"Dole Gudbrandsdal\",\n  \"Don\",\n  \"Dongola Horse\",\n  \"Draft Trotter\",\n  \"Dutch Harness Horse\",\n  \"Dutch Heavy Draft\",\n  \"Dutch Warmblood\",\n  \"Dzungarian Horse\",\n  \"East Bulgarian\",\n  \"East Friesian Horse\",\n  \"Estonian Draft\",\n  \"Estonian Horse\",\n  \"Falabella\",\n  \"Faroese\",\n  \"Finnhorse\",\n  \"Fjord Horse\",\n  \"Fleuve\",\n  \"Florida Cracker Horse\",\n  \"Foutanké\",\n  \"Frederiksborg Horse\",\n  \"Freiberger\",\n  \"French Trotter\",\n  \"Friesian Cross\",\n  \"Friesian Horse\",\n  \"Friesian Sporthorse\",\n  \"Furioso-North Star\",\n  \"Galiceño\",\n  \"Galician Pony\",\n  \"Gelderland Horse\",\n  \"Georgian Grande Horse\",\n  \"German Warmblood\",\n  \"Giara Horse\",\n  \"Gidran\",\n  \"Groningen Horse\",\n  \"Gypsy Horse\",\n  \"Hackney Horse\",\n  \"Haflinger\",\n  \"Hanoverian Horse\",\n  \"Heck Horse\",\n  \"Heihe Horse\",\n  \"Henson Horse\",\n  \"Hequ Horse\",\n  \"Hirzai\",\n  \"Hispano-Bretón\",\n  \"Holsteiner Horse\",\n  \"Horro\",\n  \"Hungarian Warmblood\",\n  \"Icelandic Horse\",\n  \"Iomud\",\n  \"Irish Draught\",\n  \"Irish Sport Horse sometimes called Irish Hunter\",\n  \"Italian Heavy Draft\",\n  \"Italian Trotter\",\n  \"Jaca Navarra\",\n  \"Jeju Horse\",\n  \"Jutland Horse\",\n  \"Kabarda Horse\",\n  \"Kafa\",\n  \"Kaimanawa Horses\",\n  \"Kalmyk Horse\",\n  \"Karabair\",\n  \"Karabakh Horse\",\n  \"Karachai Horse\",\n  \"Karossier\",\n  \"Kathiawari\",\n  \"Kazakh Horse\",\n  \"Kentucky Mountain Saddle Horse\",\n  \"Kiger Mustang\",\n  \"Kinsky Horse\",\n  \"Kisber Felver\",\n  \"Kiso Horse\",\n  \"Kladruber\",\n  \"Knabstrupper\",\n  \"Konik\",\n  \"Kundudo\",\n  \"Kustanair\",\n  \"Kyrgyz Horse\",\n  \"Latvian Horse\",\n  \"Lipizzan\",\n  \"Lithuanian Heavy Draught\",\n  \"Lokai\",\n  \"Losino Horse\",\n  \"Lusitano\",\n  \"Lyngshest\",\n  \"M'Bayar\",\n  \"M'Par\",\n  \"Mallorquín\",\n  \"Malopolski\",\n  \"Mangalarga\",\n  \"Mangalarga Marchador\",\n  \"Maremmano\",\n  \"Marismeño Horse\",\n  \"Marsh Tacky\",\n  \"Marwari Horse\",\n  \"Mecklenburger\",\n  \"Međimurje Horse\",\n  \"Menorquín\",\n  \"Mérens Horse\",\n  \"Messara Horse\",\n  \"Metis Trotter\",\n  \"Mezőhegyesi Sport Horse\",\n  \"Miniature Horse\",\n  \"Misaki Horse\",\n  \"Missouri Fox Trotter\",\n  \"Monchina\",\n  \"Mongolian Horse\",\n  \"Mongolian Wild Horse\",\n  \"Monterufolino\",\n  \"Morab\",\n  \"Morgan Horse\",\n  \"Mountain Pleasure Horse\",\n  \"Moyle Horse\",\n  \"Murakoz Horse\",\n  \"Murgese\",\n  \"Mustang Horse\",\n  \"Namib Desert Horse\",\n  \"Nangchen Horse\",\n  \"National Show Horse\",\n  \"Nez Perce Horse\",\n  \"Nivernais Horse\",\n  \"Nokota Horse\",\n  \"Noma\",\n  \"Nonius Horse\",\n  \"Nooitgedachter\",\n  \"Nordlandshest\",\n  \"Noriker Horse\",\n  \"Norman Cob\",\n  \"North American Single-Footer Horse\",\n  \"North Swedish Horse\",\n  \"Norwegian Coldblood Trotter\",\n  \"Norwegian Fjord\",\n  \"Novokirghiz\",\n  \"Oberlander Horse\",\n  \"Ogaden\",\n  \"Oldenburg Horse\",\n  \"Orlov trotter\",\n  \"Ostfriesen\",\n  \"Paint\",\n  \"Pampa Horse\",\n  \"Paso Fino\",\n  \"Pentro Horse\",\n  \"Percheron\",\n  \"Persano Horse\",\n  \"Peruvian Paso\",\n  \"Pintabian\",\n  \"Pleven Horse\",\n  \"Poitevin Horse\",\n  \"Posavac Horse\",\n  \"Pottok\",\n  \"Pryor Mountain Mustang\",\n  \"Przewalski's Horse\",\n  \"Pura Raza Española\",\n  \"Purosangue Orientale\",\n  \"Qatgani\",\n  \"Quarab\",\n  \"Quarter Horse\",\n  \"Racking Horse\",\n  \"Retuerta Horse\",\n  \"Rhenish German Coldblood\",\n  \"Rhinelander Horse\",\n  \"Riwoche Horse\",\n  \"Rocky Mountain Horse\",\n  \"Romanian Sporthorse\",\n  \"Rottaler\",\n  \"Russian Don\",\n  \"Russian Heavy Draft\",\n  \"Russian Trotter\",\n  \"Saddlebred\",\n  \"Salerno Horse\",\n  \"Samolaco Horse\",\n  \"San Fratello Horse\",\n  \"Sarcidano Horse\",\n  \"Sardinian Anglo-Arab\",\n  \"Schleswig Coldblood\",\n  \"Schwarzwälder Kaltblut\",\n  \"Selale\",\n  \"Sella Italiano\",\n  \"Selle Français\",\n  \"Shagya Arabian\",\n  \"Shan Horse\",\n  \"Shire Horse\",\n  \"Siciliano Indigeno\",\n  \"Silesian Horse\",\n  \"Sokolsky Horse\",\n  \"Sorraia\",\n  \"South German Coldblood\",\n  \"Soviet Heavy Draft\",\n  \"Spanish Anglo-Arab\",\n  \"Spanish Barb\",\n  \"Spanish Jennet Horse\",\n  \"Spanish Mustang\",\n  \"Spanish Tarpan\",\n  \"Spanish-Norman Horse\",\n  \"Spiti Horse\",\n  \"Spotted Saddle Horse\",\n  \"Standardbred Horse\",\n  \"Suffolk Punch\",\n  \"Swedish Ardennes\",\n  \"Swedish coldblood trotter\",\n  \"Swedish Warmblood\",\n  \"Swiss Warmblood\",\n  \"Taishū Horse\",\n  \"Takhi\",\n  \"Tawleed\",\n  \"Tchernomor\",\n  \"Tennessee Walking Horse\",\n  \"Tersk Horse\",\n  \"Thoroughbred\",\n  \"Tiger Horse\",\n  \"Tinker Horse\",\n  \"Tolfetano\",\n  \"Tori Horse\",\n  \"Trait Du Nord\",\n  \"Trakehner\",\n  \"Tsushima\",\n  \"Tuigpaard\",\n  \"Ukrainian Riding Horse\",\n  \"Unmol Horse\",\n  \"Uzunyayla\",\n  \"Ventasso Horse\",\n  \"Virginia Highlander\",\n  \"Vlaamperd\",\n  \"Vladimir Heavy Draft\",\n  \"Vyatka\",\n  \"Waler\",\n  \"Waler Horse\",\n  \"Walkaloosa\",\n  \"Warlander\",\n  \"Warmblood\",\n  \"Welsh Cob\",\n  \"Westphalian Horse\",\n  \"Wielkopolski\",\n  \"Württemberger\",\n  \"Xilingol Horse\",\n  \"Yakutian Horse\",\n  \"Yili Horse\",\n  \"Yonaguni Horse\",\n  \"Zaniskari\",\n  \"Žemaitukas\",\n  \"Zhemaichu\",\n  \"Zweibrücker\",\n];\n","export const INSECT = [\n  \"Acacia-ants\",\n  \"Acorn-plum gall\",\n  \"Aerial yellowjacket\",\n  \"Africanized honey bee\",\n  \"Allegheny mound ant\",\n  \"Almond stone wasp\",\n  \"Ant\",\n  \"Arboreal ant\",\n  \"Argentine ant\",\n  \"Asian paper wasp\",\n  \"Baldfaced hornet\",\n  \"Bee\",\n  \"Bigheaded ant\",\n  \"Black and yellow mud dauber\",\n  \"Black carpenter ant\",\n  \"Black imported fire ant\",\n  \"Blue horntail woodwasp\",\n  \"Blue orchard bee\",\n  \"Braconid wasp\",\n  \"Bumble bee\",\n  \"Carpenter ant\",\n  \"Carpenter wasp\",\n  \"Chalcid wasp\",\n  \"Cicada killer\",\n  \"Citrus blackfly parasitoid\",\n  \"Common paper wasp\",\n  \"Crazy ant\",\n  \"Cuckoo wasp\",\n  \"Cynipid gall wasp\",\n  \"Eastern Carpenter bee\",\n  \"Eastern yellowjacket\",\n  \"Elm sawfly\",\n  \"Encyrtid wasp\",\n  \"Erythrina gall wasp\",\n  \"Eulophid wasp\",\n  \"European hornet\",\n  \"European imported fire ant\",\n  \"False honey ant\",\n  \"Fire ant\",\n  \"Forest bachac\",\n  \"Forest yellowjacket\",\n  \"German yellowjacket\",\n  \"Ghost ant\",\n  \"Giant ichneumon wasp\",\n  \"Giant resin bee\",\n  \"Giant wood wasp\",\n  \"Golden northern bumble bee\",\n  \"Golden paper wasp\",\n  \"Gouty oak gall\",\n  \"Grass Carrying Wasp\",\n  \"Great black wasp\",\n  \"Great golden digger wasp\",\n  \"Hackberry nipple gall parasitoid\",\n  \"Honey bee\",\n  \"Horned oak gall\",\n  \"Horse guard wasp\",\n  \"Horse guard wasp\",\n  \"Hunting wasp\",\n  \"Ichneumonid wasp\",\n  \"Keyhole wasp\",\n  \"Knopper gall\",\n  \"Large garden bumble bee\",\n  \"Large oak-apple gall\",\n  \"Leafcutting bee\",\n  \"Little fire ant\",\n  \"Little yellow ant\",\n  \"Long-horned bees\",\n  \"Long-legged ant\",\n  \"Macao paper wasp\",\n  \"Mallow bee\",\n  \"Marble gall\",\n  \"Mossyrose gall wasp\",\n  \"Mud-daubers\",\n  \"Multiflora rose seed chalcid\",\n  \"Oak apple gall wasp\",\n  \"Oak rough bulletgall wasp\",\n  \"Oak saucer gall\",\n  \"Oak shoot sawfly\",\n  \"Odorous house ant\",\n  \"Orange-tailed bumble bee\",\n  \"Orangetailed potter wasp\",\n  \"Oriental chestnut gall wasp\",\n  \"Paper wasp\",\n  \"Pavement ant\",\n  \"Pigeon tremex\",\n  \"Pip gall wasp\",\n  \"Prairie yellowjacket\",\n  \"Pteromalid wasp\",\n  \"Pyramid ant\",\n  \"Raspberry Horntail\",\n  \"Red ant\",\n  \"Red carpenter ant\",\n  \"Red harvester ant\",\n  \"Red imported fire ant\",\n  \"Red wasp\",\n  \"Red wood ant\",\n  \"Red-tailed wasp\",\n  \"Reddish carpenter ant\",\n  \"Rough harvester ant\",\n  \"Sawfly parasitic wasp\",\n  \"Scale parasitoid\",\n  \"Silky ant\",\n  \"Sirex woodwasp\",\n  \"Siricid woodwasp\",\n  \"Smaller yellow ant\",\n  \"Southeastern blueberry bee\",\n  \"Southern fire ant\",\n  \"Southern yellowjacket\",\n  \"Sphecid wasp\",\n  \"Stony gall\",\n  \"Sweat bee\",\n  \"Texas leafcutting ant\",\n  \"Tiphiid wasp\",\n  \"Torymid wasp\",\n  \"Tramp ant\",\n  \"Valentine ant\",\n  \"Velvet ant\",\n  \"Vespid wasp\",\n  \"Weevil parasitoid\",\n  \"Western harvester ant\",\n  \"Western paper wasp\",\n  \"Western thatching ant\",\n  \"Western yellowjacket\",\n  \"White-horned horntail\",\n  \"Willow shoot sawfly\",\n  \"Woodwasp\",\n  \"Wool sower gall maker\",\n  \"Yellow and black potter wasp\",\n  \"Yellow Crazy Ant\",\n  \"Yellow-horned horntail\",\n];\n","export const LION = [\n  \"Asiatic Lion\",\n  \"Barbary Lion\",\n  \"West African Lion\",\n  \"Northeast Congo Lion\",\n  \"Masai Lion\",\n  \"Transvaal lion\",\n  \"Cape lion\",\n];\n","export const RABBIT = [\n  \"American\",\n  \"American Chinchilla\",\n  \"American Fuzzy Lop\",\n  \"American Sable\",\n  \"Argente Brun\",\n  \"Belgian Hare\",\n  \"Beveren\",\n  \"Blanc de Hotot\",\n  \"Britannia Petite\",\n  \"Californian\",\n  \"Champagne D’Argent\",\n  \"Checkered Giant\",\n  \"Cinnamon\",\n  \"Crème D’Argent\",\n  \"Dutch\",\n  \"Dwarf Hotot\",\n  \"English Angora\",\n  \"English Lop\",\n  \"English Spot\",\n  \"Flemish Giant\",\n  \"Florida White\",\n  \"French Angora\",\n  \"French Lop\",\n  \"Giant Angora\",\n  \"Giant Chinchilla\",\n  \"Harlequin\",\n  \"Havana\",\n  \"Himalayan\",\n  \"Holland Lop\",\n  \"Jersey Wooly\",\n  \"Lilac\",\n  \"Lionhead\",\n  \"Mini Lop\",\n  \"Mini Rex\",\n  \"Mini Satin\",\n  \"Netherland Dwarf\",\n  \"New Zealand\",\n  \"Palomino\",\n  \"Polish\",\n  \"Rex\",\n  \"Rhinelander\",\n  \"Satin\",\n  \"Satin Angora\",\n  \"Silver\",\n  \"Silver Fox\",\n  \"Silver Marten\",\n  \"Standard Chinchilla\",\n  \"Tan\",\n  \"Thrianta\",\n];\n","export const RODENT = [\n  \"Abrocoma\",\n  \"Abrocoma schistacea\",\n  \"Aconaemys\",\n  \"Aconaemys porteri\",\n  \"African brush-tailed porcupine\",\n  \"Andean mountain cavy\",\n  \"Argentine tuco-tuco\",\n  \"Ashy chinchilla rat\",\n  \"Asiatic brush-tailed porcupine\",\n  \"Atherurus\",\n  \"Azara's agouti\",\n  \"Azara's tuco-tuco\",\n  \"Bahia porcupine\",\n  \"Bathyergus\",\n  \"Bathyergus janetta\",\n  \"Bathyergus suillus\",\n  \"Bennett's chinchilla rat\",\n  \"Bicolored-spined porcupine\",\n  \"Black agouti\",\n  \"Black dwarf porcupine\",\n  \"Black-rumped agouti\",\n  \"Black-tailed hairy dwarf porcupine\",\n  \"Bolivian chinchilla rat\",\n  \"Bolivian tuco-tuco\",\n  \"Bonetto's tuco-tuco\",\n  \"Brandt's yellow-toothed cavy\",\n  \"Brazilian guinea pig\",\n  \"Brazilian porcupine\",\n  \"Brazilian tuco-tuco\",\n  \"Bridge's degu\",\n  \"Brown hairy dwarf porcupine\",\n  \"Budin's chinchilla rat, A. budini\",\n  \"Cape porcupine\",\n  \"Catamarca tuco-tuco\",\n  \"Cavia\",\n  \"Central American agouti\",\n  \"Chacoan tuco-tuco\",\n  \"Chilean rock rat\",\n  \"Chinchilla\",\n  \"Coendou\",\n  \"Coiban agouti\",\n  \"Colburn's tuco-tuco\",\n  \"Collared tuco-tuco\",\n  \"Common degu\",\n  \"Common yellow-toothed cavy\",\n  \"Conover's tuco-tuco\",\n  \"Coruro\",\n  \"Crested agouti\",\n  \"Crested porcupine\",\n  \"Cryptomys\",\n  \"Cryptomys bocagei\",\n  \"Cryptomys damarensis\",\n  \"Cryptomys foxi\",\n  \"Cryptomys hottentotus\",\n  \"Cryptomys mechowi\",\n  \"Cryptomys ochraceocinereus\",\n  \"Cryptomys zechi\",\n  \"Ctenomys\",\n  \"Cuniculus\",\n  \"Cuscomys\",\n  \"Cuscomys ashanika\",\n  \"Dactylomys\",\n  \"Dactylomys boliviensis\",\n  \"Dactylomys dactylinus\",\n  \"Dactylomys peruanus\",\n  \"Dasyprocta\",\n  \"Domestic guinea pig\",\n  \"Emily's tuco-tuco\",\n  \"Erethizon\",\n  \"Famatina chinchilla rat\",\n  \"Frosted hairy dwarf porcupine\",\n  \"Fukomys\",\n  \"Fukomys amatus\",\n  \"Fukomys anselli\",\n  \"Fukomys bocagei\",\n  \"Fukomys damarensis\",\n  \"Fukomys darlingi\",\n  \"Fukomys foxi\",\n  \"Fukomys ilariae\",\n  \"Fukomys kafuensis\",\n  \"Fukomys mechowii\",\n  \"Fukomys micklemi\",\n  \"Fukomys occlusus\",\n  \"Fukomys ochraceocinereus\",\n  \"Fukomys whytei\",\n  \"Fukomys zechi\",\n  \"Furtive tuco-tuco\",\n  \"Galea\",\n  \"Georychus\",\n  \"Georychus capensis\",\n  \"Golden viscacha-rat\",\n  \"Goya tuco-tuco\",\n  \"Greater guinea pig\",\n  \"Green acouchi\",\n  \"Haig's tuco-tuco\",\n  \"Heliophobius\",\n  \"Heliophobius argenteocinereus\",\n  \"Heterocephalus\",\n  \"Heterocephalus glaber\",\n  \"Highland tuco-tuco\",\n  \"Hystrix\",\n  \"Indian porcupine\",\n  \"Isla Mocha degu\",\n  \"Kalinowski agouti\",\n  \"Kannabateomys\",\n  \"Kannabateomys amblyonyx\",\n  \"Lagidium\",\n  \"Lagostomus\",\n  \"Lewis' tuco-tuco\",\n  \"Long-tailed chinchilla\",\n  \"Long-tailed porcupine\",\n  \"Los Chalchaleros' viscacha-rat\",\n  \"Lowland paca\",\n  \"Magellanic tuco-tuco\",\n  \"Malayan porcupine\",\n  \"Maule tuco-tuco\",\n  \"Mendoza tuco-tuco\",\n  \"Mexican agouti\",\n  \"Mexican hairy dwarf porcupine\",\n  \"Microcavia\",\n  \"Montane guinea pig\",\n  \"Moon-toothed degu\",\n  \"Mottled tuco-tuco\",\n  \"Mountain degu\",\n  \"Mountain paca\",\n  \"Mountain viscacha-rat\",\n  \"Myoprocta\",\n  \"Natterer's tuco-tuco\",\n  \"North American porcupine\",\n  \"Northern viscacha\",\n  \"Octodon\",\n  \"Octodontomys\",\n  \"Octomys\",\n  \"Olallamys\",\n  \"Olallamys albicauda\",\n  \"Olallamys edax\",\n  \"Orinoco agouti\",\n  \"Paraguaian hairy dwarf porcupine\",\n  \"Pearson's tuco-tuco\",\n  \"Peruvian tuco-tuco\",\n  \"Philippine porcupine\",\n  \"Pipanacoctomys\",\n  \"Plains viscacha\",\n  \"Plains viscacha-rat\",\n  \"Porteous' tuco-tuco\",\n  \"Punta de Vacas chinchilla rat\",\n  \"Red acouchi\",\n  \"Red-rumped agouti\",\n  \"Reddish tuco-tuco\",\n  \"Rio Negro tuco-tuco\",\n  \"Robust tuco-tuco\",\n  \"Roosmalen's dwarf porcupine\",\n  \"Rothschild's porcupine\",\n  \"Ruatan Island agouti\",\n  \"Sage's rock rat\",\n  \"Salinoctomys\",\n  \"Salta tuco-tuco\",\n  \"San Luis tuco-tuco\",\n  \"Santa Catarina's guinea pig\",\n  \"Shiny guinea pig\",\n  \"Shipton's mountain cavy\",\n  \"Short-tailed chinchilla\",\n  \"Silky tuco-tuco\",\n  \"Social tuco-tuco\",\n  \"Southern mountain cavy\",\n  \"Southern tuco-tuco\",\n  \"Southern viscacha\",\n  \"Spalacopus\",\n  \"Spix's yellow-toothed cavy\",\n  \"Steinbach's tuco-tuco\",\n  \"Streaked dwarf porcupine\",\n  \"Strong tuco-tuco\",\n  \"Stump-tailed porcupine\",\n  \"Sumatran porcupine\",\n  \"Sunda porcupine\",\n  \"Talas tuco-tuco\",\n  \"Tawny tuco-tuco\",\n  \"Thick-spined porcupine\",\n  \"Tiny tuco-tuco\",\n  \"Trichys\",\n  \"Tucuman tuco-tuco\",\n  \"Tympanoctomys\",\n  \"Uspallata chinchilla rat\",\n  \"White-toothed tuco-tuco\",\n  \"Wolffsohn's viscacha\",\n];\n","export const SNAKE = [\n  \"Viper Adder\",\n  \"Common adder\",\n  \"Death Adder\",\n  \"Desert death adder\",\n  \"Horned adder\",\n  \"Long-nosed adder\",\n  \"Many-horned adder\",\n  \"Mountain adder\",\n  \"Mud adder\",\n  \"Namaqua dwarf adder\",\n  \"Nightingale adder\",\n  \"Peringuey's adder\",\n  \"Puff adder\",\n  \"African puff adder\",\n  \"Rhombic night adder\",\n  \"Sand adder\",\n  \"Dwarf sand adder\",\n  \"Namib dwarf sand adder\",\n  \"Water adder\",\n  \"Aesculapian snake\",\n  \"Anaconda\",\n  \"Bolivian anaconda\",\n  \"De Schauensee's anaconda\",\n  \"Green anaconda\",\n  \"Yellow anaconda\",\n  \"Arafura file snake\",\n  \"Asp\",\n  \"European asp\",\n  \"Egyptian asp\",\n  \"African beaked snake\",\n  \"Ball Python\",\n  \"Bird snake\",\n  \"Black-headed snake\",\n  \"Mexican black kingsnake\",\n  \"Black rat snake\",\n  \"Black snake\",\n  \"Red-bellied black snake\",\n  \"Blind snake\",\n  \"Brahminy blind snake\",\n  \"Texas blind snake\",\n  \"Western blind snake\",\n  \"Boa\",\n  \"Abaco Island boa\",\n  \"Amazon tree boa\",\n  \"Boa constrictor\",\n  \"Cuban boa\",\n  \"Dumeril's boa\",\n  \"Dwarf boa\",\n  \"Emerald tree boa\",\n  \"Hogg Island boa\",\n  \"Jamaican boa\",\n  \"Madagascar ground boa\",\n  \"Madagascar tree boa\",\n  \"Puerto Rican boa\",\n  \"Rainbow boa\",\n  \"Red-tailed boa\",\n  \"Rosy boa\",\n  \"Rubber boa\",\n  \"Sand boa\",\n  \"Tree boa\",\n  \"Boiga\",\n  \"Boomslang\",\n  \"Brown snake\",\n  \"Eastern brown snake\",\n  \"Bull snake\",\n  \"Bushmaster\",\n  \"Dwarf beaked snake\",\n  \"Rufous beaked snake\",\n  \"Canebrake\",\n  \"Cantil\",\n  \"Cascabel\",\n  \"Cat-eyed snake\",\n  \"Banded cat-eyed snake\",\n  \"Green cat-eyed snake\",\n  \"Cat snake\",\n  \"Andaman cat snake\",\n  \"Beddome's cat snake\",\n  \"Dog-toothed cat snake\",\n  \"Forsten's cat snake\",\n  \"Gold-ringed cat snake\",\n  \"Gray cat snake\",\n  \"Many-spotted cat snake\",\n  \"Tawny cat snake\",\n  \"Chicken snake\",\n  \"Coachwhip snake\",\n  \"Cobra\",\n  \"Andaman cobra\",\n  \"Arabian cobra\",\n  \"Asian cobra\",\n  \"Banded water cobra\",\n  \"Black-necked cobra\",\n  \"Black-necked spitting cobra\",\n  \"Black tree cobra\",\n  \"Burrowing cobra\",\n  \"Cape cobra\",\n  \"Caspian cobra\",\n  \"Congo water cobra\",\n  \"Common cobra\",\n  \"Eastern water cobra\",\n  \"Egyptian cobra\",\n  \"Equatorial spitting cobra\",\n  \"False cobra\",\n  \"False water cobra\",\n  \"Forest cobra\",\n  \"Gold tree cobra\",\n  \"Indian cobra\",\n  \"Indochinese spitting cobra\",\n  \"Javan spitting cobra\",\n  \"King cobra\",\n  \"Mandalay cobra\",\n  \"Mozambique spitting cobra\",\n  \"North Philippine cobra\",\n  \"Nubian spitting cobra\",\n  \"Philippine cobra\",\n  \"Red spitting cobra\",\n  \"Rinkhals cobra\",\n  \"Shield-nosed cobra\",\n  \"Sinai desert cobra\",\n  \"Southern Indonesian spitting cobra\",\n  \"Southern Philippine cobra\",\n  \"Southwestern black spitting cobra\",\n  \"Snouted cobra\",\n  \"Spectacled cobra\",\n  \"Spitting cobra\",\n  \"Storm water cobra\",\n  \"Thai cobra\",\n  \"Taiwan cobra\",\n  \"Zebra spitting cobra\",\n  \"Collett's snake\",\n  \"Congo snake\",\n  \"Copperhead\",\n  \"American copperhead\",\n  \"Australian copperhead\",\n  \"Coral snake\",\n  \"Arizona coral snake\",\n  \"Beddome's coral snake\",\n  \"Brazilian coral snake\",\n  \"Cape coral snake\",\n  \"Harlequin coral snake\",\n  \"High Woods coral snake\",\n  \"Malayan long-glanded coral snake\",\n  \"Texas Coral Snake\",\n  \"Western coral snake\",\n  \"Corn snake\",\n  \"South eastern corn snake\",\n  \"Cottonmouth\",\n  \"Crowned snake\",\n  \"Cuban wood snake\",\n  \"Eastern hognose snake\",\n  \"Egg-eater\",\n  \"Eastern coral snake\",\n  \"Fer-de-lance\",\n  \"Fierce snake\",\n  \"Fishing snake\",\n  \"Flying snake\",\n  \"Golden tree snake\",\n  \"Indian flying snake\",\n  \"Moluccan flying snake\",\n  \"Ornate flying snake\",\n  \"Paradise flying snake\",\n  \"Twin-Barred tree snake\",\n  \"Banded Flying Snake\",\n  \"Fox snake, three species of Pantherophis\",\n  \"Forest flame snake\",\n  \"Garter snake\",\n  \"Checkered garter snake\",\n  \"Common garter snake\",\n  \"San Francisco garter snake\",\n  \"Texas garter snake\",\n  \"Cape gopher snake\",\n  \"Grass snake\",\n  \"Green snake\",\n  \"Rough green snake\",\n  \"Smooth green snake\",\n  \"Ground snake\",\n  \"Common ground snake\",\n  \"Three-lined ground snake\",\n  \"Western ground snake\",\n  \"Habu\",\n  \"Hognose snake\",\n  \"Blonde hognose snake\",\n  \"Dusty hognose snake\",\n  \"Eastern hognose snake\",\n  \"Jan's hognose snake\",\n  \"Giant Malagasy hognose snake\",\n  \"Mexican hognose snake\",\n  \"South American hognose snake\",\n  \"Hundred pacer\",\n  \"Ikaheka snake\",\n  \"Indigo snake\",\n  \"Jamaican Tree Snake\",\n  \"Keelback\",\n  \"Asian keelback\",\n  \"Assam keelback\",\n  \"Black-striped keelback\",\n  \"Buff striped keelback\",\n  \"Burmese keelback\",\n  \"Checkered keelback\",\n  \"Common keelback\",\n  \"Hill keelback\",\n  \"Himalayan keelback\",\n  \"Khasi Hills keelback\",\n  \"Modest keelback\",\n  \"Nicobar Island keelback\",\n  \"Nilgiri keelback\",\n  \"Orange-collared keelback\",\n  \"Red-necked keelback\",\n  \"Sikkim keelback\",\n  \"Speckle-bellied keelback\",\n  \"White-lipped keelback\",\n  \"Wynaad keelback\",\n  \"Yunnan keelback\",\n  \"King brown\",\n  \"King cobra\",\n  \"King snake\",\n  \"California kingsnake\",\n  \"Desert kingsnake\",\n  \"Grey-banded kingsnake\",\n  \"North eastern king snake\",\n  \"Prairie kingsnake\",\n  \"Scarlet kingsnake\",\n  \"Speckled kingsnake\",\n  \"Krait\",\n  \"Banded krait\",\n  \"Blue krait\",\n  \"Black krait\",\n  \"Burmese krait\",\n  \"Ceylon krait\",\n  \"Indian krait\",\n  \"Lesser black krait\",\n  \"Malayan krait\",\n  \"Many-banded krait\",\n  \"Northeastern hill krait\",\n  \"Red-headed krait\",\n  \"Sind krait\",\n  \"Large shield snake\",\n  \"Lancehead\",\n  \"Common lancehead\",\n  \"Lora\",\n  \"Grey Lora\",\n  \"Lyre snake\",\n  \"Baja California lyresnake\",\n  \"Central American lyre snake\",\n  \"Texas lyre snake\",\n  \"Eastern lyre snake\",\n  \"Machete savane\",\n  \"Mamba\",\n  \"Black mamba\",\n  \"Green mamba\",\n  \"Eastern green mamba\",\n  \"Western green mamba\",\n  \"Mamushi\",\n  \"Mangrove snake\",\n  \"Milk snake\",\n  \"Moccasin snake\",\n  \"Montpellier snake\",\n  \"Mud snake\",\n  \"Eastern mud snake\",\n  \"Western mud snake\",\n  \"Mussurana\",\n  \"Night snake\",\n  \"Cat-eyed night snake\",\n  \"Texas night snake\",\n  \"Nichell snake\",\n  \"Narrowhead Garter Snake\",\n  \"Nose-horned viper\",\n  \"Rhinoceros viper\",\n  \"Vipera ammodytes\",\n  \"Parrot snake\",\n  \"Mexican parrot snake\",\n  \"Patchnose snake\",\n  \"Perrotet's shieldtail snake\",\n  \"Pine snake\",\n  \"Pipe snake\",\n  \"Asian pipe snake\",\n  \"Dwarf pipe snake\",\n  \"Red-tailed pipe snake\",\n  \"Python\",\n  \"African rock python\",\n  \"Amethystine python\",\n  \"Angolan python\",\n  \"Australian scrub python\",\n  \"Ball python\",\n  \"Bismarck ringed python\",\n  \"Black headed python\",\n  \"Blood python\",\n  \"Boelen python\",\n  \"Borneo short-tailed python\",\n  \"Bredl's python\",\n  \"Brown water python\",\n  \"Burmese python\",\n  \"Calabar python\",\n  \"Western carpet python\",\n  \"Centralian carpet python\",\n  \"Coastal carpet python\",\n  \"Inland carpet python\",\n  \"Jungle carpet python\",\n  \"New Guinea carpet python\",\n  \"Northwestern carpet python\",\n  \"Southwestern carpet python\",\n  \"Children's python\",\n  \"Dauan Island water python\",\n  \"Desert woma python\",\n  \"Diamond python\",\n  \"Flinders python\",\n  \"Green tree python\",\n  \"Halmahera python\",\n  \"Indian python\",\n  \"Indonesian water python\",\n  \"Macklot's python\",\n  \"Mollucan python\",\n  \"Oenpelli python\",\n  \"Olive python\",\n  \"Papuan python\",\n  \"Pygmy python\",\n  \"Red blood python\",\n  \"Reticulated python\",\n  \"Kayaudi dwarf reticulated python\",\n  \"Selayer reticulated python\",\n  \"Rough-scaled python\",\n  \"Royal python\",\n  \"Savu python\",\n  \"Spotted python\",\n  \"Stimson's python\",\n  \"Sumatran short-tailed python\",\n  \"Tanimbar python\",\n  \"Timor python\",\n  \"Wetar Island python\",\n  \"White-lipped python\",\n  \"Brown white-lipped python\",\n  \"Northern white-lipped python\",\n  \"Southern white-lipped python\",\n  \"Woma python\",\n  \"Western woma python\",\n  \"Queen snake\",\n  \"Racer\",\n  \"Bimini racer\",\n  \"Buttermilk racer\",\n  \"Eastern racer\",\n  \"Eastern yellowbelly sad racer\",\n  \"Mexican racer\",\n  \"Southern black racer\",\n  \"Tan racer\",\n  \"West Indian racer\",\n  \"Raddysnake\",\n  \"Southwestern blackhead snake\",\n  \"Rat snake\",\n  \"Baird's rat snake\",\n  \"Beauty rat snake\",\n  \"Great Plains rat snake\",\n  \"Green rat snake\",\n  \"Japanese forest rat snake\",\n  \"Japanese rat snake\",\n  \"King rat snake\",\n  \"Mandarin rat snake\",\n  \"Persian rat snake\",\n  \"Red-backed rat snake\",\n  \"Twin-spotted rat snake\",\n  \"Yellow-striped rat snake\",\n  \"Manchurian Black Water Snake\",\n  \"Rattlesnake\",\n  \"Arizona black rattlesnake\",\n  \"Aruba rattlesnake\",\n  \"Chihuahuan ridge-nosed rattlesnake\",\n  \"Coronado Island rattlesnake\",\n  \"Durango rock rattlesnake\",\n  \"Dusky pigmy rattlesnake\",\n  \"Eastern diamondback rattlesnake\",\n  \"Grand Canyon rattlesnake\",\n  \"Great Basin rattlesnake\",\n  \"Hopi rattlesnake\",\n  \"Lance-headed rattlesnake\",\n  \"Long-tailed rattlesnake\",\n  \"Massasauga rattlesnake\",\n  \"Mexican green rattlesnake\",\n  \"Mexican west coast rattlesnake\",\n  \"Midget faded rattlesnake\",\n  \"Mojave rattlesnake\",\n  \"Northern black-tailed rattlesnake\",\n  \"Oaxacan small-headed rattlesnake\",\n  \"Rattler\",\n  \"Red diamond rattlesnake\",\n  \"Southern Pacific rattlesnake\",\n  \"Southwestern speckled rattlesnake\",\n  \"Tancitaran dusky rattlesnake\",\n  \"Tiger rattlesnake\",\n  \"Timber rattlesnake\",\n  \"Tropical rattlesnake\",\n  \"Twin-spotted rattlesnake\",\n  \"Uracoan rattlesnake\",\n  \"Western diamondback rattlesnake\",\n  \"Ribbon snake\",\n  \"Rinkhals\",\n  \"River jack\",\n  \"Sea snake\",\n  \"Annulated sea snake\",\n  \"Beaked sea snake\",\n  \"Dubois's sea snake\",\n  \"Hardwicke's sea snake\",\n  \"Hook Nosed Sea Snake\",\n  \"Olive sea snake\",\n  \"Pelagic sea snake\",\n  \"Stoke's sea snake\",\n  \"Yellow-banded sea snake\",\n  \"Yellow-bellied sea snake\",\n  \"Yellow-lipped sea snake\",\n  \"Shield-tailed snake\",\n  \"Sidewinder\",\n  \"Colorado desert sidewinder\",\n  \"Mojave desert sidewinder\",\n  \"Sonoran sidewinder\",\n  \"Small-eyed snake\",\n  \"Smooth snake\",\n  \"Brazilian smooth snake\",\n  \"European smooth snake\",\n  \"Stiletto snake\",\n  \"Striped snake\",\n  \"Japanese striped snake\",\n  \"Sunbeam snake\",\n  \"Taipan\",\n  \"Central ranges taipan\",\n  \"Coastal taipan\",\n  \"Inland taipan\",\n  \"Paupan taipan\",\n  \"Tentacled snake\",\n  \"Tic polonga\",\n  \"Tiger snake\",\n  \"Chappell Island tiger snake\",\n  \"Common tiger snake\",\n  \"Down's tiger snake\",\n  \"Eastern tiger snake\",\n  \"King Island tiger snake\",\n  \"Krefft's tiger snake\",\n  \"Peninsula tiger snake\",\n  \"Tasmanian tiger snake\",\n  \"Western tiger snake\",\n  \"Tigre snake\",\n  \"Tree snake\",\n  \"Blanding's tree snake\",\n  \"Blunt-headed tree snake\",\n  \"Brown tree snake\",\n  \"Long-nosed tree snake\",\n  \"Many-banded tree snake\",\n  \"Northern tree snake\",\n  \"Trinket snake\",\n  \"Black-banded trinket snake\",\n  \"Twig snake\",\n  \"African twig snake\",\n  \"Twin Headed King Snake\",\n  \"Titanboa\",\n  \"Urutu\",\n  \"Vine snake\",\n  \"Asian Vine Snake, Whip Snake\",\n  \"American Vine Snake\",\n  \"Mexican vine snake\",\n  \"Viper\",\n  \"Asp viper\",\n  \"Bamboo viper\",\n  \"Bluntnose viper\",\n  \"Brazilian mud Viper\",\n  \"Burrowing viper\",\n  \"Bush viper\",\n  \"Great Lakes bush viper\",\n  \"Hairy bush viper\",\n  \"Nitsche's bush viper\",\n  \"Rough-scaled bush viper\",\n  \"Spiny bush viper\",\n  \"Carpet viper\",\n  \"Crossed viper\",\n  \"Cyclades blunt-nosed viper\",\n  \"Eyelash viper\",\n  \"False horned viper\",\n  \"Fea's viper\",\n  \"Fifty pacer\",\n  \"Gaboon viper\",\n  \"Hognosed viper\",\n  \"Horned desert viper\",\n  \"Horned viper\",\n  \"Jumping viper\",\n  \"Kaznakov's viper\",\n  \"Leaf-nosed viper\",\n  \"Leaf viper\",\n  \"Levant viper\",\n  \"Long-nosed viper\",\n  \"McMahon's viper\",\n  \"Mole viper\",\n  \"Nose-horned viper\",\n  \"Rhinoceros viper\",\n  \"Vipera ammodytes\",\n  \"Palestine viper\",\n  \"Pallas' viper\",\n  \"Palm viper\",\n  \"Amazonian palm viper\",\n  \"Black-speckled palm-pitviper\",\n  \"Eyelash palm-pitviper\",\n  \"Green palm viper\",\n  \"Mexican palm-pitviper\",\n  \"Guatemalan palm viper\",\n  \"Honduran palm viper\",\n  \"Siamese palm viper\",\n  \"Side-striped palm-pitviper\",\n  \"Yellow-lined palm viper\",\n  \"Pit viper\",\n  \"Banded pitviper\",\n  \"Bamboo pitviper\",\n  \"Barbour's pit viper\",\n  \"Black-tailed horned pit viper\",\n  \"Bornean pitviper\",\n  \"Brongersma's pitviper\",\n  \"Brown spotted pitviper[4]\",\n  \"Cantor's pitviper\",\n  \"Elegant pitviper\",\n  \"Eyelash pit viper\",\n  \"Fan-Si-Pan horned pitviper\",\n  \"Flat-nosed pitviper\",\n  \"Godman's pit viper\",\n  \"Green tree pit viper\",\n  \"Habu pit viper\",\n  \"Hagen's pitviper\",\n  \"Horseshoe pitviper\",\n  \"Jerdon's pitviper\",\n  \"Kanburian pit viper\",\n  \"Kaulback's lance-headed pitviper\",\n  \"Kham Plateau pitviper\",\n  \"Large-eyed pitviper\",\n  \"Malabar rock pitviper\",\n  \"Malayan pit viper\",\n  \"Mangrove pit viper\",\n  \"Mangshan pitviper\",\n  \"Motuo bamboo pitviper\",\n  \"Nicobar bamboo pitviper\",\n  \"Philippine pitviper\",\n  \"Pointed-scaled pit viper[5]\",\n  \"Red-tailed bamboo pitviper\",\n  \"Schultze's pitviper\",\n  \"Stejneger's bamboo pitviper\",\n  \"Sri Lankan pit viper\",\n  \"Temple pit viper\",\n  \"Tibetan bamboo pitviper\",\n  \"Tiger pit viper\",\n  \"Undulated pit viper\",\n  \"Wagler's pit viper\",\n  \"Wirot's pit viper\",\n  \"Portuguese viper\",\n  \"Saw-scaled viper\",\n  \"Schlegel's viper\",\n  \"Sedge viper\",\n  \"Sharp-nosed viper\",\n  \"Snorkel viper\",\n  \"Temple viper\",\n  \"Tree viper\",\n  \"Chinese tree viper\",\n  \"Guatemalan tree viper\",\n  \"Hutton's tree viper\",\n  \"Indian tree viper\",\n  \"Large-scaled tree viper\",\n  \"Malcolm's tree viper\",\n  \"Nitsche's tree viper\",\n  \"Pope's tree viper\",\n  \"Rough-scaled tree viper\",\n  \"Rungwe tree viper\",\n  \"Sumatran tree viper\",\n  \"White-lipped tree viper\",\n  \"Ursini's viper\",\n  \"Western hog-nosed viper\",\n  \"Wart snake\",\n  \"Water moccasin\",\n  \"Water snake\",\n  \"Bocourt's water snake\",\n  \"Northern water snake\",\n  \"Whip snake\",\n  \"Long-nosed whip snake\",\n  \"Wolf snake\",\n  \"African wolf snake\",\n  \"Barred wolf snake\",\n  \"Worm snake\",\n  \"Common worm snake\",\n  \"Longnosed worm snake\",\n  \"Wutu\",\n  \"Yarara\",\n  \"Zebra snake\",\n];\n","export const ANIMAL_TYPE = [\n  \"dog\",\n  \"cat\",\n  \"snake\",\n  \"bear\",\n  \"lion\",\n  \"cetacean\",\n  \"insect\",\n  \"crocodilia\",\n  \"cow\",\n  \"bird\",\n  \"fish\",\n  \"rabbit\",\n  \"horse\",\n];\n","export const BIRD = [\n  \"Red-throated Loon\",\n  \"Arctic Loon\",\n  \"Pacific Loon\",\n  \"Common Loon\",\n  \"Yellow-billed Loon\",\n  \"Least Grebe\",\n  \"Pied-billed Grebe\",\n  \"Horned Grebe\",\n  \"Red-necked Grebe\",\n  \"Eared Grebe\",\n  \"Western Grebe\",\n  \"Clark's Grebe\",\n  \"Yellow-nosed Albatross\",\n  \"Shy Albatross\",\n  \"Black-browed Albatross\",\n  \"Wandering Albatross\",\n  \"Laysan Albatross\",\n  \"Black-footed Albatross\",\n  \"Short-tailed Albatross\",\n  \"Northern Fulmar\",\n  \"Herald Petrel\",\n  \"Murphy's Petrel\",\n  \"Mottled Petrel\",\n  \"Black-capped Petrel\",\n  \"Cook's Petrel\",\n  \"Stejneger's Petrel\",\n  \"White-chinned Petrel\",\n  \"Streaked Shearwater\",\n  \"Cory's Shearwater\",\n  \"Pink-footed Shearwater\",\n  \"Flesh-footed Shearwater\",\n  \"Greater Shearwater\",\n  \"Wedge-tailed Shearwater\",\n  \"Buller's Shearwater\",\n  \"Sooty Shearwater\",\n  \"Short-tailed Shearwater\",\n  \"Manx Shearwater\",\n  \"Black-vented Shearwater\",\n  \"Audubon's Shearwater\",\n  \"Little Shearwater\",\n  \"Wilson's Storm-Petrel\",\n  \"White-faced Storm-Petrel\",\n  \"European Storm-Petrel\",\n  \"Fork-tailed Storm-Petrel\",\n  \"Leach's Storm-Petrel\",\n  \"Ashy Storm-Petrel\",\n  \"Band-rumped Storm-Petrel\",\n  \"Wedge-rumped Storm-Petrel\",\n  \"Black Storm-Petrel\",\n  \"Least Storm-Petrel\",\n  \"White-tailed Tropicbird\",\n  \"Red-billed Tropicbird\",\n  \"Red-tailed Tropicbird\",\n  \"Masked Booby\",\n  \"Blue-footed Booby\",\n  \"Brown Booby\",\n  \"Red-footed Booby\",\n  \"Northern Gannet\",\n  \"American White Pelican\",\n  \"Brown Pelican\",\n  \"Brandt's Cormorant\",\n  \"Neotropic Cormorant\",\n  \"Double-crested Cormorant\",\n  \"Great Cormorant\",\n  \"Red-faced Cormorant\",\n  \"Pelagic Cormorant\",\n  \"Anhinga\",\n  \"Magnificent Frigatebird\",\n  \"Great Frigatebird\",\n  \"Lesser Frigatebird\",\n  \"American Bittern\",\n  \"Yellow Bittern\",\n  \"Least Bittern\",\n  \"Great Blue Heron\",\n  \"Great Egret\",\n  \"Chinese Egret\",\n  \"Little Egret\",\n  \"Western Reef-Heron\",\n  \"Snowy Egret\",\n  \"Little Blue Heron\",\n  \"Tricolored Heron\",\n  \"Reddish Egret\",\n  \"Cattle Egret\",\n  \"Green Heron\",\n  \"Black-crowned Night-Heron\",\n  \"Yellow-crowned Night-Heron\",\n  \"White Ibis\",\n  \"Scarlet Ibis\",\n  \"Glossy Ibis\",\n  \"White-faced Ibis\",\n  \"Roseate Spoonbill\",\n  \"Jabiru\",\n  \"Wood Stork\",\n  \"Black Vulture\",\n  \"Turkey Vulture\",\n  \"California Condor\",\n  \"Greater Flamingo\",\n  \"Black-bellied Whistling-Duck\",\n  \"Fulvous Whistling-Duck\",\n  \"Bean Goose\",\n  \"Pink-footed Goose\",\n  \"Greater White-fronted Goose\",\n  \"Lesser White-fronted Goose\",\n  \"Emperor Goose\",\n  \"Snow Goose\",\n  \"Ross's Goose\",\n  \"Canada Goose\",\n  \"Brant\",\n  \"Barnacle Goose\",\n  \"Mute Swan\",\n  \"Trumpeter Swan\",\n  \"Tundra Swan\",\n  \"Whooper Swan\",\n  \"Muscovy Duck\",\n  \"Wood Duck\",\n  \"Gadwall\",\n  \"Falcated Duck\",\n  \"Eurasian Wigeon\",\n  \"American Wigeon\",\n  \"American Black Duck\",\n  \"Mallard\",\n  \"Mottled Duck\",\n  \"Spot-billed Duck\",\n  \"Blue-winged Teal\",\n  \"Cinnamon Teal\",\n  \"Northern Shoveler\",\n  \"White-cheeked Pintail\",\n  \"Northern Pintail\",\n  \"Garganey\",\n  \"Baikal Teal\",\n  \"Green-winged Teal\",\n  \"Canvasback\",\n  \"Redhead\",\n  \"Common Pochard\",\n  \"Ring-necked Duck\",\n  \"Tufted Duck\",\n  \"Greater Scaup\",\n  \"Lesser Scaup\",\n  \"Steller's Eider\",\n  \"Spectacled Eider\",\n  \"King Eider\",\n  \"Common Eider\",\n  \"Harlequin Duck\",\n  \"Labrador Duck\",\n  \"Surf Scoter\",\n  \"White-winged Scoter\",\n  \"Black Scoter\",\n  \"Oldsquaw\",\n  \"Bufflehead\",\n  \"Common Goldeneye\",\n  \"Barrow's Goldeneye\",\n  \"Smew\",\n  \"Hooded Merganser\",\n  \"Common Merganser\",\n  \"Red-breasted Merganser\",\n  \"Masked Duck\",\n  \"Ruddy Duck\",\n  \"Osprey\",\n  \"Hook-billed Kite\",\n  \"Swallow-tailed Kite\",\n  \"White-tailed Kite\",\n  \"Snail Kite\",\n  \"Mississippi Kite\",\n  \"Bald Eagle\",\n  \"White-tailed Eagle\",\n  \"Steller's Sea-Eagle\",\n  \"Northern Harrier\",\n  \"Sharp-shinned Hawk\",\n  \"Cooper's Hawk\",\n  \"Northern Goshawk\",\n  \"Crane Hawk\",\n  \"Gray Hawk\",\n  \"Common Black-Hawk\",\n  \"Harris's Hawk\",\n  \"Roadside Hawk\",\n  \"Red-shouldered Hawk\",\n  \"Broad-winged Hawk\",\n  \"Short-tailed Hawk\",\n  \"Swainson's Hawk\",\n  \"White-tailed Hawk\",\n  \"Zone-tailed Hawk\",\n  \"Red-tailed Hawk\",\n  \"Ferruginous Hawk\",\n  \"Rough-legged Hawk\",\n  \"Golden Eagle\",\n  \"Collared Forest-Falcon\",\n  \"Crested Caracara\",\n  \"Eurasian Kestrel\",\n  \"American Kestrel\",\n  \"Merlin\",\n  \"Eurasian Hobby\",\n  \"Aplomado Falcon\",\n  \"Gyrfalcon\",\n  \"Peregrine Falcon\",\n  \"Prairie Falcon\",\n  \"Plain Chachalaca\",\n  \"Chukar\",\n  \"Himalayan Snowcock\",\n  \"Gray Partridge\",\n  \"Ring-necked Pheasant\",\n  \"Ruffed Grouse\",\n  \"Sage Grouse\",\n  \"Spruce Grouse\",\n  \"Willow Ptarmigan\",\n  \"Rock Ptarmigan\",\n  \"White-tailed Ptarmigan\",\n  \"Blue Grouse\",\n  \"Sharp-tailed Grouse\",\n  \"Greater Prairie-chicken\",\n  \"Lesser Prairie-chicken\",\n  \"Wild Turkey\",\n  \"Mountain Quail\",\n  \"Scaled Quail\",\n  \"California Quail\",\n  \"Gambel's Quail\",\n  \"Northern Bobwhite\",\n  \"Montezuma Quail\",\n  \"Yellow Rail\",\n  \"Black Rail\",\n  \"Corn Crake\",\n  \"Clapper Rail\",\n  \"King Rail\",\n  \"Virginia Rail\",\n  \"Sora\",\n  \"Paint-billed Crake\",\n  \"Spotted Rail\",\n  \"Purple Gallinule\",\n  \"Azure Gallinule\",\n  \"Common Moorhen\",\n  \"Eurasian Coot\",\n  \"American Coot\",\n  \"Limpkin\",\n  \"Sandhill Crane\",\n  \"Common Crane\",\n  \"Whooping Crane\",\n  \"Double-striped Thick-knee\",\n  \"Northern Lapwing\",\n  \"Black-bellied Plover\",\n  \"European Golden-Plover\",\n  \"American Golden-Plover\",\n  \"Pacific Golden-Plover\",\n  \"Mongolian Plover\",\n  \"Collared Plover\",\n  \"Snowy Plover\",\n  \"Wilson's Plover\",\n  \"Common Ringed Plover\",\n  \"Semipalmated Plover\",\n  \"Piping Plover\",\n  \"Little Ringed Plover\",\n  \"Killdeer\",\n  \"Mountain Plover\",\n  \"Eurasian Dotterel\",\n  \"Eurasian Oystercatcher\",\n  \"American Oystercatcher\",\n  \"Black Oystercatcher\",\n  \"Black-winged Stilt\",\n  \"Black-necked Stilt\",\n  \"American Avocet\",\n  \"Northern Jacana\",\n  \"Common Greenshank\",\n  \"Greater Yellowlegs\",\n  \"Lesser Yellowlegs\",\n  \"Marsh Sandpiper\",\n  \"Spotted Redshank\",\n  \"Wood Sandpiper\",\n  \"Green Sandpiper\",\n  \"Solitary Sandpiper\",\n  \"Willet\",\n  \"Wandering Tattler\",\n  \"Gray-tailed Tattler\",\n  \"Common Sandpiper\",\n  \"Spotted Sandpiper\",\n  \"Terek Sandpiper\",\n  \"Upland Sandpiper\",\n  \"Little Curlew\",\n  \"Eskimo Curlew\",\n  \"Whimbrel\",\n  \"Bristle-thighed Curlew\",\n  \"Far Eastern Curlew\",\n  \"Slender-billed Curlew\",\n  \"Eurasian Curlew\",\n  \"Long-billed Curlew\",\n  \"Black-tailed Godwit\",\n  \"Hudsonian Godwit\",\n  \"Bar-tailed Godwit\",\n  \"Marbled Godwit\",\n  \"Ruddy Turnstone\",\n  \"Black Turnstone\",\n  \"Surfbird\",\n  \"Great Knot\",\n  \"Red Knot\",\n  \"Sanderling\",\n  \"Semipalmated Sandpiper\",\n  \"Western Sandpiper\",\n  \"Red-necked Stint\",\n  \"Little Stint\",\n  \"Temminck's Stint\",\n  \"Long-toed Stint\",\n  \"Least Sandpiper\",\n  \"White-rumped Sandpiper\",\n  \"Baird's Sandpiper\",\n  \"Pectoral Sandpiper\",\n  \"Sharp-tailed Sandpiper\",\n  \"Purple Sandpiper\",\n  \"Rock Sandpiper\",\n  \"Dunlin\",\n  \"Curlew Sandpiper\",\n  \"Stilt Sandpiper\",\n  \"Spoonbill Sandpiper\",\n  \"Broad-billed Sandpiper\",\n  \"Buff-breasted Sandpiper\",\n  \"Ruff\",\n  \"Short-billed Dowitcher\",\n  \"Long-billed Dowitcher\",\n  \"Jack Snipe\",\n  \"Common Snipe\",\n  \"Pin-tailed Snipe\",\n  \"Eurasian Woodcock\",\n  \"American Woodcock\",\n  \"Wilson's Phalarope\",\n  \"Red-necked Phalarope\",\n  \"Red Phalarope\",\n  \"Oriental Pratincole\",\n  \"Great Skua\",\n  \"South Polar Skua\",\n  \"Pomarine Jaeger\",\n  \"Parasitic Jaeger\",\n  \"Long-tailed Jaeger\",\n  \"Laughing Gull\",\n  \"Franklin's Gull\",\n  \"Little Gull\",\n  \"Black-headed Gull\",\n  \"Bonaparte's Gull\",\n  \"Heermann's Gull\",\n  \"Band-tailed Gull\",\n  \"Black-tailed Gull\",\n  \"Mew Gull\",\n  \"Ring-billed Gull\",\n  \"California Gull\",\n  \"Herring Gull\",\n  \"Yellow-legged Gull\",\n  \"Thayer's Gull\",\n  \"Iceland Gull\",\n  \"Lesser Black-backed Gull\",\n  \"Slaty-backed Gull\",\n  \"Yellow-footed Gull\",\n  \"Western Gull\",\n  \"Glaucous-winged Gull\",\n  \"Glaucous Gull\",\n  \"Great Black-backed Gull\",\n  \"Sabine's Gull\",\n  \"Black-legged Kittiwake\",\n  \"Red-legged Kittiwake\",\n  \"Ross's Gull\",\n  \"Ivory Gull\",\n  \"Gull-billed Tern\",\n  \"Caspian Tern\",\n  \"Royal Tern\",\n  \"Elegant Tern\",\n  \"Sandwich Tern\",\n  \"Roseate Tern\",\n  \"Common Tern\",\n  \"Arctic Tern\",\n  \"Forster's Tern\",\n  \"Least Tern\",\n  \"Aleutian Tern\",\n  \"Bridled Tern\",\n  \"Sooty Tern\",\n  \"Large-billed Tern\",\n  \"White-winged Tern\",\n  \"Whiskered Tern\",\n  \"Black Tern\",\n  \"Brown Noddy\",\n  \"Black Noddy\",\n  \"Black Skimmer\",\n  \"Dovekie\",\n  \"Common Murre\",\n  \"Thick-billed Murre\",\n  \"Razorbill\",\n  \"Great Auk\",\n  \"Black Guillemot\",\n  \"Pigeon Guillemot\",\n  \"Long-billed Murrelet\",\n  \"Marbled Murrelet\",\n  \"Kittlitz's Murrelet\",\n  \"Xantus's Murrelet\",\n  \"Craveri's Murrelet\",\n  \"Ancient Murrelet\",\n  \"Cassin's Auklet\",\n  \"Parakeet Auklet\",\n  \"Least Auklet\",\n  \"Whiskered Auklet\",\n  \"Crested Auklet\",\n  \"Rhinoceros Auklet\",\n  \"Atlantic Puffin\",\n  \"Horned Puffin\",\n  \"Tufted Puffin\",\n  \"Rock Dove\",\n  \"Scaly-naped Pigeon\",\n  \"White-crowned Pigeon\",\n  \"Red-billed Pigeon\",\n  \"Band-tailed Pigeon\",\n  \"Oriental Turtle-Dove\",\n  \"European Turtle-Dove\",\n  \"Eurasian Collared-Dove\",\n  \"Spotted Dove\",\n  \"White-winged Dove\",\n  \"Zenaida Dove\",\n  \"Mourning Dove\",\n  \"Passenger Pigeon\",\n  \"Inca Dove\",\n  \"Common Ground-Dove\",\n  \"Ruddy Ground-Dove\",\n  \"White-tipped Dove\",\n  \"Key West Quail-Dove\",\n  \"Ruddy Quail-Dove\",\n  \"Budgerigar\",\n  \"Monk Parakeet\",\n  \"Carolina Parakeet\",\n  \"Thick-billed Parrot\",\n  \"White-winged Parakeet\",\n  \"Red-crowned Parrot\",\n  \"Common Cuckoo\",\n  \"Oriental Cuckoo\",\n  \"Black-billed Cuckoo\",\n  \"Yellow-billed Cuckoo\",\n  \"Mangrove Cuckoo\",\n  \"Greater Roadrunner\",\n  \"Smooth-billed Ani\",\n  \"Groove-billed Ani\",\n  \"Barn Owl\",\n  \"Flammulated Owl\",\n  \"Oriental Scops-Owl\",\n  \"Western Screech-Owl\",\n  \"Eastern Screech-Owl\",\n  \"Whiskered Screech-Owl\",\n  \"Great Horned Owl\",\n  \"Snowy Owl\",\n  \"Northern Hawk Owl\",\n  \"Northern Pygmy-Owl\",\n  \"Ferruginous Pygmy-Owl\",\n  \"Elf Owl\",\n  \"Burrowing Owl\",\n  \"Mottled Owl\",\n  \"Spotted Owl\",\n  \"Barred Owl\",\n  \"Great Gray Owl\",\n  \"Long-eared Owl\",\n  \"Short-eared Owl\",\n  \"Boreal Owl\",\n  \"Northern Saw-whet Owl\",\n  \"Lesser Nighthawk\",\n  \"Common Nighthawk\",\n  \"Antillean Nighthawk\",\n  \"Common Pauraque\",\n  \"Common Poorwill\",\n  \"Chuck-will's-widow\",\n  \"Buff-collared Nightjar\",\n  \"Whip-poor-will\",\n  \"Jungle Nightjar\",\n  \"Black Swift\",\n  \"White-collared Swift\",\n  \"Chimney Swift\",\n  \"Vaux's Swift\",\n  \"White-throated Needletail\",\n  \"Common Swift\",\n  \"Fork-tailed Swift\",\n  \"White-throated Swift\",\n  \"Antillean Palm Swift\",\n  \"Green Violet-ear\",\n  \"Green-breasted Mango\",\n  \"Broad-billed Hummingbird\",\n  \"White-eared Hummingbird\",\n  \"Xantus's Hummingbird\",\n  \"Berylline Hummingbird\",\n  \"Buff-bellied Hummingbird\",\n  \"Cinnamon Hummingbird\",\n  \"Violet-crowned Hummingbird\",\n  \"Blue-throated Hummingbird\",\n  \"Magnificent Hummingbird\",\n  \"Plain-capped Starthroat\",\n  \"Bahama Woodstar\",\n  \"Lucifer Hummingbird\",\n  \"Ruby-throated Hummingbird\",\n  \"Black-chinned Hummingbird\",\n  \"Anna's Hummingbird\",\n  \"Costa's Hummingbird\",\n  \"Calliope Hummingbird\",\n  \"Bumblebee Hummingbird\",\n  \"Broad-tailed Hummingbird\",\n  \"Rufous Hummingbird\",\n  \"Allen's Hummingbird\",\n  \"Elegant Trogon\",\n  \"Eared Trogon\",\n  \"Hoopoe\",\n  \"Ringed Kingfisher\",\n  \"Belted Kingfisher\",\n  \"Green Kingfisher\",\n  \"Eurasian Wryneck\",\n  \"Lewis's Woodpecker\",\n  \"Red-headed Woodpecker\",\n  \"Acorn Woodpecker\",\n  \"Gila Woodpecker\",\n  \"Golden-fronted Woodpecker\",\n  \"Red-bellied Woodpecker\",\n  \"Williamson's Sapsucker\",\n  \"Yellow-bellied Sapsucker\",\n  \"Red-naped Sapsucker\",\n  \"Red-breasted Sapsucker\",\n  \"Great Spotted Woodpecker\",\n  \"Ladder-backed Woodpecker\",\n  \"Nuttall's Woodpecker\",\n  \"Downy Woodpecker\",\n  \"Hairy Woodpecker\",\n  \"Strickland's Woodpecker\",\n  \"Red-cockaded Woodpecker\",\n  \"White-headed Woodpecker\",\n  \"Three-toed Woodpecker\",\n  \"Black-backed Woodpecker\",\n  \"Northern Flicker\",\n  \"Gilded Flicker\",\n  \"Pileated Woodpecker\",\n  \"Ivory-billed Woodpecker\",\n  \"Northern Beardless-Tyrannulet\",\n  \"Greenish Elaenia\",\n  \"Caribbean Elaenia\",\n  \"Tufted Flycatcher\",\n  \"Olive-sided Flycatcher\",\n  \"Greater Pewee\",\n  \"Western Wood-Pewee\",\n  \"Eastern Wood-Pewee\",\n  \"Yellow-bellied Flycatcher\",\n  \"Acadian Flycatcher\",\n  \"Alder Flycatcher\",\n  \"Willow Flycatcher\",\n  \"Least Flycatcher\",\n  \"Hammond's Flycatcher\",\n  \"Dusky Flycatcher\",\n  \"Gray Flycatcher\",\n  \"Pacific-slope Flycatcher\",\n  \"Cordilleran Flycatcher\",\n  \"Buff-breasted Flycatcher\",\n  \"Black Phoebe\",\n  \"Eastern Phoebe\",\n  \"Say's Phoebe\",\n  \"Vermilion Flycatcher\",\n  \"Dusky-capped Flycatcher\",\n  \"Ash-throated Flycatcher\",\n  \"Nutting's Flycatcher\",\n  \"Great Crested Flycatcher\",\n  \"Brown-crested Flycatcher\",\n  \"La Sagra's Flycatcher\",\n  \"Great Kiskadee\",\n  \"Sulphur-bellied Flycatcher\",\n  \"Variegated Flycatcher\",\n  \"Tropical Kingbird\",\n  \"Couch's Kingbird\",\n  \"Cassin's Kingbird\",\n  \"Thick-billed Kingbird\",\n  \"Western Kingbird\",\n  \"Eastern Kingbird\",\n  \"Gray Kingbird\",\n  \"Loggerhead Kingbird\",\n  \"Scissor-tailed Flycatcher\",\n  \"Fork-tailed Flycatcher\",\n  \"Rose-throated Becard\",\n  \"Masked Tityra\",\n  \"Brown Shrike\",\n  \"Loggerhead Shrike\",\n  \"Northern Shrike\",\n  \"White-eyed Vireo\",\n  \"Thick-billed Vireo\",\n  \"Bell's Vireo\",\n  \"Black-capped Vireo\",\n  \"Gray Vireo\",\n  \"Yellow-throated Vireo\",\n  \"Plumbeous Vireo\",\n  \"Cassin's Vireo\",\n  \"Blue-headed Vireo\",\n  \"Hutton's Vireo\",\n  \"Warbling Vireo\",\n  \"Philadelphia Vireo\",\n  \"Red-eyed Vireo\",\n  \"Yellow-green Vireo\",\n  \"Black-whiskered Vireo\",\n  \"Yucatan Vireo\",\n  \"Gray Jay\",\n  \"Steller's Jay\",\n  \"Blue Jay\",\n  \"Green Jay\",\n  \"Brown Jay\",\n  \"Florida Scrub-Jay\",\n  \"Island Scrub-Jay\",\n  \"Western Scrub-Jay\",\n  \"Mexican Jay\",\n  \"Pinyon Jay\",\n  \"Clark's Nutcracker\",\n  \"Black-billed Magpie\",\n  \"Yellow-billed Magpie\",\n  \"Eurasian Jackdaw\",\n  \"American Crow\",\n  \"Northwestern Crow\",\n  \"Tamaulipas Crow\",\n  \"Fish Crow\",\n  \"Chihuahuan Raven\",\n  \"Common Raven\",\n  \"Sky Lark\",\n  \"Horned Lark\",\n  \"Purple Martin\",\n  \"Cuban Martin\",\n  \"Gray-breasted Martin\",\n  \"Southern Martin\",\n  \"Brown-chested Martin\",\n  \"Tree Swallow\",\n  \"Violet-green Swallow\",\n  \"Bahama Swallow\",\n  \"Northern Rough-winged Swallow\",\n  \"Bank Swallow\",\n  \"Cliff Swallow\",\n  \"Cave Swallow\",\n  \"Barn Swallow\",\n  \"Common House-Martin\",\n  \"Carolina Chickadee\",\n  \"Black-capped Chickadee\",\n  \"Mountain Chickadee\",\n  \"Mexican Chickadee\",\n  \"Chestnut-backed Chickadee\",\n  \"Boreal Chickadee\",\n  \"Gray-headed Chickadee\",\n  \"Bridled Titmouse\",\n  \"Oak Titmouse\",\n  \"Juniper Titmouse\",\n  \"Tufted Titmouse\",\n  \"Verdin\",\n  \"Bushtit\",\n  \"Red-breasted Nuthatch\",\n  \"White-breasted Nuthatch\",\n  \"Pygmy Nuthatch\",\n  \"Brown-headed Nuthatch\",\n  \"Brown Creeper\",\n  \"Cactus Wren\",\n  \"Rock Wren\",\n  \"Canyon Wren\",\n  \"Carolina Wren\",\n  \"Bewick's Wren\",\n  \"House Wren\",\n  \"Winter Wren\",\n  \"Sedge Wren\",\n  \"Marsh Wren\",\n  \"American Dipper\",\n  \"Red-whiskered Bulbul\",\n  \"Golden-crowned Kinglet\",\n  \"Ruby-crowned Kinglet\",\n  \"Middendorff's Grasshopper-Warbler\",\n  \"Lanceolated Warbler\",\n  \"Wood Warbler\",\n  \"Dusky Warbler\",\n  \"Arctic Warbler\",\n  \"Blue-gray Gnatcatcher\",\n  \"California Gnatcatcher\",\n  \"Black-tailed Gnatcatcher\",\n  \"Black-capped Gnatcatcher\",\n  \"Narcissus Flycatcher\",\n  \"Mugimaki Flycatcher\",\n  \"Red-breasted Flycatcher\",\n  \"Siberian Flycatcher\",\n  \"Gray-spotted Flycatcher\",\n  \"Asian Brown Flycatcher\",\n  \"Siberian Rubythroat\",\n  \"Bluethroat\",\n  \"Siberian Blue Robin\",\n  \"Red-flanked Bluetail\",\n  \"Northern Wheatear\",\n  \"Stonechat\",\n  \"Eastern Bluebird\",\n  \"Western Bluebird\",\n  \"Mountain Bluebird\",\n  \"Townsend's Solitaire\",\n  \"Veery\",\n  \"Gray-cheeked Thrush\",\n  \"Bicknell's Thrush\",\n  \"Swainson's Thrush\",\n  \"Hermit Thrush\",\n  \"Wood Thrush\",\n  \"Eurasian Blackbird\",\n  \"Eyebrowed Thrush\",\n  \"Dusky Thrush\",\n  \"Fieldfare\",\n  \"Redwing\",\n  \"Clay-colored Robin\",\n  \"White-throated Robin\",\n  \"Rufous-backed Robin\",\n  \"American Robin\",\n  \"Varied Thrush\",\n  \"Aztec Thrush\",\n  \"Wrentit\",\n  \"Gray Catbird\",\n  \"Black Catbird\",\n  \"Northern Mockingbird\",\n  \"Bahama Mockingbird\",\n  \"Sage Thrasher\",\n  \"Brown Thrasher\",\n  \"Long-billed Thrasher\",\n  \"Bendire's Thrasher\",\n  \"Curve-billed Thrasher\",\n  \"California Thrasher\",\n  \"Crissal Thrasher\",\n  \"Le Conte's Thrasher\",\n  \"Blue Mockingbird\",\n  \"European Starling\",\n  \"Crested Myna\",\n  \"Siberian Accentor\",\n  \"Yellow Wagtail\",\n  \"Citrine Wagtail\",\n  \"Gray Wagtail\",\n  \"White Wagtail\",\n  \"Black-backed Wagtail\",\n  \"Tree Pipit\",\n  \"Olive-backed Pipit\",\n  \"Pechora Pipit\",\n  \"Red-throated Pipit\",\n  \"American Pipit\",\n  \"Sprague's Pipit\",\n  \"Bohemian Waxwing\",\n  \"Cedar Waxwing\",\n  \"Gray Silky-flycatcher\",\n  \"Phainopepla\",\n  \"Olive Warbler\",\n  \"Bachman's Warbler\",\n  \"Blue-winged Warbler\",\n  \"Golden-winged Warbler\",\n  \"Tennessee Warbler\",\n  \"Orange-crowned Warbler\",\n  \"Nashville Warbler\",\n  \"Virginia's Warbler\",\n  \"Colima Warbler\",\n  \"Lucy's Warbler\",\n  \"Crescent-chested Warbler\",\n  \"Northern Parula\",\n  \"Tropical Parula\",\n  \"Yellow Warbler\",\n  \"Chestnut-sided Warbler\",\n  \"Magnolia Warbler\",\n  \"Cape May Warbler\",\n  \"Black-throated Blue Warbler\",\n  \"Yellow-rumped Warbler\",\n  \"Black-throated Gray Warbler\",\n  \"Golden-cheeked Warbler\",\n  \"Black-throated Green Warbler\",\n  \"Townsend's Warbler\",\n  \"Hermit Warbler\",\n  \"Blackburnian Warbler\",\n  \"Yellow-throated Warbler\",\n  \"Grace's Warbler\",\n  \"Pine Warbler\",\n  \"Kirtland's Warbler\",\n  \"Prairie Warbler\",\n  \"Palm Warbler\",\n  \"Bay-breasted Warbler\",\n  \"Blackpoll Warbler\",\n  \"Cerulean Warbler\",\n  \"Black-and-white Warbler\",\n  \"American Redstart\",\n  \"Prothonotary Warbler\",\n  \"Worm-eating Warbler\",\n  \"Swainson's Warbler\",\n  \"Ovenbird\",\n  \"Northern Waterthrush\",\n  \"Louisiana Waterthrush\",\n  \"Kentucky Warbler\",\n  \"Connecticut Warbler\",\n  \"Mourning Warbler\",\n  \"MacGillivray's Warbler\",\n  \"Common Yellowthroat\",\n  \"Gray-crowned Yellowthroat\",\n  \"Hooded Warbler\",\n  \"Wilson's Warbler\",\n  \"Canada Warbler\",\n  \"Red-faced Warbler\",\n  \"Painted Redstart\",\n  \"Slate-throated Redstart\",\n  \"Fan-tailed Warbler\",\n  \"Golden-crowned Warbler\",\n  \"Rufous-capped Warbler\",\n  \"Yellow-breasted Chat\",\n  \"Bananaquit\",\n  \"Hepatic Tanager\",\n  \"Summer Tanager\",\n  \"Scarlet Tanager\",\n  \"Western Tanager\",\n  \"Flame-colored Tanager\",\n  \"Stripe-headed Tanager\",\n  \"White-collared Seedeater\",\n  \"Yellow-faced Grassquit\",\n  \"Black-faced Grassquit\",\n  \"Olive Sparrow\",\n  \"Green-tailed Towhee\",\n  \"Spotted Towhee\",\n  \"Eastern Towhee\",\n  \"Canyon Towhee\",\n  \"California Towhee\",\n  \"Abert's Towhee\",\n  \"Rufous-winged Sparrow\",\n  \"Cassin's Sparrow\",\n  \"Bachman's Sparrow\",\n  \"Botteri's Sparrow\",\n  \"Rufous-crowned Sparrow\",\n  \"Five-striped Sparrow\",\n  \"American Tree Sparrow\",\n  \"Chipping Sparrow\",\n  \"Clay-colored Sparrow\",\n  \"Brewer's Sparrow\",\n  \"Field Sparrow\",\n  \"Worthen's Sparrow\",\n  \"Black-chinned Sparrow\",\n  \"Vesper Sparrow\",\n  \"Lark Sparrow\",\n  \"Black-throated Sparrow\",\n  \"Sage Sparrow\",\n  \"Lark Bunting\",\n  \"Savannah Sparrow\",\n  \"Grasshopper Sparrow\",\n  \"Baird's Sparrow\",\n  \"Henslow's Sparrow\",\n  \"Le Conte's Sparrow\",\n  \"Nelson's Sharp-tailed Sparrow\",\n  \"Saltmarsh Sharp-tailed Sparrow\",\n  \"Seaside Sparrow\",\n  \"Fox Sparrow\",\n  \"Song Sparrow\",\n  \"Lincoln's Sparrow\",\n  \"Swamp Sparrow\",\n  \"White-throated Sparrow\",\n  \"Harris's Sparrow\",\n  \"White-crowned Sparrow\",\n  \"Golden-crowned Sparrow\",\n  \"Dark-eyed Junco\",\n  \"Yellow-eyed Junco\",\n  \"McCown's Longspur\",\n  \"Lapland Longspur\",\n  \"Smith's Longspur\",\n  \"Chestnut-collared Longspur\",\n  \"Pine Bunting\",\n  \"Little Bunting\",\n  \"Rustic Bunting\",\n  \"Yellow-breasted Bunting\",\n  \"Gray Bunting\",\n  \"Pallas's Bunting\",\n  \"Reed Bunting\",\n  \"Snow Bunting\",\n  \"McKay's Bunting\",\n  \"Crimson-collared Grosbeak\",\n  \"Northern Cardinal\",\n  \"Pyrrhuloxia\",\n  \"Yellow Grosbeak\",\n  \"Rose-breasted Grosbeak\",\n  \"Black-headed Grosbeak\",\n  \"Blue Bunting\",\n  \"Blue Grosbeak\",\n  \"Lazuli Bunting\",\n  \"Indigo Bunting\",\n  \"Varied Bunting\",\n  \"Painted Bunting\",\n  \"Dickcissel\",\n  \"Bobolink\",\n  \"Red-winged Blackbird\",\n  \"Tricolored Blackbird\",\n  \"Tawny-shouldered Blackbird\",\n  \"Eastern Meadowlark\",\n  \"Western Meadowlark\",\n  \"Yellow-headed Blackbird\",\n  \"Rusty Blackbird\",\n  \"Brewer's Blackbird\",\n  \"Common Grackle\",\n  \"Boat-tailed Grackle\",\n  \"Great-tailed Grackle\",\n  \"Shiny Cowbird\",\n  \"Bronzed Cowbird\",\n  \"Brown-headed Cowbird\",\n  \"Black-vented Oriole\",\n  \"Orchard Oriole\",\n  \"Hooded Oriole\",\n  \"Streak-backed Oriole\",\n  \"Spot-breasted Oriole\",\n  \"Altamira Oriole\",\n  \"Audubon's Oriole\",\n  \"Baltimore Oriole\",\n  \"Bullock's Oriole\",\n  \"Scott's Oriole\",\n  \"Common Chaffinch\",\n  \"Brambling\",\n  \"Gray-crowned Rosy-Finch\",\n  \"Black Rosy-Finch\",\n  \"Brown-capped Rosy-Finch\",\n  \"Pine Grosbeak\",\n  \"Common Rosefinch\",\n  \"Purple Finch\",\n  \"Cassin's Finch\",\n  \"House Finch\",\n  \"Red Crossbill\",\n  \"White-winged Crossbill\",\n  \"Common Redpoll\",\n  \"Hoary Redpoll\",\n  \"Eurasian Siskin\",\n  \"Pine Siskin\",\n  \"Lesser Goldfinch\",\n  \"Lawrence's Goldfinch\",\n  \"American Goldfinch\",\n  \"Oriental Greenfinch\",\n  \"Eurasian Bullfinch\",\n  \"Evening Grosbeak\",\n  \"Hawfinch\",\n  \"House Sparrow\",\n  \"Eurasian Tree Sparrow\",\n];\n","export const FISH = [\n  \"Grass carp\",\n  \"Peruvian anchoveta\",\n  \"Silver carp\",\n  \"Common carp\",\n  \"Asari\",\n  \"Japanese littleneck\",\n  \"Filipino Venus\",\n  \"Japanese cockle\",\n  \"Alaska pollock\",\n  \"Nile tilapia\",\n  \"Whiteleg shrimp\",\n  \"Bighead carp\",\n  \"Skipjack tuna\",\n  \"Catla\",\n  \"Crucian carp\",\n  \"Atlantic salmon\",\n  \"Atlantic herring\",\n  \"Chub mackerel\",\n  \"Rohu\",\n  \"Yellowfin tuna\",\n  \"Japanese anchovy\",\n  \"Largehead hairtail\",\n  \"Atlantic cod\",\n  \"European pilchard\",\n  \"Capelin\",\n  \"Jumbo flying squid\",\n  \"Milkfish\",\n  \"Atlantic mackerel\",\n  \"Rainbow trout\",\n  \"Araucanian herring\",\n  \"Wuchang bream\",\n  \"Gulf menhaden\",\n  \"Indian oil sardine\",\n  \"Black carp\",\n  \"European anchovy\",\n  \"Northern snakehead\",\n  \"Pacific cod\",\n  \"Pacific saury\",\n  \"Pacific herring\",\n  \"Bigeye tuna\",\n  \"Chilean jack mackerel\",\n  \"Yellow croaker\",\n  \"Haddock\",\n  \"Gazami crab\",\n  \"Amur catfish\",\n  \"Japanese common catfish\",\n  \"European sprat\",\n  \"Pink salmon\",\n  \"Mrigal carp\",\n  \"Channel catfish\",\n  \"Blood cockle\",\n  \"Blue whiting\",\n  \"Hilsa shad\",\n  \"Daggertooth pike conger\",\n  \"California pilchard\",\n  \"Cape horse mackerel\",\n  \"Pacific anchoveta\",\n  \"Japanese flying squid\",\n  \"Pollock\",\n  \"Chinese softshell turtle\",\n  \"Kawakawa\",\n  \"Indian mackerel\",\n  \"Asian swamp eel\",\n  \"Argentine hake\",\n  \"Short mackerel\",\n  \"Southern rough shrimp\",\n  \"Southern African anchovy\",\n  \"Pond loach\",\n  \"Iridescent shark\",\n  \"Mandarin fish\",\n  \"Chinese perch\",\n  \"Nile perch\",\n  \"Round sardinella\",\n  \"Japanese pilchard\",\n  \"Bombay-duck\",\n  \"Yellowhead catfish\",\n  \"Korean bullhead\",\n  \"Narrow-barred Spanish mackerel\",\n  \"Albacore\",\n  \"Madeiran sardinella\",\n  \"Bonga shad\",\n  \"Silver cyprinid\",\n  \"Nile tilapia\",\n  \"Longtail tuna\",\n  \"Atlantic menhaden\",\n  \"North Pacific hake\",\n  \"Atlantic horse mackerel\",\n  \"Japanese jack mackerel\",\n  \"Pacific thread herring\",\n  \"Bigeye scad\",\n  \"Yellowstripe scad\",\n  \"Chum salmon\",\n  \"Blue swimming crab\",\n  \"Pacific sand lance\",\n  \"Pacific sandlance\",\n  \"Goldstripe sardinella\",\n];\n","import { ChacaUtils } from \"../../core/utils\";\nimport {\n  ANIMAL_TYPE,\n  BEAR,\n  BIRD,\n  CAT,\n  CETACEAN,\n  COW,\n  CROCODILIA,\n  DOG,\n  HORSE,\n  INSECT,\n  LION,\n  RABBIT,\n  RODENT,\n  SNAKE,\n  FISH,\n} from \"./constants\";\n\nexport class AnimalModule {\n  constructor(private readonly utils: ChacaUtils) {}\n\n  readonly constants = {\n    animalTypes: ANIMAL_TYPE,\n    bears: BEAR,\n    birds: BIRD,\n    cats: CAT,\n    ceteceans: CETACEAN,\n    cows: COW,\n    cocodrilas: CROCODILIA,\n    dogs: DOG,\n    hourses: HORSE,\n    insects: INSECT,\n    lions: LION,\n    rabbits: RABBIT,\n    rodents: RODENT,\n    snakes: SNAKE,\n    fishes: FISH,\n  };\n\n  /**\n   * Returns a dog breed\n   * @example modules.animal.dog() // 'Irish Water Spaniel'\n   * @returns string\n   */\n  dog(): string {\n    return this.utils.oneOfArray(DOG);\n  }\n\n  /**\n   * Returns a bear breed\n   * @example modules.animal.bear() // 'Singapuria'\n   * @returns string\n   */\n  bear(): string {\n    return this.utils.oneOfArray(BEAR);\n  }\n\n  /**\n   * Returns a bird breed\n   * @example modules.animal.bird() // 'Singapuria'\n   * @returns string\n   */\n  bird(): string {\n    return this.utils.oneOfArray(BIRD);\n  }\n\n  /**\n   * Returns a cat breed\n   * @example modules.animal.cat() // 'Bengal'\n   * @returns string\n   */\n  cat(): string {\n    return this.utils.oneOfArray(CAT);\n  }\n\n  /**\n   * Returns a cetacean breed\n   * @example modules.animal.cetacean() // 'Spinner Dolphin'\n   * @returns string\n   */\n  cetacean(): string {\n    return this.utils.oneOfArray(CETACEAN);\n  }\n\n  /**\n   * Returns a cow breed\n   * @example modules.animal.cow() // 'Brava'\n   * @returns string\n   */\n  cow(): string {\n    return this.utils.oneOfArray(COW);\n  }\n\n  /**\n   * Returns a crocodilia breed\n   * @example modules.animal.crocodilia() // 'Philippine Crocodile'\n   * @returns string\n   */\n  crocodilia(): string {\n    return this.utils.oneOfArray(CROCODILIA);\n  }\n\n  /**\n   * Returns a fish breed\n   * @example modules.animal.fish() // 'Mandarin fish'\n   * @returns string\n   */\n  fish(): string {\n    return this.utils.oneOfArray(FISH);\n  }\n\n  /**\n   * Returns a horse breed\n   * @example modules.animal.horse() // 'Swedish Warmblood'\n   * @returns string\n   */\n  horse(): string {\n    return this.utils.oneOfArray(HORSE);\n  }\n\n  /**\n   * Returns a insect breed\n   * @example modules.animal.insect() // 'Pyramid ant'\n   * @returns string\n   */\n  insect(): string {\n    return this.utils.oneOfArray(INSECT);\n  }\n\n  /**\n   * Returns a lion breed\n   * @example modules.animal.lion() // 'Northeast Congo Lion'\n   * @returns string\n   */\n  lion(): string {\n    return this.utils.oneOfArray(LION);\n  }\n\n  /**\n   * Returns a rabbit breed\n   * @example modules.animal.rabbit() // 'Florida White'\n   * @returns string\n   */\n  rabbit(): string {\n    return this.utils.oneOfArray(RABBIT);\n  }\n\n  /**\n   * Returns a rodent breed\n   * @example modules.animal.rodent() // 'Cuscomys ashanika'\n   * @returns string\n   */\n  rodent(): string {\n    return this.utils.oneOfArray(RODENT);\n  }\n\n  /**\n   * Returns a snake breed\n   * @example modules.animal.snake() // 'Eyelash viper'\n   * @returns string\n   */\n  snake(): string {\n    return this.utils.oneOfArray(SNAKE);\n  }\n\n  /**\n   * Returns an animal type\n   * @example modules.animal.type() // 'Singapuria'\n   * @returns string\n   */\n  type(): string {\n    return this.utils.oneOfArray(ANIMAL_TYPE);\n  }\n}\n","export const PERIODIC_TABLE_ELEMENTS = [\n  { symbol: \"H\", name: \"Hydrogen\" },\n  { symbol: \"He\", name: \"Helium\" },\n  { symbol: \"Li\", name: \"Lithium\" },\n  { symbol: \"Be\", name: \"Beryllium\" },\n  { symbol: \"B\", name: \"Boron\" },\n  { symbol: \"C\", name: \"Carbon\" },\n  { symbol: \"N\", name: \"Nitrogen\" },\n  { symbol: \"O\", name: \"Oxygen\" },\n  { symbol: \"F\", name: \"Fluorine\" },\n  { symbol: \"Ne\", name: \"Neon\" },\n  { symbol: \"Na\", name: \"Sodium\" },\n  { symbol: \"Mg\", name: \"Magnesium\" },\n  { symbol: \"Al\", name: \"Aluminum\" },\n  { symbol: \"Si\", name: \"Silicon\" },\n  { symbol: \"P\", name: \"Phosphorus\" },\n  { symbol: \"S\", name: \"Sulfur\" },\n  { symbol: \"Cl\", name: \"Chlorine\" },\n  { symbol: \"Ar\", name: \"Argon\" },\n  { symbol: \"K\", name: \"Potassium\" },\n  { symbol: \"Ca\", name: \"Calcium\" },\n  { symbol: \"Sc\", name: \"Scandium\" },\n  { symbol: \"Ti\", name: \"Titanium\" },\n  { symbol: \"V\", name: \"Vanadium\" },\n  { symbol: \"Cr\", name: \"Chromium\" },\n  { symbol: \"Mn\", name: \"Manganese\" },\n  { symbol: \"Fe\", name: \"Iron\" },\n  { symbol: \"Co\", name: \"Cobalt\" },\n  { symbol: \"Ni\", name: \"Nickel\" },\n  { symbol: \"Cu\", name: \"Copper\" },\n  { symbol: \"Zn\", name: \"Zinc\" },\n  { symbol: \"Ga\", name: \"Gallium\" },\n  { symbol: \"Ge\", name: \"Germanium\" },\n  { symbol: \"As\", name: \"Arsenic\" },\n  { symbol: \"Se\", name: \"Selenium\" },\n  { symbol: \"Br\", name: \"Bromine\" },\n  { symbol: \"Kr\", name: \"Krypton\" },\n  { symbol: \"Rb\", name: \"Rubidium\" },\n  { symbol: \"Sr\", name: \"Strontium\" },\n  { symbol: \"Y\", name: \"Yttrium\" },\n  { symbol: \"Zr\", name: \"Zirconium\" },\n  { symbol: \"Nb\", name: \"Niobium\" },\n  { symbol: \"Mo\", name: \"Molybdenum\" },\n  { symbol: \"Tc\", name: \"Technetium\" },\n  { symbol: \"Ru\", name: \"Ruthenium\" },\n  { symbol: \"Rh\", name: \"Rhodium\" },\n  { symbol: \"Pd\", name: \"Palladium\" },\n  { symbol: \"Ag\", name: \"Silver\" },\n  { symbol: \"Cd\", name: \"Cadmium\" },\n  { symbol: \"In\", name: \"Indium\" },\n  { symbol: \"Sn\", name: \"Tin\" },\n  { symbol: \"Sb\", name: \"Antimony\" },\n  { symbol: \"Te\", name: \"Tellurium\" },\n  { symbol: \"I\", name: \"Iodine\" },\n  { symbol: \"Xe\", name: \"Xenon\" },\n  { symbol: \"Cs\", name: \"Cesium\" },\n  { symbol: \"Ba\", name: \"Barium\" },\n  { symbol: \"La\", name: \"Lanthanum\" },\n  { symbol: \"Ce\", name: \"Cerium\" },\n  { symbol: \"Pr\", name: \"Praseodymium\" },\n  { symbol: \"Nd\", name: \"Neodymium\" },\n  { symbol: \"Pm\", name: \"Promethium\" },\n  { symbol: \"Sm\", name: \"Samarium\" },\n  { symbol: \"Eu\", name: \"Europium\" },\n  { symbol: \"Gd\", name: \"Gadolinium\" },\n  { symbol: \"Tb\", name: \"Terbium\" },\n  { symbol: \"Dy\", name: \"Dysprosium\" },\n  { symbol: \"Ho\", name: \"Holmium\" },\n  { symbol: \"Er\", name: \"Erbium\" },\n  { symbol: \"Tm\", name: \"Thulium\" },\n  { symbol: \"Yb\", name: \"Ytterbium\" },\n  { symbol: \"Lu\", name: \"Lutetium\" },\n  { symbol: \"Hf\", name: \"Hafnium\" },\n  { symbol: \"Ta\", name: \"Tantalum\" },\n  { symbol: \"W\", name: \"Tungsten\" },\n  { symbol: \"Re\", name: \"Rhenium\" },\n  { symbol: \"Os\", name: \"Osmium\" },\n  { symbol: \"Ir\", name: \"Iridium\" },\n  { symbol: \"Pt\", name: \"Platinum\" },\n  { symbol: \"Au\", name: \"Gold\" },\n  { symbol: \"Hg\", name: \"Mercury\" },\n  { symbol: \"Tl\", name: \"Thallium\" },\n  { symbol: \"Pb\", name: \"Lead\" },\n  { symbol: \"Bi\", name: \"Bismuth\" },\n  { symbol: \"Po\", name: \"Polonium\" },\n  { symbol: \"At\", name: \"Astatine\" },\n  { symbol: \"Rn\", name: \"Radon\" },\n  { symbol: \"Fr\", name: \"Francium\" },\n  { symbol: \"Ra\", name: \"Radium\" },\n  { symbol: \"Ac\", name: \"Actinium\" },\n  { symbol: \"Th\", name: \"Thorium\" },\n  { symbol: \"Pa\", name: \"Protactinium\" },\n  { symbol: \"U\", name: \"Uranium\" },\n  { symbol: \"Np\", name: \"Neptunium\" },\n  { symbol: \"Pu\", name: \"Plutonium\" },\n  { symbol: \"Am\", name: \"Americium\" },\n  { symbol: \"Cm\", name: \"Curium\" },\n  { symbol: \"Bk\", name: \"Berkelium\" },\n  { symbol: \"Cf\", name: \"Californium\" },\n  { symbol: \"Es\", name: \"Einsteinium\" },\n  { symbol: \"Fm\", name: \"Fermium\" },\n  { symbol: \"Md\", name: \"Mendelevium\" },\n  { symbol: \"No\", name: \"Nobelium\" },\n  { symbol: \"Lr\", name: \"Lawrencium\" },\n  { symbol: \"Rf\", name: \"Rutherfordium\" },\n  { symbol: \"Db\", name: \"Dubnium\" },\n  { symbol: \"Sg\", name: \"Seaborgium\" },\n  { symbol: \"Bh\", name: \"Bohrium\" },\n  { symbol: \"Hs\", name: \"Hassium\" },\n  { symbol: \"Mt\", name: \"Meitnerium\" },\n];\n","export const UNITS = [\n  {\n    key: \"length\",\n    unit: \"meter (m)\",\n    symbol: \"m\",\n  },\n  {\n    key: \"mass\",\n    unit: \"kilogram (kg)\",\n    symbol: \"kg\",\n  },\n  {\n    key: \"time\",\n    unit: \"second (s)\",\n    symbol: \"s\",\n  },\n  {\n    key: \"electric current\",\n    unit: \"ampere (A)\",\n    symbol: \"a\",\n  },\n  {\n    key: \"thermodynamic temperature\",\n    unit: \"kelvin (K)\",\n    symbol: \"K\",\n  },\n  {\n    key: \"amount of substance\",\n    unit: \"mole (mol)\",\n    symbol: \"mol\",\n  },\n  {\n    key: \"luminous intensity\",\n    unit: \"candela (cd)\",\n    symbol: \"cd\",\n  },\n\n  {\n    key: \"plane angle\",\n    unit: \"radian (rad)\",\n    symbol: \"rad\",\n  },\n  {\n    key: \"solid angle\",\n    unit: \"steradian (sr)\",\n    symbol: \"sr\",\n  },\n  {\n    key: \"frequency\",\n    unit: \"hertz (Hz)\",\n    symbol: \"Hz\",\n  },\n  {\n    key: \"force\",\n    unit: \"newton (N)\",\n    symbol: \"N\",\n  },\n  {\n    key: \"pressure, stress\",\n    unit: \"pascal (Pa)\",\n    symbol: \"Pa\",\n  },\n  {\n    key: \"energy, work, quantity of heat\",\n    unit: \"joule (J)\",\n    symbol: \"J\",\n  },\n  {\n    key: \"power, radiant flux\",\n    unit: \"watt (W)\",\n    symbol: \"W\",\n  },\n  {\n    key: \"electric charge, quantity of electricity\",\n    unit: \"coulomb (C)\",\n    symbol: \"C\",\n  },\n  {\n    key: \"electric potential difference, electromotive force\",\n    unit: \"volt (V)\",\n    symbol: \"V\",\n  },\n  {\n    key: \"electric resistance\",\n    unit: \"ohm (Ω)\",\n    symbol: \"Ω\",\n  },\n  {\n    key: \"electric conductance\",\n    unit: \"siemens (S)\",\n    symbol: \"S\",\n  },\n  {\n    key: \"magnetic flux\",\n    unit: \"weber (Wb)\",\n    symbol: \"Wb\",\n  },\n  {\n    key: \"magnetic flux density\",\n    unit: \"tesla (T)\",\n    symbol: \"T\",\n  },\n  {\n    key: \"inductance\",\n    unit: \"henry (H)\",\n    symbol: \"H\",\n  },\n  {\n    key: \"luminous flux\",\n    unit: \"lumen (lm)\",\n    symbol: \"lm\",\n  },\n  {\n    key: \"illuminance\",\n    unit: \"lux (lx)\",\n    symbol: \"lx\",\n  },\n  {\n    key: \"activity (of a radionuclide)\",\n    unit: \"becquerel (Bq)\",\n    symbol: \"Bq\",\n  },\n  {\n    key: \"absorbed dose, specific energy (imparted), kerma\",\n    unit: \"gray (Gy)\",\n    symbol: \"Gy\",\n  },\n  {\n    key: \"dose equiunitent\",\n    unit: \"sievert (Sv)\",\n    symbol: \"Sv\",\n  },\n  {\n    key: \"catalytic activity\",\n    unit: \"katal (kat)\",\n    symbol: \"kat\",\n  },\n];\n","import { ChacaUtils } from \"../../core/utils\";\nimport { PERIODIC_TABLE_ELEMENTS } from \"./constants/periodic-table\";\nimport { UNITS } from \"./constants/units\";\n\nexport type PeriodicTableProps = {\n  type?: \"symbol\" | \"name\";\n};\n\nexport type UnitProps = {\n  type?: \"symbol\" | \"name\";\n};\n\nexport class ScienceModule {\n  constructor(private readonly utils: ChacaUtils) {}\n\n  readonly constants = {\n    units: UNITS,\n    periodicTableElements: PERIODIC_TABLE_ELEMENTS,\n  };\n\n  /**\n   * Returns periodic table element\n   * @param args.type Element format. Can be (`'name'` | `'symbol'`). Defaults `'name'`\n   *\n   * @example\n   * modules.science.periodicTableElement() // 'Curium'\n   * modules.science.periodicTableElement({ type: 'symbol' }) // 'Zn'\n   *\n   * @returns string\n   */\n  periodicTableElement({ type = \"name\" }: PeriodicTableProps = {}): string {\n    if (type === \"name\") {\n      return this.utils.oneOfArray(\n        this.constants.periodicTableElements.map((e) => e.name),\n      );\n    }\n\n    return this.utils.oneOfArray(\n      this.constants.periodicTableElements.map((e) => e.symbol),\n    );\n  }\n\n  /**\n   * Returns a unit of measurement\n   *\n   * @param args.type Unit format. Can be (`'name'` | `'symbol'`). Defaults `'name'`\n   *\n   * @example\n   * modules.science.unit() // 'hertz (Hz)'\n   * modules.science.unit({ type: 'symbol' }) // 'N'\n   * @returns string\n   */\n  unit({ type = \"name\" }: UnitProps = {}) {\n    if (type === \"symbol\") {\n      return this.utils.oneOfArray(UNITS.map((el) => el.symbol));\n    }\n\n    return this.utils.oneOfArray(UNITS.map((el) => el.unit));\n  }\n}\n","import { ILanguageWord } from \"./words\";\n\nexport const ENGLISH_WORDS: ILanguageWord = {\n  verbs: [\n    \"been\",\n    \"had\",\n    \"done\",\n    \"be\",\n    \"have\",\n    \"say\",\n    \"get\",\n    \"make\",\n    \"go\",\n    \"know\",\n    \"take\",\n    \"see\",\n    \"come\",\n    \"think\",\n    \"look\",\n    \"want\",\n    \"give\",\n    \"use\",\n    \"find\",\n    \"ask\",\n    \"work\",\n    \"seem\",\n    \"feel\",\n    \"try\",\n    \"leave\",\n    \"call\",\n  ],\n  conjuctions: [\n    \"for\",\n    \"and\",\n    \"nor\",\n    \"but\",\n    \"or\",\n    \"yet\",\n    \"so\",\n    \"althoungh\",\n    \"though\",\n    \"while\",\n    \"id\",\n    \"until\",\n    \"whether\",\n    \"after\",\n    \"before\",\n    \"since\",\n    \"when\",\n    \"where\",\n    \"how\",\n    \"than\",\n  ],\n  interjections: [\"hey!\", \"oh\", \"good!\", \"yes!\", \"indeed\", \"ah!\"],\n  prepositions: [\n    \"at\",\n    \"for\",\n    \"in\",\n    \"from\",\n    \"to\",\n    \"off\",\n    \"on\",\n    \"over\",\n    \"under\",\n    \"into\",\n    \"upon\",\n    \"onto\",\n    \"without\",\n    \"given\",\n    \"provided\",\n    \"during\",\n  ],\n  adverbs: [\n    \"slowly\",\n    \"rapidly\",\n    \"clusmsily\",\n    \"badly\",\n    \"sadly\",\n    \"here\",\n    \"there\",\n    \"north\",\n    \"down\",\n    \"anywhere\",\n    \"forward\",\n    \"close\",\n    \"always\",\n    \"usually\",\n    \"normally\",\n    \"really\",\n    \"quite\",\n  ],\n  adjectives: [\n    \"clever\",\n    \"little\",\n    \"lazy\",\n    \"quite\",\n    \"large\",\n    \"honest\",\n    \"beautiful\",\n    \"aggressive\",\n    \"ashamed\",\n    \"meaningless\",\n    \"nicer\",\n    \"cool\",\n    \"messy\",\n    \"delicious\",\n    \"salty\",\n    \"sweet\",\n    \"yummy\",\n    \"fry\",\n    \"hard\",\n    \"icy\",\n    \"wet\",\n    \"loud\",\n    \"silent\",\n    \"soft\",\n    \"fat\",\n    \"long\",\n    \"huge\",\n    \"flat\",\n    \"low\",\n    \"fast\",\n    \"young\",\n    \"regular\",\n    \"manic\",\n    \"tedious\",\n  ],\n  nouns: [\n    \"aardvark\",\n    \"abacus\",\n    \"abbey\",\n    \"abbreviation\",\n    \"abdomen\",\n    \"ability\",\n    \"abnormality\",\n    \"abolishment\",\n    \"abortion\",\n    \"abrogation\",\n    \"absence\",\n    \"abundance\",\n    \"abuse\",\n    \"academics\",\n    \"academy\",\n    \"accelerant\",\n    \"accelerator\",\n    \"accent\",\n    \"acceptance\",\n    \"access\",\n    \"accessory\",\n    \"accident\",\n    \"accommodation\",\n    \"accompanist\",\n    \"accomplishment\",\n    \"accord\",\n    \"accordance\",\n    \"accordion\",\n    \"account\",\n    \"accountability\",\n    \"accountant\",\n    \"accounting\",\n    \"accuracy\",\n    \"accusation\",\n    \"acetate\",\n    \"achievement\",\n    \"achiever\",\n    \"acid\",\n    \"acknowledgment\",\n    \"acorn\",\n    \"acoustics\",\n    \"acquaintance\",\n    \"acquisition\",\n    \"acre\",\n    \"acrylic\",\n    \"act\",\n    \"action\",\n    \"activation\",\n    \"activist\",\n    \"activity\",\n    \"actor\",\n    \"actress\",\n    \"acupuncture\",\n    \"ad\",\n    \"adaptation\",\n    \"adapter\",\n    \"addiction\",\n    \"addition\",\n    \"address\",\n    \"adjective\",\n    \"adjustment\",\n    \"admin\",\n    \"administration\",\n    \"administrator\",\n    \"admire\",\n    \"admission\",\n    \"adobe\",\n    \"adoption\",\n    \"adrenalin\",\n    \"adrenaline\",\n    \"adult\",\n    \"adulthood\",\n    \"advance\",\n    \"advancement\",\n    \"advantage\",\n    \"advent\",\n    \"adverb\",\n    \"advertisement\",\n    \"advertising\",\n    \"advice\",\n    \"adviser\",\n    \"advocacy\",\n    \"advocate\",\n    \"affair\",\n    \"affect\",\n    \"affidavit\",\n    \"affiliate\",\n    \"affinity\",\n    \"afoul\",\n    \"afterlife\",\n    \"aftermath\",\n    \"afternoon\",\n    \"aftershave\",\n    \"aftershock\",\n    \"afterthought\",\n    \"age\",\n    \"agency\",\n    \"agenda\",\n    \"agent\",\n    \"aggradation\",\n    \"aggression\",\n    \"aglet\",\n    \"agony\",\n    \"agreement\",\n    \"agriculture\",\n    \"aid\",\n    \"aide\",\n    \"aim\",\n    \"air\",\n    \"airbag\",\n    \"airbus\",\n    \"aircraft\",\n    \"airfare\",\n    \"airfield\",\n    \"airforce\",\n    \"airline\",\n    \"airmail\",\n    \"airman\",\n    \"airplane\",\n    \"airport\",\n    \"airship\",\n    \"airspace\",\n    \"alarm\",\n    \"alb\",\n    \"albatross\",\n    \"album\",\n    \"alcohol\",\n    \"alcove\",\n    \"alder\",\n    \"ale\",\n    \"alert\",\n    \"alfalfa\",\n    \"algebra\",\n    \"algorithm\",\n    \"alias\",\n    \"alibi\",\n    \"alien\",\n    \"allegation\",\n    \"allergist\",\n    \"alley\",\n    \"alliance\",\n    \"alligator\",\n    \"allocation\",\n    \"allowance\",\n    \"alloy\",\n    \"alluvium\",\n    \"almanac\",\n    \"almighty\",\n    \"almond\",\n    \"alpaca\",\n    \"alpenglow\",\n    \"alpenhorn\",\n    \"alpha\",\n    \"alphabet\",\n    \"altar\",\n    \"alteration\",\n    \"alternative\",\n    \"altitude\",\n    \"alto\",\n    \"aluminium\",\n    \"aluminum\",\n    \"amazement\",\n    \"amazon\",\n    \"ambassador\",\n    \"amber\",\n    \"ambience\",\n    \"ambiguity\",\n    \"ambition\",\n    \"ambulance\",\n    \"amendment\",\n    \"amenity\",\n    \"ammunition\",\n    \"amnesty\",\n    \"amount\",\n    \"amusement\",\n    \"anagram\",\n    \"analgesia\",\n    \"analog\",\n    \"analogue\",\n    \"analogy\",\n    \"analysis\",\n    \"analyst\",\n    \"analytics\",\n    \"anarchist\",\n    \"anarchy\",\n    \"anatomy\",\n    \"ancestor\",\n    \"anchovy\",\n    \"android\",\n    \"anesthesiologist\",\n    \"anesthesiology\",\n    \"angel\",\n    \"anger\",\n    \"angina\",\n    \"angiosperm\",\n    \"angle\",\n    \"angora\",\n    \"angstrom\",\n    \"anguish\",\n    \"animal\",\n    \"anime\",\n    \"anise\",\n    \"ankle\",\n    \"anklet\",\n    \"anniversary\",\n    \"announcement\",\n    \"annual\",\n    \"anorak\",\n    \"answer\",\n    \"ant\",\n    \"anteater\",\n    \"antecedent\",\n    \"antechamber\",\n    \"antelope\",\n    \"antennae\",\n    \"anterior\",\n    \"anthropology\",\n    \"antibody\",\n    \"anticipation\",\n    \"anticodon\",\n    \"antigen\",\n    \"antique\",\n    \"antiquity\",\n    \"antler\",\n    \"antling\",\n    \"anxiety\",\n    \"anybody\",\n    \"anyone\",\n    \"anything\",\n    \"anywhere\",\n    \"apartment\",\n    \"ape\",\n    \"aperitif\",\n    \"apology\",\n    \"app\",\n    \"apparatus\",\n    \"apparel\",\n    \"appeal\",\n    \"appearance\",\n    \"appellation\",\n    \"appendix\",\n    \"appetiser\",\n    \"appetite\",\n    \"appetizer\",\n    \"applause\",\n    \"apple\",\n    \"applewood\",\n    \"appliance\",\n    \"application\",\n    \"appointment\",\n    \"appreciation\",\n    \"apprehension\",\n    \"approach\",\n    \"appropriation\",\n    \"approval\",\n    \"apricot\",\n    \"apron\",\n    \"apse\",\n    \"aquarium\",\n    \"aquifer\",\n    \"arcade\",\n    \"arch\",\n    \"arch-rival\",\n    \"archaeologist\",\n    \"archaeology\",\n    \"archeology\",\n    \"archer\",\n    \"architect\",\n    \"architecture\",\n    \"archives\",\n    \"area\",\n    \"arena\",\n    \"argument\",\n    \"arithmetic\",\n    \"ark\",\n    \"arm\",\n    \"arm-rest\",\n    \"armadillo\",\n    \"armament\",\n    \"armchair\",\n    \"armoire\",\n    \"armor\",\n    \"armour\",\n    \"armpit\",\n    \"armrest\",\n    \"army\",\n    \"arrangement\",\n    \"array\",\n    \"arrest\",\n    \"arrival\",\n    \"arrogance\",\n    \"arrow\",\n    \"art\",\n    \"artery\",\n    \"arthur\",\n    \"artichoke\",\n    \"article\",\n    \"artifact\",\n    \"artificer\",\n    \"artist\",\n    \"ascend\",\n    \"ascent\",\n    \"ascot\",\n    \"ash\",\n    \"ashram\",\n    \"ashtray\",\n    \"aside\",\n    \"asparagus\",\n    \"aspect\",\n    \"asphalt\",\n    \"aspic\",\n    \"ass\",\n    \"assassination\",\n    \"assault\",\n    \"assembly\",\n    \"assertion\",\n    \"assessment\",\n    \"asset\",\n    \"assignment\",\n    \"assist\",\n    \"assistance\",\n    \"assistant\",\n    \"associate\",\n    \"association\",\n    \"assumption\",\n    \"assurance\",\n    \"asterisk\",\n    \"astrakhan\",\n    \"astrolabe\",\n    \"astrologer\",\n    \"astrology\",\n    \"astronomy\",\n    \"asymmetry\",\n    \"atelier\",\n    \"atheist\",\n    \"athlete\",\n    \"athletics\",\n    \"atmosphere\",\n    \"atom\",\n    \"atrium\",\n    \"attachment\",\n    \"attack\",\n    \"attacker\",\n    \"attainment\",\n    \"attempt\",\n    \"attendance\",\n    \"attendant\",\n    \"attention\",\n    \"attenuation\",\n    \"attic\",\n    \"attitude\",\n    \"attorney\",\n    \"attraction\",\n    \"attribute\",\n    \"auction\",\n    \"audience\",\n    \"audit\",\n    \"auditorium\",\n    \"aunt\",\n    \"authentication\",\n    \"authenticity\",\n    \"author\",\n    \"authorisation\",\n    \"authority\",\n    \"authorization\",\n    \"auto\",\n    \"autoimmunity\",\n    \"automation\",\n    \"automaton\",\n    \"autumn\",\n    \"availability\",\n    \"avalanche\",\n    \"avenue\",\n    \"average\",\n    \"avocado\",\n    \"award\",\n    \"awareness\",\n    \"awe\",\n    \"axis\",\n    \"azimuth\",\n    \"babe\",\n    \"baboon\",\n    \"babushka\",\n    \"baby\",\n    \"bachelor\",\n    \"back\",\n    \"back-up\",\n    \"backbone\",\n    \"backburn\",\n    \"backdrop\",\n    \"background\",\n    \"backpack\",\n    \"backup\",\n    \"backyard\",\n    \"bacon\",\n    \"bacterium\",\n    \"badge\",\n    \"badger\",\n    \"bafflement\",\n    \"bag\",\n    \"bagel\",\n    \"baggage\",\n    \"baggie\",\n    \"baggy\",\n    \"bagpipe\",\n    \"bail\",\n    \"bait\",\n    \"bake\",\n    \"baker\",\n    \"bakery\",\n    \"bakeware\",\n    \"balaclava\",\n    \"balalaika\",\n    \"balance\",\n    \"balcony\",\n    \"ball\",\n    \"ballet\",\n    \"balloon\",\n    \"balloonist\",\n    \"ballot\",\n    \"ballpark\",\n    \"bamboo\",\n    \"ban\",\n    \"banana\",\n    \"band\",\n    \"bandana\",\n    \"bandanna\",\n    \"bandolier\",\n    \"bandwidth\",\n    \"bangle\",\n    \"banjo\",\n    \"bank\",\n    \"bankbook\",\n    \"banker\",\n    \"banking\",\n    \"bankruptcy\",\n    \"banner\",\n    \"banquette\",\n    \"banyan\",\n    \"baobab\",\n    \"bar\",\n    \"barbecue\",\n    \"barbeque\",\n    \"barber\",\n    \"barbiturate\",\n    \"bargain\",\n    \"barge\",\n    \"baritone\",\n    \"barium\",\n    \"bark\",\n    \"barley\",\n    \"barn\",\n    \"barometer\",\n    \"barracks\",\n    \"barrage\",\n    \"barrel\",\n    \"barrier\",\n    \"barstool\",\n    \"bartender\",\n    \"base\",\n    \"baseball\",\n    \"baseboard\",\n    \"baseline\",\n    \"basement\",\n    \"basics\",\n    \"basil\",\n    \"basin\",\n    \"basis\",\n    \"basket\",\n    \"basketball\",\n    \"bass\",\n    \"bassinet\",\n    \"bassoon\",\n    \"bat\",\n    \"bath\",\n    \"bather\",\n    \"bathhouse\",\n    \"bathrobe\",\n    \"bathroom\",\n    \"bathtub\",\n    \"battalion\",\n    \"batter\",\n    \"battery\",\n    \"batting\",\n    \"battle\",\n    \"battleship\",\n    \"bay\",\n    \"bayou\",\n    \"beach\",\n    \"bead\",\n    \"beak\",\n    \"beam\",\n    \"bean\",\n    \"beancurd\",\n    \"beanie\",\n    \"beanstalk\",\n    \"bear\",\n    \"beard\",\n    \"beast\",\n    \"beastie\",\n    \"beat\",\n    \"beating\",\n    \"beauty\",\n    \"beaver\",\n    \"beck\",\n    \"bed\",\n    \"bedrock\",\n    \"bedroom\",\n    \"bee\",\n    \"beech\",\n    \"beef\",\n    \"beer\",\n    \"beet\",\n    \"beetle\",\n    \"beggar\",\n    \"beginner\",\n    \"beginning\",\n    \"begonia\",\n    \"behalf\",\n    \"behavior\",\n    \"behaviour\",\n    \"beheading\",\n    \"behest\",\n    \"behold\",\n    \"being\",\n    \"belfry\",\n    \"belief\",\n    \"believer\",\n    \"bell\",\n    \"belligerency\",\n    \"bellows\",\n    \"belly\",\n    \"belt\",\n    \"bench\",\n    \"bend\",\n    \"beneficiary\",\n    \"benefit\",\n    \"beret\",\n    \"berry\",\n    \"best-seller\",\n    \"bestseller\",\n    \"bet\",\n    \"beverage\",\n    \"beyond\",\n    \"bias\",\n    \"bibliography\",\n    \"bicycle\",\n    \"bid\",\n    \"bidder\",\n    \"bidding\",\n    \"bidet\",\n    \"bifocals\",\n    \"bijou\",\n    \"bike\",\n    \"bikini\",\n    \"bill\",\n    \"billboard\",\n    \"billing\",\n    \"billion\",\n    \"bin\",\n    \"binoculars\",\n    \"biology\",\n    \"biopsy\",\n    \"biosphere\",\n    \"biplane\",\n    \"birch\",\n    \"bird\",\n    \"bird-watcher\",\n    \"birdbath\",\n    \"birdcage\",\n    \"birdhouse\",\n    \"birth\",\n    \"birthday\",\n    \"biscuit\",\n    \"bit\",\n    \"bite\",\n    \"bitten\",\n    \"bitter\",\n    \"black\",\n    \"blackberry\",\n    \"blackbird\",\n    \"blackboard\",\n    \"blackfish\",\n    \"blackness\",\n    \"bladder\",\n    \"blade\",\n    \"blame\",\n    \"blank\",\n    \"blanket\",\n    \"blast\",\n    \"blazer\",\n    \"blend\",\n    \"blessing\",\n    \"blight\",\n    \"blind\",\n    \"blinker\",\n    \"blister\",\n    \"blizzard\",\n    \"block\",\n    \"blocker\",\n    \"blog\",\n    \"blogger\",\n    \"blood\",\n    \"bloodflow\",\n    \"bloom\",\n    \"bloomer\",\n    \"blossom\",\n    \"blouse\",\n    \"blow\",\n    \"blowgun\",\n    \"blowhole\",\n    \"blue\",\n    \"blueberry\",\n    \"blush\",\n    \"boar\",\n    \"board\",\n    \"boat\",\n    \"boatload\",\n    \"boatyard\",\n    \"bob\",\n    \"bobcat\",\n    \"body\",\n    \"bog\",\n    \"bolero\",\n    \"bolt\",\n    \"bomb\",\n    \"bomber\",\n    \"bombing\",\n    \"bond\",\n    \"bonding\",\n    \"bondsman\",\n    \"bone\",\n    \"bonfire\",\n    \"bongo\",\n    \"bonnet\",\n    \"bonsai\",\n    \"bonus\",\n    \"boogeyman\",\n    \"book\",\n    \"bookcase\",\n    \"bookend\",\n    \"booking\",\n    \"booklet\",\n    \"bookmark\",\n    \"boolean\",\n    \"boom\",\n    \"boon\",\n    \"boost\",\n    \"booster\",\n    \"boot\",\n    \"bootee\",\n    \"bootie\",\n    \"booty\",\n    \"border\",\n    \"bore\",\n    \"borrower\",\n    \"borrowing\",\n    \"bosom\",\n    \"boss\",\n    \"botany\",\n    \"bother\",\n    \"bottle\",\n    \"bottling\",\n    \"bottom\",\n    \"bottom-line\",\n    \"boudoir\",\n    \"bough\",\n    \"boulder\",\n    \"boulevard\",\n    \"boundary\",\n    \"bouquet\",\n    \"bourgeoisie\",\n    \"bout\",\n    \"boutique\",\n    \"bow\",\n    \"bower\",\n    \"bowl\",\n    \"bowler\",\n    \"bowling\",\n    \"bowtie\",\n    \"box\",\n    \"boxer\",\n    \"boxspring\",\n    \"boy\",\n    \"boycott\",\n    \"boyfriend\",\n    \"boyhood\",\n    \"boysenberry\",\n    \"bra\",\n    \"brace\",\n    \"bracelet\",\n    \"bracket\",\n    \"brain\",\n    \"brake\",\n    \"bran\",\n    \"branch\",\n    \"brand\",\n    \"brandy\",\n    \"brass\",\n    \"brassiere\",\n    \"bratwurst\",\n    \"bread\",\n    \"breadcrumb\",\n    \"breadfruit\",\n    \"break\",\n    \"breakdown\",\n    \"breakfast\",\n    \"breakpoint\",\n    \"breakthrough\",\n    \"breast\",\n    \"breastplate\",\n    \"breath\",\n    \"breeze\",\n    \"brewer\",\n    \"bribery\",\n    \"brick\",\n    \"bricklaying\",\n    \"bride\",\n    \"bridge\",\n    \"brief\",\n    \"briefing\",\n    \"briefly\",\n    \"briefs\",\n    \"brilliant\",\n    \"brink\",\n    \"brisket\",\n    \"broad\",\n    \"broadcast\",\n    \"broccoli\",\n    \"brochure\",\n    \"brocolli\",\n    \"broiler\",\n    \"broker\",\n    \"bronchitis\",\n    \"bronco\",\n    \"bronze\",\n    \"brooch\",\n    \"brood\",\n    \"brook\",\n    \"broom\",\n    \"brother\",\n    \"brother-in-law\",\n    \"brow\",\n    \"brown\",\n    \"brownie\",\n    \"browser\",\n    \"browsing\",\n    \"brunch\",\n    \"brush\",\n    \"brushfire\",\n    \"brushing\",\n    \"bubble\",\n    \"buck\",\n    \"bucket\",\n    \"buckle\",\n    \"buckwheat\",\n    \"bud\",\n    \"buddy\",\n    \"budget\",\n    \"buffalo\",\n    \"buffer\",\n    \"buffet\",\n    \"bug\",\n    \"buggy\",\n    \"bugle\",\n    \"builder\",\n    \"building\",\n    \"bulb\",\n    \"bulk\",\n    \"bull\",\n    \"bull-fighter\",\n    \"bulldozer\",\n    \"bullet\",\n    \"bump\",\n    \"bumper\",\n    \"bun\",\n    \"bunch\",\n    \"bungalow\",\n    \"bunghole\",\n    \"bunkhouse\",\n    \"burden\",\n    \"bureau\",\n    \"burglar\",\n    \"burial\",\n    \"burlesque\",\n    \"burn\",\n    \"burn-out\",\n    \"burning\",\n    \"burrito\",\n    \"burro\",\n    \"burrow\",\n    \"burst\",\n    \"bus\",\n    \"bush\",\n    \"business\",\n    \"businessman\",\n    \"bust\",\n    \"bustle\",\n    \"butane\",\n    \"butcher\",\n    \"butler\",\n    \"butter\",\n    \"butterfly\",\n    \"button\",\n    \"buy\",\n    \"buyer\",\n    \"buying\",\n    \"buzz\",\n    \"buzzard\",\n    \"c-clamp\",\n    \"cabana\",\n    \"cabbage\",\n    \"cabin\",\n    \"cabinet\",\n    \"cable\",\n    \"caboose\",\n    \"cacao\",\n    \"cactus\",\n    \"caddy\",\n    \"cadet\",\n    \"cafe\",\n    \"caffeine\",\n    \"caftan\",\n    \"cage\",\n    \"cake\",\n    \"calcification\",\n    \"calculation\",\n    \"calculator\",\n    \"calculus\",\n    \"calendar\",\n    \"calf\",\n    \"caliber\",\n    \"calibre\",\n    \"calico\",\n    \"call\",\n    \"calm\",\n    \"calorie\",\n    \"camel\",\n    \"cameo\",\n    \"camera\",\n    \"camp\",\n    \"campaign\",\n    \"campaigning\",\n    \"campanile\",\n    \"camper\",\n    \"campus\",\n    \"can\",\n    \"canal\",\n    \"cancer\",\n    \"candelabra\",\n    \"candidacy\",\n    \"candidate\",\n    \"candle\",\n    \"candy\",\n    \"cane\",\n    \"cannibal\",\n    \"cannon\",\n    \"canoe\",\n    \"canon\",\n    \"canopy\",\n    \"cantaloupe\",\n    \"canteen\",\n    \"canvas\",\n    \"cap\",\n    \"capability\",\n    \"capacity\",\n    \"cape\",\n    \"caper\",\n    \"capital\",\n    \"capitalism\",\n    \"capitulation\",\n    \"capon\",\n    \"cappelletti\",\n    \"cappuccino\",\n    \"captain\",\n    \"caption\",\n    \"captor\",\n    \"car\",\n    \"carabao\",\n    \"caramel\",\n    \"caravan\",\n    \"carbohydrate\",\n    \"carbon\",\n    \"carboxyl\",\n    \"card\",\n    \"cardboard\",\n    \"cardigan\",\n    \"care\",\n    \"career\",\n    \"cargo\",\n    \"caribou\",\n    \"carload\",\n    \"carnation\",\n    \"carnival\",\n    \"carol\",\n    \"carotene\",\n    \"carp\",\n    \"carpenter\",\n    \"carpet\",\n    \"carpeting\",\n    \"carport\",\n    \"carriage\",\n    \"carrier\",\n    \"carrot\",\n    \"carry\",\n    \"cart\",\n    \"cartel\",\n    \"carter\",\n    \"cartilage\",\n    \"cartload\",\n    \"cartoon\",\n    \"cartridge\",\n    \"carving\",\n    \"cascade\",\n    \"case\",\n    \"casement\",\n    \"cash\",\n    \"cashew\",\n    \"cashier\",\n    \"casino\",\n    \"casket\",\n    \"cassava\",\n    \"casserole\",\n    \"cassock\",\n    \"cast\",\n    \"castanet\",\n    \"castle\",\n    \"casualty\",\n    \"cat\",\n    \"catacomb\",\n    \"catalogue\",\n    \"catalysis\",\n    \"catalyst\",\n    \"catamaran\",\n    \"catastrophe\",\n    \"catch\",\n    \"catcher\",\n    \"category\",\n    \"caterpillar\",\n    \"cathedral\",\n    \"cation\",\n    \"catsup\",\n    \"cattle\",\n    \"cauliflower\",\n    \"causal\",\n    \"cause\",\n    \"causeway\",\n    \"caution\",\n    \"cave\",\n    \"caviar\",\n    \"cayenne\",\n    \"ceiling\",\n    \"celebration\",\n    \"celebrity\",\n    \"celeriac\",\n    \"celery\",\n    \"cell\",\n    \"cellar\",\n    \"cello\",\n    \"celsius\",\n    \"cement\",\n    \"cemetery\",\n    \"cenotaph\",\n    \"census\",\n    \"cent\",\n    \"center\",\n    \"centimeter\",\n    \"centre\",\n    \"centurion\",\n    \"century\",\n    \"cephalopod\",\n    \"ceramic\",\n    \"ceramics\",\n    \"cereal\",\n    \"ceremony\",\n    \"certainty\",\n    \"certificate\",\n    \"certification\",\n    \"cesspool\",\n    \"chafe\",\n    \"chain\",\n    \"chainstay\",\n    \"chair\",\n    \"chairlift\",\n    \"chairman\",\n    \"chairperson\",\n    \"chaise\",\n    \"chalet\",\n    \"chalice\",\n    \"chalk\",\n    \"challenge\",\n    \"chamber\",\n    \"champagne\",\n    \"champion\",\n    \"championship\",\n    \"chance\",\n    \"chandelier\",\n    \"change\",\n    \"channel\",\n    \"chaos\",\n    \"chap\",\n    \"chapel\",\n    \"chaplain\",\n    \"chapter\",\n    \"character\",\n    \"characteristic\",\n    \"characterization\",\n    \"chard\",\n    \"charge\",\n    \"charger\",\n    \"charity\",\n    \"charlatan\",\n    \"charm\",\n    \"charset\",\n    \"chart\",\n    \"charter\",\n    \"chasm\",\n    \"chassis\",\n    \"chastity\",\n    \"chasuble\",\n    \"chateau\",\n    \"chatter\",\n    \"chauffeur\",\n    \"chauvinist\",\n    \"check\",\n    \"checkbook\",\n    \"checking\",\n    \"checkout\",\n    \"checkroom\",\n    \"cheddar\",\n    \"cheek\",\n    \"cheer\",\n    \"cheese\",\n    \"cheesecake\",\n    \"cheetah\",\n    \"chef\",\n    \"chem\",\n    \"chemical\",\n    \"chemistry\",\n    \"chemotaxis\",\n    \"cheque\",\n    \"cherry\",\n    \"chess\",\n    \"chest\",\n    \"chestnut\",\n    \"chick\",\n    \"chicken\",\n    \"chicory\",\n    \"chief\",\n    \"chiffonier\",\n    \"child\",\n    \"childbirth\",\n    \"childhood\",\n    \"chili\",\n    \"chill\",\n    \"chime\",\n    \"chimpanzee\",\n    \"chin\",\n    \"chinchilla\",\n    \"chino\",\n    \"chip\",\n    \"chipmunk\",\n    \"chit-chat\",\n    \"chivalry\",\n    \"chive\",\n    \"chives\",\n    \"chocolate\",\n    \"choice\",\n    \"choir\",\n    \"choker\",\n    \"cholesterol\",\n    \"choosing\",\n    \"chop\",\n    \"chops\",\n    \"chopstick\",\n    \"chopsticks\",\n    \"chord\",\n    \"chorus\",\n    \"chow\",\n    \"chowder\",\n    \"chrome\",\n    \"chromolithograph\",\n    \"chronicle\",\n    \"chronograph\",\n    \"chronometer\",\n    \"chrysalis\",\n    \"chub\",\n    \"chuck\",\n    \"chug\",\n    \"church\",\n    \"churn\",\n    \"chutney\",\n    \"cicada\",\n    \"cigarette\",\n    \"cilantro\",\n    \"cinder\",\n    \"cinema\",\n    \"cinnamon\",\n    \"circadian\",\n    \"circle\",\n    \"circuit\",\n    \"circulation\",\n    \"circumference\",\n    \"circumstance\",\n    \"cirrhosis\",\n    \"cirrus\",\n    \"citizen\",\n    \"citizenship\",\n    \"citron\",\n    \"citrus\",\n    \"city\",\n    \"civilian\",\n    \"civilisation\",\n    \"civilization\",\n    \"claim\",\n    \"clam\",\n    \"clamp\",\n    \"clan\",\n    \"clank\",\n    \"clapboard\",\n    \"clarification\",\n    \"clarinet\",\n    \"clarity\",\n    \"clasp\",\n    \"class\",\n    \"classic\",\n    \"classification\",\n    \"classmate\",\n    \"classroom\",\n    \"clause\",\n    \"clave\",\n    \"clavicle\",\n    \"clavier\",\n    \"claw\",\n    \"clay\",\n    \"cleaner\",\n    \"clearance\",\n    \"clearing\",\n    \"cleat\",\n    \"cleavage\",\n    \"clef\",\n    \"cleft\",\n    \"clergyman\",\n    \"cleric\",\n    \"clerk\",\n    \"click\",\n    \"client\",\n    \"cliff\",\n    \"climate\",\n    \"climb\",\n    \"clinic\",\n    \"clip\",\n    \"clipboard\",\n    \"clipper\",\n    \"cloak\",\n    \"cloakroom\",\n    \"clock\",\n    \"clockwork\",\n    \"clogs\",\n    \"cloister\",\n    \"clone\",\n    \"close\",\n    \"closet\",\n    \"closing\",\n    \"closure\",\n    \"cloth\",\n    \"clothes\",\n    \"clothing\",\n    \"cloud\",\n    \"cloudburst\",\n    \"clove\",\n    \"clover\",\n    \"cloves\",\n    \"club\",\n    \"clue\",\n    \"cluster\",\n    \"clutch\",\n    \"co-producer\",\n    \"coach\",\n    \"coal\",\n    \"coalition\",\n    \"coast\",\n    \"coaster\",\n    \"coat\",\n    \"cob\",\n    \"cobbler\",\n    \"cobweb\",\n    \"cock\",\n    \"cockpit\",\n    \"cockroach\",\n    \"cocktail\",\n    \"cocoa\",\n    \"coconut\",\n    \"cod\",\n    \"code\",\n    \"codepage\",\n    \"codling\",\n    \"codon\",\n    \"codpiece\",\n    \"coevolution\",\n    \"cofactor\",\n    \"coffee\",\n    \"coffin\",\n    \"cohesion\",\n    \"cohort\",\n    \"coil\",\n    \"coin\",\n    \"coincidence\",\n    \"coinsurance\",\n    \"coke\",\n    \"cold\",\n    \"coleslaw\",\n    \"coliseum\",\n    \"collaboration\",\n    \"collagen\",\n    \"collapse\",\n    \"collar\",\n    \"collard\",\n    \"collateral\",\n    \"colleague\",\n    \"collection\",\n    \"collectivisation\",\n    \"collectivization\",\n    \"collector\",\n    \"college\",\n    \"collision\",\n    \"colloquy\",\n    \"colon\",\n    \"colonial\",\n    \"colonialism\",\n    \"colonisation\",\n    \"colonization\",\n    \"colony\",\n    \"color\",\n    \"colorlessness\",\n    \"colt\",\n    \"column\",\n    \"columnist\",\n    \"comb\",\n    \"combat\",\n    \"combination\",\n    \"combine\",\n    \"comeback\",\n    \"comedy\",\n    \"comestible\",\n    \"comfort\",\n    \"comfortable\",\n    \"comic\",\n    \"comics\",\n    \"comma\",\n    \"command\",\n    \"commander\",\n    \"commandment\",\n    \"comment\",\n    \"commerce\",\n    \"commercial\",\n    \"commission\",\n    \"commitment\",\n    \"committee\",\n    \"commodity\",\n    \"common\",\n    \"commonsense\",\n    \"commotion\",\n    \"communicant\",\n    \"communication\",\n    \"communion\",\n    \"communist\",\n    \"community\",\n    \"commuter\",\n    \"company\",\n    \"comparison\",\n    \"compass\",\n    \"compassion\",\n    \"compassionate\",\n    \"compensation\",\n    \"competence\",\n    \"competition\",\n    \"competitor\",\n    \"complaint\",\n    \"complement\",\n    \"completion\",\n    \"complex\",\n    \"complexity\",\n    \"compliance\",\n    \"complication\",\n    \"complicity\",\n    \"compliment\",\n    \"component\",\n    \"comportment\",\n    \"composer\",\n    \"composite\",\n    \"composition\",\n    \"compost\",\n    \"comprehension\",\n    \"compress\",\n    \"compromise\",\n    \"comptroller\",\n    \"compulsion\",\n    \"computer\",\n    \"comradeship\",\n    \"con\",\n    \"concentrate\",\n    \"concentration\",\n    \"concept\",\n    \"conception\",\n    \"concern\",\n    \"concert\",\n    \"conclusion\",\n    \"concrete\",\n    \"condition\",\n    \"conditioner\",\n    \"condominium\",\n    \"condor\",\n    \"conduct\",\n    \"conductor\",\n    \"cone\",\n    \"confectionery\",\n    \"conference\",\n    \"confidence\",\n    \"confidentiality\",\n    \"configuration\",\n    \"confirmation\",\n    \"conflict\",\n    \"conformation\",\n    \"confusion\",\n    \"conga\",\n    \"congo\",\n    \"congregation\",\n    \"congress\",\n    \"congressman\",\n    \"congressperson\",\n    \"conifer\",\n    \"connection\",\n    \"connotation\",\n    \"conscience\",\n    \"consciousness\",\n    \"consensus\",\n    \"consent\",\n    \"consequence\",\n    \"conservation\",\n    \"conservative\",\n    \"consideration\",\n    \"consignment\",\n    \"consist\",\n    \"consistency\",\n    \"console\",\n    \"consonant\",\n    \"conspiracy\",\n    \"conspirator\",\n    \"constant\",\n    \"constellation\",\n    \"constitution\",\n    \"constraint\",\n    \"construction\",\n    \"consul\",\n    \"consulate\",\n    \"consulting\",\n    \"consumer\",\n    \"consumption\",\n    \"contact\",\n    \"contagion\",\n    \"container\",\n    \"content\",\n    \"contention\",\n    \"contest\",\n    \"context\",\n    \"continent\",\n    \"contingency\",\n    \"continuity\",\n    \"contour\",\n    \"contract\",\n    \"contractor\",\n    \"contrail\",\n    \"contrary\",\n    \"contrast\",\n    \"contribution\",\n    \"contributor\",\n    \"control\",\n    \"controller\",\n    \"controversy\",\n    \"convection\",\n    \"convenience\",\n    \"convention\",\n    \"conversation\",\n    \"conversion\",\n    \"convert\",\n    \"convertible\",\n    \"conviction\",\n    \"cook\",\n    \"cookbook\",\n    \"cookie\",\n    \"cooking\",\n    \"coonskin\",\n    \"cooperation\",\n    \"coordination\",\n    \"coordinator\",\n    \"cop\",\n    \"cop-out\",\n    \"cope\",\n    \"copper\",\n    \"copy\",\n    \"copying\",\n    \"copyright\",\n    \"copywriter\",\n    \"coral\",\n    \"cord\",\n    \"corduroy\",\n    \"core\",\n    \"cork\",\n    \"cormorant\",\n    \"corn\",\n    \"corner\",\n    \"cornerstone\",\n    \"cornet\",\n    \"cornflakes\",\n    \"cornmeal\",\n    \"corporal\",\n    \"corporation\",\n    \"corporatism\",\n    \"corps\",\n    \"corral\",\n    \"correspondence\",\n    \"correspondent\",\n    \"corridor\",\n    \"corruption\",\n    \"corsage\",\n    \"cosset\",\n    \"cost\",\n    \"costume\",\n    \"cot\",\n    \"cottage\",\n    \"cotton\",\n    \"couch\",\n    \"cougar\",\n    \"cough\",\n    \"council\",\n    \"councilman\",\n    \"councilor\",\n    \"councilperson\",\n    \"counsel\",\n    \"counseling\",\n    \"counselling\",\n    \"counsellor\",\n    \"counselor\",\n    \"count\",\n    \"counter\",\n    \"counter-force\",\n    \"counterpart\",\n    \"counterterrorism\",\n    \"countess\",\n    \"country\",\n    \"countryside\",\n    \"county\",\n    \"couple\",\n    \"coupon\",\n    \"courage\",\n    \"course\",\n    \"court\",\n    \"courthouse\",\n    \"courtroom\",\n    \"cousin\",\n    \"covariate\",\n    \"cover\",\n    \"coverage\",\n    \"coverall\",\n    \"cow\",\n    \"cowbell\",\n    \"cowboy\",\n    \"coyote\",\n    \"crab\",\n    \"crack\",\n    \"cracker\",\n    \"crackers\",\n    \"cradle\",\n    \"craft\",\n    \"craftsman\",\n    \"cranberry\",\n    \"crane\",\n    \"cranky\",\n    \"crap\",\n    \"crash\",\n    \"crate\",\n    \"cravat\",\n    \"craw\",\n    \"crawdad\",\n    \"crayfish\",\n    \"crayon\",\n    \"crazy\",\n    \"cream\",\n    \"creation\",\n    \"creationism\",\n    \"creationist\",\n    \"creative\",\n    \"creativity\",\n    \"creator\",\n    \"creature\",\n    \"creche\",\n    \"credential\",\n    \"credenza\",\n    \"credibility\",\n    \"credit\",\n    \"creditor\",\n    \"creek\",\n    \"crepe\",\n    \"crest\",\n    \"crew\",\n    \"crewman\",\n    \"crewmate\",\n    \"crewmember\",\n    \"crewmen\",\n    \"cria\",\n    \"crib\",\n    \"cribbage\",\n    \"cricket\",\n    \"cricketer\",\n    \"crime\",\n    \"criminal\",\n    \"crinoline\",\n    \"crisis\",\n    \"crisp\",\n    \"criteria\",\n    \"criterion\",\n    \"critic\",\n    \"criticism\",\n    \"crocodile\",\n    \"crocus\",\n    \"croissant\",\n    \"crook\",\n    \"crop\",\n    \"cross\",\n    \"cross-contamination\",\n    \"cross-stitch\",\n    \"crotch\",\n    \"croup\",\n    \"crow\",\n    \"crowd\",\n    \"crown\",\n    \"crucifixion\",\n    \"crude\",\n    \"cruelty\",\n    \"cruise\",\n    \"crumb\",\n    \"crunch\",\n    \"crusader\",\n    \"crush\",\n    \"crust\",\n    \"cry\",\n    \"crystal\",\n    \"crystallography\",\n    \"cub\",\n    \"cube\",\n    \"cuckoo\",\n    \"cucumber\",\n    \"cue\",\n    \"cuff-link\",\n    \"cuisine\",\n    \"cultivar\",\n    \"cultivator\",\n    \"culture\",\n    \"culvert\",\n    \"cummerbund\",\n    \"cup\",\n    \"cupboard\",\n    \"cupcake\",\n    \"cupola\",\n    \"curd\",\n    \"cure\",\n    \"curio\",\n    \"curiosity\",\n    \"curl\",\n    \"curler\",\n    \"currant\",\n    \"currency\",\n    \"current\",\n    \"curriculum\",\n    \"curry\",\n    \"curse\",\n    \"cursor\",\n    \"curtailment\",\n    \"curtain\",\n    \"curve\",\n    \"cushion\",\n    \"custard\",\n    \"custody\",\n    \"custom\",\n    \"customer\",\n    \"cut\",\n    \"cuticle\",\n    \"cutlet\",\n    \"cutover\",\n    \"cutting\",\n    \"cyclamen\",\n    \"cycle\",\n    \"cyclone\",\n    \"cyclooxygenase\",\n    \"cygnet\",\n    \"cylinder\",\n    \"cymbal\",\n    \"cynic\",\n    \"cyst\",\n    \"cytokine\",\n    \"cytoplasm\",\n    \"dad\",\n    \"daddy\",\n    \"daffodil\",\n    \"dagger\",\n    \"dahlia\",\n    \"daikon\",\n    \"daily\",\n    \"dairy\",\n    \"daisy\",\n    \"dam\",\n    \"damage\",\n    \"dame\",\n    \"damn\",\n    \"dance\",\n    \"dancer\",\n    \"dancing\",\n    \"dandelion\",\n    \"danger\",\n    \"dare\",\n    \"dark\",\n    \"darkness\",\n    \"darn\",\n    \"dart\",\n    \"dash\",\n    \"dashboard\",\n    \"data\",\n    \"database\",\n    \"date\",\n    \"daughter\",\n    \"dawn\",\n    \"day\",\n    \"daybed\",\n    \"daylight\",\n    \"dead\",\n    \"deadline\",\n    \"deal\",\n    \"dealer\",\n    \"dealing\",\n    \"dearest\",\n    \"death\",\n    \"deathwatch\",\n    \"debate\",\n    \"debris\",\n    \"debt\",\n    \"debtor\",\n    \"decade\",\n    \"decadence\",\n    \"decency\",\n    \"decimal\",\n    \"decision\",\n    \"decision-making\",\n    \"deck\",\n    \"declaration\",\n    \"declination\",\n    \"decline\",\n    \"decoder\",\n    \"decongestant\",\n    \"decoration\",\n    \"decrease\",\n    \"decryption\",\n    \"dedication\",\n    \"deduce\",\n    \"deduction\",\n    \"deed\",\n    \"deep\",\n    \"deer\",\n    \"default\",\n    \"defeat\",\n    \"defendant\",\n    \"defender\",\n    \"defense\",\n    \"deficit\",\n    \"definition\",\n    \"deformation\",\n    \"degradation\",\n    \"degree\",\n    \"delay\",\n    \"deliberation\",\n    \"delight\",\n    \"delivery\",\n    \"demand\",\n    \"democracy\",\n    \"democrat\",\n    \"demon\",\n    \"demur\",\n    \"den\",\n    \"denim\",\n    \"denominator\",\n    \"density\",\n    \"dentist\",\n    \"deodorant\",\n    \"department\",\n    \"departure\",\n    \"dependency\",\n    \"dependent\",\n    \"deployment\",\n    \"deposit\",\n    \"deposition\",\n    \"depot\",\n    \"depression\",\n    \"depressive\",\n    \"depth\",\n    \"deputy\",\n    \"derby\",\n    \"derivation\",\n    \"derivative\",\n    \"derrick\",\n    \"descendant\",\n    \"descent\",\n    \"description\",\n    \"desert\",\n    \"design\",\n    \"designation\",\n    \"designer\",\n    \"desire\",\n    \"desk\",\n    \"desktop\",\n    \"dessert\",\n    \"destination\",\n    \"destiny\",\n    \"destroyer\",\n    \"destruction\",\n    \"detail\",\n    \"detainee\",\n    \"detainment\",\n    \"detection\",\n    \"detective\",\n    \"detector\",\n    \"detention\",\n    \"determination\",\n    \"detour\",\n    \"devastation\",\n    \"developer\",\n    \"developing\",\n    \"development\",\n    \"developmental\",\n    \"deviance\",\n    \"deviation\",\n    \"device\",\n    \"devil\",\n    \"dew\",\n    \"dhow\",\n    \"diabetes\",\n    \"diadem\",\n    \"diagnosis\",\n    \"diagram\",\n    \"dial\",\n    \"dialect\",\n    \"dialogue\",\n    \"diam\",\n    \"diamond\",\n    \"diaper\",\n    \"diaphragm\",\n    \"diarist\",\n    \"diary\",\n    \"dibble\",\n    \"dick\",\n    \"dickey\",\n    \"dictaphone\",\n    \"dictator\",\n    \"diction\",\n    \"dictionary\",\n    \"die\",\n    \"diesel\",\n    \"diet\",\n    \"difference\",\n    \"differential\",\n    \"difficulty\",\n    \"diffuse\",\n    \"dig\",\n    \"digestion\",\n    \"digestive\",\n    \"digger\",\n    \"digging\",\n    \"digit\",\n    \"dignity\",\n    \"dilapidation\",\n    \"dill\",\n    \"dilution\",\n    \"dime\",\n    \"dimension\",\n    \"dimple\",\n    \"diner\",\n    \"dinghy\",\n    \"dining\",\n    \"dinner\",\n    \"dinosaur\",\n    \"dioxide\",\n    \"dip\",\n    \"diploma\",\n    \"diplomacy\",\n    \"dipstick\",\n    \"direction\",\n    \"directive\",\n    \"director\",\n    \"directory\",\n    \"dirndl\",\n    \"dirt\",\n    \"disability\",\n    \"disadvantage\",\n    \"disagreement\",\n    \"disappointment\",\n    \"disarmament\",\n    \"disaster\",\n    \"discharge\",\n    \"discipline\",\n    \"disclaimer\",\n    \"disclosure\",\n    \"disco\",\n    \"disconnection\",\n    \"discount\",\n    \"discourse\",\n    \"discovery\",\n    \"discrepancy\",\n    \"discretion\",\n    \"discrimination\",\n    \"discussion\",\n    \"disdain\",\n    \"disease\",\n    \"disembodiment\",\n    \"disengagement\",\n    \"disguise\",\n    \"disgust\",\n    \"dish\",\n    \"dishwasher\",\n    \"disk\",\n    \"disparity\",\n    \"dispatch\",\n    \"displacement\",\n    \"display\",\n    \"disposal\",\n    \"disposer\",\n    \"disposition\",\n    \"dispute\",\n    \"disregard\",\n    \"disruption\",\n    \"dissemination\",\n    \"dissonance\",\n    \"distance\",\n    \"distinction\",\n    \"distortion\",\n    \"distribution\",\n    \"distributor\",\n    \"district\",\n    \"divalent\",\n    \"divan\",\n    \"diver\",\n    \"diversity\",\n    \"divide\",\n    \"dividend\",\n    \"divider\",\n    \"divine\",\n    \"diving\",\n    \"division\",\n    \"divorce\",\n    \"doc\",\n    \"dock\",\n    \"doctor\",\n    \"doctorate\",\n    \"doctrine\",\n    \"document\",\n    \"documentary\",\n    \"documentation\",\n    \"doe\",\n    \"dog\",\n    \"doggie\",\n    \"dogsled\",\n    \"dogwood\",\n    \"doing\",\n    \"doll\",\n    \"dollar\",\n    \"dollop\",\n    \"dolman\",\n    \"dolor\",\n    \"dolphin\",\n    \"domain\",\n    \"dome\",\n    \"domination\",\n    \"donation\",\n    \"donkey\",\n    \"donor\",\n    \"donut\",\n    \"door\",\n    \"doorbell\",\n    \"doorknob\",\n    \"doorpost\",\n    \"doorway\",\n    \"dory\",\n    \"dose\",\n    \"dot\",\n    \"double\",\n    \"doubling\",\n    \"doubt\",\n    \"doubter\",\n    \"dough\",\n    \"doughnut\",\n    \"down\",\n    \"downfall\",\n    \"downforce\",\n    \"downgrade\",\n    \"download\",\n    \"downstairs\",\n    \"downtown\",\n    \"downturn\",\n    \"dozen\",\n    \"draft\",\n    \"drag\",\n    \"dragon\",\n    \"dragonfly\",\n    \"dragonfruit\",\n    \"dragster\",\n    \"drain\",\n    \"drainage\",\n    \"drake\",\n    \"drama\",\n    \"dramaturge\",\n    \"drapes\",\n    \"draw\",\n    \"drawbridge\",\n    \"drawer\",\n    \"drawing\",\n    \"dream\",\n    \"dreamer\",\n    \"dredger\",\n    \"dress\",\n    \"dresser\",\n    \"dressing\",\n    \"drill\",\n    \"drink\",\n    \"drinking\",\n    \"drive\",\n    \"driver\",\n    \"driveway\",\n    \"driving\",\n    \"drizzle\",\n    \"dromedary\",\n    \"drop\",\n    \"drudgery\",\n    \"drug\",\n    \"drum\",\n    \"drummer\",\n    \"drunk\",\n    \"dryer\",\n    \"duck\",\n    \"duckling\",\n    \"dud\",\n    \"dude\",\n    \"due\",\n    \"duel\",\n    \"dueling\",\n    \"duffel\",\n    \"dugout\",\n    \"dulcimer\",\n    \"dumbwaiter\",\n    \"dump\",\n    \"dune\",\n    \"dungarees\",\n    \"dungeon\",\n    \"duplexer\",\n    \"duration\",\n    \"durian\",\n    \"dusk\",\n    \"dust\",\n    \"duster\",\n    \"duty\",\n    \"dwarf\",\n    \"dwell\",\n    \"dwelling\",\n    \"dynamics\",\n    \"dynamite\",\n    \"dynamo\",\n    \"dynasty\",\n    \"dysfunction\",\n    \"e-book\",\n    \"e-mail\",\n    \"e-reader\",\n    \"eagle\",\n    \"eaglet\",\n    \"ear\",\n    \"eardrum\",\n    \"earmuffs\",\n    \"earnings\",\n    \"earplug\",\n    \"earring\",\n    \"earrings\",\n    \"earth\",\n    \"earthquake\",\n    \"earthworm\",\n    \"ease\",\n    \"easel\",\n    \"east\",\n    \"eating\",\n    \"eaves\",\n    \"eavesdropper\",\n    \"ecclesia\",\n    \"echidna\",\n    \"eclipse\",\n    \"ecliptic\",\n    \"ecology\",\n    \"economics\",\n    \"economy\",\n    \"ecosystem\",\n    \"ectoderm\",\n    \"ectodermal\",\n    \"ecumenist\",\n    \"eddy\",\n    \"edge\",\n    \"edger\",\n    \"edible\",\n    \"editing\",\n    \"edition\",\n    \"editor\",\n    \"editorial\",\n    \"education\",\n    \"eel\",\n    \"effacement\",\n    \"effect\",\n    \"effective\",\n    \"effectiveness\",\n    \"effector\",\n    \"efficacy\",\n    \"efficiency\",\n    \"effort\",\n    \"egg\",\n    \"egghead\",\n    \"eggnog\",\n    \"eggplant\",\n    \"ego\",\n    \"eicosanoid\",\n    \"ejector\",\n    \"elbow\",\n    \"elderberry\",\n    \"election\",\n    \"electricity\",\n    \"electrocardiogram\",\n    \"electronics\",\n    \"element\",\n    \"elephant\",\n    \"elevation\",\n    \"elevator\",\n    \"eleventh\",\n    \"elf\",\n    \"elicit\",\n    \"eligibility\",\n    \"elimination\",\n    \"elite\",\n    \"elixir\",\n    \"elk\",\n    \"ellipse\",\n    \"elm\",\n    \"elongation\",\n    \"elver\",\n    \"email\",\n    \"emanate\",\n    \"embarrassment\",\n    \"embassy\",\n    \"embellishment\",\n    \"embossing\",\n    \"embryo\",\n    \"emerald\",\n    \"emergence\",\n    \"emergency\",\n    \"emergent\",\n    \"emery\",\n    \"emission\",\n    \"emitter\",\n    \"emotion\",\n    \"emphasis\",\n    \"empire\",\n    \"employ\",\n    \"employee\",\n    \"employer\",\n    \"employment\",\n    \"empowerment\",\n    \"emu\",\n    \"enactment\",\n    \"encirclement\",\n    \"enclave\",\n    \"enclosure\",\n    \"encounter\",\n    \"encouragement\",\n    \"encyclopedia\",\n    \"end\",\n    \"endive\",\n    \"endoderm\",\n    \"endorsement\",\n    \"endothelium\",\n    \"endpoint\",\n    \"enemy\",\n    \"energy\",\n    \"enforcement\",\n    \"engagement\",\n    \"engine\",\n    \"engineer\",\n    \"engineering\",\n    \"enigma\",\n    \"enjoyment\",\n    \"enquiry\",\n    \"enrollment\",\n    \"enterprise\",\n    \"entertainment\",\n    \"enthusiasm\",\n    \"entirety\",\n    \"entity\",\n    \"entrance\",\n    \"entree\",\n    \"entrepreneur\",\n    \"entry\",\n    \"envelope\",\n    \"environment\",\n    \"envy\",\n    \"enzyme\",\n    \"epauliere\",\n    \"epee\",\n    \"ephemera\",\n    \"ephemeris\",\n    \"ephyra\",\n    \"epic\",\n    \"episode\",\n    \"epithelium\",\n    \"epoch\",\n    \"eponym\",\n    \"epoxy\",\n    \"equal\",\n    \"equality\",\n    \"equation\",\n    \"equinox\",\n    \"equipment\",\n    \"equity\",\n    \"equivalent\",\n    \"era\",\n    \"eraser\",\n    \"erection\",\n    \"erosion\",\n    \"error\",\n    \"escalator\",\n    \"escape\",\n    \"escort\",\n    \"espadrille\",\n    \"espalier\",\n    \"essay\",\n    \"essence\",\n    \"essential\",\n    \"establishment\",\n    \"estate\",\n    \"estimate\",\n    \"estrogen\",\n    \"estuary\",\n    \"eternity\",\n    \"ethernet\",\n    \"ethics\",\n    \"ethnicity\",\n    \"ethyl\",\n    \"euphonium\",\n    \"eurocentrism\",\n    \"evaluation\",\n    \"evaluator\",\n    \"evaporation\",\n    \"eve\",\n    \"evening\",\n    \"evening-wear\",\n    \"event\",\n    \"everybody\",\n    \"everyone\",\n    \"everything\",\n    \"eviction\",\n    \"evidence\",\n    \"evil\",\n    \"evocation\",\n    \"evolution\",\n    \"ex-husband\",\n    \"ex-wife\",\n    \"exaggeration\",\n    \"exam\",\n    \"examination\",\n    \"examiner\",\n    \"example\",\n    \"exasperation\",\n    \"excellence\",\n    \"exception\",\n    \"excerpt\",\n    \"excess\",\n    \"exchange\",\n    \"excitement\",\n    \"exclamation\",\n    \"excursion\",\n    \"excuse\",\n    \"execution\",\n    \"executive\",\n    \"executor\",\n    \"exercise\",\n    \"exhaust\",\n    \"exhaustion\",\n    \"exhibit\",\n    \"exhibition\",\n    \"exile\",\n    \"existence\",\n    \"exit\",\n    \"exocrine\",\n    \"expansion\",\n    \"expansionism\",\n    \"expectancy\",\n    \"expectation\",\n    \"expedition\",\n    \"expense\",\n    \"experience\",\n    \"experiment\",\n    \"experimentation\",\n    \"expert\",\n    \"expertise\",\n    \"explanation\",\n    \"exploration\",\n    \"explorer\",\n    \"explosion\",\n    \"export\",\n    \"expose\",\n    \"exposition\",\n    \"exposure\",\n    \"expression\",\n    \"extension\",\n    \"extent\",\n    \"exterior\",\n    \"external\",\n    \"extinction\",\n    \"extreme\",\n    \"extremist\",\n    \"eye\",\n    \"eyeball\",\n    \"eyebrow\",\n    \"eyebrows\",\n    \"eyeglasses\",\n    \"eyelash\",\n    \"eyelashes\",\n    \"eyelid\",\n    \"eyelids\",\n    \"eyeliner\",\n    \"eyestrain\",\n    \"eyrie\",\n    \"fabric\",\n    \"face\",\n    \"facelift\",\n    \"facet\",\n    \"facility\",\n    \"facsimile\",\n    \"fact\",\n    \"factor\",\n    \"factory\",\n    \"faculty\",\n    \"fahrenheit\",\n    \"fail\",\n    \"failure\",\n    \"fairness\",\n    \"fairy\",\n    \"faith\",\n    \"faithful\",\n    \"fall\",\n    \"fallacy\",\n    \"falling-out\",\n    \"fame\",\n    \"familiar\",\n    \"familiarity\",\n    \"family\",\n    \"fan\",\n    \"fang\",\n    \"fanlight\",\n    \"fanny\",\n    \"fanny-pack\",\n    \"fantasy\",\n    \"farm\",\n    \"farmer\",\n    \"farming\",\n    \"farmland\",\n    \"farrow\",\n    \"fascia\",\n    \"fashion\",\n    \"fat\",\n    \"fate\",\n    \"father\",\n    \"father-in-law\",\n    \"fatigue\",\n    \"fatigues\",\n    \"faucet\",\n    \"fault\",\n    \"fav\",\n    \"fava\",\n    \"favor\",\n    \"favorite\",\n    \"fawn\",\n    \"fax\",\n    \"fear\",\n    \"feast\",\n    \"feather\",\n    \"feature\",\n    \"fedelini\",\n    \"federation\",\n    \"fedora\",\n    \"fee\",\n    \"feed\",\n    \"feedback\",\n    \"feeding\",\n    \"feel\",\n    \"feeling\",\n    \"fellow\",\n    \"felony\",\n    \"female\",\n    \"fen\",\n    \"fence\",\n    \"fencing\",\n    \"fender\",\n    \"feng\",\n    \"fennel\",\n    \"ferret\",\n    \"ferry\",\n    \"ferryboat\",\n    \"fertilizer\",\n    \"festival\",\n    \"fetus\",\n    \"few\",\n    \"fiber\",\n    \"fiberglass\",\n    \"fibre\",\n    \"fibroblast\",\n    \"fibrosis\",\n    \"ficlet\",\n    \"fiction\",\n    \"fiddle\",\n    \"field\",\n    \"fiery\",\n    \"fiesta\",\n    \"fifth\",\n    \"fig\",\n    \"fight\",\n    \"fighter\",\n    \"figure\",\n    \"figurine\",\n    \"file\",\n    \"filing\",\n    \"fill\",\n    \"fillet\",\n    \"filly\",\n    \"film\",\n    \"filter\",\n    \"filth\",\n    \"final\",\n    \"finance\",\n    \"financing\",\n    \"finding\",\n    \"fine\",\n    \"finer\",\n    \"finger\",\n    \"fingerling\",\n    \"fingernail\",\n    \"finish\",\n    \"finisher\",\n    \"fir\",\n    \"fire\",\n    \"fireman\",\n    \"fireplace\",\n    \"firewall\",\n    \"firm\",\n    \"first\",\n    \"fish\",\n    \"fishbone\",\n    \"fisherman\",\n    \"fishery\",\n    \"fishing\",\n    \"fishmonger\",\n    \"fishnet\",\n    \"fisting\",\n    \"fit\",\n    \"fitness\",\n    \"fix\",\n    \"fixture\",\n    \"flag\",\n    \"flair\",\n    \"flame\",\n    \"flan\",\n    \"flanker\",\n    \"flare\",\n    \"flash\",\n    \"flat\",\n    \"flatboat\",\n    \"flavor\",\n    \"flax\",\n    \"fleck\",\n    \"fledgling\",\n    \"fleece\",\n    \"flesh\",\n    \"flexibility\",\n    \"flick\",\n    \"flicker\",\n    \"flight\",\n    \"flint\",\n    \"flintlock\",\n    \"flip-flops\",\n    \"flock\",\n    \"flood\",\n    \"floodplain\",\n    \"floor\",\n    \"floozie\",\n    \"flour\",\n    \"flow\",\n    \"flower\",\n    \"flu\",\n    \"flugelhorn\",\n    \"fluke\",\n    \"flume\",\n    \"flung\",\n    \"flute\",\n    \"fly\",\n    \"flytrap\",\n    \"foal\",\n    \"foam\",\n    \"fob\",\n    \"focus\",\n    \"fog\",\n    \"fold\",\n    \"folder\",\n    \"folk\",\n    \"folklore\",\n    \"follower\",\n    \"following\",\n    \"fondue\",\n    \"font\",\n    \"food\",\n    \"foodstuffs\",\n    \"fool\",\n    \"foot\",\n    \"footage\",\n    \"football\",\n    \"footnote\",\n    \"footprint\",\n    \"footrest\",\n    \"footstep\",\n    \"footstool\",\n    \"footwear\",\n    \"forage\",\n    \"forager\",\n    \"foray\",\n    \"force\",\n    \"ford\",\n    \"forearm\",\n    \"forebear\",\n    \"forecast\",\n    \"forehead\",\n    \"foreigner\",\n    \"forelimb\",\n    \"forest\",\n    \"forestry\",\n    \"forever\",\n    \"forgery\",\n    \"fork\",\n    \"form\",\n    \"formal\",\n    \"formamide\",\n    \"format\",\n    \"formation\",\n    \"former\",\n    \"formicarium\",\n    \"formula\",\n    \"fort\",\n    \"forte\",\n    \"fortnight\",\n    \"fortress\",\n    \"fortune\",\n    \"forum\",\n    \"foundation\",\n    \"founder\",\n    \"founding\",\n    \"fountain\",\n    \"fourths\",\n    \"fowl\",\n    \"fox\",\n    \"foxglove\",\n    \"fraction\",\n    \"fragrance\",\n    \"frame\",\n    \"framework\",\n    \"fratricide\",\n    \"fraud\",\n    \"fraudster\",\n    \"freak\",\n    \"freckle\",\n    \"freedom\",\n    \"freelance\",\n    \"freezer\",\n    \"freezing\",\n    \"freight\",\n    \"freighter\",\n    \"frenzy\",\n    \"freon\",\n    \"frequency\",\n    \"fresco\",\n    \"friction\",\n    \"fridge\",\n    \"friend\",\n    \"friendship\",\n    \"fries\",\n    \"frigate\",\n    \"fright\",\n    \"fringe\",\n    \"fritter\",\n    \"frock\",\n    \"frog\",\n    \"front\",\n    \"frontier\",\n    \"frost\",\n    \"frosting\",\n    \"frown\",\n    \"fruit\",\n    \"frustration\",\n    \"fry\",\n    \"fuck\",\n    \"fuel\",\n    \"fugato\",\n    \"fulfillment\",\n    \"full\",\n    \"fun\",\n    \"function\",\n    \"functionality\",\n    \"fund\",\n    \"funding\",\n    \"fundraising\",\n    \"funeral\",\n    \"fur\",\n    \"furnace\",\n    \"furniture\",\n    \"furry\",\n    \"fusarium\",\n    \"futon\",\n    \"future\",\n    \"gadget\",\n    \"gaffe\",\n    \"gaffer\",\n    \"gain\",\n    \"gaiters\",\n    \"gale\",\n    \"gall-bladder\",\n    \"gallery\",\n    \"galley\",\n    \"gallon\",\n    \"galoshes\",\n    \"gambling\",\n    \"game\",\n    \"gamebird\",\n    \"gaming\",\n    \"gamma-ray\",\n    \"gander\",\n    \"gang\",\n    \"gap\",\n    \"garage\",\n    \"garb\",\n    \"garbage\",\n    \"garden\",\n    \"garlic\",\n    \"garment\",\n    \"garter\",\n    \"gas\",\n    \"gasket\",\n    \"gasoline\",\n    \"gasp\",\n    \"gastronomy\",\n    \"gastropod\",\n    \"gate\",\n    \"gateway\",\n    \"gather\",\n    \"gathering\",\n    \"gator\",\n    \"gauge\",\n    \"gauntlet\",\n    \"gavel\",\n    \"gazebo\",\n    \"gazelle\",\n    \"gear\",\n    \"gearshift\",\n    \"geek\",\n    \"gel\",\n    \"gelatin\",\n    \"gelding\",\n    \"gem\",\n    \"gemsbok\",\n    \"gender\",\n    \"gene\",\n    \"general\",\n    \"generation\",\n    \"generator\",\n    \"generosity\",\n    \"genetics\",\n    \"genie\",\n    \"genius\",\n    \"genocide\",\n    \"genre\",\n    \"gentleman\",\n    \"geography\",\n    \"geology\",\n    \"geometry\",\n    \"geranium\",\n    \"gerbil\",\n    \"gesture\",\n    \"geyser\",\n    \"gherkin\",\n    \"ghost\",\n    \"giant\",\n    \"gift\",\n    \"gig\",\n    \"gigantism\",\n    \"giggle\",\n    \"ginger\",\n    \"gingerbread\",\n    \"ginseng\",\n    \"giraffe\",\n    \"girdle\",\n    \"girl\",\n    \"girlfriend\",\n    \"git\",\n    \"glacier\",\n    \"gladiolus\",\n    \"glance\",\n    \"gland\",\n    \"glass\",\n    \"glasses\",\n    \"glee\",\n    \"glen\",\n    \"glider\",\n    \"gliding\",\n    \"glimpse\",\n    \"globe\",\n    \"glockenspiel\",\n    \"gloom\",\n    \"glory\",\n    \"glove\",\n    \"glow\",\n    \"glucose\",\n    \"glue\",\n    \"glut\",\n    \"glutamate\",\n    \"gnat\",\n    \"gnu\",\n    \"go-kart\",\n    \"goal\",\n    \"goat\",\n    \"gobbler\",\n    \"god\",\n    \"goddess\",\n    \"godfather\",\n    \"godmother\",\n    \"godparent\",\n    \"goggles\",\n    \"going\",\n    \"gold\",\n    \"goldfish\",\n    \"golf\",\n    \"gondola\",\n    \"gong\",\n    \"good\",\n    \"good-bye\",\n    \"goodbye\",\n    \"goodie\",\n    \"goodness\",\n    \"goodnight\",\n    \"goodwill\",\n    \"goose\",\n    \"gopher\",\n    \"gorilla\",\n    \"gosling\",\n    \"gossip\",\n    \"governance\",\n    \"government\",\n    \"governor\",\n    \"gown\",\n    \"grab-bag\",\n    \"grace\",\n    \"grade\",\n    \"gradient\",\n    \"graduate\",\n    \"graduation\",\n    \"graffiti\",\n    \"graft\",\n    \"grain\",\n    \"gram\",\n    \"grammar\",\n    \"gran\",\n    \"grand\",\n    \"grandchild\",\n    \"granddaughter\",\n    \"grandfather\",\n    \"grandma\",\n    \"grandmom\",\n    \"grandmother\",\n    \"grandpa\",\n    \"grandparent\",\n    \"grandson\",\n    \"granny\",\n    \"granola\",\n    \"grant\",\n    \"grape\",\n    \"grapefruit\",\n    \"graph\",\n    \"graphic\",\n    \"grasp\",\n    \"grass\",\n    \"grasshopper\",\n    \"grassland\",\n    \"gratitude\",\n    \"gravel\",\n    \"gravitas\",\n    \"gravity\",\n    \"gravy\",\n    \"gray\",\n    \"grease\",\n    \"great-grandfather\",\n    \"great-grandmother\",\n    \"greatness\",\n    \"greed\",\n    \"green\",\n    \"greenhouse\",\n    \"greens\",\n    \"grenade\",\n    \"grey\",\n    \"grid\",\n    \"grief\",\n    \"grill\",\n    \"grin\",\n    \"grip\",\n    \"gripper\",\n    \"grit\",\n    \"grocery\",\n    \"ground\",\n    \"group\",\n    \"grouper\",\n    \"grouse\",\n    \"grove\",\n    \"growth\",\n    \"grub\",\n    \"guacamole\",\n    \"guarantee\",\n    \"guard\",\n    \"guava\",\n    \"guerrilla\",\n    \"guess\",\n    \"guest\",\n    \"guestbook\",\n    \"guidance\",\n    \"guide\",\n    \"guideline\",\n    \"guilder\",\n    \"guilt\",\n    \"guilty\",\n    \"guinea\",\n    \"guitar\",\n    \"guitarist\",\n    \"gum\",\n    \"gumshoe\",\n    \"gun\",\n    \"gunpowder\",\n    \"gutter\",\n    \"guy\",\n    \"gym\",\n    \"gymnast\",\n    \"gymnastics\",\n    \"gynaecology\",\n    \"gyro\",\n    \"habit\",\n    \"habitat\",\n    \"hacienda\",\n    \"hacksaw\",\n    \"hackwork\",\n    \"hail\",\n    \"hair\",\n    \"haircut\",\n    \"hake\",\n    \"half\",\n    \"half-brother\",\n    \"half-sister\",\n    \"halibut\",\n    \"hall\",\n    \"halloween\",\n    \"hallway\",\n    \"halt\",\n    \"ham\",\n    \"hamburger\",\n    \"hammer\",\n    \"hammock\",\n    \"hamster\",\n    \"hand\",\n    \"hand-holding\",\n    \"handball\",\n    \"handful\",\n    \"handgun\",\n    \"handicap\",\n    \"handle\",\n    \"handlebar\",\n    \"handmaiden\",\n    \"handover\",\n    \"handrail\",\n    \"handsaw\",\n    \"hanger\",\n    \"happening\",\n    \"happiness\",\n    \"harald\",\n    \"harbor\",\n    \"harbour\",\n    \"hard-hat\",\n    \"hardboard\",\n    \"hardcover\",\n    \"hardening\",\n    \"hardhat\",\n    \"hardship\",\n    \"hardware\",\n    \"hare\",\n    \"harm\",\n    \"harmonica\",\n    \"harmonise\",\n    \"harmonize\",\n    \"harmony\",\n    \"harp\",\n    \"harpooner\",\n    \"harpsichord\",\n    \"harvest\",\n    \"harvester\",\n    \"hash\",\n    \"hashtag\",\n    \"hassock\",\n    \"haste\",\n    \"hat\",\n    \"hatbox\",\n    \"hatchet\",\n    \"hatchling\",\n    \"hate\",\n    \"hatred\",\n    \"haunt\",\n    \"haven\",\n    \"haversack\",\n    \"havoc\",\n    \"hawk\",\n    \"hay\",\n    \"haze\",\n    \"hazel\",\n    \"hazelnut\",\n    \"head\",\n    \"headache\",\n    \"headlight\",\n    \"headline\",\n    \"headphones\",\n    \"headquarters\",\n    \"headrest\",\n    \"health\",\n    \"health-care\",\n    \"hearing\",\n    \"hearsay\",\n    \"heart\",\n    \"heart-throb\",\n    \"heartache\",\n    \"heartbeat\",\n    \"hearth\",\n    \"hearthside\",\n    \"heartwood\",\n    \"heat\",\n    \"heater\",\n    \"heating\",\n    \"heaven\",\n    \"heavy\",\n    \"hectare\",\n    \"hedge\",\n    \"hedgehog\",\n    \"heel\",\n    \"heifer\",\n    \"height\",\n    \"heir\",\n    \"heirloom\",\n    \"helicopter\",\n    \"helium\",\n    \"hell\",\n    \"hellcat\",\n    \"hello\",\n    \"helmet\",\n    \"helo\",\n    \"help\",\n    \"hemisphere\",\n    \"hemp\",\n    \"hen\",\n    \"hepatitis\",\n    \"herb\",\n    \"herbs\",\n    \"heritage\",\n    \"hermit\",\n    \"hero\",\n    \"heroine\",\n    \"heron\",\n    \"herring\",\n    \"hesitation\",\n    \"heterosexual\",\n    \"hexagon\",\n    \"heyday\",\n    \"hiccups\",\n    \"hide\",\n    \"hierarchy\",\n    \"high\",\n    \"high-rise\",\n    \"highland\",\n    \"highlight\",\n    \"highway\",\n    \"hike\",\n    \"hiking\",\n    \"hill\",\n    \"hint\",\n    \"hip\",\n    \"hippodrome\",\n    \"hippopotamus\",\n    \"hire\",\n    \"hiring\",\n    \"historian\",\n    \"history\",\n    \"hit\",\n    \"hive\",\n    \"hobbit\",\n    \"hobby\",\n    \"hockey\",\n    \"hoe\",\n    \"hog\",\n    \"hold\",\n    \"holder\",\n    \"hole\",\n    \"holiday\",\n    \"home\",\n    \"homeland\",\n    \"homeownership\",\n    \"hometown\",\n    \"homework\",\n    \"homicide\",\n    \"homogenate\",\n    \"homonym\",\n    \"homosexual\",\n    \"homosexuality\",\n    \"honesty\",\n    \"honey\",\n    \"honeybee\",\n    \"honeydew\",\n    \"honor\",\n    \"honoree\",\n    \"hood\",\n    \"hoof\",\n    \"hook\",\n    \"hop\",\n    \"hope\",\n    \"hops\",\n    \"horde\",\n    \"horizon\",\n    \"hormone\",\n    \"horn\",\n    \"hornet\",\n    \"horror\",\n    \"horse\",\n    \"horseradish\",\n    \"horst\",\n    \"hose\",\n    \"hosiery\",\n    \"hospice\",\n    \"hospital\",\n    \"hospitalisation\",\n    \"hospitality\",\n    \"hospitalization\",\n    \"host\",\n    \"hostel\",\n    \"hostess\",\n    \"hotdog\",\n    \"hotel\",\n    \"hound\",\n    \"hour\",\n    \"hourglass\",\n    \"house\",\n    \"houseboat\",\n    \"household\",\n    \"housewife\",\n    \"housework\",\n    \"housing\",\n    \"hovel\",\n    \"hovercraft\",\n    \"howard\",\n    \"howitzer\",\n    \"hub\",\n    \"hubcap\",\n    \"hubris\",\n    \"hug\",\n    \"hugger\",\n    \"hull\",\n    \"human\",\n    \"humanity\",\n    \"humidity\",\n    \"hummus\",\n    \"humor\",\n    \"humour\",\n    \"hunchback\",\n    \"hundred\",\n    \"hunger\",\n    \"hunt\",\n    \"hunter\",\n    \"hunting\",\n    \"hurdle\",\n    \"hurdler\",\n    \"hurricane\",\n    \"hurry\",\n    \"hurt\",\n    \"husband\",\n    \"hut\",\n    \"hutch\",\n    \"hyacinth\",\n    \"hybridisation\",\n    \"hybridization\",\n    \"hydrant\",\n    \"hydraulics\",\n    \"hydrocarb\",\n    \"hydrocarbon\",\n    \"hydrofoil\",\n    \"hydrogen\",\n    \"hydrolyse\",\n    \"hydrolysis\",\n    \"hydrolyze\",\n    \"hydroxyl\",\n    \"hyena\",\n    \"hygienic\",\n    \"hype\",\n    \"hyphenation\",\n    \"hypochondria\",\n    \"hypothermia\",\n    \"hypothesis\",\n    \"ice\",\n    \"ice-cream\",\n    \"iceberg\",\n    \"icebreaker\",\n    \"icecream\",\n    \"icicle\",\n    \"icing\",\n    \"icon\",\n    \"icy\",\n    \"id\",\n    \"idea\",\n    \"ideal\",\n    \"identification\",\n    \"identity\",\n    \"ideology\",\n    \"idiom\",\n    \"idiot\",\n    \"igloo\",\n    \"ignorance\",\n    \"ignorant\",\n    \"ikebana\",\n    \"illegal\",\n    \"illiteracy\",\n    \"illness\",\n    \"illusion\",\n    \"illustration\",\n    \"image\",\n    \"imagination\",\n    \"imbalance\",\n    \"imitation\",\n    \"immigrant\",\n    \"immigration\",\n    \"immortal\",\n    \"impact\",\n    \"impairment\",\n    \"impala\",\n    \"impediment\",\n    \"implement\",\n    \"implementation\",\n    \"implication\",\n    \"import\",\n    \"importance\",\n    \"impostor\",\n    \"impress\",\n    \"impression\",\n    \"imprisonment\",\n    \"impropriety\",\n    \"improvement\",\n    \"impudence\",\n    \"impulse\",\n    \"in-joke\",\n    \"in-laws\",\n    \"inability\",\n    \"inauguration\",\n    \"inbox\",\n    \"incandescence\",\n    \"incarnation\",\n    \"incense\",\n    \"incentive\",\n    \"inch\",\n    \"incidence\",\n    \"incident\",\n    \"incision\",\n    \"inclusion\",\n    \"income\",\n    \"incompetence\",\n    \"inconvenience\",\n    \"increase\",\n    \"incubation\",\n    \"independence\",\n    \"independent\",\n    \"index\",\n    \"indication\",\n    \"indicator\",\n    \"indigence\",\n    \"individual\",\n    \"industrialisation\",\n    \"industrialization\",\n    \"industry\",\n    \"inequality\",\n    \"inevitable\",\n    \"infancy\",\n    \"infant\",\n    \"infarction\",\n    \"infection\",\n    \"infiltration\",\n    \"infinite\",\n    \"infix\",\n    \"inflammation\",\n    \"inflation\",\n    \"influence\",\n    \"influx\",\n    \"info\",\n    \"information\",\n    \"infrastructure\",\n    \"infusion\",\n    \"inglenook\",\n    \"ingrate\",\n    \"ingredient\",\n    \"inhabitant\",\n    \"inheritance\",\n    \"inhibition\",\n    \"inhibitor\",\n    \"initial\",\n    \"initialise\",\n    \"initialize\",\n    \"initiative\",\n    \"injunction\",\n    \"injury\",\n    \"injustice\",\n    \"ink\",\n    \"inlay\",\n    \"inn\",\n    \"innervation\",\n    \"innocence\",\n    \"innocent\",\n    \"innovation\",\n    \"input\",\n    \"inquiry\",\n    \"inscription\",\n    \"insect\",\n    \"insectarium\",\n    \"insert\",\n    \"inside\",\n    \"insight\",\n    \"insolence\",\n    \"insomnia\",\n    \"inspection\",\n    \"inspector\",\n    \"inspiration\",\n    \"installation\",\n    \"instance\",\n    \"instant\",\n    \"instinct\",\n    \"institute\",\n    \"institution\",\n    \"instruction\",\n    \"instructor\",\n    \"instrument\",\n    \"instrumentalist\",\n    \"instrumentation\",\n    \"insulation\",\n    \"insurance\",\n    \"insurgence\",\n    \"insurrection\",\n    \"integer\",\n    \"integral\",\n    \"integration\",\n    \"integrity\",\n    \"intellect\",\n    \"intelligence\",\n    \"intensity\",\n    \"intent\",\n    \"intention\",\n    \"intentionality\",\n    \"interaction\",\n    \"interchange\",\n    \"interconnection\",\n    \"intercourse\",\n    \"interest\",\n    \"interface\",\n    \"interferometer\",\n    \"interior\",\n    \"interject\",\n    \"interloper\",\n    \"internet\",\n    \"interpretation\",\n    \"interpreter\",\n    \"interval\",\n    \"intervenor\",\n    \"intervention\",\n    \"interview\",\n    \"interviewer\",\n    \"intestine\",\n    \"introduction\",\n    \"intuition\",\n    \"invader\",\n    \"invasion\",\n    \"invention\",\n    \"inventor\",\n    \"inventory\",\n    \"inverse\",\n    \"inversion\",\n    \"investigation\",\n    \"investigator\",\n    \"investment\",\n    \"investor\",\n    \"invitation\",\n    \"invite\",\n    \"invoice\",\n    \"involvement\",\n    \"iridescence\",\n    \"iris\",\n    \"iron\",\n    \"ironclad\",\n    \"irony\",\n    \"irrigation\",\n    \"ischemia\",\n    \"island\",\n    \"isogloss\",\n    \"isolation\",\n    \"issue\",\n    \"item\",\n    \"itinerary\",\n    \"ivory\",\n    \"jack\",\n    \"jackal\",\n    \"jacket\",\n    \"jackfruit\",\n    \"jade\",\n    \"jaguar\",\n    \"jail\",\n    \"jailhouse\",\n    \"jalapeño\",\n    \"jam\",\n    \"jar\",\n    \"jasmine\",\n    \"jaw\",\n    \"jazz\",\n    \"jealousy\",\n    \"jeans\",\n    \"jeep\",\n    \"jelly\",\n    \"jellybeans\",\n    \"jellyfish\",\n    \"jerk\",\n    \"jet\",\n    \"jewel\",\n    \"jeweller\",\n    \"jewellery\",\n    \"jewelry\",\n    \"jicama\",\n    \"jiffy\",\n    \"job\",\n    \"jockey\",\n    \"jodhpurs\",\n    \"joey\",\n    \"jogging\",\n    \"joint\",\n    \"joke\",\n    \"jot\",\n    \"journal\",\n    \"journalism\",\n    \"journalist\",\n    \"journey\",\n    \"joy\",\n    \"judge\",\n    \"judgment\",\n    \"judo\",\n    \"jug\",\n    \"juggernaut\",\n    \"juice\",\n    \"julienne\",\n    \"jumbo\",\n    \"jump\",\n    \"jumper\",\n    \"jumpsuit\",\n    \"jungle\",\n    \"junior\",\n    \"junk\",\n    \"junker\",\n    \"junket\",\n    \"jury\",\n    \"justice\",\n    \"justification\",\n    \"jute\",\n    \"kale\",\n    \"kamikaze\",\n    \"kangaroo\",\n    \"karate\",\n    \"kayak\",\n    \"kazoo\",\n    \"kebab\",\n    \"keep\",\n    \"keeper\",\n    \"kendo\",\n    \"kennel\",\n    \"ketch\",\n    \"ketchup\",\n    \"kettle\",\n    \"kettledrum\",\n    \"key\",\n    \"keyboard\",\n    \"keyboarding\",\n    \"keystone\",\n    \"kick\",\n    \"kick-off\",\n    \"kid\",\n    \"kidney\",\n    \"kielbasa\",\n    \"kill\",\n    \"killer\",\n    \"killing\",\n    \"kilogram\",\n    \"kilometer\",\n    \"kilt\",\n    \"kimono\",\n    \"kinase\",\n    \"kind\",\n    \"kindness\",\n    \"king\",\n    \"kingdom\",\n    \"kingfish\",\n    \"kiosk\",\n    \"kiss\",\n    \"kit\",\n    \"kitchen\",\n    \"kite\",\n    \"kitsch\",\n    \"kitten\",\n    \"kitty\",\n    \"kiwi\",\n    \"knee\",\n    \"kneejerk\",\n    \"knickers\",\n    \"knife\",\n    \"knife-edge\",\n    \"knight\",\n    \"knitting\",\n    \"knock\",\n    \"knot\",\n    \"know-how\",\n    \"knowledge\",\n    \"knuckle\",\n    \"koala\",\n    \"kohlrabi\",\n    \"kumquat\",\n    \"lab\",\n    \"label\",\n    \"labor\",\n    \"laboratory\",\n    \"laborer\",\n    \"labour\",\n    \"labourer\",\n    \"lace\",\n    \"lack\",\n    \"lacquerware\",\n    \"lad\",\n    \"ladder\",\n    \"ladle\",\n    \"lady\",\n    \"ladybug\",\n    \"lag\",\n    \"lake\",\n    \"lamb\",\n    \"lambkin\",\n    \"lament\",\n    \"lamp\",\n    \"lanai\",\n    \"land\",\n    \"landform\",\n    \"landing\",\n    \"landmine\",\n    \"landscape\",\n    \"lane\",\n    \"language\",\n    \"lantern\",\n    \"lap\",\n    \"laparoscope\",\n    \"lapdog\",\n    \"laptop\",\n    \"larch\",\n    \"lard\",\n    \"larder\",\n    \"lark\",\n    \"larva\",\n    \"laryngitis\",\n    \"lasagna\",\n    \"lashes\",\n    \"last\",\n    \"latency\",\n    \"latex\",\n    \"lathe\",\n    \"latitude\",\n    \"latte\",\n    \"latter\",\n    \"laugh\",\n    \"laughter\",\n    \"laundry\",\n    \"lava\",\n    \"law\",\n    \"lawmaker\",\n    \"lawn\",\n    \"lawsuit\",\n    \"lawyer\",\n    \"lay\",\n    \"layer\",\n    \"layout\",\n    \"lead\",\n    \"leader\",\n    \"leadership\",\n    \"leading\",\n    \"leaf\",\n    \"league\",\n    \"leaker\",\n    \"leap\",\n    \"learning\",\n    \"leash\",\n    \"leather\",\n    \"leave\",\n    \"leaver\",\n    \"lecture\",\n    \"leek\",\n    \"leeway\",\n    \"left\",\n    \"leg\",\n    \"legacy\",\n    \"legal\",\n    \"legend\",\n    \"legging\",\n    \"legislation\",\n    \"legislator\",\n    \"legislature\",\n    \"legitimacy\",\n    \"legume\",\n    \"leisure\",\n    \"lemon\",\n    \"lemonade\",\n    \"lemur\",\n    \"lender\",\n    \"lending\",\n    \"length\",\n    \"lens\",\n    \"lentil\",\n    \"leopard\",\n    \"leprosy\",\n    \"leptocephalus\",\n    \"lesbian\",\n    \"lesson\",\n    \"letter\",\n    \"lettuce\",\n    \"level\",\n    \"lever\",\n    \"leverage\",\n    \"leveret\",\n    \"liability\",\n    \"liar\",\n    \"liberty\",\n    \"libido\",\n    \"library\",\n    \"licence\",\n    \"license\",\n    \"licensing\",\n    \"licorice\",\n    \"lid\",\n    \"lie\",\n    \"lieu\",\n    \"lieutenant\",\n    \"life\",\n    \"lifestyle\",\n    \"lifetime\",\n    \"lift\",\n    \"ligand\",\n    \"light\",\n    \"lighting\",\n    \"lightning\",\n    \"lightscreen\",\n    \"ligula\",\n    \"likelihood\",\n    \"likeness\",\n    \"lilac\",\n    \"lily\",\n    \"limb\",\n    \"lime\",\n    \"limestone\",\n    \"limit\",\n    \"limitation\",\n    \"limo\",\n    \"line\",\n    \"linen\",\n    \"liner\",\n    \"linguist\",\n    \"linguistics\",\n    \"lining\",\n    \"link\",\n    \"linkage\",\n    \"linseed\",\n    \"lion\",\n    \"lip\",\n    \"lipid\",\n    \"lipoprotein\",\n    \"lipstick\",\n    \"liquid\",\n    \"liquidity\",\n    \"liquor\",\n    \"list\",\n    \"listening\",\n    \"listing\",\n    \"literate\",\n    \"literature\",\n    \"litigation\",\n    \"litmus\",\n    \"litter\",\n    \"littleneck\",\n    \"liver\",\n    \"livestock\",\n    \"living\",\n    \"lizard\",\n    \"llama\",\n    \"load\",\n    \"loading\",\n    \"loaf\",\n    \"loafer\",\n    \"loan\",\n    \"lobby\",\n    \"lobotomy\",\n    \"lobster\",\n    \"local\",\n    \"locality\",\n    \"location\",\n    \"lock\",\n    \"locker\",\n    \"locket\",\n    \"locomotive\",\n    \"locust\",\n    \"lode\",\n    \"loft\",\n    \"log\",\n    \"loggia\",\n    \"logic\",\n    \"login\",\n    \"logistics\",\n    \"logo\",\n    \"loincloth\",\n    \"lollipop\",\n    \"loneliness\",\n    \"longboat\",\n    \"longitude\",\n    \"look\",\n    \"lookout\",\n    \"loop\",\n    \"loophole\",\n    \"loquat\",\n    \"lord\",\n    \"loss\",\n    \"lot\",\n    \"lotion\",\n    \"lottery\",\n    \"lounge\",\n    \"louse\",\n    \"lout\",\n    \"love\",\n    \"lover\",\n    \"lox\",\n    \"loyalty\",\n    \"luck\",\n    \"luggage\",\n    \"lumber\",\n    \"lumberman\",\n    \"lunch\",\n    \"luncheonette\",\n    \"lunchmeat\",\n    \"lunchroom\",\n    \"lung\",\n    \"lunge\",\n    \"lust\",\n    \"lute\",\n    \"luxury\",\n    \"lychee\",\n    \"lycra\",\n    \"lye\",\n    \"lymphocyte\",\n    \"lynx\",\n    \"lyocell\",\n    \"lyre\",\n    \"lyrics\",\n    \"lysine\",\n    \"mRNA\",\n    \"macadamia\",\n    \"macaroni\",\n    \"macaroon\",\n    \"macaw\",\n    \"machine\",\n    \"machinery\",\n    \"macrame\",\n    \"macro\",\n    \"macrofauna\",\n    \"madam\",\n    \"maelstrom\",\n    \"maestro\",\n    \"magazine\",\n    \"maggot\",\n    \"magic\",\n    \"magnet\",\n    \"magnitude\",\n    \"maid\",\n    \"maiden\",\n    \"mail\",\n    \"mailbox\",\n    \"mailer\",\n    \"mailing\",\n    \"mailman\",\n    \"main\",\n    \"mainland\",\n    \"mainstream\",\n    \"maintainer\",\n    \"maintenance\",\n    \"maize\",\n    \"major\",\n    \"major-league\",\n    \"majority\",\n    \"makeover\",\n    \"maker\",\n    \"makeup\",\n    \"making\",\n    \"male\",\n    \"malice\",\n    \"mall\",\n    \"mallard\",\n    \"mallet\",\n    \"malnutrition\",\n    \"mama\",\n    \"mambo\",\n    \"mammoth\",\n    \"man\",\n    \"manacle\",\n    \"management\",\n    \"manager\",\n    \"manatee\",\n    \"mandarin\",\n    \"mandate\",\n    \"mandolin\",\n    \"mangle\",\n    \"mango\",\n    \"mangrove\",\n    \"manhunt\",\n    \"maniac\",\n    \"manicure\",\n    \"manifestation\",\n    \"manipulation\",\n    \"mankind\",\n    \"manner\",\n    \"manor\",\n    \"mansard\",\n    \"manservant\",\n    \"mansion\",\n    \"mantel\",\n    \"mantle\",\n    \"mantua\",\n    \"manufacturer\",\n    \"manufacturing\",\n    \"many\",\n    \"map\",\n    \"maple\",\n    \"mapping\",\n    \"maracas\",\n    \"marathon\",\n    \"marble\",\n    \"march\",\n    \"mare\",\n    \"margarine\",\n    \"margin\",\n    \"mariachi\",\n    \"marimba\",\n    \"marines\",\n    \"marionberry\",\n    \"mark\",\n    \"marker\",\n    \"market\",\n    \"marketer\",\n    \"marketing\",\n    \"marketplace\",\n    \"marksman\",\n    \"markup\",\n    \"marmalade\",\n    \"marriage\",\n    \"marsh\",\n    \"marshland\",\n    \"marshmallow\",\n    \"marten\",\n    \"marxism\",\n    \"mascara\",\n    \"mask\",\n    \"masonry\",\n    \"mass\",\n    \"massage\",\n    \"mast\",\n    \"master\",\n    \"masterpiece\",\n    \"mastication\",\n    \"mastoid\",\n    \"mat\",\n    \"match\",\n    \"matchmaker\",\n    \"mate\",\n    \"material\",\n    \"maternity\",\n    \"math\",\n    \"mathematics\",\n    \"matrix\",\n    \"matter\",\n    \"mattock\",\n    \"mattress\",\n    \"max\",\n    \"maximum\",\n    \"maybe\",\n    \"mayonnaise\",\n    \"mayor\",\n    \"meadow\",\n    \"meal\",\n    \"mean\",\n    \"meander\",\n    \"meaning\",\n    \"means\",\n    \"meantime\",\n    \"measles\",\n    \"measure\",\n    \"measurement\",\n    \"meat\",\n    \"meatball\",\n    \"meatloaf\",\n    \"mecca\",\n    \"mechanic\",\n    \"mechanism\",\n    \"med\",\n    \"medal\",\n    \"media\",\n    \"median\",\n    \"medication\",\n    \"medicine\",\n    \"medium\",\n    \"meet\",\n    \"meeting\",\n    \"melatonin\",\n    \"melody\",\n    \"melon\",\n    \"member\",\n    \"membership\",\n    \"membrane\",\n    \"meme\",\n    \"memo\",\n    \"memorial\",\n    \"memory\",\n    \"men\",\n    \"menopause\",\n    \"menorah\",\n    \"mention\",\n    \"mentor\",\n    \"menu\",\n    \"merchandise\",\n    \"merchant\",\n    \"mercury\",\n    \"meridian\",\n    \"meringue\",\n    \"merit\",\n    \"mesenchyme\",\n    \"mess\",\n    \"message\",\n    \"messenger\",\n    \"messy\",\n    \"metabolite\",\n    \"metal\",\n    \"metallurgist\",\n    \"metaphor\",\n    \"meteor\",\n    \"meteorology\",\n    \"meter\",\n    \"methane\",\n    \"method\",\n    \"methodology\",\n    \"metric\",\n    \"metro\",\n    \"metronome\",\n    \"mezzanine\",\n    \"microlending\",\n    \"micronutrient\",\n    \"microphone\",\n    \"microwave\",\n    \"mid-course\",\n    \"midden\",\n    \"middle\",\n    \"middleman\",\n    \"midline\",\n    \"midnight\",\n    \"midwife\",\n    \"might\",\n    \"migrant\",\n    \"migration\",\n    \"mile\",\n    \"mileage\",\n    \"milepost\",\n    \"milestone\",\n    \"military\",\n    \"milk\",\n    \"milkshake\",\n    \"mill\",\n    \"millennium\",\n    \"millet\",\n    \"millimeter\",\n    \"million\",\n    \"millisecond\",\n    \"millstone\",\n    \"mime\",\n    \"mimosa\",\n    \"min\",\n    \"mincemeat\",\n    \"mind\",\n    \"mine\",\n    \"mineral\",\n    \"mineshaft\",\n    \"mini\",\n    \"mini-skirt\",\n    \"minibus\",\n    \"minimalism\",\n    \"minimum\",\n    \"mining\",\n    \"minion\",\n    \"minister\",\n    \"mink\",\n    \"minnow\",\n    \"minor\",\n    \"minor-league\",\n    \"minority\",\n    \"mint\",\n    \"minute\",\n    \"miracle\",\n    \"mirror\",\n    \"miscarriage\",\n    \"miscommunication\",\n    \"misfit\",\n    \"misnomer\",\n    \"misogyny\",\n    \"misplacement\",\n    \"misreading\",\n    \"misrepresentation\",\n    \"miss\",\n    \"missile\",\n    \"mission\",\n    \"missionary\",\n    \"mist\",\n    \"mistake\",\n    \"mister\",\n    \"misunderstand\",\n    \"miter\",\n    \"mitten\",\n    \"mix\",\n    \"mixer\",\n    \"mixture\",\n    \"moai\",\n    \"moat\",\n    \"mob\",\n    \"mobile\",\n    \"mobility\",\n    \"mobster\",\n    \"moccasins\",\n    \"mocha\",\n    \"mochi\",\n    \"mode\",\n    \"model\",\n    \"modeling\",\n    \"modem\",\n    \"modernist\",\n    \"modernity\",\n    \"modification\",\n    \"molar\",\n    \"molasses\",\n    \"molding\",\n    \"mole\",\n    \"molecule\",\n    \"mom\",\n    \"moment\",\n    \"monastery\",\n    \"monasticism\",\n    \"money\",\n    \"monger\",\n    \"monitor\",\n    \"monitoring\",\n    \"monk\",\n    \"monkey\",\n    \"monocle\",\n    \"monopoly\",\n    \"monotheism\",\n    \"monsoon\",\n    \"monster\",\n    \"month\",\n    \"monument\",\n    \"mood\",\n    \"moody\",\n    \"moon\",\n    \"moonlight\",\n    \"moonscape\",\n    \"moonshine\",\n    \"moose\",\n    \"mop\",\n    \"morale\",\n    \"morbid\",\n    \"morbidity\",\n    \"morning\",\n    \"moron\",\n    \"morphology\",\n    \"morsel\",\n    \"mortal\",\n    \"mortality\",\n    \"mortgage\",\n    \"mortise\",\n    \"mosque\",\n    \"mosquito\",\n    \"most\",\n    \"motel\",\n    \"moth\",\n    \"mother\",\n    \"mother-in-law\",\n    \"motion\",\n    \"motivation\",\n    \"motive\",\n    \"motor\",\n    \"motorboat\",\n    \"motorcar\",\n    \"motorcycle\",\n    \"mound\",\n    \"mountain\",\n    \"mouse\",\n    \"mouser\",\n    \"mousse\",\n    \"moustache\",\n    \"mouth\",\n    \"mouton\",\n    \"movement\",\n    \"mover\",\n    \"movie\",\n    \"mower\",\n    \"mozzarella\",\n    \"mud\",\n    \"muffin\",\n    \"mug\",\n    \"mukluk\",\n    \"mule\",\n    \"multimedia\",\n    \"murder\",\n    \"muscat\",\n    \"muscatel\",\n    \"muscle\",\n    \"musculature\",\n    \"museum\",\n    \"mushroom\",\n    \"music\",\n    \"music-box\",\n    \"music-making\",\n    \"musician\",\n    \"muskrat\",\n    \"mussel\",\n    \"mustache\",\n    \"mustard\",\n    \"mutation\",\n    \"mutt\",\n    \"mutton\",\n    \"mycoplasma\",\n    \"mystery\",\n    \"myth\",\n    \"mythology\",\n    \"nail\",\n    \"name\",\n    \"naming\",\n    \"nanoparticle\",\n    \"napkin\",\n    \"narrative\",\n    \"nasal\",\n    \"nation\",\n    \"nationality\",\n    \"native\",\n    \"naturalisation\",\n    \"nature\",\n    \"navigation\",\n    \"necessity\",\n    \"neck\",\n    \"necklace\",\n    \"necktie\",\n    \"nectar\",\n    \"nectarine\",\n    \"need\",\n    \"needle\",\n    \"neglect\",\n    \"negligee\",\n    \"negotiation\",\n    \"neighbor\",\n    \"neighborhood\",\n    \"neighbour\",\n    \"neighbourhood\",\n    \"neologism\",\n    \"neon\",\n    \"neonate\",\n    \"nephew\",\n    \"nerve\",\n    \"nest\",\n    \"nestling\",\n    \"nestmate\",\n    \"net\",\n    \"netball\",\n    \"netbook\",\n    \"netsuke\",\n    \"network\",\n    \"networking\",\n    \"neurobiologist\",\n    \"neuron\",\n    \"neuropathologist\",\n    \"neuropsychiatry\",\n    \"news\",\n    \"newsletter\",\n    \"newspaper\",\n    \"newsprint\",\n    \"newsstand\",\n    \"nexus\",\n    \"nibble\",\n    \"nicety\",\n    \"niche\",\n    \"nick\",\n    \"nickel\",\n    \"nickname\",\n    \"niece\",\n    \"night\",\n    \"nightclub\",\n    \"nightgown\",\n    \"nightingale\",\n    \"nightlife\",\n    \"nightlight\",\n    \"nightmare\",\n    \"ninja\",\n    \"nit\",\n    \"nitrogen\",\n    \"nobody\",\n    \"nod\",\n    \"node\",\n    \"noir\",\n    \"noise\",\n    \"nonbeliever\",\n    \"nonconformist\",\n    \"nondisclosure\",\n    \"nonsense\",\n    \"noodle\",\n    \"noodles\",\n    \"noon\",\n    \"norm\",\n    \"normal\",\n    \"normalisation\",\n    \"normalization\",\n    \"north\",\n    \"nose\",\n    \"notation\",\n    \"note\",\n    \"notebook\",\n    \"notepad\",\n    \"nothing\",\n    \"notice\",\n    \"notion\",\n    \"notoriety\",\n    \"nougat\",\n    \"noun\",\n    \"nourishment\",\n    \"novel\",\n    \"nucleotidase\",\n    \"nucleotide\",\n    \"nudge\",\n    \"nuke\",\n    \"number\",\n    \"numeracy\",\n    \"numeric\",\n    \"numismatist\",\n    \"nun\",\n    \"nurse\",\n    \"nursery\",\n    \"nursing\",\n    \"nurture\",\n    \"nut\",\n    \"nutmeg\",\n    \"nutrient\",\n    \"nutrition\",\n    \"nylon\",\n    \"nymph\",\n    \"oak\",\n    \"oar\",\n    \"oasis\",\n    \"oat\",\n    \"oatmeal\",\n    \"oats\",\n    \"obedience\",\n    \"obesity\",\n    \"obi\",\n    \"object\",\n    \"objection\",\n    \"objective\",\n    \"obligation\",\n    \"oboe\",\n    \"observation\",\n    \"observatory\",\n    \"obsession\",\n    \"obsidian\",\n    \"obstacle\",\n    \"occasion\",\n    \"occupation\",\n    \"occurrence\",\n    \"ocean\",\n    \"ocelot\",\n    \"octagon\",\n    \"octave\",\n    \"octavo\",\n    \"octet\",\n    \"octopus\",\n    \"odometer\",\n    \"odyssey\",\n    \"oeuvre\",\n    \"off-ramp\",\n    \"offence\",\n    \"offense\",\n    \"offer\",\n    \"offering\",\n    \"office\",\n    \"officer\",\n    \"official\",\n    \"offset\",\n    \"oil\",\n    \"okra\",\n    \"oldie\",\n    \"oleo\",\n    \"olive\",\n    \"omega\",\n    \"omelet\",\n    \"omission\",\n    \"omnivore\",\n    \"oncology\",\n    \"onion\",\n    \"online\",\n    \"onset\",\n    \"opening\",\n    \"opera\",\n    \"operating\",\n    \"operation\",\n    \"operator\",\n    \"ophthalmologist\",\n    \"opinion\",\n    \"opium\",\n    \"opossum\",\n    \"opponent\",\n    \"opportunist\",\n    \"opportunity\",\n    \"opposite\",\n    \"opposition\",\n    \"optimal\",\n    \"optimisation\",\n    \"optimist\",\n    \"optimization\",\n    \"option\",\n    \"orange\",\n    \"orangutan\",\n    \"orator\",\n    \"orchard\",\n    \"orchestra\",\n    \"orchid\",\n    \"order\",\n    \"ordinary\",\n    \"ordination\",\n    \"ore\",\n    \"oregano\",\n    \"organ\",\n    \"organisation\",\n    \"organising\",\n    \"organization\",\n    \"organizing\",\n    \"orient\",\n    \"orientation\",\n    \"origin\",\n    \"original\",\n    \"originality\",\n    \"ornament\",\n    \"osmosis\",\n    \"osprey\",\n    \"ostrich\",\n    \"other\",\n    \"otter\",\n    \"ottoman\",\n    \"ounce\",\n    \"outback\",\n    \"outcome\",\n    \"outfielder\",\n    \"outfit\",\n    \"outhouse\",\n    \"outlaw\",\n    \"outlay\",\n    \"outlet\",\n    \"outline\",\n    \"outlook\",\n    \"output\",\n    \"outrage\",\n    \"outrigger\",\n    \"outrun\",\n    \"outset\",\n    \"outside\",\n    \"oval\",\n    \"ovary\",\n    \"oven\",\n    \"overcharge\",\n    \"overclocking\",\n    \"overcoat\",\n    \"overexertion\",\n    \"overflight\",\n    \"overhead\",\n    \"overheard\",\n    \"overload\",\n    \"overnighter\",\n    \"overshoot\",\n    \"oversight\",\n    \"overview\",\n    \"overweight\",\n    \"owl\",\n    \"owner\",\n    \"ownership\",\n    \"ox\",\n    \"oxford\",\n    \"oxygen\",\n    \"oyster\",\n    \"ozone\",\n    \"pace\",\n    \"pacemaker\",\n    \"pack\",\n    \"package\",\n    \"packaging\",\n    \"packet\",\n    \"pad\",\n    \"paddle\",\n    \"paddock\",\n    \"pagan\",\n    \"page\",\n    \"pagoda\",\n    \"pail\",\n    \"pain\",\n    \"paint\",\n    \"painter\",\n    \"painting\",\n    \"paintwork\",\n    \"pair\",\n    \"pajamas\",\n    \"palace\",\n    \"palate\",\n    \"palm\",\n    \"pamphlet\",\n    \"pan\",\n    \"pancake\",\n    \"pancreas\",\n    \"panda\",\n    \"panel\",\n    \"panic\",\n    \"pannier\",\n    \"panpipe\",\n    \"pansy\",\n    \"panther\",\n    \"panties\",\n    \"pantologist\",\n    \"pantology\",\n    \"pantry\",\n    \"pants\",\n    \"pantsuit\",\n    \"panty\",\n    \"pantyhose\",\n    \"papa\",\n    \"papaya\",\n    \"paper\",\n    \"paperback\",\n    \"paperwork\",\n    \"parable\",\n    \"parachute\",\n    \"parade\",\n    \"paradise\",\n    \"paragraph\",\n    \"parallelogram\",\n    \"paramecium\",\n    \"paramedic\",\n    \"parameter\",\n    \"paranoia\",\n    \"parcel\",\n    \"parchment\",\n    \"pard\",\n    \"pardon\",\n    \"parent\",\n    \"parenthesis\",\n    \"parenting\",\n    \"park\",\n    \"parka\",\n    \"parking\",\n    \"parliament\",\n    \"parole\",\n    \"parrot\",\n    \"parser\",\n    \"parsley\",\n    \"parsnip\",\n    \"part\",\n    \"participant\",\n    \"participation\",\n    \"particle\",\n    \"particular\",\n    \"partner\",\n    \"partnership\",\n    \"partridge\",\n    \"party\",\n    \"pass\",\n    \"passage\",\n    \"passbook\",\n    \"passenger\",\n    \"passing\",\n    \"passion\",\n    \"passive\",\n    \"passport\",\n    \"password\",\n    \"past\",\n    \"pasta\",\n    \"paste\",\n    \"pastor\",\n    \"pastoralist\",\n    \"pastry\",\n    \"pasture\",\n    \"pat\",\n    \"patch\",\n    \"pate\",\n    \"patent\",\n    \"patentee\",\n    \"path\",\n    \"pathogenesis\",\n    \"pathology\",\n    \"pathway\",\n    \"patience\",\n    \"patient\",\n    \"patina\",\n    \"patio\",\n    \"patriarch\",\n    \"patrimony\",\n    \"patriot\",\n    \"patrol\",\n    \"patroller\",\n    \"patrolling\",\n    \"patron\",\n    \"pattern\",\n    \"patty\",\n    \"pattypan\",\n    \"pause\",\n    \"pavement\",\n    \"pavilion\",\n    \"paw\",\n    \"pawnshop\",\n    \"pay\",\n    \"payee\",\n    \"payment\",\n    \"payoff\",\n    \"pea\",\n    \"peace\",\n    \"peach\",\n    \"peacoat\",\n    \"peacock\",\n    \"peak\",\n    \"peanut\",\n    \"pear\",\n    \"pearl\",\n    \"peasant\",\n    \"pecan\",\n    \"pecker\",\n    \"pedal\",\n    \"peek\",\n    \"peen\",\n    \"peer\",\n    \"peer-to-peer\",\n    \"pegboard\",\n    \"pelican\",\n    \"pelt\",\n    \"pen\",\n    \"penalty\",\n    \"pence\",\n    \"pencil\",\n    \"pendant\",\n    \"pendulum\",\n    \"penguin\",\n    \"penicillin\",\n    \"peninsula\",\n    \"penis\",\n    \"pennant\",\n    \"penny\",\n    \"pension\",\n    \"pentagon\",\n    \"peony\",\n    \"people\",\n    \"pepper\",\n    \"pepperoni\",\n    \"percent\",\n    \"percentage\",\n    \"perception\",\n    \"perch\",\n    \"perennial\",\n    \"perfection\",\n    \"performance\",\n    \"perfume\",\n    \"period\",\n    \"periodical\",\n    \"peripheral\",\n    \"permafrost\",\n    \"permission\",\n    \"permit\",\n    \"perp\",\n    \"perpendicular\",\n    \"persimmon\",\n    \"person\",\n    \"personal\",\n    \"personality\",\n    \"personnel\",\n    \"perspective\",\n    \"pest\",\n    \"pet\",\n    \"petal\",\n    \"petition\",\n    \"petitioner\",\n    \"petticoat\",\n    \"pew\",\n    \"pharmacist\",\n    \"pharmacopoeia\",\n    \"phase\",\n    \"pheasant\",\n    \"phenomenon\",\n    \"phenotype\",\n    \"pheromone\",\n    \"philanthropy\",\n    \"philosopher\",\n    \"philosophy\",\n    \"phone\",\n    \"phosphate\",\n    \"photo\",\n    \"photodiode\",\n    \"photograph\",\n    \"photographer\",\n    \"photography\",\n    \"photoreceptor\",\n    \"phrase\",\n    \"phrasing\",\n    \"physical\",\n    \"physics\",\n    \"physiology\",\n    \"pianist\",\n    \"piano\",\n    \"piccolo\",\n    \"pick\",\n    \"pickax\",\n    \"pickaxe\",\n    \"picket\",\n    \"pickle\",\n    \"pickup\",\n    \"picnic\",\n    \"picture\",\n    \"picturesque\",\n    \"pie\",\n    \"piece\",\n    \"pier\",\n    \"piety\",\n    \"pig\",\n    \"pigeon\",\n    \"piglet\",\n    \"pigpen\",\n    \"pigsty\",\n    \"pike\",\n    \"pilaf\",\n    \"pile\",\n    \"pilgrim\",\n    \"pilgrimage\",\n    \"pill\",\n    \"pillar\",\n    \"pillbox\",\n    \"pillow\",\n    \"pilot\",\n    \"pimp\",\n    \"pimple\",\n    \"pin\",\n    \"pinafore\",\n    \"pince-nez\",\n    \"pine\",\n    \"pineapple\",\n    \"pinecone\",\n    \"ping\",\n    \"pink\",\n    \"pinkie\",\n    \"pinot\",\n    \"pinstripe\",\n    \"pint\",\n    \"pinto\",\n    \"pinworm\",\n    \"pioneer\",\n    \"pipe\",\n    \"pipeline\",\n    \"piracy\",\n    \"pirate\",\n    \"piss\",\n    \"pistol\",\n    \"pit\",\n    \"pita\",\n    \"pitch\",\n    \"pitcher\",\n    \"pitching\",\n    \"pith\",\n    \"pizza\",\n    \"place\",\n    \"placebo\",\n    \"placement\",\n    \"placode\",\n    \"plagiarism\",\n    \"plain\",\n    \"plaintiff\",\n    \"plan\",\n    \"plane\",\n    \"planet\",\n    \"planning\",\n    \"plant\",\n    \"plantation\",\n    \"planter\",\n    \"planula\",\n    \"plaster\",\n    \"plasterboard\",\n    \"plastic\",\n    \"plate\",\n    \"platelet\",\n    \"platform\",\n    \"platinum\",\n    \"platter\",\n    \"platypus\",\n    \"play\",\n    \"player\",\n    \"playground\",\n    \"playroom\",\n    \"playwright\",\n    \"plea\",\n    \"pleasure\",\n    \"pleat\",\n    \"pledge\",\n    \"plenty\",\n    \"plier\",\n    \"pliers\",\n    \"plight\",\n    \"plot\",\n    \"plough\",\n    \"plover\",\n    \"plow\",\n    \"plowman\",\n    \"plug\",\n    \"plugin\",\n    \"plum\",\n    \"plumber\",\n    \"plume\",\n    \"plunger\",\n    \"plywood\",\n    \"pneumonia\",\n    \"pocket\",\n    \"pocket-watch\",\n    \"pocketbook\",\n    \"pod\",\n    \"podcast\",\n    \"poem\",\n    \"poet\",\n    \"poetry\",\n    \"poignance\",\n    \"point\",\n    \"poison\",\n    \"poisoning\",\n    \"poker\",\n    \"polarisation\",\n    \"polarization\",\n    \"pole\",\n    \"polenta\",\n    \"police\",\n    \"policeman\",\n    \"policy\",\n    \"polish\",\n    \"politician\",\n    \"politics\",\n    \"poll\",\n    \"polliwog\",\n    \"pollutant\",\n    \"pollution\",\n    \"polo\",\n    \"polyester\",\n    \"polyp\",\n    \"pomegranate\",\n    \"pomelo\",\n    \"pompom\",\n    \"poncho\",\n    \"pond\",\n    \"pony\",\n    \"pool\",\n    \"poor\",\n    \"pop\",\n    \"popcorn\",\n    \"poppy\",\n    \"popsicle\",\n    \"popularity\",\n    \"population\",\n    \"populist\",\n    \"porcelain\",\n    \"porch\",\n    \"porcupine\",\n    \"pork\",\n    \"porpoise\",\n    \"port\",\n    \"porter\",\n    \"portfolio\",\n    \"porthole\",\n    \"portion\",\n    \"portrait\",\n    \"position\",\n    \"possession\",\n    \"possibility\",\n    \"possible\",\n    \"post\",\n    \"postage\",\n    \"postbox\",\n    \"poster\",\n    \"posterior\",\n    \"postfix\",\n    \"pot\",\n    \"potato\",\n    \"potential\",\n    \"pottery\",\n    \"potty\",\n    \"pouch\",\n    \"poultry\",\n    \"pound\",\n    \"pounding\",\n    \"poverty\",\n    \"powder\",\n    \"power\",\n    \"practice\",\n    \"practitioner\",\n    \"prairie\",\n    \"praise\",\n    \"pray\",\n    \"prayer\",\n    \"precedence\",\n    \"precedent\",\n    \"precipitation\",\n    \"precision\",\n    \"predecessor\",\n    \"preface\",\n    \"preference\",\n    \"prefix\",\n    \"pregnancy\",\n    \"prejudice\",\n    \"prelude\",\n    \"premeditation\",\n    \"premier\",\n    \"premise\",\n    \"premium\",\n    \"preoccupation\",\n    \"preparation\",\n    \"prescription\",\n    \"presence\",\n    \"present\",\n    \"presentation\",\n    \"preservation\",\n    \"preserves\",\n    \"presidency\",\n    \"president\",\n    \"press\",\n    \"pressroom\",\n    \"pressure\",\n    \"pressurisation\",\n    \"pressurization\",\n    \"prestige\",\n    \"presume\",\n    \"pretzel\",\n    \"prevalence\",\n    \"prevention\",\n    \"prey\",\n    \"price\",\n    \"pricing\",\n    \"pride\",\n    \"priest\",\n    \"priesthood\",\n    \"primary\",\n    \"primate\",\n    \"prince\",\n    \"princess\",\n    \"principal\",\n    \"principle\",\n    \"print\",\n    \"printer\",\n    \"printing\",\n    \"prior\",\n    \"priority\",\n    \"prison\",\n    \"prisoner\",\n    \"privacy\",\n    \"private\",\n    \"privilege\",\n    \"prize\",\n    \"prizefight\",\n    \"probability\",\n    \"probation\",\n    \"probe\",\n    \"problem\",\n    \"procedure\",\n    \"proceedings\",\n    \"process\",\n    \"processing\",\n    \"processor\",\n    \"proctor\",\n    \"procurement\",\n    \"produce\",\n    \"producer\",\n    \"product\",\n    \"production\",\n    \"productivity\",\n    \"profession\",\n    \"professional\",\n    \"professor\",\n    \"profile\",\n    \"profit\",\n    \"progenitor\",\n    \"program\",\n    \"programme\",\n    \"programming\",\n    \"progress\",\n    \"progression\",\n    \"prohibition\",\n    \"project\",\n    \"proliferation\",\n    \"promenade\",\n    \"promise\",\n    \"promotion\",\n    \"prompt\",\n    \"pronoun\",\n    \"pronunciation\",\n    \"proof\",\n    \"proof-reader\",\n    \"propaganda\",\n    \"propane\",\n    \"property\",\n    \"prophet\",\n    \"proponent\",\n    \"proportion\",\n    \"proposal\",\n    \"proposition\",\n    \"proprietor\",\n    \"prose\",\n    \"prosecution\",\n    \"prosecutor\",\n    \"prospect\",\n    \"prosperity\",\n    \"prostacyclin\",\n    \"prostanoid\",\n    \"prostrate\",\n    \"protection\",\n    \"protein\",\n    \"protest\",\n    \"protocol\",\n    \"providence\",\n    \"provider\",\n    \"province\",\n    \"provision\",\n    \"prow\",\n    \"proximal\",\n    \"proximity\",\n    \"prune\",\n    \"pruner\",\n    \"pseudocode\",\n    \"pseudoscience\",\n    \"psychiatrist\",\n    \"psychoanalyst\",\n    \"psychologist\",\n    \"psychology\",\n    \"ptarmigan\",\n    \"pub\",\n    \"public\",\n    \"publication\",\n    \"publicity\",\n    \"publisher\",\n    \"publishing\",\n    \"pudding\",\n    \"puddle\",\n    \"puffin\",\n    \"pug\",\n    \"puggle\",\n    \"pulley\",\n    \"pulse\",\n    \"puma\",\n    \"pump\",\n    \"pumpernickel\",\n    \"pumpkin\",\n    \"pumpkinseed\",\n    \"pun\",\n    \"punch\",\n    \"punctuation\",\n    \"punishment\",\n    \"pup\",\n    \"pupa\",\n    \"pupil\",\n    \"puppet\",\n    \"puppy\",\n    \"purchase\",\n    \"puritan\",\n    \"purity\",\n    \"purple\",\n    \"purpose\",\n    \"purr\",\n    \"purse\",\n    \"pursuit\",\n    \"push\",\n    \"pusher\",\n    \"put\",\n    \"puzzle\",\n    \"pyramid\",\n    \"pyridine\",\n    \"quadrant\",\n    \"quail\",\n    \"qualification\",\n    \"quality\",\n    \"quantity\",\n    \"quart\",\n    \"quarter\",\n    \"quartet\",\n    \"quartz\",\n    \"queen\",\n    \"query\",\n    \"quest\",\n    \"question\",\n    \"questioner\",\n    \"questionnaire\",\n    \"quiche\",\n    \"quicksand\",\n    \"quiet\",\n    \"quill\",\n    \"quilt\",\n    \"quince\",\n    \"quinoa\",\n    \"quit\",\n    \"quiver\",\n    \"quota\",\n    \"quotation\",\n    \"quote\",\n    \"rabbi\",\n    \"rabbit\",\n    \"raccoon\",\n    \"race\",\n    \"racer\",\n    \"racing\",\n    \"racism\",\n    \"racist\",\n    \"rack\",\n    \"radar\",\n    \"radiator\",\n    \"radio\",\n    \"radiosonde\",\n    \"radish\",\n    \"raffle\",\n    \"raft\",\n    \"rag\",\n    \"rage\",\n    \"raid\",\n    \"rail\",\n    \"railing\",\n    \"railroad\",\n    \"railway\",\n    \"raiment\",\n    \"rain\",\n    \"rainbow\",\n    \"raincoat\",\n    \"rainmaker\",\n    \"rainstorm\",\n    \"rainy\",\n    \"raise\",\n    \"raisin\",\n    \"rake\",\n    \"rally\",\n    \"ram\",\n    \"rambler\",\n    \"ramen\",\n    \"ramie\",\n    \"ranch\",\n    \"rancher\",\n    \"randomisation\",\n    \"randomization\",\n    \"range\",\n    \"ranger\",\n    \"rank\",\n    \"rap\",\n    \"rape\",\n    \"raspberry\",\n    \"rat\",\n    \"rate\",\n    \"ratepayer\",\n    \"rating\",\n    \"ratio\",\n    \"rationale\",\n    \"rations\",\n    \"raven\",\n    \"ravioli\",\n    \"rawhide\",\n    \"ray\",\n    \"rayon\",\n    \"razor\",\n    \"reach\",\n    \"reactant\",\n    \"reaction\",\n    \"read\",\n    \"reader\",\n    \"readiness\",\n    \"reading\",\n    \"real\",\n    \"reality\",\n    \"realization\",\n    \"realm\",\n    \"reamer\",\n    \"rear\",\n    \"reason\",\n    \"reasoning\",\n    \"rebel\",\n    \"rebellion\",\n    \"reboot\",\n    \"recall\",\n    \"recapitulation\",\n    \"receipt\",\n    \"receiver\",\n    \"reception\",\n    \"receptor\",\n    \"recess\",\n    \"recession\",\n    \"recipe\",\n    \"recipient\",\n    \"reciprocity\",\n    \"reclamation\",\n    \"recliner\",\n    \"recognition\",\n    \"recollection\",\n    \"recommendation\",\n    \"reconsideration\",\n    \"record\",\n    \"recorder\",\n    \"recording\",\n    \"recovery\",\n    \"recreation\",\n    \"recruit\",\n    \"rectangle\",\n    \"red\",\n    \"redesign\",\n    \"redhead\",\n    \"redirect\",\n    \"rediscovery\",\n    \"reduction\",\n    \"reef\",\n    \"refectory\",\n    \"reference\",\n    \"referendum\",\n    \"reflection\",\n    \"reform\",\n    \"refreshments\",\n    \"refrigerator\",\n    \"refuge\",\n    \"refund\",\n    \"refusal\",\n    \"refuse\",\n    \"regard\",\n    \"regime\",\n    \"region\",\n    \"regionalism\",\n    \"register\",\n    \"registration\",\n    \"registry\",\n    \"regret\",\n    \"regulation\",\n    \"regulator\",\n    \"rehospitalisation\",\n    \"rehospitalization\",\n    \"reindeer\",\n    \"reinscription\",\n    \"reject\",\n    \"relation\",\n    \"relationship\",\n    \"relative\",\n    \"relaxation\",\n    \"relay\",\n    \"release\",\n    \"reliability\",\n    \"relief\",\n    \"religion\",\n    \"relish\",\n    \"reluctance\",\n    \"remains\",\n    \"remark\",\n    \"reminder\",\n    \"remnant\",\n    \"remote\",\n    \"removal\",\n    \"renaissance\",\n    \"rent\",\n    \"reorganisation\",\n    \"reorganization\",\n    \"repair\",\n    \"reparation\",\n    \"repayment\",\n    \"repeat\",\n    \"replacement\",\n    \"replica\",\n    \"replication\",\n    \"reply\",\n    \"report\",\n    \"reporter\",\n    \"reporting\",\n    \"repository\",\n    \"representation\",\n    \"representative\",\n    \"reprocessing\",\n    \"republic\",\n    \"republican\",\n    \"reputation\",\n    \"request\",\n    \"requirement\",\n    \"resale\",\n    \"rescue\",\n    \"research\",\n    \"researcher\",\n    \"resemblance\",\n    \"reservation\",\n    \"reserve\",\n    \"reservoir\",\n    \"reset\",\n    \"residence\",\n    \"resident\",\n    \"residue\",\n    \"resist\",\n    \"resistance\",\n    \"resolution\",\n    \"resolve\",\n    \"resort\",\n    \"resource\",\n    \"respect\",\n    \"respite\",\n    \"response\",\n    \"responsibility\",\n    \"rest\",\n    \"restaurant\",\n    \"restoration\",\n    \"restriction\",\n    \"restroom\",\n    \"restructuring\",\n    \"result\",\n    \"resume\",\n    \"retailer\",\n    \"retention\",\n    \"rethinking\",\n    \"retina\",\n    \"retirement\",\n    \"retouching\",\n    \"retreat\",\n    \"retrospect\",\n    \"retrospective\",\n    \"retrospectivity\",\n    \"return\",\n    \"reunion\",\n    \"revascularisation\",\n    \"revascularization\",\n    \"reveal\",\n    \"revelation\",\n    \"revenant\",\n    \"revenge\",\n    \"revenue\",\n    \"reversal\",\n    \"reverse\",\n    \"review\",\n    \"revitalisation\",\n    \"revitalization\",\n    \"revival\",\n    \"revolution\",\n    \"revolver\",\n    \"reward\",\n    \"rhetoric\",\n    \"rheumatism\",\n    \"rhinoceros\",\n    \"rhubarb\",\n    \"rhyme\",\n    \"rhythm\",\n    \"rib\",\n    \"ribbon\",\n    \"rice\",\n    \"riddle\",\n    \"ride\",\n    \"rider\",\n    \"ridge\",\n    \"riding\",\n    \"rifle\",\n    \"right\",\n    \"rim\",\n    \"ring\",\n    \"ringworm\",\n    \"riot\",\n    \"rip\",\n    \"ripple\",\n    \"rise\",\n    \"riser\",\n    \"risk\",\n    \"rite\",\n    \"ritual\",\n    \"river\",\n    \"riverbed\",\n    \"rivulet\",\n    \"road\",\n    \"roadway\",\n    \"roar\",\n    \"roast\",\n    \"robe\",\n    \"robin\",\n    \"robot\",\n    \"robotics\",\n    \"rock\",\n    \"rocker\",\n    \"rocket\",\n    \"rocket-ship\",\n    \"rod\",\n    \"role\",\n    \"roll\",\n    \"roller\",\n    \"romaine\",\n    \"romance\",\n    \"roof\",\n    \"room\",\n    \"roommate\",\n    \"rooster\",\n    \"root\",\n    \"rope\",\n    \"rose\",\n    \"rosemary\",\n    \"roster\",\n    \"rostrum\",\n    \"rotation\",\n    \"round\",\n    \"roundabout\",\n    \"route\",\n    \"router\",\n    \"routine\",\n    \"row\",\n    \"rowboat\",\n    \"rowing\",\n    \"rubber\",\n    \"rubbish\",\n    \"rubric\",\n    \"ruby\",\n    \"ruckus\",\n    \"rudiment\",\n    \"ruffle\",\n    \"rug\",\n    \"rugby\",\n    \"ruin\",\n    \"rule\",\n    \"ruler\",\n    \"ruling\",\n    \"rum\",\n    \"rumor\",\n    \"run\",\n    \"runaway\",\n    \"runner\",\n    \"running\",\n    \"runway\",\n    \"rush\",\n    \"rust\",\n    \"rutabaga\",\n    \"rye\",\n    \"sabre\",\n    \"sac\",\n    \"sack\",\n    \"saddle\",\n    \"sadness\",\n    \"safari\",\n    \"safe\",\n    \"safeguard\",\n    \"safety\",\n    \"saffron\",\n    \"sage\",\n    \"sail\",\n    \"sailboat\",\n    \"sailing\",\n    \"sailor\",\n    \"saint\",\n    \"sake\",\n    \"salad\",\n    \"salami\",\n    \"salary\",\n    \"sale\",\n    \"salesman\",\n    \"salmon\",\n    \"salon\",\n    \"saloon\",\n    \"salsa\",\n    \"salt\",\n    \"salute\",\n    \"samovar\",\n    \"sampan\",\n    \"sample\",\n    \"samurai\",\n    \"sanction\",\n    \"sanctity\",\n    \"sanctuary\",\n    \"sand\",\n    \"sandal\",\n    \"sandbar\",\n    \"sandpaper\",\n    \"sandwich\",\n    \"sanity\",\n    \"sardine\",\n    \"sari\",\n    \"sarong\",\n    \"sash\",\n    \"satellite\",\n    \"satin\",\n    \"satire\",\n    \"satisfaction\",\n    \"sauce\",\n    \"saucer\",\n    \"sauerkraut\",\n    \"sausage\",\n    \"savage\",\n    \"savannah\",\n    \"saving\",\n    \"savings\",\n    \"savior\",\n    \"saviour\",\n    \"savory\",\n    \"saw\",\n    \"saxophone\",\n    \"scaffold\",\n    \"scale\",\n    \"scallion\",\n    \"scallops\",\n    \"scalp\",\n    \"scam\",\n    \"scanner\",\n    \"scarecrow\",\n    \"scarf\",\n    \"scarification\",\n    \"scenario\",\n    \"scene\",\n    \"scenery\",\n    \"scent\",\n    \"schedule\",\n    \"scheduling\",\n    \"schema\",\n    \"scheme\",\n    \"schizophrenic\",\n    \"schnitzel\",\n    \"scholar\",\n    \"scholarship\",\n    \"school\",\n    \"schoolhouse\",\n    \"schooner\",\n    \"science\",\n    \"scientist\",\n    \"scimitar\",\n    \"scissors\",\n    \"scooter\",\n    \"scope\",\n    \"score\",\n    \"scorn\",\n    \"scorpion\",\n    \"scotch\",\n    \"scout\",\n    \"scow\",\n    \"scrambled\",\n    \"scrap\",\n    \"scraper\",\n    \"scratch\",\n    \"screamer\",\n    \"screen\",\n    \"screening\",\n    \"screenwriting\",\n    \"screw\",\n    \"screw-up\",\n    \"screwdriver\",\n    \"scrim\",\n    \"scrip\",\n    \"script\",\n    \"scripture\",\n    \"scrutiny\",\n    \"sculpting\",\n    \"sculptural\",\n    \"sculpture\",\n    \"sea\",\n    \"seabass\",\n    \"seafood\",\n    \"seagull\",\n    \"seal\",\n    \"seaplane\",\n    \"search\",\n    \"seashore\",\n    \"seaside\",\n    \"season\",\n    \"seat\",\n    \"seaweed\",\n    \"second\",\n    \"secrecy\",\n    \"secret\",\n    \"secretariat\",\n    \"secretary\",\n    \"secretion\",\n    \"section\",\n    \"sectional\",\n    \"sector\",\n    \"security\",\n    \"sediment\",\n    \"seed\",\n    \"seeder\",\n    \"seeker\",\n    \"seep\",\n    \"segment\",\n    \"seizure\",\n    \"selection\",\n    \"self\",\n    \"self-confidence\",\n    \"self-control\",\n    \"self-esteem\",\n    \"seller\",\n    \"selling\",\n    \"semantics\",\n    \"semester\",\n    \"semicircle\",\n    \"semicolon\",\n    \"semiconductor\",\n    \"seminar\",\n    \"senate\",\n    \"senator\",\n    \"sender\",\n    \"senior\",\n    \"sense\",\n    \"sensibility\",\n    \"sensitive\",\n    \"sensitivity\",\n    \"sensor\",\n    \"sentence\",\n    \"sentencing\",\n    \"sentiment\",\n    \"sepal\",\n    \"separation\",\n    \"septicaemia\",\n    \"sequel\",\n    \"sequence\",\n    \"serial\",\n    \"series\",\n    \"sermon\",\n    \"serum\",\n    \"serval\",\n    \"servant\",\n    \"server\",\n    \"service\",\n    \"servitude\",\n    \"sesame\",\n    \"session\",\n    \"set\",\n    \"setback\",\n    \"setting\",\n    \"settlement\",\n    \"settler\",\n    \"severity\",\n    \"sewer\",\n    \"sex\",\n    \"sexuality\",\n    \"shack\",\n    \"shackle\",\n    \"shade\",\n    \"shadow\",\n    \"shadowbox\",\n    \"shakedown\",\n    \"shaker\",\n    \"shallot\",\n    \"shallows\",\n    \"shame\",\n    \"shampoo\",\n    \"shanty\",\n    \"shape\",\n    \"share\",\n    \"shareholder\",\n    \"shark\",\n    \"shaw\",\n    \"shawl\",\n    \"shear\",\n    \"shearling\",\n    \"sheath\",\n    \"shed\",\n    \"sheep\",\n    \"sheet\",\n    \"shelf\",\n    \"shell\",\n    \"shelter\",\n    \"sherbet\",\n    \"sherry\",\n    \"shield\",\n    \"shift\",\n    \"shin\",\n    \"shine\",\n    \"shingle\",\n    \"ship\",\n    \"shipper\",\n    \"shipping\",\n    \"shipyard\",\n    \"shirt\",\n    \"shirtdress\",\n    \"shit\",\n    \"shoat\",\n    \"shock\",\n    \"shoe\",\n    \"shoe-horn\",\n    \"shoehorn\",\n    \"shoelace\",\n    \"shoemaker\",\n    \"shoes\",\n    \"shoestring\",\n    \"shofar\",\n    \"shoot\",\n    \"shootdown\",\n    \"shop\",\n    \"shopper\",\n    \"shopping\",\n    \"shore\",\n    \"shoreline\",\n    \"short\",\n    \"shortage\",\n    \"shorts\",\n    \"shortwave\",\n    \"shot\",\n    \"shoulder\",\n    \"shout\",\n    \"shovel\",\n    \"show\",\n    \"show-stopper\",\n    \"shower\",\n    \"shred\",\n    \"shrimp\",\n    \"shrine\",\n    \"shutdown\",\n    \"sibling\",\n    \"sick\",\n    \"sickness\",\n    \"side\",\n    \"sideboard\",\n    \"sideburns\",\n    \"sidecar\",\n    \"sidestream\",\n    \"sidewalk\",\n    \"siding\",\n    \"siege\",\n    \"sigh\",\n    \"sight\",\n    \"sightseeing\",\n    \"sign\",\n    \"signal\",\n    \"signature\",\n    \"signet\",\n    \"significance\",\n    \"signify\",\n    \"signup\",\n    \"silence\",\n    \"silica\",\n    \"silicon\",\n    \"silk\",\n    \"silkworm\",\n    \"sill\",\n    \"silly\",\n    \"silo\",\n    \"silver\",\n    \"similarity\",\n    \"simple\",\n    \"simplicity\",\n    \"simplification\",\n    \"simvastatin\",\n    \"sin\",\n    \"singer\",\n    \"singing\",\n    \"singular\",\n    \"sink\",\n    \"sinuosity\",\n    \"sip\",\n    \"sir\",\n    \"sister\",\n    \"sister-in-law\",\n    \"sitar\",\n    \"site\",\n    \"situation\",\n    \"size\",\n    \"skate\",\n    \"skating\",\n    \"skean\",\n    \"skeleton\",\n    \"ski\",\n    \"skiing\",\n    \"skill\",\n    \"skin\",\n    \"skirt\",\n    \"skull\",\n    \"skullcap\",\n    \"skullduggery\",\n    \"skunk\",\n    \"sky\",\n    \"skylight\",\n    \"skyline\",\n    \"skyscraper\",\n    \"skywalk\",\n    \"slang\",\n    \"slapstick\",\n    \"slash\",\n    \"slate\",\n    \"slave\",\n    \"slavery\",\n    \"slaw\",\n    \"sled\",\n    \"sledge\",\n    \"sleep\",\n    \"sleepiness\",\n    \"sleeping\",\n    \"sleet\",\n    \"sleuth\",\n    \"slice\",\n    \"slide\",\n    \"slider\",\n    \"slime\",\n    \"slip\",\n    \"slipper\",\n    \"slippers\",\n    \"slope\",\n    \"slot\",\n    \"sloth\",\n    \"slump\",\n    \"smell\",\n    \"smelting\",\n    \"smile\",\n    \"smith\",\n    \"smock\",\n    \"smog\",\n    \"smoke\",\n    \"smoking\",\n    \"smolt\",\n    \"smuggling\",\n    \"snack\",\n    \"snail\",\n    \"snake\",\n    \"snakebite\",\n    \"snap\",\n    \"snarl\",\n    \"sneaker\",\n    \"sneakers\",\n    \"sneeze\",\n    \"sniffle\",\n    \"snob\",\n    \"snorer\",\n    \"snow\",\n    \"snowboarding\",\n    \"snowflake\",\n    \"snowman\",\n    \"snowmobiling\",\n    \"snowplow\",\n    \"snowstorm\",\n    \"snowsuit\",\n    \"snuck\",\n    \"snug\",\n    \"snuggle\",\n    \"soap\",\n    \"soccer\",\n    \"socialism\",\n    \"socialist\",\n    \"society\",\n    \"sociology\",\n    \"sock\",\n    \"socks\",\n    \"soda\",\n    \"sofa\",\n    \"softball\",\n    \"softdrink\",\n    \"softening\",\n    \"software\",\n    \"soil\",\n    \"soldier\",\n    \"sole\",\n    \"solicitation\",\n    \"solicitor\",\n    \"solidarity\",\n    \"solidity\",\n    \"soliloquy\",\n    \"solitaire\",\n    \"solution\",\n    \"solvency\",\n    \"sombrero\",\n    \"somebody\",\n    \"someone\",\n    \"someplace\",\n    \"somersault\",\n    \"something\",\n    \"somewhere\",\n    \"son\",\n    \"sonar\",\n    \"sonata\",\n    \"song\",\n    \"songbird\",\n    \"sonnet\",\n    \"soot\",\n    \"sophomore\",\n    \"soprano\",\n    \"sorbet\",\n    \"sorghum\",\n    \"sorrel\",\n    \"sorrow\",\n    \"sort\",\n    \"soul\",\n    \"soulmate\",\n    \"sound\",\n    \"soundness\",\n    \"soup\",\n    \"source\",\n    \"sourwood\",\n    \"sousaphone\",\n    \"south\",\n    \"southeast\",\n    \"souvenir\",\n    \"sovereignty\",\n    \"sow\",\n    \"soy\",\n    \"soybean\",\n    \"space\",\n    \"spacing\",\n    \"spade\",\n    \"spaghetti\",\n    \"span\",\n    \"spandex\",\n    \"spank\",\n    \"sparerib\",\n    \"spark\",\n    \"sparrow\",\n    \"spasm\",\n    \"spat\",\n    \"spatula\",\n    \"spawn\",\n    \"speaker\",\n    \"speakerphone\",\n    \"speaking\",\n    \"spear\",\n    \"spec\",\n    \"special\",\n    \"specialist\",\n    \"specialty\",\n    \"species\",\n    \"specification\",\n    \"spectacle\",\n    \"spectacles\",\n    \"spectrograph\",\n    \"spectrum\",\n    \"speculation\",\n    \"speech\",\n    \"speed\",\n    \"speedboat\",\n    \"spell\",\n    \"spelling\",\n    \"spelt\",\n    \"spending\",\n    \"sphere\",\n    \"sphynx\",\n    \"spice\",\n    \"spider\",\n    \"spiderling\",\n    \"spike\",\n    \"spill\",\n    \"spinach\",\n    \"spine\",\n    \"spiral\",\n    \"spirit\",\n    \"spiritual\",\n    \"spirituality\",\n    \"spit\",\n    \"spite\",\n    \"spleen\",\n    \"splendor\",\n    \"split\",\n    \"spokesman\",\n    \"spokeswoman\",\n    \"sponge\",\n    \"sponsor\",\n    \"sponsorship\",\n    \"spool\",\n    \"spoon\",\n    \"spork\",\n    \"sport\",\n    \"sportsman\",\n    \"spot\",\n    \"spotlight\",\n    \"spouse\",\n    \"sprag\",\n    \"sprat\",\n    \"spray\",\n    \"spread\",\n    \"spreadsheet\",\n    \"spree\",\n    \"spring\",\n    \"sprinkles\",\n    \"sprinter\",\n    \"sprout\",\n    \"spruce\",\n    \"spud\",\n    \"spume\",\n    \"spur\",\n    \"spy\",\n    \"spyglass\",\n    \"square\",\n    \"squash\",\n    \"squatter\",\n    \"squeegee\",\n    \"squid\",\n    \"squirrel\",\n    \"stab\",\n    \"stability\",\n    \"stable\",\n    \"stack\",\n    \"stacking\",\n    \"stadium\",\n    \"staff\",\n    \"stag\",\n    \"stage\",\n    \"stain\",\n    \"stair\",\n    \"staircase\",\n    \"stake\",\n    \"stalk\",\n    \"stall\",\n    \"stallion\",\n    \"stamen\",\n    \"stamina\",\n    \"stamp\",\n    \"stance\",\n    \"stand\",\n    \"standard\",\n    \"standardisation\",\n    \"standardization\",\n    \"standing\",\n    \"standoff\",\n    \"standpoint\",\n    \"star\",\n    \"starboard\",\n    \"start\",\n    \"starter\",\n    \"state\",\n    \"statement\",\n    \"statin\",\n    \"station\",\n    \"station-wagon\",\n    \"statistic\",\n    \"statistics\",\n    \"statue\",\n    \"status\",\n    \"statute\",\n    \"stay\",\n    \"steak\",\n    \"stealth\",\n    \"steam\",\n    \"steamroller\",\n    \"steel\",\n    \"steeple\",\n    \"stem\",\n    \"stench\",\n    \"stencil\",\n    \"step\",\n    \"step-aunt\",\n    \"step-brother\",\n    \"step-daughter\",\n    \"step-father\",\n    \"step-grandfather\",\n    \"step-grandmother\",\n    \"step-mother\",\n    \"step-sister\",\n    \"step-son\",\n    \"step-uncle\",\n    \"stepdaughter\",\n    \"stepmother\",\n    \"stepping-stone\",\n    \"stepson\",\n    \"stereo\",\n    \"stew\",\n    \"steward\",\n    \"stick\",\n    \"sticker\",\n    \"stiletto\",\n    \"still\",\n    \"stimulation\",\n    \"stimulus\",\n    \"sting\",\n    \"stinger\",\n    \"stir-fry\",\n    \"stitch\",\n    \"stitcher\",\n    \"stock\",\n    \"stock-in-trade\",\n    \"stockings\",\n    \"stole\",\n    \"stomach\",\n    \"stone\",\n    \"stonework\",\n    \"stool\",\n    \"stop\",\n    \"stopsign\",\n    \"stopwatch\",\n    \"storage\",\n    \"store\",\n    \"storey\",\n    \"storm\",\n    \"story\",\n    \"story-telling\",\n    \"storyboard\",\n    \"stot\",\n    \"stove\",\n    \"strait\",\n    \"strand\",\n    \"stranger\",\n    \"strap\",\n    \"strategy\",\n    \"straw\",\n    \"strawberry\",\n    \"strawman\",\n    \"stream\",\n    \"street\",\n    \"streetcar\",\n    \"strength\",\n    \"stress\",\n    \"stretch\",\n    \"strife\",\n    \"strike\",\n    \"string\",\n    \"strip\",\n    \"stripe\",\n    \"strobe\",\n    \"stroke\",\n    \"structure\",\n    \"strudel\",\n    \"struggle\",\n    \"stucco\",\n    \"stud\",\n    \"student\",\n    \"studio\",\n    \"study\",\n    \"stuff\",\n    \"stumbling\",\n    \"stump\",\n    \"stupidity\",\n    \"sturgeon\",\n    \"sty\",\n    \"style\",\n    \"styling\",\n    \"stylus\",\n    \"sub\",\n    \"subcomponent\",\n    \"subconscious\",\n    \"subcontractor\",\n    \"subexpression\",\n    \"subgroup\",\n    \"subject\",\n    \"submarine\",\n    \"submitter\",\n    \"subprime\",\n    \"subroutine\",\n    \"subscription\",\n    \"subsection\",\n    \"subset\",\n    \"subsidence\",\n    \"subsidiary\",\n    \"subsidy\",\n    \"substance\",\n    \"substitution\",\n    \"subtitle\",\n    \"suburb\",\n    \"subway\",\n    \"success\",\n    \"succotash\",\n    \"suck\",\n    \"sucker\",\n    \"suede\",\n    \"suet\",\n    \"suffocation\",\n    \"sugar\",\n    \"suggestion\",\n    \"suicide\",\n    \"suit\",\n    \"suitcase\",\n    \"suite\",\n    \"sulfur\",\n    \"sultan\",\n    \"sum\",\n    \"summary\",\n    \"summer\",\n    \"summit\",\n    \"sun\",\n    \"sunbeam\",\n    \"sunbonnet\",\n    \"sundae\",\n    \"sunday\",\n    \"sundial\",\n    \"sunflower\",\n    \"sunglasses\",\n    \"sunlamp\",\n    \"sunlight\",\n    \"sunrise\",\n    \"sunroom\",\n    \"sunset\",\n    \"sunshine\",\n    \"superiority\",\n    \"supermarket\",\n    \"supernatural\",\n    \"supervision\",\n    \"supervisor\",\n    \"supper\",\n    \"supplement\",\n    \"supplier\",\n    \"supply\",\n    \"support\",\n    \"supporter\",\n    \"suppression\",\n    \"supreme\",\n    \"surface\",\n    \"surfboard\",\n    \"surge\",\n    \"surgeon\",\n    \"surgery\",\n    \"surname\",\n    \"surplus\",\n    \"surprise\",\n    \"surround\",\n    \"surroundings\",\n    \"surrounds\",\n    \"survey\",\n    \"survival\",\n    \"survivor\",\n    \"sushi\",\n    \"suspect\",\n    \"suspenders\",\n    \"suspension\",\n    \"sustainment\",\n    \"sustenance\",\n    \"swallow\",\n    \"swamp\",\n    \"swan\",\n    \"swanling\",\n    \"swath\",\n    \"sweat\",\n    \"sweater\",\n    \"sweatshirt\",\n    \"sweatshop\",\n    \"sweatsuit\",\n    \"sweets\",\n    \"swell\",\n    \"swim\",\n    \"swimming\",\n    \"swimsuit\",\n    \"swine\",\n    \"swing\",\n    \"switch\",\n    \"switchboard\",\n    \"switching\",\n    \"swivel\",\n    \"sword\",\n    \"swordfight\",\n    \"swordfish\",\n    \"sycamore\",\n    \"symbol\",\n    \"symmetry\",\n    \"sympathy\",\n    \"symptom\",\n    \"syndicate\",\n    \"syndrome\",\n    \"synergy\",\n    \"synod\",\n    \"synonym\",\n    \"synthesis\",\n    \"syrup\",\n    \"system\",\n    \"t-shirt\",\n    \"tab\",\n    \"tabby\",\n    \"tabernacle\",\n    \"table\",\n    \"tablecloth\",\n    \"tablet\",\n    \"tabletop\",\n    \"tachometer\",\n    \"tackle\",\n    \"taco\",\n    \"tactics\",\n    \"tactile\",\n    \"tadpole\",\n    \"tag\",\n    \"tail\",\n    \"tailbud\",\n    \"tailor\",\n    \"tailspin\",\n    \"take-out\",\n    \"takeover\",\n    \"tale\",\n    \"talent\",\n    \"talk\",\n    \"talking\",\n    \"tam-o'-shanter\",\n    \"tamale\",\n    \"tambour\",\n    \"tambourine\",\n    \"tan\",\n    \"tandem\",\n    \"tangerine\",\n    \"tank\",\n    \"tank-top\",\n    \"tanker\",\n    \"tankful\",\n    \"tap\",\n    \"tape\",\n    \"tapioca\",\n    \"target\",\n    \"taro\",\n    \"tarragon\",\n    \"tart\",\n    \"task\",\n    \"tassel\",\n    \"taste\",\n    \"tatami\",\n    \"tattler\",\n    \"tattoo\",\n    \"tavern\",\n    \"tax\",\n    \"taxi\",\n    \"taxicab\",\n    \"taxpayer\",\n    \"tea\",\n    \"teacher\",\n    \"teaching\",\n    \"team\",\n    \"teammate\",\n    \"teapot\",\n    \"tear\",\n    \"tech\",\n    \"technician\",\n    \"technique\",\n    \"technologist\",\n    \"technology\",\n    \"tectonics\",\n    \"teen\",\n    \"teenager\",\n    \"teepee\",\n    \"telephone\",\n    \"telescreen\",\n    \"teletype\",\n    \"television\",\n    \"tell\",\n    \"teller\",\n    \"temp\",\n    \"temper\",\n    \"temperature\",\n    \"temple\",\n    \"tempo\",\n    \"temporariness\",\n    \"temporary\",\n    \"temptation\",\n    \"temptress\",\n    \"tenant\",\n    \"tendency\",\n    \"tender\",\n    \"tenement\",\n    \"tenet\",\n    \"tennis\",\n    \"tenor\",\n    \"tension\",\n    \"tensor\",\n    \"tent\",\n    \"tentacle\",\n    \"tenth\",\n    \"tepee\",\n    \"teriyaki\",\n    \"term\",\n    \"terminal\",\n    \"termination\",\n    \"terminology\",\n    \"termite\",\n    \"terrace\",\n    \"terracotta\",\n    \"terrapin\",\n    \"terrarium\",\n    \"territory\",\n    \"terror\",\n    \"terrorism\",\n    \"terrorist\",\n    \"test\",\n    \"testament\",\n    \"testimonial\",\n    \"testimony\",\n    \"testing\",\n    \"text\",\n    \"textbook\",\n    \"textual\",\n    \"texture\",\n    \"thanks\",\n    \"thaw\",\n    \"theater\",\n    \"theft\",\n    \"theism\",\n    \"theme\",\n    \"theology\",\n    \"theory\",\n    \"therapist\",\n    \"therapy\",\n    \"thermals\",\n    \"thermometer\",\n    \"thermostat\",\n    \"thesis\",\n    \"thickness\",\n    \"thief\",\n    \"thigh\",\n    \"thing\",\n    \"thinking\",\n    \"thirst\",\n    \"thistle\",\n    \"thong\",\n    \"thongs\",\n    \"thorn\",\n    \"thought\",\n    \"thousand\",\n    \"thread\",\n    \"threat\",\n    \"threshold\",\n    \"thrift\",\n    \"thrill\",\n    \"throat\",\n    \"throne\",\n    \"thrush\",\n    \"thrust\",\n    \"thug\",\n    \"thumb\",\n    \"thump\",\n    \"thunder\",\n    \"thunderbolt\",\n    \"thunderhead\",\n    \"thunderstorm\",\n    \"thyme\",\n    \"tiara\",\n    \"tic\",\n    \"tick\",\n    \"ticket\",\n    \"tide\",\n    \"tie\",\n    \"tiger\",\n    \"tights\",\n    \"tile\",\n    \"till\",\n    \"tilt\",\n    \"timbale\",\n    \"timber\",\n    \"time\",\n    \"timeline\",\n    \"timeout\",\n    \"timer\",\n    \"timetable\",\n    \"timing\",\n    \"timpani\",\n    \"tin\",\n    \"tinderbox\",\n    \"tinkle\",\n    \"tintype\",\n    \"tip\",\n    \"tire\",\n    \"tissue\",\n    \"titanium\",\n    \"title\",\n    \"toad\",\n    \"toast\",\n    \"toaster\",\n    \"tobacco\",\n    \"today\",\n    \"toe\",\n    \"toenail\",\n    \"toffee\",\n    \"tofu\",\n    \"tog\",\n    \"toga\",\n    \"toilet\",\n    \"tolerance\",\n    \"tolerant\",\n    \"toll\",\n    \"tom-tom\",\n    \"tomatillo\",\n    \"tomato\",\n    \"tomb\",\n    \"tomography\",\n    \"tomorrow\",\n    \"ton\",\n    \"tonality\",\n    \"tone\",\n    \"tongue\",\n    \"tonic\",\n    \"tonight\",\n    \"tool\",\n    \"toot\",\n    \"tooth\",\n    \"toothbrush\",\n    \"toothpaste\",\n    \"toothpick\",\n    \"top\",\n    \"top-hat\",\n    \"topic\",\n    \"topsail\",\n    \"toque\",\n    \"toreador\",\n    \"tornado\",\n    \"torso\",\n    \"torte\",\n    \"tortellini\",\n    \"tortilla\",\n    \"tortoise\",\n    \"tosser\",\n    \"total\",\n    \"tote\",\n    \"touch\",\n    \"tough-guy\",\n    \"tour\",\n    \"tourism\",\n    \"tourist\",\n    \"tournament\",\n    \"tow-truck\",\n    \"towel\",\n    \"tower\",\n    \"town\",\n    \"townhouse\",\n    \"township\",\n    \"toy\",\n    \"trace\",\n    \"trachoma\",\n    \"track\",\n    \"tracking\",\n    \"tracksuit\",\n    \"tract\",\n    \"tractor\",\n    \"trade\",\n    \"trader\",\n    \"trading\",\n    \"tradition\",\n    \"traditionalism\",\n    \"traffic\",\n    \"trafficker\",\n    \"tragedy\",\n    \"trail\",\n    \"trailer\",\n    \"trailpatrol\",\n    \"train\",\n    \"trainer\",\n    \"training\",\n    \"trait\",\n    \"tram\",\n    \"tramp\",\n    \"trance\",\n    \"transaction\",\n    \"transcript\",\n    \"transfer\",\n    \"transformation\",\n    \"transit\",\n    \"transition\",\n    \"translation\",\n    \"transmission\",\n    \"transom\",\n    \"transparency\",\n    \"transplantation\",\n    \"transport\",\n    \"transportation\",\n    \"trap\",\n    \"trapdoor\",\n    \"trapezium\",\n    \"trapezoid\",\n    \"trash\",\n    \"travel\",\n    \"traveler\",\n    \"tray\",\n    \"treasure\",\n    \"treasury\",\n    \"treat\",\n    \"treatment\",\n    \"treaty\",\n    \"tree\",\n    \"trek\",\n    \"trellis\",\n    \"tremor\",\n    \"trench\",\n    \"trend\",\n    \"triad\",\n    \"trial\",\n    \"triangle\",\n    \"tribe\",\n    \"tributary\",\n    \"trick\",\n    \"trigger\",\n    \"trigonometry\",\n    \"trillion\",\n    \"trim\",\n    \"trinket\",\n    \"trip\",\n    \"tripod\",\n    \"tritone\",\n    \"triumph\",\n    \"trolley\",\n    \"trombone\",\n    \"troop\",\n    \"trooper\",\n    \"trophy\",\n    \"trouble\",\n    \"trousers\",\n    \"trout\",\n    \"trove\",\n    \"trowel\",\n    \"truck\",\n    \"trumpet\",\n    \"trunk\",\n    \"trust\",\n    \"trustee\",\n    \"truth\",\n    \"try\",\n    \"tsunami\",\n    \"tub\",\n    \"tuba\",\n    \"tube\",\n    \"tuber\",\n    \"tug\",\n    \"tugboat\",\n    \"tuition\",\n    \"tulip\",\n    \"tumbler\",\n    \"tummy\",\n    \"tuna\",\n    \"tune\",\n    \"tune-up\",\n    \"tunic\",\n    \"tunnel\",\n    \"turban\",\n    \"turf\",\n    \"turkey\",\n    \"turmeric\",\n    \"turn\",\n    \"turning\",\n    \"turnip\",\n    \"turnover\",\n    \"turnstile\",\n    \"turret\",\n    \"turtle\",\n    \"tusk\",\n    \"tussle\",\n    \"tutu\",\n    \"tuxedo\",\n    \"tweet\",\n    \"tweezers\",\n    \"twig\",\n    \"twilight\",\n    \"twine\",\n    \"twins\",\n    \"twist\",\n    \"twister\",\n    \"twitter\",\n    \"type\",\n    \"typeface\",\n    \"typewriter\",\n    \"typhoon\",\n    \"ukulele\",\n    \"ultimatum\",\n    \"umbrella\",\n    \"unblinking\",\n    \"uncertainty\",\n    \"uncle\",\n    \"underclothes\",\n    \"underestimate\",\n    \"underground\",\n    \"underneath\",\n    \"underpants\",\n    \"underpass\",\n    \"undershirt\",\n    \"understanding\",\n    \"understatement\",\n    \"undertaker\",\n    \"underwear\",\n    \"underweight\",\n    \"underwire\",\n    \"underwriting\",\n    \"unemployment\",\n    \"unibody\",\n    \"uniform\",\n    \"uniformity\",\n    \"union\",\n    \"unique\",\n    \"unit\",\n    \"unity\",\n    \"universe\",\n    \"university\",\n    \"update\",\n    \"upgrade\",\n    \"uplift\",\n    \"upper\",\n    \"upstairs\",\n    \"upward\",\n    \"urge\",\n    \"urgency\",\n    \"urn\",\n    \"usage\",\n    \"use\",\n    \"user\",\n    \"usher\",\n    \"usual\",\n    \"utensil\",\n    \"utilisation\",\n    \"utility\",\n    \"utilization\",\n    \"vacation\",\n    \"vaccine\",\n    \"vacuum\",\n    \"vagrant\",\n    \"valance\",\n    \"valentine\",\n    \"validate\",\n    \"validity\",\n    \"valley\",\n    \"valuable\",\n    \"value\",\n    \"vampire\",\n    \"van\",\n    \"vanadyl\",\n    \"vane\",\n    \"vanilla\",\n    \"vanity\",\n    \"variability\",\n    \"variable\",\n    \"variant\",\n    \"variation\",\n    \"variety\",\n    \"vascular\",\n    \"vase\",\n    \"vault\",\n    \"vaulting\",\n    \"veal\",\n    \"vector\",\n    \"vegetable\",\n    \"vegetarian\",\n    \"vegetarianism\",\n    \"vegetation\",\n    \"vehicle\",\n    \"veil\",\n    \"vein\",\n    \"veldt\",\n    \"vellum\",\n    \"velocity\",\n    \"velodrome\",\n    \"velvet\",\n    \"vendor\",\n    \"veneer\",\n    \"vengeance\",\n    \"venison\",\n    \"venom\",\n    \"venti\",\n    \"venture\",\n    \"venue\",\n    \"veranda\",\n    \"verb\",\n    \"verdict\",\n    \"verification\",\n    \"vermicelli\",\n    \"vernacular\",\n    \"verse\",\n    \"version\",\n    \"vertigo\",\n    \"verve\",\n    \"vessel\",\n    \"vest\",\n    \"vestment\",\n    \"vet\",\n    \"veteran\",\n    \"veterinarian\",\n    \"veto\",\n    \"viability\",\n    \"vibe\",\n    \"vibraphone\",\n    \"vibration\",\n    \"vibrissae\",\n    \"vice\",\n    \"vicinity\",\n    \"victim\",\n    \"victory\",\n    \"video\",\n    \"view\",\n    \"viewer\",\n    \"vignette\",\n    \"villa\",\n    \"village\",\n    \"vine\",\n    \"vinegar\",\n    \"vineyard\",\n    \"vintage\",\n    \"vintner\",\n    \"vinyl\",\n    \"viola\",\n    \"violation\",\n    \"violence\",\n    \"violet\",\n    \"violin\",\n    \"virginal\",\n    \"virtue\",\n    \"virus\",\n    \"visa\",\n    \"viscose\",\n    \"vise\",\n    \"vision\",\n    \"visit\",\n    \"visitor\",\n    \"visor\",\n    \"vista\",\n    \"visual\",\n    \"vitality\",\n    \"vitamin\",\n    \"vitro\",\n    \"vivo\",\n    \"vixen\",\n    \"vodka\",\n    \"vogue\",\n    \"voice\",\n    \"void\",\n    \"vol\",\n    \"volatility\",\n    \"volcano\",\n    \"volleyball\",\n    \"volume\",\n    \"volunteer\",\n    \"volunteering\",\n    \"vomit\",\n    \"vote\",\n    \"voter\",\n    \"voting\",\n    \"voyage\",\n    \"vulture\",\n    \"wad\",\n    \"wafer\",\n    \"waffle\",\n    \"wage\",\n    \"wagon\",\n    \"waist\",\n    \"waistband\",\n    \"wait\",\n    \"waiter\",\n    \"waiting\",\n    \"waitress\",\n    \"waiver\",\n    \"wake\",\n    \"walk\",\n    \"walker\",\n    \"walking\",\n    \"walkway\",\n    \"wall\",\n    \"wallaby\",\n    \"wallet\",\n    \"walnut\",\n    \"walrus\",\n    \"wampum\",\n    \"wannabe\",\n    \"want\",\n    \"war\",\n    \"warden\",\n    \"wardrobe\",\n    \"warfare\",\n    \"warlock\",\n    \"warlord\",\n    \"warm-up\",\n    \"warming\",\n    \"warmth\",\n    \"warning\",\n    \"warrant\",\n    \"warren\",\n    \"warrior\",\n    \"wasabi\",\n    \"wash\",\n    \"washbasin\",\n    \"washcloth\",\n    \"washer\",\n    \"washtub\",\n    \"wasp\",\n    \"waste\",\n    \"wastebasket\",\n    \"wasting\",\n    \"watch\",\n    \"watcher\",\n    \"watchmaker\",\n    \"water\",\n    \"waterbed\",\n    \"watercress\",\n    \"waterfall\",\n    \"waterfront\",\n    \"watermelon\",\n    \"waterskiing\",\n    \"waterspout\",\n    \"waterwheel\",\n    \"wave\",\n    \"waveform\",\n    \"wax\",\n    \"way\",\n    \"weakness\",\n    \"wealth\",\n    \"weapon\",\n    \"wear\",\n    \"weasel\",\n    \"weather\",\n    \"web\",\n    \"webinar\",\n    \"webmail\",\n    \"webpage\",\n    \"website\",\n    \"wedding\",\n    \"wedge\",\n    \"weed\",\n    \"weeder\",\n    \"weedkiller\",\n    \"week\",\n    \"weekend\",\n    \"weekender\",\n    \"weight\",\n    \"weird\",\n    \"welcome\",\n    \"welfare\",\n    \"well\",\n    \"well-being\",\n    \"west\",\n    \"western\",\n    \"wet-bar\",\n    \"wetland\",\n    \"wetsuit\",\n    \"whack\",\n    \"whale\",\n    \"wharf\",\n    \"wheat\",\n    \"wheel\",\n    \"whelp\",\n    \"whey\",\n    \"whip\",\n    \"whirlpool\",\n    \"whirlwind\",\n    \"whisker\",\n    \"whiskey\",\n    \"whisper\",\n    \"whistle\",\n    \"white\",\n    \"whole\",\n    \"wholesale\",\n    \"wholesaler\",\n    \"whorl\",\n    \"wick\",\n    \"widget\",\n    \"widow\",\n    \"width\",\n    \"wife\",\n    \"wifi\",\n    \"wild\",\n    \"wildebeest\",\n    \"wilderness\",\n    \"wildlife\",\n    \"will\",\n    \"willingness\",\n    \"willow\",\n    \"win\",\n    \"wind\",\n    \"wind-chime\",\n    \"windage\",\n    \"window\",\n    \"windscreen\",\n    \"windshield\",\n    \"wine\",\n    \"winery\",\n    \"wing\",\n    \"wingman\",\n    \"wingtip\",\n    \"wink\",\n    \"winner\",\n    \"winter\",\n    \"wire\",\n    \"wiretap\",\n    \"wiring\",\n    \"wisdom\",\n    \"wiseguy\",\n    \"wish\",\n    \"wisteria\",\n    \"wit\",\n    \"witch\",\n    \"witch-hunt\",\n    \"withdrawal\",\n    \"witness\",\n    \"wok\",\n    \"wolf\",\n    \"woman\",\n    \"wombat\",\n    \"wonder\",\n    \"wont\",\n    \"wood\",\n    \"woodchuck\",\n    \"woodland\",\n    \"woodshed\",\n    \"woodwind\",\n    \"wool\",\n    \"woolens\",\n    \"word\",\n    \"wording\",\n    \"work\",\n    \"workbench\",\n    \"worker\",\n    \"workforce\",\n    \"workhorse\",\n    \"working\",\n    \"workout\",\n    \"workplace\",\n    \"workshop\",\n    \"world\",\n    \"worm\",\n    \"worry\",\n    \"worship\",\n    \"worshiper\",\n    \"worth\",\n    \"wound\",\n    \"wrap\",\n    \"wraparound\",\n    \"wrapper\",\n    \"wrapping\",\n    \"wreck\",\n    \"wrecker\",\n    \"wren\",\n    \"wrench\",\n    \"wrestler\",\n    \"wriggler\",\n    \"wrinkle\",\n    \"wrist\",\n    \"writer\",\n    \"writing\",\n    \"wrong\",\n    \"xylophone\",\n    \"yacht\",\n    \"yahoo\",\n    \"yak\",\n    \"yam\",\n    \"yang\",\n    \"yard\",\n    \"yarmulke\",\n    \"yarn\",\n    \"yawl\",\n    \"year\",\n    \"yeast\",\n    \"yellow\",\n    \"yellowjacket\",\n    \"yesterday\",\n    \"yew\",\n    \"yin\",\n    \"yoga\",\n    \"yogurt\",\n    \"yoke\",\n    \"yolk\",\n    \"young\",\n    \"youngster\",\n    \"yourself\",\n    \"youth\",\n    \"yoyo\",\n    \"yurt\",\n    \"zampone\",\n    \"zebra\",\n    \"zebrafish\",\n    \"zen\",\n    \"zephyr\",\n    \"zero\",\n    \"ziggurat\",\n    \"zinc\",\n    \"zipper\",\n    \"zither\",\n    \"zombie\",\n    \"zone\",\n    \"zoo\",\n    \"zoologist\",\n    \"zoology\",\n    \"zoot-suit\",\n    \"zucchini\",\n  ],\n};\n","import { ILanguageWord } from \"./words\";\n\nexport const SPANISH_WORDS: ILanguageWord = {\n  verbs: [\n    \"ser\",\n    \"haber\",\n    \"estar\",\n    \"tener\",\n    \"hacer\",\n    \"poder\",\n    \"decir\",\n    \"ir\",\n    \"ver\",\n    \"dar\",\n    \"saber\",\n    \"querer\",\n    \"llegar\",\n    \"pasar\",\n    \"deber\",\n    \"poner\",\n    \"parecer\",\n    \"quedar\",\n    \"creer\",\n    \"hablar\",\n    \"llevar\",\n    \"dejar\",\n    \"seguir\",\n    \"encontrar\",\n    \"llamar\",\n    \"venir\",\n    \"pensar\",\n    \"salir\",\n    \"volver\",\n    \"tomar\",\n    \"conocer\",\n    \"vivir\",\n    \"sentir\",\n    \"tratar\",\n    \"mirar\",\n    \"contar\",\n    \"empezar\",\n    \"esperar\",\n    \"buscar\",\n    \"existir\",\n    \"entrar\",\n    \"trabajar\",\n    \"escribir\",\n    \"perder\",\n    \"producir\",\n    \"ocurrir\",\n    \"entender\",\n    \"pedir\",\n    \"recibir\",\n    \"recordar\",\n    \"terminar\",\n    \"permitir\",\n    \"aparecer\",\n    \"conseguir\",\n    \"comenzar\",\n    \"servir\",\n    \"sacar\",\n    \"necesitar\",\n    \"mantener\",\n    \"resultar\",\n    \"leer\",\n    \"caer\",\n    \"cambiar\",\n    \"presentar\",\n    \"crear\",\n    \"abrir\",\n    \"considerar\",\n    \"oir\",\n    \"acabar\",\n    \"convertir\",\n    \"ganar\",\n    \"formar\",\n    \"traer\",\n    \"partir\",\n    \"morir\",\n    \"aceptar\",\n    \"realizar\",\n    \"suponer\",\n    \"comprender\",\n    \"lograr\",\n    \"explicar\",\n    \"preguntar\",\n    \"tocar\",\n    \"reconocer\",\n    \"estudiar\",\n    \"alcanzar\",\n    \"nacer\",\n    \"dirigir\",\n    \"correr\",\n    \"utilizar\",\n    \"pagar\",\n    \"ayudar\",\n    \"gustar\",\n    \"jugar\",\n    \"escuchar\",\n    \"cumplir\",\n    \"ofrecer\",\n    \"descubrir\",\n    \"levantar\",\n    \"intentar\",\n  ],\n  conjuctions: [\n    \"y\",\n    \"e\",\n    \"ni\",\n    \"o\",\n    \"u\",\n    \"pero\",\n    \"aunque\",\n    \"pero\",\n    \"mas\",\n    \"sino\",\n    \"no obstante\",\n    \"excepto\",\n    \"sin embargo\",\n    \"para que\",\n    \"porque\",\n    \"ya que\",\n    \"puesto que\",\n    \"pues\",\n    \"como\",\n    \"si\",\n    \"luego\",\n  ],\n  interjections: [\n    \"¡ah!\",\n    \"¡oh!\",\n    \"¡ay!\",\n    \"¡guay!\",\n    \"¡eh!\",\n    \"¡hey!\",\n    \"¡uy!\",\n    \"¡puaj!\",\n    \"¡hola!\",\n    \"¡ojalá!\",\n    \"¡eh!\",\n    \"¡uf!\",\n    \"¡bah!\",\n  ],\n  prepositions: [\n    \"a\",\n    \"antes\",\n    \"de\",\n    \"dentro\",\n    \"desde\",\n    \"despues\",\n    \"durante\",\n    \"en\",\n    \"hasta\",\n    \"por\",\n    \"sobre\",\n    \"tras\",\n    \"con\",\n    \"para\",\n    \"sin\",\n  ],\n  adverbs: [\n    \"aqui\",\n    \"ya\",\n    \"mal\",\n    \"no\",\n    \"aun\",\n    \"siempre\",\n    \"ultimamente\",\n    \"aca\",\n    \"mejor\",\n    \"mañana\",\n    \"delante\",\n    \"así\",\n    \"temprano\",\n    \"sí\",\n    \"fácilmente\",\n    \"dónde\",\n    \"seguro\",\n    \"qué\",\n    \"tal vez\",\n    \"bastante\",\n    \"mucho\",\n    \"poco\",\n    \"algo\",\n    \"efectivamente\",\n    \"seguramente\",\n    \"por supuesto\",\n    \"ninguno\",\n    \"tampoco\",\n    \"probablemente\",\n    \"todavía\",\n    \"tarde\",\n    \"arriba\",\n    \"lejos\",\n  ],\n  adjectives: [\n    \"salado\",\n    \"dulce\",\n    \"amargo\",\n    \"ácido\",\n    \"rojo\",\n    \"verde\",\n    \"rubio\",\n    \"fuerte\",\n    \"débil\",\n    \"flexible\",\n    \"tostado\",\n    \"ronco\",\n    \"nítido\",\n    \"áspero\",\n    \"suave\",\n    \"rugoso\",\n    \"esponjoso\",\n    \"flojo\",\n    \"redondo\",\n    \"cuadrado\",\n    \"universitario\",\n    \"institucional\",\n    \"artístico\",\n    \"religioso\",\n    \"cultural\",\n    \"estructural\",\n    \"policial\",\n    \"mensual\",\n    \"diario\",\n    \"solar\",\n    \"militar\",\n    \"navideño\",\n    \"laboral\",\n    \"mercantil\",\n    \"vanguardista\",\n    \"dental\",\n    \"quirúrgico\",\n    \"un\",\n    \"dos\",\n    \"primer\",\n    \"grande\",\n    \"pequeño\",\n    \"diminuto\",\n    \"seco\",\n    \"caro\",\n    \"inteligente\",\n    \"divertido\",\n    \"fiel\",\n    \"agradable\",\n    \"sucio\",\n    \"limpio\",\n    \"amable\",\n    \"nuevo\",\n    \"valiente\",\n    \"hermoso\",\n    \"largo\",\n    \"cruel\",\n    \"perfecto\",\n    \"culto\",\n    \"ancho\",\n    \"musical\",\n    \"democrático\",\n    \"individual\",\n    \"nacional\",\n    \"regional\",\n    \"mundial\",\n    \"económico\",\n    \"político\",\n    \"histórico\",\n    \"civil\",\n    \"familiar\",\n    \"industrial\",\n    \"naval\",\n    \"agrícola\",\n    \"enérgetica\",\n    \"petrolero\",\n    \"segundo\",\n  ],\n  nouns: [\n    \"amor\",\n    \"explosión\",\n    \"crema\",\n    \"lápiz\",\n    \"embarcación\",\n    \"archipiélago\",\n    \"universidad\",\n    \"llaves\",\n    \"papá\",\n    \"cuna\",\n    \"escuela\",\n    \"lapicera\",\n    \"mapa\",\n    \"lima\",\n    \"edificio\",\n    \"hoja\",\n    \"granizo\",\n    \"mano\",\n    \"música\",\n    \"habitación\",\n    \"guerra\",\n    \"templo\",\n    \"plato\",\n    \"botella\",\n    \"riqueza\",\n    \"planeta\",\n    \"metal\",\n    \"mono\",\n    \"petróleo\",\n    \"debate\",\n    \"ruido\",\n    \"herramienta\",\n    \"anteojos\",\n    \"living\",\n    \"zapato\",\n    \"ojo\",\n    \"alma\",\n    \"buzo\",\n    \"puerta\",\n    \"ensalada\",\n    \"candidato\",\n    \"diario\",\n    \"hierro\",\n    \"relifión\",\n    \"tecla\",\n    \"departamento\",\n    \"hipopótamo\",\n    \"gas\",\n    \"discurso\",\n    \"estusiasmo\",\n    \"fideos\",\n    \"reloj\",\n    \"oscuridad\",\n    \"montañas\",\n    \"moño\",\n    \"partido\",\n    \"fiesta\",\n    \"café\",\n    \"guitarra\",\n    \"martillo\",\n    \"temor\",\n    \"letra\",\n    \"rueda\",\n    \"librería\",\n    \"manada\",\n    \"sillón\",\n    \"teclado\",\n    \"pantalla\",\n    \"tenedor\",\n    \"fauna\",\n    \"cohete\",\n    \"césped\",\n    \"familia\",\n    \"pestaña\",\n    \"salud\",\n    \"hombre\",\n    \"velero\",\n    \"palo\",\n    \"lentes\",\n    \"nube\",\n    \"castillo\",\n    \"verano\",\n    \"televisor\",\n    \"poder\",\n    \"remera\",\n    \"percha\",\n    \"tiempo\",\n    \"pared\",\n    \"cartas\",\n    \"impresora\",\n    \"luces\",\n    \"bomba\",\n    \"corbata\",\n    \"planta\",\n    \"oficina\",\n    \"tío\",\n    \"pradera\",\n    \"deporte\",\n    \"fotografía\",\n    \"refugio\",\n    \"carne\",\n    \"humedad\",\n    \"celular\",\n    \"vocabulario\",\n    \"coro\",\n    \"autos\",\n    \"famoso\",\n    \"piso\",\n    \"diputado\",\n    \"candado\",\n    \"computadora\",\n    \"cuadro\",\n    \"teatro\",\n    \"sueño\",\n  ],\n};\n","import { ENGLISH_WORDS } from \"./english\";\nimport { SPANISH_WORDS } from \"./spanish\";\n\nexport interface ILanguageWord {\n  verbs: string[];\n  conjuctions: string[];\n  interjections: string[];\n  prepositions: string[];\n  adverbs: string[];\n  adjectives: string[];\n  nouns: string[];\n}\n\nexport const WORDS = {\n  es: SPANISH_WORDS,\n  en: ENGLISH_WORDS,\n};\n","import { ChacaUtils } from \"../../core/utils\";\nimport { ILanguageWord, WORDS } from \"./core/words\";\n\nexport type Languages = \"es\" | \"en\";\n\nexport type WordProps = {\n  language?: Languages;\n};\n\nexport class WordModule {\n  constructor(private readonly utils: ChacaUtils) {}\n\n  readonly constants = { words: WORDS };\n\n  /**\n   * Returns a adjective from a selected lenguage\n   * @param args.language word language (`en` | `es`). Defaults `en`\n   * @example modules.word.adjective() // 'clever'\n   * @returns string\n   */\n  adjective(args?: WordProps): string {\n    return this.utils.oneOfArray(this.filterWords(args?.language).adjectives);\n  }\n\n  /**\n   * Returns a conjuction from a selected lenguage\n   * @param args.language word language (`en` | `es`). Defaults `en`\n   * @example modules.word.conjuction() // 'but'\n   * @returns string\n   */\n  conjuction(args?: WordProps): string {\n    return this.utils.oneOfArray(this.filterWords(args?.language).conjuctions);\n  }\n\n  /**\n   * Returns a interjection from a selected lenguage\n   * @param args.language word language (`en` | `es`). Defaults `en`\n   * @example modules.word.interjection() // 'hey!'\n   * @returns string\n   */\n  interjection(args?: WordProps): string {\n    return this.utils.oneOfArray(\n      this.filterWords(args?.language).interjections,\n    );\n  }\n\n  /**\n   * Returns a preposition from a selected lenguage\n   * @param args.language word language (`en` | `es`). Defaults `en`\n   * @example modules.word.preposition() // 'at'\n   * @returns string\n   */\n  preposition(args?: WordProps): string {\n    return this.utils.oneOfArray(this.filterWords(args?.language).prepositions);\n  }\n\n  /**\n   * Returns a adverb from a selected lenguage\n   * @param args.language word language (`en` | `es`). Defaults `en`\n   * @example modules.word.adverb() // 'here'\n   * @returns string\n   */\n  adverb(args?: WordProps): string {\n    return this.utils.oneOfArray(this.filterWords(args?.language).adverbs);\n  }\n\n  /**\n   * Returns a verb from a selected lenguage\n   * @param args.language word language (`en` | `es`). Defaults `en`\n   * @example modules.word.verb() // 'had'\n   * @returns string\n   */\n  verb(args?: WordProps): string {\n    return this.utils.oneOfArray(this.filterWords(args?.language).verbs);\n  }\n\n  /**\n   * Returns a noun from a selected lenguage\n   * @param args.language word language (`en` | `es`). Defaults `en`\n   * @example modules.word.noun() // 'car'\n   * @returns string\n   */\n  noun(args?: WordProps): string {\n    return this.utils.oneOfArray(this.filterWords(args?.language).nouns);\n  }\n\n  private filterWords(lan: Languages | undefined): ILanguageWord {\n    if (typeof lan === \"string\") {\n      const languageSelected = WORDS[lan];\n\n      if (languageSelected) {\n        return languageSelected;\n      }\n    }\n\n    return WORDS[\"en\"];\n  }\n}\n","/**\n * Color space names supported by CSS.\n */\nexport const CSS_SPACES = [\n  \"sRGB\",\n  \"display-p3\",\n  \"rec2020\",\n  \"a98-rgb\",\n  \"prophoto-rgb\",\n] as const;\n\n/**\n * Functions supported by CSS to produce color.\n */\nexport const CSS_FUNCTIONS = [\n  \"rgb\",\n  \"rgba\",\n  \"hsl\",\n  \"hsla\",\n  \"hwb\",\n  \"cmyk\",\n  \"lab\",\n  \"lch\",\n  \"color\",\n] as const;\n\nexport type CSSFunction = (typeof CSS_FUNCTIONS)[number];\nexport type CSSSpace = (typeof CSS_SPACES)[number];\n\nexport const HUMAN_COLORS = [\n  \"azure\",\n  \"black\",\n  \"blue\",\n  \"cyan\",\n  \"fuchsia\",\n  \"gold\",\n  \"green\",\n  \"grey\",\n  \"indigo\",\n  \"ivory\",\n  \"lavender\",\n  \"lime\",\n  \"magenta\",\n  \"maroon\",\n  \"mint green\",\n  \"olive\",\n  \"orange\",\n  \"orchid\",\n  \"pink\",\n  \"plum\",\n  \"purple\",\n  \"red\",\n  \"salmon\",\n  \"silver\",\n  \"sky blue\",\n  \"tan\",\n  \"teal\",\n  \"turquoise\",\n  \"violet\",\n  \"white\",\n  \"yellow\",\n];\n","import { CSSFunction, CSSSpace } from \"../constants\";\n\nexport type StringColorFormat = \"css\" | \"binary\";\nexport type NumberColorFormat = \"decimal\";\nexport type ColorFormat = StringColorFormat;\nexport type Casing = \"lower\" | \"upper\" | \"mixed\";\n\n/**\n * Formats the hex format of a generated color string according\n * to options specified by user.\n *\n * @param hexColor Hex color string to be formatted.\n * @param options Options object.\n * @param options.prefix Prefix of the generated hex color. Defaults to `'0x'`.\n * @param options.casing Letter type case of the generated hex color. Defaults to `'mixed'`.\n */\nexport function formatHexColor(\n  hexColor: string,\n  options?: {\n    prefix?: string;\n    casing?: Casing;\n  },\n): string {\n  switch (options?.casing) {\n    case \"upper\":\n      hexColor = hexColor.toUpperCase();\n      break;\n    case \"lower\":\n      hexColor = hexColor.toLowerCase();\n      break;\n  }\n  if (options?.prefix) {\n    hexColor = options.prefix + hexColor;\n  }\n  return hexColor;\n}\n\n/**\n * Converts an array of numbers into binary string format.\n *\n * @param values Array of values to be converted.\n */\nexport function toBinary(values: number[]): string {\n  const binary: string[] = values.map((value) => {\n    const isFloat = value % 1 !== 0;\n    if (isFloat) {\n      const buffer = new ArrayBuffer(4);\n      new DataView(buffer).setFloat32(0, value);\n      const bytes = new Uint8Array(buffer);\n      return toBinary(Array.from(bytes)).split(\" \").join(\"\");\n    }\n    return (value >>> 0).toString(2).padStart(8, \"0\");\n  });\n  return binary.join(\" \");\n}\n\n/**\n * Converts an array of numbers into CSS accepted format.\n *\n * @param values Array of values to be converted.\n * @param cssFunction CSS function to be generated for the color. Defaults to `'rgb'`.\n * @param space Color space to format CSS color function with. Defaults to `'sRGB'`.\n */\nexport function toCSS(\n  values: number[],\n  cssFunction: CSSFunction = \"rgb\",\n  space: CSSSpace = \"sRGB\",\n): string {\n  const percentage = (value: number) => Math.round(value * 100);\n  switch (cssFunction) {\n    case \"rgba\":\n      return `rgba(${values[0]}, ${values[1]}, ${values[2]}, ${values[3]})`;\n    case \"color\":\n      return `color(${space} ${values[0]} ${values[1]} ${values[2]})`;\n    case \"cmyk\":\n      return `cmyk(${percentage(values[0])}%, ${percentage(\n        values[1],\n      )}%, ${percentage(values[2])}%, ${percentage(values[3])}%)`;\n    case \"hsl\":\n      return `hsl(${values[0]}deg ${percentage(values[1])}% ${percentage(\n        values[2],\n      )}%)`;\n    case \"hsla\":\n      return `hsl(${values[0]}deg ${percentage(values[1])}% ${percentage(\n        values[2],\n      )}% / ${percentage(values[3])})`;\n    case \"hwb\":\n      return `hwb(${values[0]} ${percentage(values[1])}% ${percentage(\n        values[2],\n      )}%)`;\n    case \"lab\":\n      return `lab(${percentage(values[0])}% ${values[1]} ${values[2]})`;\n    case \"lch\":\n      return `lch(${percentage(values[0])}% ${values[1]} ${values[2]})`;\n    case \"rgb\":\n    default:\n      return `rgb(${values[0]}, ${values[1]}, ${values[2]})`;\n  }\n}\n\n/**\n * Converts an array of color values to the specified color format.\n *\n * @param values Array of color values to be converted.\n * @param format Format of generated RGB color.\n * @param cssFunction CSS function to be generated for the color. Defaults to `'rgb'`.\n * @param space Color space to format CSS color function with. Defaults to `'sRGB'`.\n */\nexport function toColorFormat(\n  values: number[],\n  format: ColorFormat,\n  cssFunction: CSSFunction = \"rgb\",\n  space: CSSSpace = \"sRGB\",\n): string {\n  switch (format) {\n    case \"css\":\n      return toCSS(values, cssFunction, space);\n    case \"binary\":\n      return toBinary(values);\n    default:\n      return toCSS(values, cssFunction, space);\n  }\n}\n","import { ChacaUtils } from \"../../core/utils\";\nimport { DatatypeModule } from \"../datatype\";\nimport {\n  CSSSpace,\n  CSS_FUNCTIONS,\n  CSS_SPACES,\n  CSSFunction,\n  HUMAN_COLORS,\n} from \"./constants\";\nimport { Casing, ColorFormat, toColorFormat, formatHexColor } from \"./helpers\";\n\nexport type RgbProps = {\n  prefix?: string;\n  casing?: Casing;\n  format?: \"hex\" | ColorFormat;\n  includeAlpha?: boolean;\n};\n\nexport type CmykProps = {\n  format?: ColorFormat;\n};\n\nexport type HslProps = {\n  format?: ColorFormat;\n  includeAlpha?: boolean;\n};\n\nexport type HwbProps = { format?: ColorFormat };\n\nexport type LchProps = { format?: ColorFormat };\n\nexport type ColorByCSSColorSpaceProps = {\n  format?: ColorFormat;\n  space?: CSSSpace;\n};\n\nexport class ColorModule {\n  constructor(\n    private readonly utils: ChacaUtils,\n    private readonly datatypeModule: DatatypeModule,\n  ) {}\n\n  readonly constants = {\n    cssFunctions: CSS_FUNCTIONS,\n    cssSpaces: CSS_SPACES,\n    human: HUMAN_COLORS,\n  };\n\n  /**\n   * Returns a random human-readable color name.\n   *\n   * @example\n   * modules.color.human() // 'blue'\n   */\n  human(): string {\n    return this.utils.oneOfArray(HUMAN_COLORS);\n  }\n\n  /**\n   * Returns a random css supported color function name.\n   *\n   * @example\n   * modules.color.cssSupportedFunction() // 'rgb'\n   */\n  cssSupportedFunction() {\n    const value = this.utils.oneOfArray(CSS_FUNCTIONS);\n    return value;\n  }\n\n  /**\n   * Returns a random css supported color space name.\n   *\n   * @example\n   * modules.color.cssSupportedSpace() // 'display-p3'\n   */\n  cssSupportedSpace() {\n    return this.utils.oneOfArray(CSS_SPACES);\n  }\n\n  /**\n   * Returns an RGB color.\n   *\n   * @param options.prefix Prefix of the generated hex color. Only applied when `'hex'` format is used. Defaults to `'#'`.\n   * @param options.casing Letter type case of the generated hex color. Only applied when `'hex'` format is used. Defaults to `'mixed'`.\n   * @param options.format Format of generated RGB color. Defaults to `'hex'`.\n   * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.\n   *\n   * @example\n   * modules.color.rgb({ prefix: '0x' }) // '0xffffFF'\n   * modules.color.rgb({ casing: 'upper' }) // '#FFFFFF'\n   * modules.color.rgb({ casing: 'lower' }) // '#ffffff'\n   * modules.color.rgb({ prefix: '#', casing: 'lower' }) // '#ffffff'\n   * modules.color.rgb({ format: 'hex', casing: 'lower' }) // '#ffffff'\n   * modules.color.rgb({ format: 'css' }) // 'rgb(255, 0, 0)'\n   * modules.color.rgb({ format: 'binary' }) // '10000000 00000000 11111111'\n   */\n  rgb({\n    format = \"hex\",\n    includeAlpha = false,\n    casing = \"mixed\",\n    prefix = \"#\",\n  }: RgbProps = {}): string {\n    let color: string | number[];\n    let cssFunction: CSSFunction = \"rgb\";\n\n    if (format === \"hex\") {\n      color = this.datatypeModule.hexadecimal({\n        length: includeAlpha ? 8 : 6,\n      });\n\n      color = formatHexColor(color, { prefix, casing });\n      return color;\n    }\n\n    color = Array.from({ length: 3 }).map(() =>\n      this.datatypeModule.int({ min: 0, max: 255 }),\n    );\n\n    if (includeAlpha) {\n      color.push(this.datatypeModule.float({ min: 0, max: 1, precision: 2 }));\n      cssFunction = \"rgba\";\n    }\n\n    const returnColor = toColorFormat(color, format, cssFunction);\n    if (casing === \"lower\") {\n      return returnColor.toLowerCase();\n    } else if (casing === \"upper\") {\n      return returnColor.toUpperCase();\n    } else {\n      return returnColor;\n    }\n  }\n\n  /**\n   * Returns a CMYK color.\n   *\n   * @param options.format Format of generated CMYK color. Defaults to `'css'`.\n   *\n   * @example\n   * modules.color.cmyk() // cmyk(100%, 0%, 0%, 0%)\n   * modules.color.cmyk({ format: 'css' }) // cmyk(100%, 0%, 0%, 0%)\n   * modules.color.cmyk({ format: 'binary' }) // (8-32 bits) x 4\n   */\n  cmyk({ format = \"css\" }: CmykProps = {}): string {\n    const color: number[] = Array.from({ length: 4 }).map(() =>\n      this.datatypeModule.float({ min: 0, max: 1, precision: 2 }),\n    );\n\n    return toColorFormat(color, format, \"cmyk\");\n  }\n\n  /**\n   * Returns an HSL color.\n   *\n   * @param options.format Format of generated HSL color. Defaults to `'css'`.\n   * @param options.includeAlpha Adds an alpha value to the color (RGBA). Defaults to `false`.\n   *\n   * @example\n   * modules.color.hsl({ format: 'css' }) // hsl(0deg, 100%, 80%)\n   * modules.color.hsl({ format: 'css', includeAlpha: true }) // hsl(0deg 100% 50% / 0.5)\n   * modules.color.hsl({ format: 'binary' }) // (8-32 bits) x 3\n   * modules.color.hsl({ format: 'binary', includeAlpha: true }) // (8-32 bits) x 4\n   */\n  hsl({ format = \"css\", includeAlpha = false }: HslProps = {}): string {\n    const hsl: number[] = [this.datatypeModule.int({ min: 0, max: 360 })];\n\n    for (let i = 0; i < (includeAlpha ? 3 : 2); i++) {\n      const value = this.datatypeModule.float({ min: 0, max: 1, precision: 3 });\n\n      hsl.push(value);\n    }\n\n    return toColorFormat(hsl, format, includeAlpha ? \"hsla\" : \"hsl\");\n  }\n\n  /**\n   * Returns an HWB color.\n   *\n   * @param options.format Format of generated HWB color. Defaults to `'css'`.\n   *\n   * @example\n   * modules.color.hwb({ format: 'css' }) // hwb(194 0% 0%)\n   * modules.color.hwb({ format: 'binary' }) // (8-32 bits x 3)\n   */\n  hwb({ format = \"css\" }: HwbProps = {}): string {\n    const hsl: number[] = [this.datatypeModule.int({ min: 0, max: 360 })];\n\n    for (let i = 0; i < 2; i++) {\n      hsl.push(this.datatypeModule.float({ min: 0, max: 1, precision: 3 }));\n    }\n\n    return toColorFormat(hsl, format, \"hwb\");\n  }\n\n  /**\n   * Returns an LCH color. Even though upper bound of\n   * chroma in LCH color space is theoretically unbounded,\n   * it is bounded to 230 as anything above will not\n   * make a noticeable difference in the browser.\n   *\n   * @param options.format Format of generated LCH color. Defaults to `'css'`.\n   *\n   * @example\n   * modules.color.lch({ format: 'css' }) // lch(52.2345% 72.2 56.2)\n   * modules.color.lch({ format: 'binary' }) // (8-32 bits x 3)\n   */\n  lch({ format = \"css\" }: LchProps = {}): string {\n    const lch = [this.datatypeModule.float({ min: 0, max: 1, precision: 6 })];\n\n    for (let i = 0; i < 2; i++) {\n      lch.push(this.datatypeModule.number({ min: 0, max: 230, precision: 1 }));\n    }\n\n    return toColorFormat(lch, format, \"lch\");\n  }\n\n  /**\n   * Returns a random color based on CSS color space specified.\n   *\n   * @param options.format Format of generated color. Defaults to `'css'`.\n   * @param options.space Color space to generate the color for. Defaults to `'sRGB'`.\n   *\n   * @example\n   * modules.color.colorByCSSColorSpace({ format: 'css', space: 'display-p3' }) // color(display-p3 0.12 1 0.23)\n   * modules.color.colorByCSSColorSpace({ format: 'binary' }) // (8-32 bits x 3)\n   */\n  colorByCSSColorSpace({\n    format = \"css\",\n    space = \"sRGB\",\n  }: ColorByCSSColorSpaceProps = {}) {\n    const color = Array.from({ length: 3 }).map(() =>\n      this.datatypeModule.float({ min: 0, max: 1, precision: 4 }),\n    );\n\n    return toColorFormat(color, format, \"color\", space);\n  }\n}\n","import { DatatypeModule } from \"./datatype\";\nimport { IdModule } from \"./id\";\nimport { InternetModule } from \"./internet\";\nimport { LoremModule } from \"./lorem\";\nimport { ImageModule } from \"./image\";\nimport { SystemModule } from \"./system\";\nimport { FinanceModule } from \"./finance\";\nimport { PhoneModule } from \"./phone\";\nimport { AddressModule } from \"./address\";\nimport { VehicleModule } from \"./vehicle\";\nimport { DateModule } from \"./date\";\nimport { PersonModule } from \"./person\";\nimport { AnimalModule } from \"./animal\";\nimport { ScienceModule } from \"./science\";\nimport { WordModule } from \"./word\";\nimport { ColorModule } from \"./color\";\nimport { ChacaUtils } from \"../core/utils\";\n\nexport class ChacaModules {\n  readonly internet: InternetModule;\n  readonly datatype: DatatypeModule;\n  readonly id: IdModule;\n  readonly lorem: LoremModule;\n  readonly image: ImageModule;\n  readonly system: SystemModule;\n  readonly finance: FinanceModule;\n  readonly phone: PhoneModule;\n  readonly address: AddressModule;\n  readonly word: WordModule;\n  readonly vehicle: VehicleModule;\n  readonly date: DateModule;\n  readonly person: PersonModule;\n  readonly animal: AnimalModule;\n  readonly science: ScienceModule;\n  readonly color: ColorModule;\n\n  constructor(utils: ChacaUtils) {\n    this.datatype = new DatatypeModule(utils);\n    this.address = new AddressModule(utils, this.datatype);\n    this.id = new IdModule(this.datatype);\n    this.color = new ColorModule(utils, this.datatype);\n    this.person = new PersonModule(utils, this.datatype);\n    this.word = new WordModule(utils);\n    this.internet = new InternetModule(\n      this.datatype,\n      utils,\n      this.person,\n      this.word,\n    );\n    this.science = new ScienceModule(utils);\n    this.vehicle = new VehicleModule(utils);\n    this.lorem = new LoremModule(this.datatype);\n    this.phone = new PhoneModule(utils, this.datatype);\n    this.system = new SystemModule(utils, this.datatype, this.word);\n    this.image = new ImageModule(this.datatype, this.word);\n    this.finance = new FinanceModule(utils, this.datatype);\n    this.animal = new AnimalModule(utils);\n    this.date = new DateModule(this.datatype, utils);\n  }\n}\n","import { ChacaUtils } from \"./core/utils\";\nimport { ChacaModules } from \"./modules\";\n\n/**\n * Environment-agnostic singletons shared by every entry point (node, browser).\n * They carry no filesystem dependency, so both builds reuse them; only the\n * `chaca` instance differs per entry because of its injected `FileWriter`.\n */\nexport const utils = new ChacaUtils();\nexport const modules = new ChacaModules(utils);\n","import path from \"path\";\nimport { Filename } from \"./filename\";\n\nexport class Route {\n  constructor(\n    private readonly name: Filename,\n    private readonly base: string,\n    private readonly ext: string,\n  ) {}\n\n  value() {\n    return `${path.join(this.base, `${this.name.value()}.${this.ext}`)}`;\n  }\n}\n","import fs from \"fs\";\nimport path from \"path\";\nimport AdmZip from \"adm-zip\";\nimport { FileWriter, WriteFilesProps } from \"../file-writer\";\nimport { Route } from \"../../generators/file-creator/route\";\nimport { Filename } from \"../../generators/file-creator/filename\";\n\n/**\n * Node.js implementation of the `FileWriter` port.\n *\n * This is the only place in the export pipeline that touches `fs`, `path` and\n * `adm-zip`, so it must never be imported from the isomorphic core.\n */\nexport class NodeFileWriter implements FileWriter {\n  async write({\n    files,\n    ext,\n    location,\n    zip,\n    filename,\n  }: WriteFilesProps): Promise<string[]> {\n    if (location && !fs.existsSync(location)) {\n      fs.mkdirSync(location, { recursive: true });\n    }\n\n    const base = path.join(\"./\", location);\n    const routes: Route[] = [];\n\n    for (const file of files) {\n      const route = new Route(new Filename(file.filename), base, ext);\n\n      await fs.promises.writeFile(route.value(), file.content, \"utf-8\");\n\n      routes.push(route);\n    }\n\n    if (zip) {\n      const instance = new AdmZip();\n      const zipRoute = new Route(new Filename(filename), base, \"zip\");\n\n      for (const route of routes) {\n        instance.addLocalFile(route.value());\n      }\n\n      instance.writeZip(zipRoute.value());\n\n      for (const route of routes) {\n        await fs.promises.unlink(route.value());\n      }\n\n      return [zipRoute.value()];\n    }\n\n    return routes.map((r) => r.value());\n  }\n}\n","import { Chaca } from \"./Chaca\";\nimport { modules, utils } from \"./core-singletons\";\nimport { NodeFileWriter } from \"./core/export/writers/node/node-file-writer\";\n\nexport * from \"./exports\";\nexport { modules } from \"./core-singletons\";\n\n/**\n * Node.js entry point. `chaca.export(...)` writes files to disk through the\n * `NodeFileWriter`. For browser bundles the `browser` export condition resolves\n * to `./browser`, where filesystem writing is disabled.\n */\nexport const chaca = new Chaca(modules.datatype, utils, new NodeFileWriter());\n"]}